Revision: 285
Author: roman_yakovenko
Date: 2006-07-09 00:33:06 -0700 (Sun, 09 Jul 2006)
ViewCVS: http://svn.sourceforge.net/pygccxml/?rev=285&view=rev
Log Message:
-----------
fixing bugs in indexing suite v2 code generation
Modified Paths:
--------------
pyplusplus_dev/pyplusplus/code_creators/indexing_suites.py
pyplusplus_dev/pyplusplus/module_creator/creator.py
Modified: pyplusplus_dev/pyplusplus/code_creators/indexing_suites.py
===================================================================
--- pyplusplus_dev/pyplusplus/code_creators/indexing_suites.py 2006-07-09 05:31:25 UTC (rev 284)
+++ pyplusplus_dev/pyplusplus/code_creators/indexing_suites.py 2006-07-09 07:33:06 UTC (rev 285)
@@ -114,8 +114,11 @@
, "template<>"
, "struct value_traits< %(value_class)s >{"
, ""
- , self.indent( "static bool const equality_comparable = %(has_equal)s;" )
+ , self.indent( "static bool const equality_comparable = %(has_equal)s;" )
+ , self.indent( "%(equal_to)s" )
+ , ""
, self.indent( "static bool const less_than_comparable = %(has_lessthan)s;" )
+ , self.indent( "%(less)s" )
, ""
, self.indent( "template<typename PythonClass, typename Policy>" )
, self.indent( "static void visit_container_class(PythonClass &, Policy const &){" )
@@ -126,10 +129,20 @@
, ""
, "}/*indexing*/ } /*python*/ } /*boost*/"
])
+
+ less = ''
+ if self.declaration.less_than_comparable:
+ less = "typedef std::less< %s > less;" % self.decl_identifier
+
+ equal_to = ''
+ if self.declaration.equality_comparable:
+ equal_to = "typedef std::equal_to< %s > equal_to;" % self.decl_identifier
return tmpl % { 'value_class' : self.decl_identifier
- , 'has_equal' : str( bool( self.declaration.equality_comparable ) ) .lower()
- , 'has_lessthan' : str( bool( self.declaration.less_than_comparable ) ).lower()
+ , 'has_equal' : str( bool( self.declaration.equality_comparable ) ) .lower()
+ , 'equal_to' : equal_to
+ , 'has_lessthan' : str( bool( self.declaration.less_than_comparable ) ).lower()
+ , 'less' : less
, 'visitor_helper_body' : '' }
def generate_value_class_fwd_declaration( self ):
Modified: pyplusplus_dev/pyplusplus/module_creator/creator.py
===================================================================
--- pyplusplus_dev/pyplusplus/module_creator/creator.py 2006-07-09 05:31:25 UTC (rev 284)
+++ pyplusplus_dev/pyplusplus/module_creator/creator.py 2006-07-09 07:33:06 UTC (rev 285)
@@ -415,9 +415,8 @@
class_traits = declarations.class_traits
if class_traits.is_my_case( element_type ):
value_cls = class_traits.get_declaration( element_type )
- if not ( value_cls.equality_comparable and value_cls.less_than_comparable ):
- element_type_cc = code_creators.value_traits_t( value_cls )
- self.__extmodule.adopt_creator( element_type_cc, self.__extmodule.creators.index( self.__module_body ) )
+ element_type_cc = code_creators.value_traits_t( value_cls )
+ self.__extmodule.adopt_creator( element_type_cc, self.__extmodule.creators.index( self.__module_body ) )
cls_creator.adopt_creator( code_creators.indexing_suite2_t(cls) )
self.__module_body.adopt_creator( cls_creator )
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|