[pygccxml-commit] SF.net SVN: pygccxml: [273] pygccxml_dev/unittests
Brought to you by:
mbaas,
roman_yakovenko
From: <rom...@us...> - 2006-07-05 08:13:06
|
Revision: 273 Author: roman_yakovenko Date: 2006-07-05 01:12:38 -0700 (Wed, 05 Jul 2006) ViewCVS: http://svn.sourceforge.net/pygccxml/?rev=273&view=rev Log Message: ----------- renaming value_type to element_type and making it to be a property Modified Paths: -------------- pygccxml_dev/pygccxml/declarations/container_traits.py pygccxml_dev/unittests/vector_traits_tester.py pyplusplus_dev/examples/pyboost_dev/dev/date_time/generate_code.py pyplusplus_dev/pyplusplus/decl_wrappers/decl_wrapper.py pyplusplus_dev/pyplusplus/decl_wrappers/indexing_suite1.py pyplusplus_dev/pyplusplus/decl_wrappers/indexing_suite2.py pyplusplus_dev/pyplusplus/file_writers/multiple_files.py pyplusplus_dev/pyplusplus/module_creator/creator.py pyplusplus_dev/pyplusplus/module_creator/types_database.py pyplusplus_dev/unittests/indexing_suites_tester.py Modified: pygccxml_dev/pygccxml/declarations/container_traits.py =================================================================== --- pygccxml_dev/pygccxml/declarations/container_traits.py 2006-07-04 13:30:48 UTC (rev 272) +++ pygccxml_dev/pygccxml/declarations/container_traits.py 2006-07-05 08:12:38 UTC (rev 273) @@ -1,23 +1,24 @@ -# Copyright 2004 Roman Yakovenko. -# Distributed under the Boost Software License, Version 1.0. (See -# accompanying file LICENSE_1_0.txt or copy at -# http://www.boost.org/LICENSE_1_0.txt) - -""" -defines few algorithms, that deals with different properties of std containers -""" - -import calldef -import cpptypes -import namespace -import templates -import class_declaration -import type_traits - +# Copyright 2004 Roman Yakovenko. +# Distributed under the Boost Software License, Version 1.0. (See +# accompanying file LICENSE_1_0.txt or copy at +# http://www.boost.org/LICENSE_1_0.txt) + +""" +defines few algorithms, that deals with different properties of std containers +""" + +import calldef +import cpptypes +import namespace +import templates +import class_declaration +import type_traits + class container_traits_impl_t: - def __init__( self, container_name, value_type_index ): + def __init__( self, container_name, element_type_index, element_type_typedef ): self.name = container_name - self.value_type_index = value_type_index + self.element_type_index = element_type_index + self.element_type_typedef = element_type_typedef def get_container_or_none( self, type ): """returns reference to the class declaration or None""" @@ -50,22 +51,22 @@ raise TypeError( 'Type "%s" is not instantiation of std::%s' % ( type.decl_string, self.name ) ) return cls - def value_type( self, type ): + def element_type( self, type ): cls = self.class_declaration( type ) if isinstance( cls, class_declaration.class_t ): - value_type = cls.typedef( "value_type", recursive=False ).type + value_type = cls.typedef( self.element_type_typedef, recursive=False ).type return type_traits.remove_declarated( value_type ) else: - value_type_str = templates.args( cls.name )[self.value_type_index] + value_type_str = templates.args( cls.name )[self.element_type_index] ref = type_traits.impl_details.find_value_type( cls.top_parent, value_type_str ) if None is ref: raise RuntimeError( "Unable to find out %s '%s' value type." % ( self.name, cls.decl_string ) ) return ref -def create_traits_class( container_name, value_type_index ): +def create_traits_class( container_name, element_type_index, element_type_typedef ): class xxx_traits: - impl = container_traits_impl_t( container_name, value_type_index ) + impl = container_traits_impl_t( container_name, element_type_index, element_type_typedef ) @staticmethod def is_my_case( type ): @@ -76,34 +77,35 @@ return xxx_traits.impl.class_declaration( type ) @staticmethod - def value_type( type ): - return xxx_traits.impl.value_type( type ) + def element_type( type ): + return xxx_traits.impl.element_type( type ) return xxx_traits -list_traits = create_traits_class( 'list', 0 ) +list_traits = create_traits_class( 'list', 0, 'value_type' ) -deque_traits = create_traits_class( 'deque', 0 ) +deque_traits = create_traits_class( 'deque', 0, 'value_type' ) -queue_traits = create_traits_class( 'queue', 0 ) -priority_queue = create_traits_class( 'priority_queue', 0 ) +queue_traits = create_traits_class( 'queue', 0, 'value_type' ) -vector_traits = create_traits_class( 'vector', 0 ) +priority_queue = create_traits_class( 'priority_queue', 0, 'value_type' ) -stack_traits = create_traits_class( 'stack', 0 ) +vector_traits = create_traits_class( 'vector', 0, 'value_type' ) -map_traits = create_traits_class( 'map', 1 ) -multimap_traits = create_traits_class( 'multimap', 1 ) +stack_traits = create_traits_class( 'stack', 0, 'value_type' ) -hash_map_traits = create_traits_class( 'hash_map', 1 ) -hash_multimap_traits = create_traits_class( 'hash_multimap', 1 ) +map_traits = create_traits_class( 'map', 1, 'mapped_type' ) +multimap_traits = create_traits_class( 'multimap', 1, 'mapped_type' ) -set_traits = create_traits_class( 'set', 0 ) -hash_set_traits = create_traits_class( 'hash_set', 0 ) +hash_map_traits = create_traits_class( 'hash_map', 1, 'mapped_type' ) +hash_multimap_traits = create_traits_class( 'hash_multimap', 1, 'mapped_type' ) -multiset_traits = create_traits_class( 'multiset', 0 ) -hash_multiset_traits = create_traits_class( 'hash_multiset', 0 ) +set_traits = create_traits_class( 'set', 0, 'value_type' ) +hash_set_traits = create_traits_class( 'hash_set', 0, 'value_type' ) +multiset_traits = create_traits_class( 'multiset', 0, 'value_type' ) +hash_multiset_traits = create_traits_class( 'hash_multiset', 0, 'value_type' ) + Modified: pygccxml_dev/unittests/vector_traits_tester.py =================================================================== --- pygccxml_dev/unittests/vector_traits_tester.py 2006-07-04 13:30:48 UTC (rev 272) +++ pygccxml_dev/unittests/vector_traits_tester.py 2006-07-05 08:12:38 UTC (rev 273) @@ -28,7 +28,7 @@ def validate_yes( self, value_type, container ): traits = declarations.vector_traits self.failUnless( traits.is_my_case( container ) ) - self.failUnless( declarations.is_same( value_type, traits.value_type( container ) ) ) + self.failUnless( declarations.is_same( value_type, traits.element_type( container ) ) ) def test_global_ns( self ): value_type = self.global_ns.class_( '_0_' ) Modified: pyplusplus_dev/examples/pyboost_dev/dev/date_time/generate_code.py =================================================================== --- pyplusplus_dev/examples/pyboost_dev/dev/date_time/generate_code.py 2006-07-04 13:30:48 UTC (rev 272) +++ pyplusplus_dev/examples/pyboost_dev/dev/date_time/generate_code.py 2006-07-05 08:12:38 UTC (rev 273) @@ -144,7 +144,7 @@ def is_vector_of_strings( decl ): if not declarations.vector_traits.is_my_case( decl ): return False - return declarations.is_std_string( declarations.vector_traits.value_type(decl) ) + return declarations.is_std_string( declarations.vector_traits.element_type(decl) ) str_vec = mb.class_( is_vector_of_strings ) str_vec.alias = "strings" Modified: pyplusplus_dev/pyplusplus/decl_wrappers/decl_wrapper.py =================================================================== --- pyplusplus_dev/pyplusplus/decl_wrappers/decl_wrapper.py 2006-07-04 13:30:48 UTC (rev 272) +++ pyplusplus_dev/pyplusplus/decl_wrappers/decl_wrapper.py 2006-07-05 08:12:38 UTC (rev 273) @@ -30,7 +30,6 @@ this class are never created by the user, instead they are returned by the API. """ - def __init__(self): object.__init__(self) self._alias = None @@ -45,9 +44,11 @@ def _get_alias(self): if not self._alias: - if declarations.templates.is_instantiation( self.name ): + if declarations.templates.is_instantiation( self.name ): + container_aliases = [ 'value_type', 'key_type' ] if isinstance( self, declarations.class_t ) \ - and 1 == len( set( map( lambda typedef: typedef.name, self.aliases ) ) ): + and 1 == len( set( map( lambda typedef: typedef.name, self.aliases ) ) ) \ + and self.aliases[0].name not in container_aliases: self._alias = self.aliases[0].name else: self._alias = self._generate_valid_name() Modified: pyplusplus_dev/pyplusplus/decl_wrappers/indexing_suite1.py =================================================================== --- pyplusplus_dev/pyplusplus/decl_wrappers/indexing_suite1.py 2006-07-04 13:30:48 UTC (rev 272) +++ pyplusplus_dev/pyplusplus/decl_wrappers/indexing_suite1.py 2006-07-05 08:12:38 UTC (rev 273) @@ -28,17 +28,18 @@ return self.__container_class container_class = property( _get_container_class ) - def value_type(self): - return self.__container_traits.value_type( self.container_class ) + def _get_element_type(self): + return self.__container_traits.element_type( self.container_class ) + element_type = property( _get_element_type ) def _get_no_proxy( self ): if self.__no_proxy is None: - value_type = self.value_type() - if declarations.is_fundamental( value_type ) \ - or declarations.is_enum( value_type ) \ - or declarations.is_std_string( value_type ) \ - or declarations.is_std_wstring( value_type ) \ - or declarations.smart_pointer_traits.is_smart_pointer( value_type ): + element_type = self.element_type + if declarations.is_fundamental( element_type ) \ + or declarations.is_enum( element_type ) \ + or declarations.is_std_string( element_type ) \ + or declarations.is_std_wstring( element_type ) \ + or declarations.smart_pointer_traits.is_smart_pointer( element_type ): self.__no_proxy = True else: self.__no_proxy = False Modified: pyplusplus_dev/pyplusplus/decl_wrappers/indexing_suite2.py =================================================================== --- pyplusplus_dev/pyplusplus/decl_wrappers/indexing_suite2.py 2006-07-04 13:30:48 UTC (rev 272) +++ pyplusplus_dev/pyplusplus/decl_wrappers/indexing_suite2.py 2006-07-05 08:12:38 UTC (rev 273) @@ -59,8 +59,9 @@ return self._get_container_traits() container_traits = property( _get_container_traits ) - def value_type( self ): - return self.__container_traits.value_type( self.container_class ) + def _get_element_type(self): + return self.__container_traits.element_type( self.container_class ) + element_type = property( _get_element_type ) def _get_call_policies( self ): #TODO find out call policies @@ -73,7 +74,7 @@ if self._default_applied: return self._default_applied = True - #find out what operators are supported by value_type and + #find out what operators are supported by element_type and #then configure the _disable_[methods|groups] pass Modified: pyplusplus_dev/pyplusplus/file_writers/multiple_files.py =================================================================== --- pyplusplus_dev/pyplusplus/file_writers/multiple_files.py 2006-07-04 13:30:48 UTC (rev 272) +++ pyplusplus_dev/pyplusplus/file_writers/multiple_files.py 2006-07-05 08:12:38 UTC (rev 273) @@ -86,11 +86,11 @@ return None if not isinstance( code_creator.declaration.indexing_suite, decl_wrappers.indexing_suite2_t ): return None - value_type = code_creator.declaration.indexing_suite.value_type() + element_type = code_creator.declaration.indexing_suite.element_type class_traits = declarations.class_traits - if not class_traits.is_my_case( value_type ): + if not class_traits.is_my_case( element_type ): return None - value_class = class_traits.get_declaration( value_type ) + value_class = class_traits.get_declaration( element_type ) return self.create_value_traits_header_name( value_class ) def create_source( self, file_name, function_name, creators ): Modified: pyplusplus_dev/pyplusplus/module_creator/creator.py =================================================================== --- pyplusplus_dev/pyplusplus/module_creator/creator.py 2006-07-04 13:30:48 UTC (rev 272) +++ pyplusplus_dev/pyplusplus/module_creator/creator.py 2006-07-05 08:12:38 UTC (rev 273) @@ -357,7 +357,7 @@ def _treat_indexing_suite( self ): def create_explanation(cls): msg = '//WARNING: the next line of code will not compile, because "%s" does not have operator== !' - msg = msg % cls.indexing_suite.value_type().decl_string + msg = msg % cls.indexing_suite.element_type.decl_string return code_creators.custom_text_t( msg, False ) def create_cls_cc( cls ): @@ -406,18 +406,18 @@ used_headers.add( isuite[ container_name ] ) cls_creator = create_cls_cc( cls ) - value_type = cls.indexing_suite.value_type() + element_type = cls.indexing_suite.element_type if isuite is isuite1: - if declarations.is_class( value_type ) and not declarations.has_public_equal( value_type ): + if declarations.is_class( element_type ) and not declarations.has_public_equal( element_type ): cls_creator.adopt_creator( create_explanation( cls ) ) cls_creator.adopt_creator( code_creators.indexing_suite1_t(cls) ) else: class_traits = declarations.class_traits - if class_traits.is_my_case( value_type ): - value_cls = class_traits.get_declaration( value_type ) + 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 ): - value_type_cc = code_creators.value_traits_t( value_cls ) - self.__extmodule.adopt_creator( value_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 ) Modified: pyplusplus_dev/pyplusplus/module_creator/types_database.py =================================================================== --- pyplusplus_dev/pyplusplus/module_creator/types_database.py 2006-07-04 13:30:48 UTC (rev 272) +++ pyplusplus_dev/pyplusplus/module_creator/types_database.py 2006-07-05 08:12:38 UTC (rev 273) @@ -71,8 +71,7 @@ return False try: - #checking whether value_type could be extracted - container_cls.indexing_suite.value_type() + check_extraction = container_cls.indexing_suite.element_type except RuntimeError, error: msg = 'WARNING: pyplusplus found "%s" instantiation declaration, ' % container_cls.name msg = msg + 'but can not find out value type!' Modified: pyplusplus_dev/unittests/indexing_suites_tester.py =================================================================== --- pyplusplus_dev/unittests/indexing_suites_tester.py 2006-07-04 13:30:48 UTC (rev 272) +++ pyplusplus_dev/unittests/indexing_suites_tester.py 2006-07-05 08:12:38 UTC (rev 273) @@ -24,8 +24,8 @@ def matcher( item, decl ): if not declarations.vector_traits.is_my_case( decl ): return False - value_type = declarations.vector_traits.value_type(decl) - if item is value_type: + element_type = declarations.vector_traits.element_type(decl) + if item is element_type: return True return False This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |