Update of /cvsroot/pygccxml/source/pyplusplus/decl_wrappers
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv24990/pyplusplus/decl_wrappers
Modified Files:
namespace_wrapper.py scopedef_wrapper.py
Log Message:
adding select interface to decl_wrapper class hierarchy
Documentation strings will come later
Index: namespace_wrapper.py
===================================================================
RCS file: /cvsroot/pygccxml/source/pyplusplus/decl_wrappers/namespace_wrapper.py,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -d -r1.1 -r1.2
*** namespace_wrapper.py 28 Feb 2006 07:31:33 -0000 1.1
--- namespace_wrapper.py 15 Mar 2006 09:27:06 -0000 1.2
***************
*** 15,17 ****
def is_finalizable(self):
return True
!
\ No newline at end of file
--- 15,38 ----
def is_finalizable(self):
return True
!
! def namespace( self, *args, **keywds ):
! return self._find_single( declarations.namespace_matcher_t, *args, **keywds )
!
! def namespaces( self, *args, **keywds ):
! 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 )
Index: scopedef_wrapper.py
===================================================================
RCS file: /cvsroot/pygccxml/source/pyplusplus/decl_wrappers/scopedef_wrapper.py,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -d -r1.1 -r1.2
*** scopedef_wrapper.py 28 Feb 2006 07:31:33 -0000 1.1
--- scopedef_wrapper.py 15 Mar 2006 09:27:06 -0000 1.2
***************
*** 7,12 ****
--- 7,16 ----
import finalizable
from pygccxml import declarations
+ import mdecl_wrapper
class scopedef_t(decl_wrapper.decl_wrapper_t, finalizable.finalizable_t):
+
+ RECURSIVE_DEFAULT = True
+
def __init__(self):
decl_wrapper.decl_wrapper_t.__init__( self )
***************
*** 27,28 ****
--- 31,125 ----
, declarations.make_flatten( self.declarations ) )
map( lambda decl: decl.finalize(), finalizables )
+
+ def __create_matcher( self, match_class, *args, **keywds ):
+ if len( args ) == 1 and not keywds and callable( args[0] ):
+ matcher = match_class()
+ return lambda decl: matcher( decl ) and args[0](decl)
+ else:
+ if 1 == len( args ) and isinstance( args[0], str ):
+ keywds['name'] = args[0]
+ args = []
+ return match_class(*args, **keywds)
+
+ def _find_single( self, match_class, *args, **keywds ):
+ matcher = self.__create_matcher( match_class, *args, **keywds )
+ recursive = keywds.get( 'recursive', scopedef_t.RECURSIVE_DEFAULT )
+ return declarations.matcher.get_single( matcher, self.declarations, recursive )
+
+ def _find_multiple( self, match_class, *args, **keywds ):
+ matcher = self.__create_matcher( match_class, *args, **keywds )
+ recursive = keywds.get( 'recursive', scopedef_t.RECURSIVE_DEFAULT )
+ found = declarations.matcher.find( matcher, self.declarations, recursive )
+ return mdecl_wrapper.mdecl_wrapper_t( found )
+
+ 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 ):
+ return self._find_single( declarations.variable_matcher_t, *args, **keywds )
+
+ def variables( self, *args, **keywds ):
+ return self._find_multiple( declarations.variable_matcher_t, *args, **keywds )
+
+ def calldef( self, *args, **keywds ):
+ return self._find_single( declarations.calldef_matcher_t, *args, **keywds )
+
+ def calldefs( self, *args, **keywds ):
+ return self._find_multiple( declarations.calldef_matcher_t, *args, **keywds )
+
+ def operator( self, *args, **keywds ):
+ return self._find_single( declarations.operator_matcher_t, *args, **keywds )
+
+ def operators( self, *args, **keywds ):
+ 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.member_function_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 )
|