[pygccxml-development] Re: Small patch for two things
Brought to you by:
mbaas,
roman_yakovenko
From: Roman Y. <rom...@gm...> - 2006-05-16 19:22:27
|
On 5/16/06, Allen Bierbaum <al...@vr...> wrote: > Roman: > > I have attached a patch to pyplusplus that adds to things. > > - In module_builder/builder.py > > Add decl_headers parameter to build_code_creator method. This is just > passed on directly to creator.create() to allow the user to overried the > headers used. > > - in module_t code creator > > Extended adopt_include method so it can take directory names (string's) > directly. It will check the type and automatically create an include_t > behind the scenes if it is needed. This makes it a little easier to add > includes to the code creator returned from the module_builder and makes > it so the users don't need to know about the code creator types. :-). I am a little bit ill, so I have some time to work on py++. This is exactly the problem I found and implemented an other solution. I am not sure which one is better( easier to understand, correct ). My solution is next: To module_t code creator I added new function: replace_included_headers( list of headers( =3D=3D strings ) , leave_boost_python_header=3DTrue ) So user needs to call this function. Now comparison: What is bad in my implementation: user needs to take a look on module_t code creator. What is not so good in your implementation: it is not extensibility. I am sure, that there are inconveniences or bugs in interface of code creators, that you will not be able to fix by passing argument to build_code_creator. I am not sure with what implementation to go. Thoughts? > One other note: I am a little confused by the use of the word "adopt" > in the API. For example adopt_include seems more like it should be > named add_include since it is adding an include to a module. There is > really no adopting going on as far as I can tell. adopt_include as argument takes include code creator. Every code creator has "parent" property. This is a reference to the parent code creator. Take a look on next code: ( compound_t code creator ) def adopt_creator( self, creator, index=3DNone): creator.parent =3D self if index or index =3D=3D 0: self._creators.insert( index, creator ) else: self._creators.append( creator ) Function post condition: parent code creator has new son. So I choose name "adopt". Also I understand, what are you talking about. Yesterday, I added 2 new functions to module_t code creator: def add_namespace_usage( self, namespace_name ): self.adopt_creator( namespace.namespace_using_t( 'boost' ) , self.last_include_index() + 1 ) def add_namespace_alias( self, alias, full_namespace_name ): self.adopt_creator( namespace.namespace_alias_t( alias=3Dalias , full_namespace_name=3Dfull_namespace_name= ) , self.last_include_index() + 1 ) As you can see, I use here "add". > Thanks, > Allen --=20 Roman Yakovenko C++ Python language binding http://www.language-binding.net/ |