Thread: [pygccxml-commit] SF.net SVN: pygccxml: [508] pyplusplus_dev/pyplusplus/decl_wrappers/ calldef_wrap
Brought to you by:
mbaas,
roman_yakovenko
From: <mb...@us...> - 2006-09-03 09:39:14
|
Revision: 508 http://svn.sourceforge.net/pygccxml/?rev=508&view=rev Author: mbaas Date: 2006-09-03 02:39:10 -0700 (Sun, 03 Sep 2006) Log Message: ----------- Added a property 'function_transformers' that is a list of function transformer objects that should be applied to the calldef. Modified Paths: -------------- pyplusplus_dev/pyplusplus/decl_wrappers/calldef_wrapper.py Modified: pyplusplus_dev/pyplusplus/decl_wrappers/calldef_wrapper.py =================================================================== --- pyplusplus_dev/pyplusplus/decl_wrappers/calldef_wrapper.py 2006-09-03 09:31:45 UTC (rev 507) +++ pyplusplus_dev/pyplusplus/decl_wrappers/calldef_wrapper.py 2006-09-03 09:39:10 UTC (rev 508) @@ -28,6 +28,7 @@ self._use_default_arguments = True self._create_with_signature = False self._overridable = None + self._function_transformers = [] def get_call_policies(self): return self._call_policies @@ -114,6 +115,24 @@ overridable = property( get_overridable, set_overridable , doc = get_overridable.__doc__ ) + + def _get_function_transformers(self): + """Get method for property 'function_transformers'. + + Returns a reference to the internal list (which may be modified). + """ + return self._function_transformers + + def _set_function_transformers(self, function_transformers): + """Set method for property 'function_transformers'.""" + self._function_transformers = function_transformers + + function_transformers = property( _get_function_transformers, _set_function_transformers, + doc = """A list of function transformer objects that should be applied to the generated C++ code (default: []). + The returned list is the internal list (not a copy) which may be modified. + @type: list""") + + def _exportable_impl_derived( self ): return '' This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <rom...@us...> - 2006-11-16 22:20:04
|
Revision: 729 http://svn.sourceforge.net/pygccxml/?rev=729&view=rev Author: roman_yakovenko Date: 2006-11-16 14:20:02 -0800 (Thu, 16 Nov 2006) Log Message: ----------- adding todo item Modified Paths: -------------- pyplusplus_dev/pyplusplus/decl_wrappers/calldef_wrapper.py Modified: pyplusplus_dev/pyplusplus/decl_wrappers/calldef_wrapper.py =================================================================== --- pyplusplus_dev/pyplusplus/decl_wrappers/calldef_wrapper.py 2006-11-16 22:19:32 UTC (rev 728) +++ pyplusplus_dev/pyplusplus/decl_wrappers/calldef_wrapper.py 2006-11-16 22:20:02 UTC (rev 729) @@ -162,6 +162,8 @@ msgs = [] #TODO: functions that takes as argument pointer to pointer to smth, could not be exported #see http://www.boost.org/libs/python/doc/v2/faq.html#funcptr + + #TODO: add warning to the case described in registration_order.rest document. if len( self.arguments ) > calldef_t.BOOST_PYTHON_MAX_ARITY: tmp = [ "The function has more than %d arguments ( %d ). " ] tmp.append( "You should adjust BOOST_PYTHON_MAX_ARITY macro." ) @@ -171,6 +173,7 @@ if suspicious_type( self.return_type ) and None is self.call_policies: msgs.append( 'The function "%s" returns non-const reference to C++ fundamental type - value can not be modified from Python.' % str( self ) ) + for index, arg in enumerate( self.arguments ): if suspicious_type( arg.type ): tmpl = [ 'The function takes as argument (name=%s, pos=%d ) ' ] This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <rom...@us...> - 2006-12-27 11:36:15
|
Revision: 814 http://svn.sourceforge.net/pygccxml/?rev=814&view=rev Author: roman_yakovenko Date: 2006-12-27 03:36:14 -0800 (Wed, 27 Dec 2006) Log Message: ----------- fixing small bug Modified Paths: -------------- pyplusplus_dev/pyplusplus/decl_wrappers/calldef_wrapper.py Modified: pyplusplus_dev/pyplusplus/decl_wrappers/calldef_wrapper.py =================================================================== --- pyplusplus_dev/pyplusplus/decl_wrappers/calldef_wrapper.py 2006-12-25 15:47:10 UTC (rev 813) +++ pyplusplus_dev/pyplusplus/decl_wrappers/calldef_wrapper.py 2006-12-27 11:36:14 UTC (rev 814) @@ -368,7 +368,7 @@ calldef_t.__init__( self ) def _get_alias( self): - if not self._alias or self.name == super( member_operator_t, self )._get_alias(): + if not self._alias or self.name == super( casting_operator_t, self )._get_alias(): return_type = declarations.remove_alias( self.return_type ) decl_string = return_type.decl_string for type_, alias in self.SPECIAL_CASES.items(): This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <rom...@us...> - 2007-02-23 18:21:39
|
Revision: 921 http://svn.sourceforge.net/pygccxml/?rev=921&view=rev Author: roman_yakovenko Date: 2007-02-23 10:21:40 -0800 (Fri, 23 Feb 2007) Log Message: ----------- fixing broken repository by adding missing properties to the member_operator_t Modified Paths: -------------- pyplusplus_dev/pyplusplus/decl_wrappers/calldef_wrapper.py Modified: pyplusplus_dev/pyplusplus/decl_wrappers/calldef_wrapper.py =================================================================== --- pyplusplus_dev/pyplusplus/decl_wrappers/calldef_wrapper.py 2007-02-22 19:04:04 UTC (rev 920) +++ pyplusplus_dev/pyplusplus/decl_wrappers/calldef_wrapper.py 2007-02-23 18:21:40 UTC (rev 921) @@ -344,7 +344,23 @@ def __init__(self, *arguments, **keywords): declarations.member_operator_t.__init__( self, *arguments, **keywords ) calldef_t.__init__( self ) + self._override_precall_code = [] + self._default_precall_code = [] + def add_override_precall_code(self, code): + self._override_precall_code.append( code ) + + @property + def override_precall_code(self): + return self._override_precall_code + + def add_default_precall_code(self, code): + self._default_precall_code.append( code ) + + @property + def default_precall_code(self): + return self._default_precall_code + def _get_alias( self): alias = super( member_operator_t, self )._get_alias() if alias == self.name: This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <rom...@us...> - 2007-11-22 19:42:18
|
Revision: 1167 http://pygccxml.svn.sourceforge.net/pygccxml/?rev=1167&view=rev Author: roman_yakovenko Date: 2007-11-22 11:42:23 -0800 (Thu, 22 Nov 2007) Log Message: ----------- crea_with_signature algorithm is smarter from now - takes into acount functions defined in base classes Modified Paths: -------------- pyplusplus_dev/pyplusplus/decl_wrappers/calldef_wrapper.py Modified: pyplusplus_dev/pyplusplus/decl_wrappers/calldef_wrapper.py =================================================================== --- pyplusplus_dev/pyplusplus/decl_wrappers/calldef_wrapper.py 2007-11-21 21:07:24 UTC (rev 1166) +++ pyplusplus_dev/pyplusplus/decl_wrappers/calldef_wrapper.py 2007-11-22 19:42:23 UTC (rev 1167) @@ -30,7 +30,7 @@ self._call_policies = None self._use_keywords = True self._use_default_arguments = True - self._create_with_signature = False + self._create_with_signature = None self._overridable = None self._non_overridable_reason = None self._transformations = None @@ -52,7 +52,21 @@ +"Default value is True.") def _get_create_with_signature(self): - return self._create_with_signature or bool( self.overloads ) + if None is self._create_with_signature: + self._create_with_signature = bool( self.overloads ) + if not self._create_with_signature and isinstance( self.parent, declarations.class_t ): + for hi in self.parent.recursive_bases: + if hi.access_type == 'private': + continue + funcs = hi.related_class.calldefs( self.name, recursive=False, allow_empty=True ) + for f in funcs: + if f.argument_types != self.argument_types: + self._create_with_signature = True + break + if self._create_with_signature: + break + return self._create_with_signature + def _set_create_with_signature(self, create_with_signature): self._create_with_signature = create_with_signature create_with_signature = property( _get_create_with_signature, _set_create_with_signature This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <rom...@us...> - 2007-11-29 06:59:53
|
Revision: 1180 http://pygccxml.svn.sourceforge.net/pygccxml/?rev=1180&view=rev Author: roman_yakovenko Date: 2007-11-28 22:59:58 -0800 (Wed, 28 Nov 2007) Log Message: ----------- improving create_with_signature algorithm - fucntion, which are template instantiations will be exposed with signature Modified Paths: -------------- pyplusplus_dev/pyplusplus/decl_wrappers/calldef_wrapper.py Modified: pyplusplus_dev/pyplusplus/decl_wrappers/calldef_wrapper.py =================================================================== --- pyplusplus_dev/pyplusplus/decl_wrappers/calldef_wrapper.py 2007-11-27 20:37:00 UTC (rev 1179) +++ pyplusplus_dev/pyplusplus/decl_wrappers/calldef_wrapper.py 2007-11-29 06:59:58 UTC (rev 1180) @@ -54,6 +54,10 @@ def _get_create_with_signature(self): if None is self._create_with_signature: self._create_with_signature = bool( self.overloads ) + + if not self._create_with_signature and declarations.templates.is_instantiation( self.name ): + self._create_with_signature = True + if not self._create_with_signature and isinstance( self.parent, declarations.class_t ): for hi in self.parent.recursive_bases: if hi.access_type == 'private': This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <rom...@us...> - 2007-02-27 08:15:49
|
Revision: 937 http://svn.sourceforge.net/pygccxml/?rev=937&view=rev Author: roman_yakovenko Date: 2007-02-27 00:15:49 -0800 (Tue, 27 Feb 2007) Log Message: ----------- operator<< second argument should have type const T&, otherwise the generated code will not compile Modified Paths: -------------- pyplusplus_dev/pyplusplus/decl_wrappers/calldef_wrapper.py Modified: pyplusplus_dev/pyplusplus/decl_wrappers/calldef_wrapper.py =================================================================== --- pyplusplus_dev/pyplusplus/decl_wrappers/calldef_wrapper.py 2007-02-26 21:54:54 UTC (rev 936) +++ pyplusplus_dev/pyplusplus/decl_wrappers/calldef_wrapper.py 2007-02-27 08:15:49 UTC (rev 937) @@ -344,8 +344,15 @@ type_ = declarations.remove_reference( type_ ) if declarations.is_const( type_ ): return False - return declarations.is_std_ostream( type_ ) \ - or declarations.is_std_wostream( type_ ) + if args_len == 2: + #second argument should has "T const &" type, otherwise the code will not compile + tmp = oper.arguments[1].type + if not declarations.is_reference( tmp ): + return False + tmp = declarations.remove_reference( tmp ) + if not declarations.is_const( tmp ): + return False + return declarations.is_std_ostream( type_ ) or declarations.is_std_wostream( type_ ) @staticmethod def exportable( oper ): This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <rom...@us...> - 2008-02-25 20:40:47
|
Revision: 1261 http://pygccxml.svn.sourceforge.net/pygccxml/?rev=1261&view=rev Author: roman_yakovenko Date: 2008-02-25 12:40:52 -0800 (Mon, 25 Feb 2008) Log Message: ----------- improve algorithm, which decides when function should be exposed with the signature Modified Paths: -------------- pyplusplus_dev/pyplusplus/decl_wrappers/calldef_wrapper.py Modified: pyplusplus_dev/pyplusplus/decl_wrappers/calldef_wrapper.py =================================================================== --- pyplusplus_dev/pyplusplus/decl_wrappers/calldef_wrapper.py 2008-02-25 07:32:55 UTC (rev 1260) +++ pyplusplus_dev/pyplusplus/decl_wrappers/calldef_wrapper.py 2008-02-25 20:40:52 UTC (rev 1261) @@ -69,6 +69,9 @@ break if self._create_with_signature: break + if not self._create_with_signature: + self._create_with_signature \ + = bool( self.parent.calldefs( self.name, recursive=False, allow_empty=True ) ) return self._create_with_signature def _set_create_with_signature(self, create_with_signature): This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |