Paul Mensonides wrote:
> Joel de Guzman wrote:
> 
>> Hmmm.... how about namespaces (or modules) ?  :o)...
>> 
>> #< BOOST_PP // boost PP namespace
>>     // blah blah blah....
>> #>
>> 
>> #< MY_MODULE // my module namespace
>>     #using BOOST_PP // using boost PP namespace
>>     // blah blah blah....
>> #>
> 
> Hi Joel, I'm already in the process of writing a paper with an
> alternative version of the above.  Problem #1: the operator
> directives are evil.  They are not visible, and with serve to make
> code that includes them hard to read.  We need a named alternative at
> least.  Problem #2:  No true scoping is achieved: 
> 
> #<
> #define DETAIL 123
> #define INTERFACE DETAIL
> #export INTERFACE
> #>
> 
> INTERFACE // ?

Well, I can't speak for the evolution group of WG21 & J16 so you should
probably ask them.

> This is what I'm going to propose:
> 
> # region // unnamed
> #    import ABC
> #    define XYZ
> #    define INTERFACE 123
> #    export INTERFACE
> # endreg
> 
> XYZ       // XYZ
> INTERFACE // 123
> 
> # region BOOST
> #    region DETAIL
> #        define ABC 123
> #    endreg
> #    define INTERFACE BOOST::DETAIL::ABC
> #    define OTHER 123
> #    export OTHER
> #    region A
> #        define MACRO 123
> #    endref
> #    region B
> #        define MACRO 123
> #    endif
> #    export A
> # endreg
> 
> ABC              // ABC
> DETAIL::ABC      // DETAIL::ABC
> BOOST::INTERFACE // 123
> OTHER            // 123
> 
> A::MACRO         // 123
> B::MACRO         // B::MACRO
> 
> What do you think?

Looks good. But why not overload the name "namespace" in as much
as the CPP overloads #if #else ? I think the syntax should give a nice 
feeling since it is already looks like something C++ programmers are 
already accustomed to:

# namespace // unnamed
    // blah blah blah....  
# endnamespace 

# namespace BOOST
    // blah blah blah....  
# endnamespace 

Either way, any syntax will do as long as it works :) If you really want to go 
the import/export route, consider a modula-2-ish syntax:

# module BOOST
#     import ABC
#     define INTERFACE 123
#     export INTERFACE
# endmodule  

-- 
Joel de Guzman
joel at boost-consulting.com
http://www.boost-consulting.com
http://spirit.sf.net

_______________________________________________
Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost

Reply via email to