[pygccxml-commit] SF.net SVN: pygccxml: [104] pygccxml_dev/unittests
Brought to you by:
mbaas,
roman_yakovenko
From: <rom...@us...> - 2006-05-17 05:39:19
|
Revision: 104 Author: roman_yakovenko Date: 2006-05-16 22:39:04 -0700 (Tue, 16 May 2006) ViewCVS: http://svn.sourceforge.net/pygccxml/?rev=104&view=rev Log Message: ----------- rename of class_t.typedefs property to "aliases" adding 2 new select functions: typedef and typedefs Modified Paths: -------------- pygccxml_dev/pygccxml/declarations/__init__.py pygccxml_dev/pygccxml/declarations/class_declaration.py pygccxml_dev/pygccxml/declarations/decl_printer.py pygccxml_dev/pygccxml/declarations/scopedef.py pygccxml_dev/pygccxml/parser/patcher.py pygccxml_dev/pygccxml/parser/project_reader.py pygccxml_dev/pygccxml/parser/source_reader.py pygccxml_dev/unittests/typedefs_tester.py Modified: pygccxml_dev/pygccxml/declarations/__init__.py =================================================================== --- pygccxml_dev/pygccxml/declarations/__init__.py 2006-05-16 19:33:24 UTC (rev 103) +++ pygccxml_dev/pygccxml/declarations/__init__.py 2006-05-17 05:39:04 UTC (rev 104) @@ -196,6 +196,7 @@ impl_decl_types[ scopedef.scopedef_t.calldef ] = calldef_t impl_matchers[ scopedef.scopedef_t.operator ] = operator_matcher_t +impl_decl_types[ scopedef.scopedef_t.operator ] = operator_t impl_matchers[ scopedef.scopedef_t.member_function ] = calldef_matcher_t impl_decl_types[ scopedef.scopedef_t.member_function ] = member_function_t @@ -215,6 +216,10 @@ impl_matchers[ scopedef.scopedef_t.enumeration ] = declaration_matcher_t impl_decl_types[ scopedef.scopedef_t.enumeration ] = enumeration_t +impl_matchers[ scopedef.scopedef_t.typedef ] = declaration_matcher_t +impl_decl_types[ scopedef.scopedef_t.typedef ] = typedef_t + + impl_matchers[ namespace_t.namespace ] = namespace_matcher_t impl_matchers[ namespace_t.free_function ] = calldef_matcher_t Modified: pygccxml_dev/pygccxml/declarations/class_declaration.py =================================================================== --- pygccxml_dev/pygccxml/declarations/class_declaration.py 2006-05-16 19:33:24 UTC (rev 103) +++ pygccxml_dev/pygccxml/declarations/class_declaration.py 2006-05-17 05:39:04 UTC (rev 104) @@ -98,7 +98,7 @@ self._public_members = [] self._private_members = [] self._protected_members = [] - self._typedefs = [] + self._aliases = [] def _get_name_impl( self ): if class_t.USE_DEMANGLED_AS_NAME and self.demangled: @@ -221,12 +221,12 @@ protected_members = property( _get_protected_members, _set_protected_members , doc="list of all protected L{members<declaration_t>}" ) - def _get_typedefs(self): - return self._typedefs - def _set_typedefs( self, new_typedefs ): - self._typedefs = new_typedefs - typedefs = property( _get_typedefs, _set_typedefs - , doc="List of aliases/typedefs to this instance") + def _get_aliases(self): + return self._aliases + def _set_aliases( self, new_aliases ): + self._aliases = new_aliases + aliases = property( _get_aliases, _set_aliases + , doc="List of L{aliases<typedef_t>} to this instance") def _get_declarations_impl(self): return self.get_members() Modified: pygccxml_dev/pygccxml/declarations/decl_printer.py =================================================================== --- pygccxml_dev/pygccxml/declarations/decl_printer.py 2006-05-16 19:33:24 UTC (rev 103) +++ pygccxml_dev/pygccxml/declarations/decl_printer.py 2006-05-17 05:39:04 UTC (rev 104) @@ -129,8 +129,8 @@ class_type = 'class type: ' + "'%s'" % str(self.__inst.class_type) self.writer( ' ' * curr_level * self.INDENT_SIZE + class_type.ljust( self.JUSTIFY ) + os.linesep ) - if self.__inst.typedefs: - aliases = map( lambda typedef: typedef.name, self.__inst.typedefs ) + if self.__inst.aliases: + aliases = map( lambda typedef: typedef.name, self.__inst.aliases ) msg = 'aliases: ' + `aliases` self.writer( ' ' * curr_level * self.INDENT_SIZE + msg.ljust( self.JUSTIFY ) + os.linesep ) Modified: pygccxml_dev/pygccxml/declarations/scopedef.py =================================================================== --- pygccxml_dev/pygccxml/declarations/scopedef.py 2006-05-16 19:33:24 UTC (rev 103) +++ pygccxml_dev/pygccxml/declarations/scopedef.py 2006-05-17 05:39:04 UTC (rev 104) @@ -524,3 +524,23 @@ , allow_empty=allow_empty) #adding small aliase enums = enumerations + + def typedef( self, name=None, function=None, header_dir=None, header_file=None, recursive=None ): + """Finds any declaration by criteria. Please see L{scopedef_t} for full explanation.""" + return self._find_single( self._impl_matchers[ scopedef_t.typedef ] + , name=name + , function=function + , decl_type=self._impl_decl_types[ scopedef_t.typedef ] + , header_dir=header_dir + , header_file=header_file + , recursive=recursive) + + def typedefs( self, name=None, function=None, header_dir=None, header_file=None, recursive=None, allow_empty=None ): + return self._find_multiple( self._impl_matchers[ scopedef_t.typedef ] + , name=name + , function=function + , decl_type=self._impl_decl_types[ scopedef_t.typedef ] + , header_dir=header_dir + , header_file=header_file + , recursive=recursive + , allow_empty=allow_empty) \ No newline at end of file Modified: pygccxml_dev/pygccxml/parser/patcher.py =================================================================== --- pygccxml_dev/pygccxml/parser/patcher.py 2006-05-16 19:33:24 UTC (rev 103) +++ pygccxml_dev/pygccxml/parser/patcher.py 2006-05-17 05:39:04 UTC (rev 104) @@ -147,7 +147,7 @@ decl = base_type.declaration return decl.name == name \ or ( isinstance( decl, declarations.class_t ) \ - and name in map( lambda typedef: typedef.name, decl.typedefs ) ) + and name in map( lambda typedef: typedef.name, decl.aliases ) ) def __fix_constructor_call( self, func, arg ): call_invocation = declarations.call_invocation @@ -160,7 +160,7 @@ if decl.name != name: #we have some alias to the class relevant_typedefs = filter( lambda typedef: typedef.name == name - , decl.typedefs ) + , decl.aliases ) if 1 == len( relevant_typedefs ): f_q_name = self.__join_names( declarations.full_name( relevant_typedefs[0].parent ) , name ) Modified: pygccxml_dev/pygccxml/parser/project_reader.py =================================================================== --- pygccxml_dev/pygccxml/parser/project_reader.py 2006-05-16 19:33:24 UTC (rev 103) +++ pygccxml_dev/pygccxml/parser/project_reader.py 2006-05-17 05:39:04 UTC (rev 104) @@ -252,7 +252,7 @@ if config.verbose: logger.info( "Relinking declared types ..." ) self._relink_declarated_types( leaved_classes, types ) - source_reader.bind_typedefs( pygccxml.declarations.make_flatten( answer ) ) + source_reader.bind_aliases( pygccxml.declarations.make_flatten( answer ) ) return answer def __parse_all_at_once(self, files): Modified: pygccxml_dev/pygccxml/parser/source_reader.py =================================================================== --- pygccxml_dev/pygccxml/parser/source_reader.py 2006-05-16 19:33:24 UTC (rev 103) +++ pygccxml_dev/pygccxml/parser/source_reader.py 2006-05-17 05:39:04 UTC (rev 104) @@ -19,7 +19,7 @@ RuntimeError.__init__( self, msg ) -def bind_typedefs( decls ): +def bind_aliases( decls ): """ This function binds between class and it's typedefs. @@ -40,8 +40,8 @@ continue if id( cls_inst ) not in visited: visited.add( id( cls_inst ) ) - del cls_inst.typedefs[:] - cls_inst.typedefs.append( decl ) + del cls_inst.aliases[:] + cls_inst.aliases.append( decl ) class source_reader_t: def __init__( self, config, cache=None, decl_factory=None ): @@ -253,7 +253,7 @@ for decl in decls.itervalues(): linker_.instance = decl apply_visitor( linker_, decl ) - bind_typedefs( decls.itervalues() ) + bind_aliases( decls.itervalues() ) decls = filter( lambda inst: isinstance(inst, declaration_t) and not inst.parent, decls.itervalues() ) #some times gccxml report typedefs defined in no namespace #it happens for example in next situation Modified: pygccxml_dev/unittests/typedefs_tester.py =================================================================== --- pygccxml_dev/unittests/typedefs_tester.py 2006-05-16 19:33:24 UTC (rev 103) +++ pygccxml_dev/unittests/typedefs_tester.py 2006-05-17 05:39:04 UTC (rev 104) @@ -30,8 +30,8 @@ def test( self ): item_cls = self.global_ns.class_( name='item_t' ) self.failUnless( item_cls, "unable to find class 'item_t'" ) - self.failUnless( len( item_cls.typedefs ) == 1 ) - self.failUnless( item_cls.typedefs[0].name == 'Item' ) + self.failUnless( len( item_cls.aliases ) == 1 ) + self.failUnless( item_cls.aliases[0].name == 'Item' ) class tester_prj_t( parser_test_case.parser_test_case_t ): @@ -52,9 +52,9 @@ , type=declarations.class_t , name='item_t' ) self.failUnless( item_cls, "unable to find class 'item_t'" ) - self.failUnless( len( item_cls.typedefs ) == 3 ) + self.failUnless( len( item_cls.aliases ) == 3 ) expected_aliases = set( ['Item', 'Item1', 'Item2' ] ) - real_aliases = set( map( lambda typedef: typedef.name, item_cls.typedefs ) ) + real_aliases = set( map( lambda typedef: typedef.name, item_cls.aliases ) ) self.failUnless( real_aliases == expected_aliases ) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |