Revision: 1829
http://pygccxml.svn.sourceforge.net/pygccxml/?rev=1829&view=rev
Author: roman_yakovenko
Date: 2010-03-21 07:13:52 +0000 (Sun, 21 Mar 2010)
Log Message:
-----------
adding ability to include protected variables for exposing
Modified Paths:
--------------
pyplusplus_dev/pyplusplus/decl_wrappers/class_wrapper.py
pyplusplus_dev/pyplusplus/decl_wrappers/variable_wrapper.py
Modified: pyplusplus_dev/pyplusplus/decl_wrappers/class_wrapper.py
===================================================================
--- pyplusplus_dev/pyplusplus/decl_wrappers/class_wrapper.py 2010-03-21 07:09:05 UTC (rev 1828)
+++ pyplusplus_dev/pyplusplus/decl_wrappers/class_wrapper.py 2010-03-21 07:13:52 UTC (rev 1829)
@@ -10,6 +10,7 @@
import properties
import decl_wrapper
import scopedef_wrapper
+import variable_wrapper
from pyplusplus import messages
from pygccxml import declarations
import indexing_suite1 as isuite1
@@ -426,10 +427,12 @@
#protected and private virtual functions that not overridable and not pure
#virtual should not be exported
for member in self.protected_members:
- if not isinstance( member, declarations.calldef_t ):
- continue
+ if isinstance( member, declarations.calldef_t ):
+ members.append( member )
+ elif isinstance( member, declarations.variable_t ) and variable_wrapper.variable_t.EXPOSE_PROTECTED_VARIABLES:
+ members.append( member )
else:
- members.append( member )
+ pass
vfunction_selector = lambda member: isinstance( member, declarations.member_function_t ) \
and member.virtuality == declarations.VIRTUALITY_TYPES.PURE_VIRTUAL
Modified: pyplusplus_dev/pyplusplus/decl_wrappers/variable_wrapper.py
===================================================================
--- pyplusplus_dev/pyplusplus/decl_wrappers/variable_wrapper.py 2010-03-21 07:09:05 UTC (rev 1828)
+++ pyplusplus_dev/pyplusplus/decl_wrappers/variable_wrapper.py 2010-03-21 07:13:52 UTC (rev 1829)
@@ -14,6 +14,9 @@
class variable_t(decl_wrapper.decl_wrapper_t, declarations.variable_t):
"""defines a set of properties, that will instruct `Py++` how to expose the variable"""
+
+ EXPOSE_PROTECTED_VARIABLES = False
+
def __init__(self, *arguments, **keywords):
declarations.variable_t.__init__(self, *arguments, **keywords )
decl_wrapper.decl_wrapper_t.__init__( self )
@@ -213,7 +216,11 @@
# return messages.W1061 % ( str( self ), str( cls ) )
if isinstance( self.parent, declarations.class_t ):
if self.access_type != declarations.ACCESS_TYPES.PUBLIC:
- return messages.W1039
+ if self.access_type == declarations.ACCESS_TYPES.PRIVATE:
+ return messages.W1039
+ else: #protected
+ if not self.EXPOSE_PROTECTED_VARIABLES:
+ return messages.W1039
if declarations.is_array( type_ ):
item_type = declarations.array_item_type( type_ )
if declarations.is_pointer( item_type ):
@@ -236,4 +243,6 @@
explanation.append( messages.W1026 % self.name )
if declarations.is_array( self.type ):
explanation.append( messages.W1027 % self.name)
+ if self.access_type == declarations.ACCESS_TYPES.PROTECTED:
+ explanation.append( messages.W1066 % self.name)
return explanation
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|