Thread: [pygccxml-commit] SF.net SVN: pygccxml:[1829] pyplusplus_dev/pyplusplus/decl_wrappers
Brought to you by:
mbaas,
roman_yakovenko
From: <rom...@us...> - 2010-03-21 07:13:58
|
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. |