[cfe-commits] r44942 - /cfe/trunk/include/clang/Basic/SourceLocation.h

Ted Kremenek kremenek at apple.com
Wed Dec 12 10:45:22 PST 2007


On Dec 12, 2007, at 10:43 AM, Chris Lattner wrote:

>> URL: http://llvm.org/viewvc/llvm-project?rev=44942&view=rev
>> Log:
>> Added class FullContextSourceLocation: a tuple class that
>> contains both a SourceLocation and its associated
>> SourceManager. This class is useful for argument passing to
>> functions that expect both objects.
>
> Hey Ted,
>
>
>> +/// FullContextSourceLocation - A tuple containing both a  
>> SourceLocation
>> +///  and its associated SourceManager.  Useful for argument  
>> passing to functions
>> +///  that expect both objects.
>> +class FullContextSourceLocation {
>> +  SourceLocation Loc;
>> +  SourceManager* SrcMgr;
>> +public:
>
> Ok.
>
>> +  explicit FullContextSourceLocation(SourceLocation loc)
>> +    : Loc(loc), SrcMgr(NULL) {}
>
> I don't think we want to support fullsourceloc's with a null srcmgr  
> unless the location is invalid.  It seems best to support two ctors:  
> a default ctor that makes an invalid sloc, and a version that takes  
> both.
>
>> +
>> +  explicit FullContextSourceLocation(SourceLocation loc,  
>> SourceManager& smgr)
>> +    : Loc(loc), SrcMgr(&smgr) {}
>
> I think all clients that decode the sloc only need read-only access  
> to the source manager.  I'd suggest making all references to it const.
>
>> +  SourceLocation getSourceLocation() const { return Loc; }
>> +  operator SourceLocation() const { return Loc; }
>
> Ick.  Please name this getLoc(), and remove the implicit conversion :)
>
>> +
>> +  SourceManager& getSourceManager() {
>
> Please drop this one (no need for a non-const one).
>
>> +  const SourceManager& getSourceManager() const {
>
> How about getManager() ?
>
> -Chris

Agreed on all counts.



More information about the cfe-commits mailing list