Thread: [pygccxml-commit] SF.net SVN: pygccxml: [976] pyplusplus_dev/pyplusplus/decl_wrappers/ class_wrappe
Brought to you by:
mbaas,
roman_yakovenko
From: <rom...@us...> - 2007-04-10 06:14:43
|
Revision: 976 http://svn.sourceforge.net/pygccxml/?rev=976&view=rev Author: roman_yakovenko Date: 2007-04-09 23:14:44 -0700 (Mon, 09 Apr 2007) Log Message: ----------- fixing spelling error Modified Paths: -------------- pyplusplus_dev/pyplusplus/decl_wrappers/class_wrapper.py Modified: pyplusplus_dev/pyplusplus/decl_wrappers/class_wrapper.py =================================================================== --- pyplusplus_dev/pyplusplus/decl_wrappers/class_wrapper.py 2007-04-10 06:13:54 UTC (rev 975) +++ pyplusplus_dev/pyplusplus/decl_wrappers/class_wrapper.py 2007-04-10 06:14:44 UTC (rev 976) @@ -19,7 +19,7 @@ VIRTUALITY_TYPES = declarations.VIRTUALITY_TYPES class impl_details: - class GAEUS_VALUES: #guess always expose using scope values + class GUESS_VALUES: #guess always expose using scope values TRUE = 'true' FALSE = 'false' ALWAYS_TRUE = 'always true' @@ -91,16 +91,16 @@ def guess_always_expose_using_scope_value( self ): if isinstance( self.indexing_suite, isuite2.indexing_suite2_t ) \ and ( self.indexing_suite.disable_methods or self.indexing_suite.disabled_methods_groups ): - return impl_details.GAEUS_VALUES.ALWAYS_TRUE + return impl_details.GUESS_VALUES.ALWAYS_TRUE else: - return impl_details.GAEUS_VALUES.FALSE + return impl_details.GUESS_VALUES.FALSE def _get_always_expose_using_scope( self ): tmp = self.guess_always_expose_using_scope_value() - if tmp == impl_details.GAEUS_VALUES.ALWAYS_TRUE: + if tmp == impl_details.GUESS_VALUES.ALWAYS_TRUE: return True if None is self._always_expose_using_scope: - if impl_details.GAEUS_VALUES.TRUE == tmp: + if impl_details.GUESS_VALUES.TRUE == tmp: self._always_expose_using_scope = True else: self._always_expose_using_scope = False @@ -542,7 +542,7 @@ return True #MSVC 7.1 has problem with taking reference to operator= if self.member_operators( is_assign, allow_empty=True, recursive=False ): - return impl_details.GAEUS_VALUES.ALWAYS_TRUE + return impl_details.GUESS_VALUES.ALWAYS_TRUE return super(class_t, self).guess_always_expose_using_scope_value() def _get_require_self_reference(self): This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <rom...@us...> - 2007-08-18 05:54:26
|
Revision: 1110 http://pygccxml.svn.sourceforge.net/pygccxml/?rev=1110&view=rev Author: roman_yakovenko Date: 2007-08-17 22:54:28 -0700 (Fri, 17 Aug 2007) Log Message: ----------- commit - small bug fix, container and element has nothing common in "already_exposed" flag Modified Paths: -------------- pyplusplus_dev/pyplusplus/decl_wrappers/class_wrapper.py Modified: pyplusplus_dev/pyplusplus/decl_wrappers/class_wrapper.py =================================================================== --- pyplusplus_dev/pyplusplus/decl_wrappers/class_wrapper.py 2007-08-18 05:53:15 UTC (rev 1109) +++ pyplusplus_dev/pyplusplus/decl_wrappers/class_wrapper.py 2007-08-18 05:54:28 UTC (rev 1110) @@ -148,18 +148,7 @@ +" BOOST_PYTHON_OPAQUE_SPECIALIZED_TYPE_ID macro in a right places." ) def _get_already_exposed_impl( self ): - if not self.indexing_suite: - return self._already_exposed - try: - et = self.indexing_suite.element_type - et = declarations.remove_const( et ) - et = declarations.remove_pointer( et ) - et = declarations.remove_declarated( et ) - if isinstance(et, declarations.declaration_t): - return et._already_exposed - return False - except: - return False + return self._already_exposed @property def class_var_name(self): This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <rom...@us...> - 2007-11-20 07:12:20
|
Revision: 1159 http://pygccxml.svn.sourceforge.net/pygccxml/?rev=1159&view=rev Author: roman_yakovenko Date: 2007-11-19 23:12:25 -0800 (Mon, 19 Nov 2007) Log Message: ----------- fixing include\exclude bug Modified Paths: -------------- pyplusplus_dev/pyplusplus/decl_wrappers/class_wrapper.py Modified: pyplusplus_dev/pyplusplus/decl_wrappers/class_wrapper.py =================================================================== --- pyplusplus_dev/pyplusplus/decl_wrappers/class_wrapper.py 2007-11-19 21:05:05 UTC (rev 1158) +++ pyplusplus_dev/pyplusplus/decl_wrappers/class_wrapper.py 2007-11-20 07:12:25 UTC (rev 1159) @@ -438,11 +438,11 @@ if base.access == ACCESS_TYPES.PRIVATE: continue base_cls = base.related_class - funcs.update( base_cls.member_functions( query, allow_empty=True ) ) - funcs.update( base_cls.member_operators( relevant_opers & query, allow_empty=True ) ) + funcs.update( base_cls.member_functions( query, recursive=False, allow_empty=True ) ) + funcs.update( base_cls.member_operators( relevant_opers & query, recursive=False, allow_empty=True ) ) - defined_funcs.update( base_cls.member_functions( all_not_pure_virtual, allow_empty=True ) ) - defined_funcs.update( base_cls.member_operators( all_not_pure_virtual & relevant_opers, allow_empty=True ) ) + defined_funcs.update( base_cls.member_functions( all_not_pure_virtual, recursive=False, allow_empty=True ) ) + defined_funcs.update( base_cls.member_operators( all_not_pure_virtual & relevant_opers, recursive=False, allow_empty=True ) ) not_reimplemented_funcs = set() is_same_function = declarations.is_same_function This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <rom...@us...> - 2007-11-20 21:25:00
|
Revision: 1161 http://pygccxml.svn.sourceforge.net/pygccxml/?rev=1161&view=rev Author: roman_yakovenko Date: 2007-11-20 13:25:05 -0800 (Tue, 20 Nov 2007) Log Message: ----------- small bug fix - allow query to be empty Modified Paths: -------------- pyplusplus_dev/pyplusplus/decl_wrappers/class_wrapper.py Modified: pyplusplus_dev/pyplusplus/decl_wrappers/class_wrapper.py =================================================================== --- pyplusplus_dev/pyplusplus/decl_wrappers/class_wrapper.py 2007-11-20 13:34:25 UTC (rev 1160) +++ pyplusplus_dev/pyplusplus/decl_wrappers/class_wrapper.py 2007-11-20 21:25:05 UTC (rev 1161) @@ -325,7 +325,9 @@ def set_constructors_body( self, body ): """Sets the body for all constructors""" - self.constructors().body = body + constrs = self.constructors(allow_empty=True, recursive=False) + if constrs: + constrs.body = body self.null_constructor_body = body self.copy_constructor_body = body This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <rom...@us...> - 2008-03-02 19:13:04
|
Revision: 1269 http://pygccxml.svn.sourceforge.net/pygccxml/?rev=1269&view=rev Author: roman_yakovenko Date: 2008-03-02 11:13:11 -0800 (Sun, 02 Mar 2008) Log Message: ----------- pure virtual functions should be generated in class-wrapper, even if they are excluded or could not be exposed, otherwise the generated code will not compile Modified Paths: -------------- pyplusplus_dev/pyplusplus/decl_wrappers/class_wrapper.py Modified: pyplusplus_dev/pyplusplus/decl_wrappers/class_wrapper.py =================================================================== --- pyplusplus_dev/pyplusplus/decl_wrappers/class_wrapper.py 2008-03-01 19:48:27 UTC (rev 1268) +++ pyplusplus_dev/pyplusplus/decl_wrappers/class_wrapper.py 2008-03-02 19:13:11 UTC (rev 1269) @@ -430,8 +430,8 @@ all_protected = declarations.access_type_matcher_t( 'protected' ) & all_included all_pure_virtual = declarations.virtuality_type_matcher_t( VIRTUALITY_TYPES.PURE_VIRTUAL ) all_virtual = declarations.virtuality_type_matcher_t( VIRTUALITY_TYPES.VIRTUAL ) \ - & (declarations.access_type_matcher_t( 'public' ) \ - | declarations.access_type_matcher_t( 'protected' )) + & ( declarations.access_type_matcher_t( 'public' ) \ + | declarations.access_type_matcher_t( 'protected' )) all_not_pure_virtual = ~all_pure_virtual query = all_protected | all_pure_virtual @@ -444,8 +444,6 @@ if base.access == ACCESS_TYPES.PRIVATE: continue base_cls = base.related_class - #funcs.extend( base_cls.member_functions( query, recursive=False, allow_empty=True ) ) - #funcs.extend( base_cls.member_operators( relevant_opers & query, recursive=False, allow_empty=True ) ) funcs.extend( base_cls.member_functions( mf_query, recursive=False, allow_empty=True ) ) funcs.extend( base_cls.member_operators( relevant_opers & query, recursive=False, allow_empty=True ) ) @@ -479,7 +477,8 @@ break else: not_reimplemented_funcs.add( f ) - functions = filter( lambda f: not f.ignore and f.exportable + functions = filter( lambda f: ( False == f.ignore and True == f.exportable ) + or all_pure_virtual( f ) , list( not_reimplemented_funcs ) ) functions.sort( cmp=lambda f1, f2: cmp( ( f1.name, f1.location.as_tuple() ) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <rom...@us...> - 2008-04-04 19:35:01
|
Revision: 1295 http://pygccxml.svn.sourceforge.net/pygccxml/?rev=1295&view=rev Author: roman_yakovenko Date: 2008-04-04 12:35:03 -0700 (Fri, 04 Apr 2008) Log Message: ----------- implementing work around for BPL bug Modified Paths: -------------- pyplusplus_dev/pyplusplus/decl_wrappers/class_wrapper.py Modified: pyplusplus_dev/pyplusplus/decl_wrappers/class_wrapper.py =================================================================== --- pyplusplus_dev/pyplusplus/decl_wrappers/class_wrapper.py 2008-04-01 19:05:50 UTC (rev 1294) +++ pyplusplus_dev/pyplusplus/decl_wrappers/class_wrapper.py 2008-04-04 19:35:03 UTC (rev 1295) @@ -481,8 +481,43 @@ or all_pure_virtual( f ) , list( not_reimplemented_funcs ) ) + + #Boost.Python is not able to call for non-virtual function, from the base + #class if there is a virtual function with the same within base class + #See override_bug tester for more information + + def buggy_bpl_filter( f ): + if f.parent is self: + return False + if f.access_type != ACCESS_TYPES.PUBLIC: + return False + if f.virtuality != VIRTUALITY_TYPES.NOT_VIRTUAL: + return False + #we need to check that we don't have "same" function in this class + this_funs = self.decls( name=f.name + , decl_type=declarations.calldef_t + , recursive=False + , allow_empty=True ) + for this_f in this_funs: + if is_same_function( this_f, f ): + #there is already the function in the class, so no need to redefined it + return False + else: + return True + + tmp = {} # id : f + for redefined_f in functions: + #redefined is virtual, I am not interested in virtual functions + for rfo in redefined_f.overloads: + if id(rfo) in tmp: + continue + if buggy_bpl_filter( rfo ): + tmp[ id(rfo) ] = rfo + functions.extend( tmp.values() ) + functions.sort( cmp=lambda f1, f2: cmp( ( f1.name, f1.location.as_tuple() ) , ( f2.name, f2.location.as_tuple() ) ) ) + self._redefined_funcs = functions return self._redefined_funcs This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <rom...@us...> - 2008-04-07 21:38:05
|
Revision: 1300 http://pygccxml.svn.sourceforge.net/pygccxml/?rev=1300&view=rev Author: roman_yakovenko Date: 2008-04-07 14:38:11 -0700 (Mon, 07 Apr 2008) Log Message: ----------- bug fix: class wrapper alias should be created on first use and not always Modified Paths: -------------- pyplusplus_dev/pyplusplus/decl_wrappers/class_wrapper.py Modified: pyplusplus_dev/pyplusplus/decl_wrappers/class_wrapper.py =================================================================== --- pyplusplus_dev/pyplusplus/decl_wrappers/class_wrapper.py 2008-04-07 21:36:54 UTC (rev 1299) +++ pyplusplus_dev/pyplusplus/decl_wrappers/class_wrapper.py 2008-04-07 21:38:11 UTC (rev 1300) @@ -177,7 +177,7 @@ self._redefine_operators = False self._held_type = None self._noncopyable = None - self._wrapper_alias = self._generate_valid_name(self.partial_name) + "_wrapper" + self._wrapper_alias = None self._registration_code = [] self._declaration_code = [] self._wrapper_code = [] @@ -224,6 +224,8 @@ +"Default value is calculated, based on information presented in the declarations tree" ) def _get_wrapper_alias( self ): + if None is self._wrapper_alias: + self._wrapper_alias = self._generate_valid_name(self.partial_name) + "_wrapper" return self._wrapper_alias def _set_wrapper_alias( self, walias ): self._wrapper_alias = walias This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |