Revision: 1615
http://pygccxml.svn.sourceforge.net/pygccxml/?rev=1615&view=rev
Author: roman_yakovenko
Date: 2009-01-26 07:32:48 +0000 (Mon, 26 Jan 2009)
Log Message:
-----------
merging ctypes and boost.python code creators into single file
Modified Paths:
--------------
pyplusplus_dev/pyplusplus/code_creators/__init__.py
pyplusplus_dev/pyplusplus/code_creators/member_variable.py
Removed Paths:
-------------
pyplusplus_dev/pyplusplus/code_creators/fields_definition.py
Modified: pyplusplus_dev/pyplusplus/code_creators/__init__.py
===================================================================
--- pyplusplus_dev/pyplusplus/code_creators/__init__.py 2009-01-26 06:55:33 UTC (rev 1614)
+++ pyplusplus_dev/pyplusplus/code_creators/__init__.py 2009-01-26 07:32:48 UTC (rev 1615)
@@ -111,6 +111,7 @@
from member_variable import mem_var_ref_t
from member_variable import mem_var_ref_wrapper_t
from member_variable import member_variable_addressof_t
+from member_variable import fields_definition_t
from class_declaration import class_t
from class_declaration import class_wrapper_t
@@ -160,7 +161,6 @@
from mem_fun_introduction import opaque_init_introduction_t
from mem_fun_introduction import del_introduction_t
-from fields_definition import fields_definition_t
from methods_definition import methods_definition_t
from function_definition import function_definition_t
from function_definition import init_definition_t
Deleted: pyplusplus_dev/pyplusplus/code_creators/fields_definition.py
===================================================================
--- pyplusplus_dev/pyplusplus/code_creators/fields_definition.py 2009-01-26 06:55:33 UTC (rev 1614)
+++ pyplusplus_dev/pyplusplus/code_creators/fields_definition.py 2009-01-26 07:32:48 UTC (rev 1615)
@@ -1,63 +0,0 @@
-# Copyright 2004-2008 Roman Yakovenko.
-# Distributed under the Boost Software License, Version 1.0. (See
-# accompanying file LICENSE_1_0.txt or copy at
-# http://www.boost.org/LICENSE_1_0.txt)
-
-import os
-import algorithm
-import code_creator
-import ctypes_formatter
-import declaration_based
-from pygccxml import declarations
-
-#TODO: don't hide public member variables
-#TODO: how _fields_ should be defined in a class hierarchy
-#TODO: fix 64bit issue with calculating vtable pointer size
-
-
-class fields_definition_t(code_creator.code_creator_t, declaration_based.declaration_based_t):
- def __init__( self, class_ ):
- code_creator.code_creator_t.__init__(self)
- declaration_based.declaration_based_t.__init__( self, class_ )
-
- def has_unnamed_type( self, var ):
- type_ = declarations.remove_pointer( var.type )
- #~ type_ = declarations.remove_declarated( type_ )
- if declarations.class_traits.is_my_case( type_ ):
- cls = declarations.class_traits.get_declaration( type_ )
- return bool( not cls.name )
- else:
- return False
-
- def _create_impl(self):
- result = []
- anonymous_vars = self.declaration.vars( self.has_unnamed_type, recursive=False, allow_empty=True )
- if anonymous_vars:
- formated_vars = []
- for var in anonymous_vars:
- formated_vars.append( '"%s"' % var.alias )
- result.append( '%(complete_py_name)s._anonymous_ = [%(vars)s]'
- % dict( complete_py_name=self.complete_py_name
- , vars=', '.join( formated_vars ) ) )
-
- result.append( '%(complete_py_name)s._fields_ = [ #class %(decl_identifier)s'
- % dict( complete_py_name=self.complete_py_name
- , decl_identifier=self.decl_identifier) )
- if self.declaration.has_vtable:
- result.append( self.indent( '("_vtable_", ctypes.POINTER(ctypes.c_void_p)),' ) )
-
- vars = self.declaration.vars( allow_empty=True, recursive=False )
- if not vars:
- result.append( self.indent( '("__empty__", ctypes.c_char * 4)' ) )
- else:
- vars = vars.to_list()
- vars.sort( key=lambda d: d.location.line )
- for v in vars:
- result.append( self.indent( '("%(name)s", %(type)s),'
- % dict( name=v.alias
- ,type=ctypes_formatter.as_ctype( v.type ) ) ) )
- result.append( ']' )
- return os.linesep.join( result )
-
- def _get_system_files_impl( self ):
- return []
Modified: pyplusplus_dev/pyplusplus/code_creators/member_variable.py
===================================================================
--- pyplusplus_dev/pyplusplus/code_creators/member_variable.py 2009-01-26 06:55:33 UTC (rev 1614)
+++ pyplusplus_dev/pyplusplus/code_creators/member_variable.py 2009-01-26 07:32:48 UTC (rev 1615)
@@ -6,12 +6,13 @@
import os
import algorithm
import code_creator
+import ctypes_formatter
import declaration_based
+import registration_based
+from pygccxml import declarations
from pyplusplus import code_repository
from pyplusplus.decl_wrappers import call_policies
from pyplusplus.decl_wrappers import python_traits
-import registration_based
-from pygccxml import declarations
class member_variable_base_t( registration_based.registration_based_t
, declaration_based.declaration_based_t ):
@@ -673,7 +674,7 @@
if self.has_setter():
answer.append( param_sep )
answer.append( 'pyplus_conv::make_address_setter(&%s)'
- % self.decl_identifier )
+ % self.decl_identifier )
if self.documentation:
answer.append( param_sep )
answer.append( self.documentation )
@@ -694,3 +695,55 @@
return self._create_m_var()
def _get_system_files_impl( self ):
return [code_repository.ctypes_integration.file_name]
+
+
+#TODO: don't hide public member variables
+#TODO: how _fields_ should be defined in a class hierarchy
+#TODO: fix 64bit issue with calculating vtable pointer size
+
+class fields_definition_t(code_creator.code_creator_t, declaration_based.declaration_based_t):
+ def __init__( self, class_ ):
+ code_creator.code_creator_t.__init__(self)
+ declaration_based.declaration_based_t.__init__( self, class_ )
+
+ def has_unnamed_type( self, var ):
+ type_ = declarations.remove_pointer( var.type )
+ #~ type_ = declarations.remove_declarated( type_ )
+ if declarations.class_traits.is_my_case( type_ ):
+ cls = declarations.class_traits.get_declaration( type_ )
+ return bool( not cls.name )
+ else:
+ return False
+
+ def _create_impl(self):
+ result = []
+ anonymous_vars = self.declaration.vars( self.has_unnamed_type, recursive=False, allow_empty=True )
+ if anonymous_vars:
+ formated_vars = []
+ for var in anonymous_vars:
+ formated_vars.append( '"%s"' % var.alias )
+ result.append( '%(complete_py_name)s._anonymous_ = [%(vars)s]'
+ % dict( complete_py_name=self.complete_py_name
+ , vars=', '.join( formated_vars ) ) )
+
+ result.append( '%(complete_py_name)s._fields_ = [ #class %(decl_identifier)s'
+ % dict( complete_py_name=self.complete_py_name
+ , decl_identifier=self.decl_identifier) )
+ if self.declaration.has_vtable:
+ result.append( self.indent( '("_vtable_", ctypes.POINTER(ctypes.c_void_p)),' ) )
+
+ vars = self.declaration.vars( allow_empty=True, recursive=False )
+ if not vars:
+ result.append( self.indent( '("__empty__", ctypes.c_char * 4)' ) )
+ else:
+ vars = vars.to_list()
+ vars.sort( key=lambda d: d.location.line )
+ for v in vars:
+ result.append( self.indent( '("%(name)s", %(type)s),'
+ % dict( name=v.alias
+ ,type=ctypes_formatter.as_ctype( v.type ) ) ) )
+ result.append( ']' )
+ return os.linesep.join( result )
+
+ def _get_system_files_impl( self ):
+ return []
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|