Revision: 1090
http://pygccxml.svn.sourceforge.net/pygccxml/?rev=1090&view=rev
Author: roman_yakovenko
Date: 2007-07-28 11:04:26 -0700 (Sat, 28 Jul 2007)
Log Message:
-----------
adding FT for constructor as comments
Modified Paths:
--------------
pyplusplus_dev/pyplusplus/code_creators/__init__.py
pyplusplus_dev/pyplusplus/code_creators/calldef_transformed.py
Modified: pyplusplus_dev/pyplusplus/code_creators/__init__.py
===================================================================
--- pyplusplus_dev/pyplusplus/code_creators/__init__.py 2007-07-28 17:59:35 UTC (rev 1089)
+++ pyplusplus_dev/pyplusplus/code_creators/__init__.py 2007-07-28 18:04:26 UTC (rev 1090)
@@ -82,7 +82,11 @@
from calldef_transformed import free_fun_transformed_wrapper_t
from calldef_transformed import mem_fun_v_transformed_t
from calldef_transformed import mem_fun_v_transformed_wrapper_t
+#TODO: FT for constructor
+#~ from calldef_transformed import constructor_transformed_t
+#~ from calldef_transformed import constructor_transformed_wrapper_t
+
from global_variable import global_variable_base_t
from global_variable import global_variable_t
from global_variable import array_gv_t
Modified: pyplusplus_dev/pyplusplus/code_creators/calldef_transformed.py
===================================================================
--- pyplusplus_dev/pyplusplus/code_creators/calldef_transformed.py 2007-07-28 17:59:35 UTC (rev 1089)
+++ pyplusplus_dev/pyplusplus/code_creators/calldef_transformed.py 2007-07-28 18:04:26 UTC (rev 1090)
@@ -421,3 +421,80 @@
files = super( mem_fun_v_transformed_wrapper_t, self )._get_system_headers_impl()
files.append( code_repository.convenience.file_name )
return files
+
+
+class constructor_transformed_t( calldef_t ):
+ def __init__( self, constructor, wrapper=None ):
+ calldef_t.__init__( self, function=constructor, wrapper=wrapper )
+
+ @property
+ def ft( self ): #function transformation
+ return self.declaration.transformations[0]
+
+ @property
+ def controller( self ):
+ return self.ft.controller
+
+ def create_call_policies( self ):
+ return ''
+
+ def _create_impl( self ):
+ make_constructor = algorithm.create_identifier( self, 'boost::python::make_constructor' )
+
+ code = 'def( "__init__, %s( &::%s ) )' % self.wrapper.wrapper_name()
+ if not self.works_on_instance:
+ code = self.parent.class_var_name + '.' + code + ';'
+ return code
+
+#TODO: FT for constructor
+#~ class constructor_transformed_wrapper_t( calldef_wrapper_t ):
+ #~ def __init__( self, constructor ):
+ #~ calldef_wrapper_t.__init__( self, function=constructor )
+
+ #~ @property
+ #~ def ft( self ): #function transformation
+ #~ return self.declaration.transformations[0]
+
+ #~ @property
+ #~ def controller( self ):
+ #~ return self.ft.controller
+
+ #~ def resolve_function_ref( self ):
+ #~ raise NotImplementedError()
+
+ #~ def wrapper_name( self ):
+ #~ return self.ft.unique_name()
+
+ #~ def create_fun_definition(self):
+ #~ cntrl = self.controller
+
+ #~ tmpl_values = dict()
+
+ #~ tmpl_values['unique_function_name'] = self.wrapper_name()
+ #~ tmpl_values['exposed_class'] = self.decl_identifier
+ #~ tmpl_values['arg_declarations'] = self.args_declaration()
+ #~ tmpl_values['result'] = self.ft.result_variable
+
+ #~ tmpl_values['declare_variables'] \
+ #~ = os.linesep + os.linesep.join( map( lambda var: self.indent( var.declare_var_string() )
+ #~ , cntrl.variables ) )
+
+ #~ tmpl_values['pre_call'] = os.linesep + self.indent( os.linesep.join( cntrl.pre_call ) )
+
+ #~ tmpl_values['arg_expressions'] = self.PARAM_SEPARATOR.join( cntrl.arg_expressions )
+ #~ return_stmt_creator = calldef_utils.return_stmt_creator_t( self
+ #~ , self.controller
+ #~ , self.controller.result_variable
+ #~ , self.controller.return_variables )
+
+ #~ tmpl_values['post_call'] = os.linesep + self.indent( os.linesep.join( cntrl.post_call ) )
+ #~ if return_stmt_creator.pre_return_code:
+ #~ tmpl_values['post_call'] \
+ #~ = os.linesep.join([ tmpl_values['post_call']
+ #~ , self.indent( return_stmt_creator.pre_return_code )])
+
+ #~ f_def = self.controller.template.substitute(tmpl_values)
+ #~ return remove_duplicate_linesep( f_def )
+
+ #~ def _create_impl(self):
+ #~ return self.create_fun_definition()
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|