[pygccxml-commit] source/pyplusplus/decl_wrappers namespace_wrapper.py,1.4,1.5 scopedef_wrapper.py,1
Brought to you by:
mbaas,
roman_yakovenko
From: Roman <rom...@us...> - 2006-03-30 05:56:29
|
Update of /cvsroot/pygccxml/source/pyplusplus/decl_wrappers In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28510/pyplusplus/decl_wrappers Modified Files: namespace_wrapper.py scopedef_wrapper.py Log Message: fixing select API to be more user friendly Index: namespace_wrapper.py =================================================================== RCS file: /cvsroot/pygccxml/source/pyplusplus/decl_wrappers/namespace_wrapper.py,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** namespace_wrapper.py 29 Mar 2006 04:23:45 -0000 1.4 --- namespace_wrapper.py 30 Mar 2006 05:56:17 -0000 1.5 *************** *** 12,36 **** declarations.namespace_t.__init__(self, *arguments, **keywords ) ! def namespace( self, *args, **keywds ): ! keywds['decl_type'] = declarations.namespace_t ! return self._find_single( declarations.namespace_matcher_t, *args, **keywds ) def namespaces( self, *args, **keywds ): ! keywds['decl_type'] = declarations.namespace_t ! return self._find_multiple( declarations.namespace_matcher_t, *args, **keywds ) ! def free_function( self, *args, **keywds ): ! keywds['decl_type'] = declarations.free_function_t ! return self._find_single( declarations.calldef_matcher_t, *args, **keywds ) ! def free_functions( self, *args, **keywds ): ! keywds['decl_type'] = declarations.free_function_t ! return self._find_multiple( declarations.calldef_matcher_t, *args, **keywds ) ! def free_operator( self, *args, **keywds ): ! keywds['decl_type'] = declarations.free_operator_t ! return self._find_single( declarations.operator_matcher_t, *args, **keywds ) ! def free_operators( self, *args, **keywds ): ! keywds['decl_type'] = declarations.free_operator_t ! return self._find_multiple( declarations.operator_matcher_t, *args, **keywds ) --- 12,70 ---- declarations.namespace_t.__init__(self, *arguments, **keywords ) ! def namespace( self, name=None, function=None, recursive=None ): ! return self._find_single( declarations.namespace_matcher_t ! , name=name ! , function=function ! , recursive=recursive ) def namespaces( self, *args, **keywds ): ! return self._find_multiple( declarations.namespace_matcher_t ! , name=name ! , function=function ! , recursive=recursive ) ! def free_function( self, name=None, function=None, return_type=None, arg_types=None, header_dir=None, header_file=None, recursive=None ): ! return self._find_single( declarations.calldef_matcher_t ! , name=name ! , function=function ! , decl_type=declarations.free_function_t ! , return_type=return_type ! , arg_types=arg_types ! , header_dir=header_dir ! , header_file=header_file ! , recursive=recursive ) ! def free_functions( self, name=None, function=None, return_type=None, arg_types=None, header_dir=None, header_file=None, recursive=None ): ! return self._find_multiple( declarations.calldef_matcher_t ! , name=name ! , function=function ! , decl_type=declarations.free_function_t ! , return_type=return_type ! , arg_types=arg_types ! , header_dir=header_dir ! , header_file=header_file ! , recursive=recursive) ! def free_operator( self, name=None, function=None, symbol=None, return_type=None, arg_types=None, header_dir=None, header_file=None, recursive=None ): ! return self._find_single( declarations.operator_matcher_t ! , name=name ! , symbol=symbol ! , function=function ! , decl_type=declarations.free_operator_t ! , return_type=return_type ! , arg_types=arg_types ! , header_dir=header_dir ! , header_file=header_file ! , recursive=recursive ) ! def free_operators( self, name=None, function=None, symbol=None, return_type=None, arg_types=None, header_dir=None, header_file=None, recursive=None ): ! return self._find_multiple( declarations.operator_matcher_t ! , name=name ! , symbol=symbol ! , function=function ! , decl_type=declarations.free_operator_t ! , return_type=return_type ! , arg_types=arg_types ! , header_dir=header_dir ! , header_file=header_file ! , recursive=recursive ) Index: scopedef_wrapper.py =================================================================== RCS file: /cvsroot/pygccxml/source/pyplusplus/decl_wrappers/scopedef_wrapper.py,v retrieving revision 1.6 retrieving revision 1.7 diff -C2 -d -r1.6 -r1.7 *** scopedef_wrapper.py 29 Mar 2006 07:02:36 -0000 1.6 --- scopedef_wrapper.py 30 Mar 2006 05:56:17 -0000 1.7 *************** *** 40,44 **** --- 40,53 ---- return types + def clear_optimizer(self): + self.__optimized = False + self.__type2decls = {} + self.__type2name2decls = {} + self.__type2decls_nr = {} + self.__type2name2decls_nr = {} + self.__all_decls = None + def init_optimizer(self): + self.clear_optimizer() #start_time = time.clock() *************** *** 95,123 **** self.ignore = False map( lambda decl: decl.include(), self.declarations ) ! def __create_matcher( self, match_class, *args, **keywds ): ! matcher = match_class( **keywds ) ! if len( args ) == 1 and callable( args[0] ): decl_wrapper.logger.info( 'running query: %s and <user defined function>' % str( matcher ) ) ! return lambda decl: matcher( decl ) and args[0](decl) else: - if 1 == len( args ) and isinstance( args[0], str ): - matcher.name = args[0] decl_wrapper.logger.info( 'running query: %s' % str( matcher ) ) return matcher - - def __does_query_has_type( self, **keywds ): - return keywds.has_key( 'decl_type' ) - - def __does_query_has_type_and_name( self, *args, **keywds ): - if len(args) != 1: - return False - if not isinstance( args[0], str ): - return False - return self.__does_query_has_type_and_name( **keywds ) ! def __findout_range( self, matcher, *args, **keywds ): ! recursive = keywds.get( 'recursive', scopedef_t.RECURSIVE_DEFAULT ) ! if not self.__optimized: decl_wrapper.logger.info( 'running non optimized query - optimization has not been done' ) --- 104,147 ---- self.ignore = False map( lambda decl: decl.include(), self.declarations ) + + def __normalize_args( self, **keywds ): + if callable( keywds['name'] ) and None is keywds['function']: + keywds['function'] = keywds['name'] + keywds['name'] = None + return keywds + + def __findout_recursive( self, **keywds ): + if None is keywds[ 'recursive' ]: + return self.RECURSIVE_DEFAULT + else: + return keywds[ 'recursive' ] ! def __findout_decl_type( self, match_class, **keywds ): ! if keywds.has_key( 'decl_type' ): ! return keywds['decl_type'] ! ! matcher_args = keywds.copy() ! del matcher_args['function'] ! del matcher_args['recursive'] ! ! matcher = match_class( **matcher_args ) ! if matcher.decl_type: ! return matcher.decl_type ! return None ! ! def __create_matcher( self, match_class, **keywds ): ! matcher_args = keywds.copy() ! del matcher_args['function'] ! del matcher_args['recursive'] ! ! matcher = match_class( **matcher_args ) ! if keywds['function']: decl_wrapper.logger.info( 'running query: %s and <user defined function>' % str( matcher ) ) ! return lambda decl: matcher( decl ) and keywds['function'](decl) else: decl_wrapper.logger.info( 'running query: %s' % str( matcher ) ) return matcher ! def __findout_range( self, name, decl_type, recursive ): if not self.__optimized: decl_wrapper.logger.info( 'running non optimized query - optimization has not been done' ) *************** *** 127,147 **** return decls ! if self.__does_query_has_type_and_name( *args, **keywds ): ! name = matcher.name if matcher.is_full_name(): ! name = matcher.decl_name_only() if recursive: decl_wrapper.logger.info( 'running type + name optimized query recursively' ) ! return self.__type2name2decls[ keywds['decl_type'] ][ name ] else: decl_wrapper.logger.info( 'running type + name optimized query non recursively' ) ! return self.__type2name2decls_nr[ keywds['decl_type'] ][ name ] ! elif self.__does_query_has_type( **keywds ): if recursive: decl_wrapper.logger.info( 'running type optimized query recursively' ) ! return self.__type2decls[ keywds['decl_type'] ] else: decl_wrapper.logger.info( 'running type optimized query non recursively' ) ! return self.__type2decls_nr[ keywds['decl_type'] ] else: decl_wrapper.logger.info( 'running non optimized query - query is more complex then type + name' ) --- 151,171 ---- return decls ! if name and decl_type: ! matcher = declarations.declaration_matcher_t( name=name ) if matcher.is_full_name(): ! name = matcher.decl_name_only if recursive: decl_wrapper.logger.info( 'running type + name optimized query recursively' ) ! return self.__type2name2decls[decl_type][name] else: decl_wrapper.logger.info( 'running type + name optimized query non recursively' ) ! return self.__type2name2decls_nr[decl_type][name] ! elif decl_type: if recursive: decl_wrapper.logger.info( 'running type optimized query recursively' ) ! return self.__type2decls[ decl_type ] else: decl_wrapper.logger.info( 'running type optimized query non recursively' ) ! return self.__type2decls_nr[ decl_type ] else: decl_wrapper.logger.info( 'running non optimized query - query is more complex then type + name' ) *************** *** 151,159 **** return self.declarations ! def _find_single( self, match_class, *args, **keywds ): decl_wrapper.logger.info( 'running query - started' ) start_time = time.clock() ! matcher = self.__create_matcher( match_class, *args, **keywds ) ! decls = self.__findout_range( matcher, *args, **keywds ) found = declarations.matcher.get_single( matcher, decls, False ) decl_wrapper.logger.info( 'query execution took : %f seconds' % ( time.clock() - start_time ) ) --- 175,186 ---- return self.declarations ! def _find_single( self, match_class, **keywds ): decl_wrapper.logger.info( 'running query - started' ) start_time = time.clock() ! norm_keywds = self.__normalize_args( **keywds ) ! matcher = self.__create_matcher( match_class, **norm_keywds ) ! dtype = self.__findout_decl_type( match_class, **norm_keywds ) ! recursive_ = self.__findout_recursive( **norm_keywds ) ! decls = self.__findout_range( norm_keywds['name'], dtype, recursive_ ) found = declarations.matcher.get_single( matcher, decls, False ) decl_wrapper.logger.info( 'query execution took : %f seconds' % ( time.clock() - start_time ) ) *************** *** 161,168 **** return found ! def _find_multiple( self, match_class, *args, **keywds ): start_time = time.clock() ! matcher = self.__create_matcher( match_class, *args, **keywds ) ! decls = self.__findout_range( matcher, *args, **keywds ) found = declarations.matcher.find( matcher, decls, False ) mfound = mdecl_wrapper.mdecl_wrapper_t( found ) --- 188,198 ---- return found ! def _find_multiple( self, match_class, **keywds ): start_time = time.clock() ! norm_keywds = self.__normalize_args( **keywds ) ! matcher = self.__create_matcher( match_class, **norm_keywds ) ! dtype = self.__findout_decl_type( match_class, **norm_keywds ) ! recursive_ = self.__findout_recursive( **norm_keywds ) ! decls = self.__findout_range( norm_keywds['name'], dtype, recursive_ ) found = declarations.matcher.find( matcher, decls, False ) mfound = mdecl_wrapper.mdecl_wrapper_t( found ) *************** *** 174,252 **** return mfound ! def decl( self, *args, **keywds ): ! return self._find_single( declarations.declaration_matcher_t, *args, **keywds ) ! def decls( self, *args, **keywds ): ! return self._find_multiple( declarations.declaration_matcher_t, *args, **keywds ) ! def class_( self, *args, **keywds ): ! keywds['decl_type'] = declarations.class_t ! return self._find_single( declarations.declaration_matcher_t, *args, **keywds ) ! def classes( self, *args, **keywds ): ! keywds['decl_type'] = declarations.class_t ! return self._find_multiple( declarations.declaration_matcher_t, *args, **keywds ) ! def variable( self, *args, **keywds ): ! keywds['decl_type'] = declarations.variable_t ! return self._find_single( declarations.variable_matcher_t, *args, **keywds ) ! def variables( self, *args, **keywds ): ! keywds['decl_type'] = declarations.variable_t ! return self._find_multiple( declarations.variable_matcher_t, *args, **keywds ) ! def calldef( self, *args, **keywds ): ! keywds['decl_type'] = declarations.calldef_t ! return self._find_single( declarations.calldef_matcher_t, *args, **keywds ) ! def calldefs( self, *args, **keywds ): ! keywds['decl_type'] = declarations.calldef_t ! return self._find_multiple( declarations.calldef_matcher_t, *args, **keywds ) ! def operator( self, *args, **keywds ): ! keywds['decl_type'] = declarations.operator_t ! return self._find_single( declarations.operator_matcher_t, *args, **keywds ) ! ! def operators( self, *args, **keywds ): ! keywds['decl_type'] = declarations.operator_t ! return self._find_multiple( declarations.operator_matcher_t, *args, **keywds ) ! ! def member_function( self, *args, **keywds ): ! keywds['decl_type'] = declarations.member_function_t ! return self._find_single( declarations.calldef_matcher_t, *args, **keywds ) ! def member_functions( self, *args, **keywds ): ! keywds['decl_type'] = declarations.member_function_t ! return self._find_multiple( declarations.calldef_matcher_t, *args, **keywds ) ! def constructor( self, *args, **keywds ): ! keywds['decl_type'] = declarations.constructor_t ! return self._find_single( declarations.calldef_matcher_t, *args, **keywds ) ! def constructors( self, *args, **keywds ): ! keywds['decl_type'] = declarations.constructor_t ! return self._find_multiple( declarations.calldef_matcher_t, *args, **keywds ) ! def member_operator( self, *args, **keywds ): ! keywds['decl_type'] = declarations.member_operator_t ! return self._find_single( declarations.operator_matcher_t, *args, **keywds ) ! def member_operators( self, *args, **keywds ): ! keywds['decl_type'] = declarations.member_operator_t ! return self._find_multiple( declarations.operator_matcher_t, *args, **keywds ) ! def casting_operator( self, *args, **keywds ): ! keywds['decl_type'] = declarations.casting_operator_t ! return self._find_single( declarations.calldef_matcher_t, *args, **keywds ) ! def casting_operators( self, *args, **keywds ): ! keywds['decl_type'] = declarations.casting_operator_t ! return self._find_multiple( declarations.calldef_matcher_t, *args, **keywds ) ! def enumeration( self, *args, **keywds ): ! keywds['decl_type'] = declarations.enumeration_t ! return self._find_single( declarations.declaration_matcher_t, *args, **keywds ) - def enumerations( self, *args, **keywds ): - keywds['decl_type'] = declarations.enumeration_t - return self._find_multiple( declarations.declaration_matcher_t, *args, **keywds ) --- 204,409 ---- return mfound ! def decl( self, name=None, function=None, header_dir=None, header_file=None, recursive=None ): ! return self._find_single( declarations.declaration_matcher_t ! , name=name ! , function=function ! , header_dir=header_dir ! , header_file=header_file ! , recursive=recursive) ! def decls( self, name=None, function=None, header_dir=None, header_file=None, recursive=None ): ! return self._find_multiple( declarations.declaration_matcher_t ! , name=name ! , function=function ! , header_dir=header_dir ! , header_file=header_file ! , recursive=recursive) ! def class_( self, name=None, function=None, header_dir=None, header_file=None, recursive=None ): ! return self._find_single( declarations.declaration_matcher_t ! , name=name ! , function=function ! , decl_type=declarations.class_t ! , header_dir=header_dir ! , header_file=header_file ! , recursive=recursive) ! def classes( self, name=None, function=None, header_dir=None, header_file=None, recursive=None ): ! return self._find_multiple( declarations.declaration_matcher_t ! , name=name ! , function=function ! , decl_type=declarations.class_t ! , header_dir=header_dir ! , header_file=header_file ! , recursive=recursive) ! def variable( self, name=None, function=None, type=None, header_dir=None, header_file=None, recursive=None ): ! return self._find_single( declarations.variable_matcher_t ! , name=name ! , function=function ! , header_dir=header_dir ! , header_file=header_file ! , recursive=recursive) ! def variables( self, name=None, function=None, type=None, header_dir=None, header_file=None, recursive=None ): ! return self._find_multiple( declarations.variable_matcher_t ! , name=name ! , function=function ! , header_dir=header_dir ! , header_file=header_file ! , recursive=recursive ) ! def calldef( self, name=None, function=None, return_type=None, arg_types=None, header_dir=None, header_file=None, recursive=None ): ! return self._find_single( declarations.calldef_matcher_t ! , name=name ! , function=function ! , decl_type=declarations.calldef_t ! , return_type=return_type ! , arg_types=arg_types ! , header_dir=header_dir ! , header_file=header_file ! , recursive=recursive ) ! def calldefs( self, name=None, function=None, return_type=None, arg_types=None, header_dir=None, header_file=None, recursive=None ): ! return self._find_multiple( declarations.calldef_matcher_t ! , name=name ! , function=function ! , decl_type=declarations.calldef_t ! , return_type=return_type ! , arg_types=arg_types ! , header_dir=header_dir ! , header_file=header_file ! , recursive=recursive) ! def operator( self, name=None, function=None, symbol=None, return_type=None, arg_types=None, decl_type=None, header_dir=None, header_file=None, recursive=None ): ! return self._find_single( declarations.operator_matcher_t ! , name=name ! , symbol=symbol ! , function=function ! , decl_type=decl_type ! , return_type=return_type ! , arg_types=arg_types ! , header_dir=header_dir ! , header_file=header_file ! , recursive=recursive ) ! def operators( self, name=None, function=None, symbol=None, return_type=None, arg_types=None, decl_type=None, header_dir=None, header_file=None, recursive=None ): ! return self._find_multiple( declarations.operator_matcher_t ! , name=name ! , symbol=symbol ! , function=function ! , decl_type=decl_type ! , return_type=return_type ! , arg_types=arg_types ! , header_dir=header_dir ! , header_file=header_file ! , recursive=recursive ) ! def member_function( self, name=None, function=None, return_type=None, arg_types=None, header_dir=None, header_file=None, recursive=None ): ! return self._find_single( declarations.calldef_matcher_t ! , name=name ! , function=function ! , decl_type=declarations.member_function_t ! , return_type=return_type ! , arg_types=arg_types ! , header_dir=header_dir ! , header_file=header_file ! , recursive=recursive ) ! def member_functions( self, name=None, function=None, return_type=None, arg_types=None, header_dir=None, header_file=None, recursive=None ): ! return self._find_multiple( declarations.calldef_matcher_t ! , name=name ! , function=function ! , decl_type=declarations.member_function_t ! , return_type=return_type ! , arg_types=arg_types ! , header_dir=header_dir ! , header_file=header_file ! , recursive=recursive) ! ! def constructor( self, name=None, function=None, return_type=None, arg_types=None, header_dir=None, header_file=None, recursive=None ): ! return self._find_single( declarations.calldef_matcher_t ! , name=name ! , function=function ! , decl_type=declarations.constructor_t ! , return_type=return_type ! , arg_types=arg_types ! , header_dir=header_dir ! , header_file=header_file ! , recursive=recursive ) ! def constructors( self, name=None, function=None, return_type=None, arg_types=None, header_dir=None, header_file=None, recursive=None ): ! return self._find_multiple( declarations.calldef_matcher_t ! , name=name ! , function=function ! , decl_type=declarations.constructor_t ! , return_type=return_type ! , arg_types=arg_types ! , header_dir=header_dir ! , header_file=header_file ! , recursive=recursive) ! ! def member_operator( self, name=None, symbol=None, return_type=None, arg_types=None, header_dir=None, header_file=None, recursive=None ): ! return self._find_single( declarations.operator_matcher_t ! , name=name ! , symbol=symbol ! , function=function ! , decl_type=declarations.member_operator_t ! , return_type=return_type ! , arg_types=arg_types ! , header_dir=header_dir ! , header_file=header_file ! , recursive=recursive ) ! def member_operators( self, name=None, symbol=None, return_type=None, arg_types=None, header_dir=None, header_file=None, recursive=None ): ! return self._find_multiple( declarations.operator_matcher_t ! , name=name ! , symbol=symbol ! , function=function ! , decl_type=declarations.member_operator_t ! , return_type=return_type ! , arg_types=arg_types ! , header_dir=header_dir ! , header_file=header_file ! , recursive=recursive ) ! ! def casting_operator( self, name=None, function=None, return_type=None, arg_types=None, header_dir=None, header_file=None, recursive=None ): ! return self._find_single( declarations.calldef_matcher_t ! , name=name ! , function=function ! , decl_type=declarations.casting_operator_t ! , return_type=return_type ! , arg_types=arg_types ! , header_dir=header_dir ! , header_file=header_file ! , recursive=recursive ) ! def casting_operators( self, name=None, function=None, return_type=None, arg_types=None, header_dir=None, header_file=None, recursive=None ): ! return self._find_multiple( declarations.calldef_matcher_t ! , name=name ! , function=function ! , decl_type=declarations.casting_operator_t ! , return_type=return_type ! , arg_types=arg_types ! , header_dir=header_dir ! , header_file=header_file ! , recursive=recursive) ! def enumeration( self, name=None, function=None, header_dir=None, header_file=None, recursive=None ): ! return self._find_single( declarations.declaration_matcher_t ! , name=name ! , function=function ! , decl_type=declarations.enumeration_t ! , header_dir=header_dir ! , header_file=header_file ! , recursive=recursive) ! def enumerations( self, name=None, function=None, header_dir=None, header_file=None, recursive=None ): ! return self._find_multiple( declarations.declaration_matcher_t ! , name=name ! , function=function ! , decl_type=declarations.enumeration_t ! , header_dir=header_dir ! , header_file=header_file ! , recursive=recursive) |