On Tue, Dec 15, 2009 at 12:05 AM, Nikolaus Rath <[email protected]> wrote:
> But what I don't understand his this: If exporting only one symbol "a"
> produces python code that cannot be imported (because it depends on the
> definition of another symbol 'b' that was not explicitly requested),
> what is the point of generating the code in the first place? Under which
> circumstances do you want to generate code that cannot be imported?
Consider use case, where your code is split between different modules:
module Base:
struct B;
module Derived1:
d( B* )
module Derived2:
d2( B* )
In this case, when you exposed Derived* you don't want to expose struct B.
>> I understand that your use case is different than my - fine. I believe
>> Py++ has all functionality you need, to define what declarations
>> should be exported. Consider to use "reverse"logic:
>>
>> mb = ctypes_module_builder_t( ... )
>> mb.global_ns.exclude()
>> #and now define what you want to include
>>
>> May be you should take a look on
>> "module_builder/ctypes_decl_dependencies.py" module. It contains
>> "find_out_dependencies" functionality. As input it takes a set of
>> declarations you want to expose, the output is a set of all classes,
>> that need to be exposed.
>
> Actually I already did, but I failed to understand the interface once
> again. What exactly is a "set of declarations"? A list of the symbol
> names? A list of element as they are returned by e.g.
> global_ns.class_('mysymbol')?
>
> Can you tell me how to instruct Py++ to include the struct
> 'fuse_lowlevel_ops' and everything it that it depends on?
mb = ctypes_module_builder_t( ... )
mb.global_ns.exclude()
fuse_lowlevel_ops = mb.class_( ' 'fuse_lowlevel_ops' )
for d in find_out_dependencies( [fuse_lowlevel_ops] ):
d.include()
I can't test the code right now, but it should look very similar to this.
HTH
--
Roman Yakovenko
C++ Python language binding
http://www.language-binding.net/
_______________________________________________
Cplusplus-sig mailing list
[email protected]
http://mail.python.org/mailman/listinfo/cplusplus-sig