Update of /cvsroot/pygccxml/source/pyplusplus/module_creator
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv29364/pyplusplus/module_creator
Modified Files:
creator.py
Log Message:
adding new functionality:
if class is used as member variabel, but does not have public assign operator, def_readonly will be used
if class has pointer as member variable, it is exposed correctly
Index: creator.py
===================================================================
RCS file: /cvsroot/pygccxml/source/pyplusplus/module_creator/creator.py,v
retrieving revision 1.66
retrieving revision 1.67
diff -C2 -d -r1.66 -r1.67
*** creator.py 20 Apr 2006 05:40:04 -0000 1.66
--- creator.py 23 Apr 2006 14:39:00 -0000 1.67
***************
*** 162,169 ****
members = []
for member in class_decl.public_members:
! if isinstance( member, declarations.variable_t ) \
! and member.bits == 0 \
! and member.name == "":
! continue #alignement bit
members.append( member )
#protected and private virtual functions that not overridable and not pure
--- 162,172 ----
members = []
for member in class_decl.public_members:
! if isinstance( member, declarations.variable_t ) :
! if member.bits == 0 and member.name == "":
! continue #alignement bit
! type_ = declarations.remove_const( member.type )
! if declarations.is_pointer( type_ ) \
! and member.type_qualifiers.has_static:
! continue #right now I don't know what code should be generated in this case
members.append( member )
#protected and private virtual functions that not overridable and not pure
***************
*** 239,248 ****
if isinstance( member, declarations.destructor_t ):
continue
! if isinstance( member, declarations.variable_t ) and member.bits:
! return True
if isinstance( member, declarations.class_t ):
return True
- if isinstance( member, declarations.variable_t ) and declarations.is_array( member.type ):
- return True
if isinstance( member, declarations.member_calldef_t ):
if member.access_type != declarations.ACCESS_TYPES.PUBLIC:
--- 242,254 ----
if isinstance( member, declarations.destructor_t ):
continue
! if isinstance( member, declarations.variable_t ):
! if member.bits:
! return True
! if declarations.is_pointer( member.type ):
! return True
! if declarations.is_array( member.type ):
! return True
if isinstance( member, declarations.class_t ):
return True
if isinstance( member, declarations.member_calldef_t ):
if member.access_type != declarations.ACCESS_TYPES.PUBLIC:
***************
*** 600,603 ****
--- 606,612 ----
wrapper = code_creators.array_mv_wrapper_t( variable=self.__curr_decl )
maker = code_creators.array_mv_t( variable=self.__curr_decl, wrapper=wrapper )
+ elif declarations.is_pointer( self.__curr_decl.type ):
+ wrapper = code_creators.member_variable_wrapper_t( variable=self.__curr_decl )
+ maker = code_creators.member_variable_t( variable=self.__curr_decl, wrapper=wrapper )
else:
maker = code_creators.member_variable_t( variable=self.__curr_decl )
|