Update of /cvsroot/pygccxml/source/pyplusplus/experimental
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv1184
Modified Files:
declwrapper.py selection.py
Log Message:
Queries are now local by default and accept an argument recursive. The default value for that argument is customizable.
Index: selection.py
===================================================================
RCS file: /cvsroot/pygccxml/source/pyplusplus/experimental/selection.py,v
retrieving revision 1.3
retrieving revision 1.4
diff -C2 -d -r1.3 -r1.4
*** selection.py 14 Mar 2006 22:48:53 -0000 1.3
--- selection.py 15 Mar 2006 17:16:39 -0000 1.4
***************
*** 9,12 ****
--- 9,13 ----
"""
+ import sys
from treerange import TreeRange
***************
*** 40,43 ****
--- 41,46 ----
# Match the declarations...
+ # print "Selection range:",rng
+ # print "Select among %d decls"%len(list(rng))
res = []
for decl in rng:
Index: declwrapper.py
===================================================================
RCS file: /cvsroot/pygccxml/source/pyplusplus/experimental/declwrapper.py,v
retrieving revision 1.3
retrieving revision 1.4
diff -C2 -d -r1.3 -r1.4
*** declwrapper.py 14 Mar 2006 22:48:53 -0000 1.3
--- declwrapper.py 15 Mar 2006 17:16:39 -0000 1.4
***************
*** 20,24 ****
allow_empty_queries = False
!
# IDecl
--- 20,24 ----
allow_empty_queries = False
! default_recursive = False
# IDecl
***************
*** 270,274 ****
accesstype=None,
filter=None,
! include_children=True,
assert_count=None
):
--- 270,275 ----
accesstype=None,
filter=None,
! recursive=None,
! allow_empty=None,
assert_count=None
):
***************
*** 322,325 ****
--- 323,330 ----
@param filter: User defined filter function
@type callable
+ @param recursive: Extend the search to grandchildren? If not specified, a global (customizable) default value is used.
+ @type recursive: bool
+ @param allow_empty: Allow empty results. If not specified, a global (customizable) default value is used.
+ @type allow_empty: bool
@param assert_count: Check the number of matched declarations in the resulting Decl object
@type assert_count: int
***************
*** 328,335 ****
--- 333,346 ----
@see: Namespace(), Class(), Method(), Function(), Enum()
"""
+ global allow_empty_queries, default_recursive
itype = 0
filters = []
+ if recursive==None:
+ recursive = default_recursive
+ if allow_empty==None:
+ allow_empty = allow_empty_queries
+
def addFilter(arg, filtercls):
if arg!=None:
***************
*** 377,383 ****
type = 0
type |= itype
-
addFilter(type, TypeFilter)
if len(filters)==0:
filter = TrueFilter()
--- 388,405 ----
type = 0
type |= itype
addFilter(type, TypeFilter)
+ # Add parent filters...
+ pfs = []
+ for decl in self.decl_handles:
+ pfs.append(ParentFilter(decl, recursive))
+ if len(pfs)>0:
+ if len(pfs)==1:
+ filters.append(pfs[0])
+ else:
+ filters.append(OrFilter(pfs))
+
+ # Create the final filter by combining the individual filters
+ # with AND...
if len(filters)==0:
filter = TrueFilter()
***************
*** 392,399 ****
else:
decls = selection.select(self.decl_handles, filter)
!
res = IDecl(decls)
count = res.count
! if allow_empty_queries and count==0:
return res
if count==0:
--- 414,421 ----
else:
decls = selection.select(self.decl_handles, filter)
!
res = IDecl(decls)
count = res.count
! if allow_empty and count==0:
return res
if count==0:
|