Revision: 277
Author: mbaas
Date: 2006-07-08 07:09:08 -0700 (Sat, 08 Jul 2006)
ViewCVS: http://svn.sourceforge.net/pygccxml/?rev=277&view=rev
Log Message:
-----------
Updates to reflect the changes in enumeration_t (the values are now stored in a list instead of a dict).
Modified Paths:
--------------
pyplusplus_dev/pyplusplus/code_creators/enum.py
pyplusplus_dev/pyplusplus/code_creators/unnamed_enum.py
pyplusplus_dev/pyplusplus/decl_wrappers/enumeration_wrapper.py
Modified: pyplusplus_dev/pyplusplus/code_creators/enum.py
===================================================================
--- pyplusplus_dev/pyplusplus/code_creators/enum.py 2006-07-08 14:07:13 UTC (rev 276)
+++ pyplusplus_dev/pyplusplus/code_creators/enum.py 2006-07-08 14:09:08 UTC (rev 277)
@@ -7,10 +7,10 @@
import algorithm
import declaration_based
-class enum_t( declaration_based.declaration_based_t ):
- """
- Creates boost.python code that expose C++ enum
+class enum_t( declaration_based.declaration_based_t ):
"""
+ Creates boost.python code that expose C++ enum
+ """
def __init__(self, enum ):
declaration_based.declaration_based_t.__init__( self, declaration=enum)
self.works_on_instance = False
@@ -39,17 +39,20 @@
% { 'bpl::enum_' : algorithm.create_identifier( self, '::boost::python::enum_' )
, 'name' : algorithm.create_identifier( self, self.declaration.decl_string )
, 'alias' : self.alias }
- values = []
- for value_name in self.export_values:
+
+ values = []
+ # Add the values that should be exported
+ for value_name in self.declaration.export_values:
values.append( self._generate_value_code( value_name ) )
-
- if self.export_values:
+
+ # Export the values
+ if len(self.declaration.export_values)>0:
values.append( '.export_values()' )
-
- for name in self.declaration.values.keys():
- if name not in self.export_values:
- values.append( self._generate_value_code( name ) )
+ # Add the values that should not be exported
+ for name in self.declaration.no_export_values:
+ values.append( self._generate_value_code( name ) )
+
values.append( ';' )
values = self.indent( os.linesep.join( values ) )
Modified: pyplusplus_dev/pyplusplus/code_creators/unnamed_enum.py
===================================================================
--- pyplusplus_dev/pyplusplus/code_creators/unnamed_enum.py 2006-07-08 14:07:13 UTC (rev 276)
+++ pyplusplus_dev/pyplusplus/code_creators/unnamed_enum.py 2006-07-08 14:09:08 UTC (rev 277)
@@ -23,7 +23,7 @@
tmpl = algorithm.create_identifier( self, '::boost::python::scope' ) + '().attr("%s") = (int)%s;'
full_name = pygccxml.declarations.full_name( self.declaration )
result = []
- for name, value in self.declaration.values.items():
+ for name, value in self.declaration.values:
result.append( tmpl % ( self.value_aliases.get( name, name )
, algorithm.create_identifier( self, full_name + '::' + name ) ) )
return os.linesep.join( result )
Modified: pyplusplus_dev/pyplusplus/decl_wrappers/enumeration_wrapper.py
===================================================================
--- pyplusplus_dev/pyplusplus/decl_wrappers/enumeration_wrapper.py 2006-07-08 14:07:13 UTC (rev 276)
+++ pyplusplus_dev/pyplusplus/decl_wrappers/enumeration_wrapper.py 2006-07-08 14:09:08 UTC (rev 277)
@@ -10,22 +10,53 @@
def __init__(self, *arguments, **keywords):
declarations.enumeration_t.__init__(self, *arguments, **keywords )
decl_wrapper.decl_wrapper_t.__init__( self )
-
+
+ # A dict with new names for particular enumeration values
+ # Key: Original name as it appears in the C++ source file
+ # Value: New name as it should appear in the Python bindings
self._value_aliases = {}
- #by default export all values
+
+ # A list of enumeration names (C++ names, not aliases!) that should be
+ # exported.
+ # By default, export all values
self._export_values = None
def _get_value_aliases(self):
return self._value_aliases
def _set_value_aliases(self, value_aliases):
self._value_aliases = value_aliases
- value_aliases = property( _get_value_aliases, _set_value_aliases )
+ value_aliases = property( _get_value_aliases, _set_value_aliases, doc=
+ """A translation table from C++ enumeration value names to desired Python names.
+ @type: dict""")
def _get_export_values(self):
if self._export_values is None:
- return self.values.keys()
+ return map(lambda x: x[0], self.values)
else:
return self._export_values
def _set_export_values(self, export_values):
self._export_values = export_values
- export_values = property( _get_export_values, _set_export_values )
+ export_values = property( _get_export_values, _set_export_values, doc=
+ """A list of (C++) enumeration names that should be exported.
+ @type: list""")
+
+ def _get_no_export_values(self):
+ all_values = map(lambda x: x[0], self.values)
+ export_values = self.export_values
+ res = []
+ for name in all_values:
+ if name not in export_values:
+ res.append(name)
+ return res
+
+ def _set_no_export_values(self, no_export_values):
+ all_values = map(lambda x: x[0], self.values)
+ export_values = []
+ for name in all_values:
+ if name not in no_export_values:
+ export_values.append(name)
+ self.export_values = export_values
+
+ no_export_values = property( _get_no_export_values, _set_export_values, doc=
+ """A list of (C++) enumeration names that should not be exported.
+ @type: list""")
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|