My take on namespaces:

- anything in "lldb" namespace will and should be exported for use in the 
public API
- nothing in the lldb_private namespace should appear in the public API (no 
mentions in the public API headers)
- all LLDB internal classes should be in the lldb_private namespace
- all plug-ins really should make up a namespace for each individual plug-in, 
but they currently don't and they use the global namespace
- Any classes defined solely in a .cpp file should be in an anonymous namespace

So the global namespace is probably getting a bit polluted in LLDB, but none of 
that is exported so it only affects LLDB internally. We should at some point 
start converting plug-ins over to using a namespace for each plug-in so we can 
avoid the global namespace, but there is no immediate need unless someone just 
has free time.

Greg

> On Mar 20, 2015, at 9:57 AM, [email protected] wrote:
> 
> My take:
> 
> Local classes that are in just in .cpp files should go in the anonymous 
> namespace.  We didn't start out doing it that way, not all local classes 
> follows this rule.  Thats just a bug, feel free to fix that wherever you come 
> across it.  Everything else should be in lldb or lldb_private.  Anything that 
> might be useful to for the SB API's but is also useful for core lldb should 
> be in the lldb namespace.  Everything else should be in lldb_private.
> 
> I don't think we need to split it finer than that at present.  I don't see 
> any reason to leave any classes in the global namespace, but again I think 
> where we are doing that it is just because we didn't start out putting all 
> our local classes in the anonymous namespace.
> 
> Jim
> 
>> On Mar 20, 2015, at 4:58 AM, Tamas Berghammer <[email protected]> wrote:
>> 
>> Hi All,
>> 
>> In lldb I see that most of the classes are leaving in the lldb or in the 
>> lldb_private namespace but we have some class in the global scope. What is 
>> the rule we want to use about placing our classes in namespaces? When we 
>> want to put a class into lldb, when we want to put it into lldb_private and 
>> when we want to leave it in the global scope (do we want to leave anything 
>> in the global namespace)?
>> 
>> The current stage is that we have the classes in "lldb/API" and a few other 
>> files in the lldb namespace, a lot of thing in the lldb_private namespace 
>> and some class in the global namespace. As a first approximation I would 
>> suggest to keep the classes in "lldb/API" in the lldb namespace and 
>> everything else in lldb_private but it might not be sufficient in all cases. 
>> 
>> I think this issue doesn't cause us any major problem right now, so I don't 
>> plan to move every class to the proper namespace with a few commits but I 
>> hope we can make an agreement about what is the preferred location for the 
>> different classes and then make progress to move them to the right place 
>> (e.g.: when somebody do bigger changes to a class what is not in the correct 
>> namespace he/she can also move it to the right place).
>> 
>> Tamas
>> _______________________________________________
>> lldb-dev mailing list
>> [email protected]
>> http://lists.cs.uiuc.edu/mailman/listinfo/lldb-dev
> 
> 
> _______________________________________________
> lldb-dev mailing list
> [email protected]
> http://lists.cs.uiuc.edu/mailman/listinfo/lldb-dev


_______________________________________________
lldb-dev mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/lldb-dev

Reply via email to