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.
|