Revision: 628
http://svn.sourceforge.net/pygccxml/?rev=628&view=rev
Author: mbaas
Date: 2006-10-08 04:30:57 -0700 (Sun, 08 Oct 2006)
Log Message:
-----------
Added a new filter to filter by virtuality.
Modified Paths:
--------------
pyplusplus_dev/contrib/pypp_api/pypp_api/__init__.py
pyplusplus_dev/contrib/pypp_api/pypp_api/decltypes.py
pyplusplus_dev/contrib/pypp_api/pypp_api/declwrapper.py
pyplusplus_dev/contrib/pypp_api/pypp_api/filters.py
Modified: pyplusplus_dev/contrib/pypp_api/pypp_api/__init__.py
===================================================================
--- pyplusplus_dev/contrib/pypp_api/pypp_api/__init__.py 2006-10-08 08:08:28 UTC (rev 627)
+++ pyplusplus_dev/contrib/pypp_api/pypp_api/__init__.py 2006-10-08 11:30:57 UTC (rev 628)
@@ -67,7 +67,7 @@
PROTECTED = ACCESS_TYPES.PROTECTED
PRIVATE = ACCESS_TYPES.PRIVATE
-from decltypes import arg, cpp
+from decltypes import *
#from argpolicy import *
from pyplusplus.function_transformers.arg_policies import output_t as Output
from pyplusplus.function_transformers.arg_policies import input_t as Input
Modified: pyplusplus_dev/contrib/pypp_api/pypp_api/decltypes.py
===================================================================
--- pyplusplus_dev/contrib/pypp_api/pypp_api/decltypes.py 2006-10-08 08:08:28 UTC (rev 627)
+++ pyplusplus_dev/contrib/pypp_api/pypp_api/decltypes.py 2006-10-08 11:30:57 UTC (rev 628)
@@ -21,6 +21,11 @@
CALLABLE = METHOD | FUNCTION | CONSTRUCTOR
CLASS_MEMBER = METHOD | CONSTRUCTOR | VARIABLE | ENUM
+NON_VIRTUAL = 0x01
+NON_PURE_VIRTUAL = 0x02
+PURE_VIRTUAL = 0x04
+VIRTUAL = NON_PURE_VIRTUAL | PURE_VIRTUAL
+
# cpp
class cpp:
"""This class wraps C++ source code for default values.
Modified: pyplusplus_dev/contrib/pypp_api/pypp_api/declwrapper.py
===================================================================
--- pyplusplus_dev/contrib/pypp_api/pypp_api/declwrapper.py 2006-10-08 08:08:28 UTC (rev 627)
+++ pyplusplus_dev/contrib/pypp_api/pypp_api/declwrapper.py 2006-10-08 11:30:57 UTC (rev 628)
@@ -417,6 +417,7 @@
headerdir=None,
accesstype=None,
const=None,
+ virtuality=None,
filter=None,
recursive=None,
allow_empty=None,
@@ -471,6 +472,8 @@
@param accesstype: Access type (PUBLIC or PROTECTED). This implies the type flags CLASS_MEMBER.
@param const: Select declarations by their constness.
@type const: bool
+ @param virtuality: Select declarations by their virtuality. This implies the type flags CLASS_MEMBER:
+ @type virtuality: Virtuality flags
@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.
@@ -529,6 +532,10 @@
# const filter
if const!=None:
addFilter(const, ConstFilter)
+ # virtuality filter
+ if virtuality!=None:
+ addFilter(virtuality, VirtualityFilter)
+ itype |= CLASS_MEMBER
# custom filters
if filter!=None:
if _type(filter)==list:
Modified: pyplusplus_dev/contrib/pypp_api/pypp_api/filters.py
===================================================================
--- pyplusplus_dev/contrib/pypp_api/pypp_api/filters.py 2006-10-08 08:08:28 UTC (rev 627)
+++ pyplusplus_dev/contrib/pypp_api/pypp_api/filters.py 2006-10-08 11:30:57 UTC (rev 628)
@@ -461,6 +461,45 @@
const = bool(getattr(decl, "has_const", False))
return const==self.constness
+# VirtualityFilter
+class VirtualityFilter(FilterBase):
+ """Filter by virtuality.
+ """
+
+ def __init__(self, virtuality_flags):
+ """Constructor.
+
+ virtuality_flags is a combination of the flags NON_VIRTUAL,
+ NON_PURE_VIRTUAL, PURE_VIRTUAL and VIRTUAL.
+ """
+ FilterBase.__init__(self)
+ self.virtuality_flags = virtuality_flags
+
+ def __str__(self):
+ f = []
+ if self.virtuality_flags & NON_VIRTUAL:
+ f.append("non-virtual")
+ if self.virtuality_flags & NON_PURE_VIRTUAL:
+ f.append("non-pure virtual")
+ if self.virtuality_flags & PURE_VIRTUAL:
+ f.append("pure virtual")
+
+ v = "|".join(f)
+ return "virtuality==%s"%v
+
+ def __call__(self, decl):
+ v = getattr(decl, "virtuality", None)
+ if v==None:
+ return False
+ vf = self.virtuality_flags
+ if vf&NON_VIRTUAL and v==VIRTUALITY_TYPES.NOT_VIRTUAL:
+ return True
+ elif vf&NON_PURE_VIRTUAL and v==VIRTUALITY_TYPES.VIRTUAL:
+ return True
+ elif vf&PURE_VIRTUAL and v==VIRTUALITY_TYPES.PURE_VIRTUAL:
+ return True
+ return False
+
# CustomFilter
class CustomFilter(FilterBase):
"""Filter by user defined function.
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|