From: <rom...@us...> - 2007-07-28 18:04:23
|
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. |