From: <and...@us...> - 2008-02-23 06:13:41
|
Revision: 577 http://python-ogre.svn.sourceforge.net/python-ogre/?rev=577&view=rev Author: andy_miller Date: 2008-02-22 22:13:35 -0800 (Fri, 22 Feb 2008) Log Message: ----------- Fix where property could be created that overrode existing function (Ogrelay::rotate) Modified Paths: -------------- trunk/python-ogre/code_generators/common_utils/__init__.py trunk/python-ogre/code_generators/common_utils/ogre_properties.py Modified: trunk/python-ogre/code_generators/common_utils/__init__.py =================================================================== --- trunk/python-ogre/code_generators/common_utils/__init__.py 2008-02-18 11:46:43 UTC (rev 576) +++ trunk/python-ogre/code_generators/common_utils/__init__.py 2008-02-23 06:13:35 UTC (rev 577) @@ -7,7 +7,9 @@ from pyplusplus import function_transformers as ft from pyplusplus.module_builder import call_policies +import time + import var_checker as varchecker import ogre_properties as ogre_properties @@ -21,6 +23,14 @@ docs = docs + "Output: " + o + "\\n\\\n" return docs +def docInfo ( mb, module ): + i = '"This module is part of the Python-Ogre project (www.python-ogre.org)\nIt was built on %(timestamp)s and is a member of the %(version)s release. "' + timestamp = time.ctime() + version = environment.PythonOgreMajorVersion +"."+environment.PythonOgreMinorVersion+"."+PythonOgrePatchVersion + t = i % {'timestamp':timestamp, 'version':version} + add_constants( mb, { '__info__' : t } ) + + def _ReturnUnsignedInt( type_ ): """helper to return an UnsignedInt call for tranformation functions """ Modified: trunk/python-ogre/code_generators/common_utils/ogre_properties.py =================================================================== --- trunk/python-ogre/code_generators/common_utils/ogre_properties.py 2008-02-18 11:46:43 UTC (rev 576) +++ trunk/python-ogre/code_generators/common_utils/ogre_properties.py 2008-02-23 06:13:35 UTC (rev 577) @@ -43,22 +43,36 @@ if mem_fun.has_const: return False return True - + + def create_property( self, fget, fset ): + if not self.check_type_compatibility( fget, fset ): + return None + found = self.find_out_prefixes( fget.name, fset.name ) + if not found: + return None + ## Now we need to look for overlapping function declarations + pure_names = [] + pure_names.append( fget.name[len( found[0] ):].lower()) + pure_names.append( fset.name[len( found[1] ):].lower()) + funcs = self.class_accessors( fget.parent )[1] + funcs.extend( self.inherited_accessors( fget.parent )[1] ) + for f in funcs: + if f.name.lower() in pure_names: + print"Overloaded Property", fget.name, fset.name, f.name + return None + return decl_wrappers.property_t( self.find_out_property_name( fget, found[0] ), fget, fset ) + def create_read_only_property( self, fget ): found = self.find_out_ro_prefixes( fget.name ) if found in ( None, '' ): return None - - pure_name = fget.name[len( found ):] - pure_name = pure_name.lower() - - setters = self.class_accessors( fget.parent )[1] - setters.extend( self.inherited_accessors( fget.parent )[1] ) - - setters = filter( lambda decl: decl.name.lower() == pure_name and self.is_setter( decl ) - , setters ) - if setters: - #we found member function that could serve as setter. Py++ did not find it - #so there is a difference in cases. - return None + ## Now we need to look for overlapping function declarations + pure_names = [] + pure_names.append( fget.name[len( found ):].lower()) + funcs = self.class_accessors( fget.parent )[1] + funcs.extend( self.inherited_accessors( fget.parent )[1] ) + for f in funcs: + if f.name.lower() in pure_names: + print"Overloaded Read Only Property", fget.name, f.name + return None return decl_wrappers.property_t( self.find_out_property_name( fget, found ), fget ) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |