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:
                tmp = None
                type_as_str = ctypes_formatter.as_ctype( v.type, self.top_parent.treat_char_ptr_as_binary_data )
                if v.bits != None:
                    tmp = '("%(name)s", %(type)s, %(bits)d),' \
                          % dict( name=v.alias, type=type_as_str, bits=v.bits )
                else:
                    tmp = '("%(name)s", %(type)s),' % dict( name=v.alias, type=type_as_str )
                result.append( self.indent( tmp ) )
        result.append( ']' )
        return os.linesep.join( result )
Exemple #2
0
    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:
                tmp = None
                type_as_str = ctypes_formatter.as_ctype( v.type, self.top_parent.treat_char_ptr_as_binary_data )
                if v.bits != None:
                    tmp = '("%(name)s", %(type)s, %(bits)d),' \
                          % dict( name=v.alias, type=type_as_str, bits=v.bits )
                else:
                    tmp = '("%(name)s", %(type)s),' % dict( name=v.alias, type=type_as_str )
                result.append( self.indent( tmp ) )
        result.append( ']' )
        return os.linesep.join( result )
Exemple #3
0
 def _create_impl( self ):
     return '%(alias)s = %(type)s.in_dll( %(library_var_name)s, %(library_var_name)s.undecorated_names["%(undecorated_decl_name)s"] )' \
            % dict( alias=self.alias
                    , type=ctypes_formatter.as_ctype( self.declaration.type, self.top_parent.treat_char_ptr_as_binary_data )
                    , library_var_name=self.top_parent.library_var_name
                    , undecorated_decl_name=self.undecorated_decl_name )
Exemple #4
0
 def _create_impl( self ):
     return '%(alias)s = %(type)s.in_dll( %(library_var_name)s, %(library_var_name)s.undecorated_names["%(undecorated_decl_name)s"] )' \
            % dict( alias=self.alias
                    , type=ctypes_formatter.as_ctype( self.declaration.type, self.top_parent.treat_char_ptr_as_binary_data )
                    , library_var_name=self.top_parent.library_var_name
                    , undecorated_decl_name=self.undecorated_decl_name )
Exemple #5
0
 def argtypes_code(self, group_in_list=True):
     if not self.ftype.arguments_types:
         return ''
     args = map( lambda type_: ctypes_formatter.as_ctype( type_, self.top_parent.treat_char_ptr_as_binary_data )
                 , self.ftype.arguments_types )
     return self.join_arguments( args, group_in_list )
Exemple #6
0
 def restype_code(self):
     if not declarations.is_void( self.ftype.return_type ):
         return ctypes_formatter.as_ctype( self.ftype.return_type, self.top_parent.treat_char_ptr_as_binary_data )
     else:
         return ''
Exemple #7
0
 def _create_impl(self):
     return "%(complete_py_name)s = %(type)s" \
             % dict( complete_py_name=self.complete_py_name
                     , type=ctypes_formatter.as_ctype( self.declaration.type, self.top_parent.treat_char_ptr_as_binary_data ) )
Exemple #8
0
 def _create_impl(self):
     return "%(complete_py_name)s = %(type)s" \
             % dict( complete_py_name=self.complete_py_name
                     , type=ctypes_formatter.as_ctype( self.declaration.type, self.top_parent.treat_char_ptr_as_binary_data ) )
Exemple #9
0
 def argtypes_code(self, group_in_list=True):
     if not self.ftype.arguments_types:
         return ''
     args = map( lambda type_: ctypes_formatter.as_ctype( type_, self.top_parent.treat_char_ptr_as_binary_data )
                 , self.ftype.arguments_types )
     return self.join_arguments( args, group_in_list )
Exemple #10
0
 def restype_code(self):
     if not declarations.is_void( self.ftype.return_type ):
         return ctypes_formatter.as_ctype( self.ftype.return_type, self.top_parent.treat_char_ptr_as_binary_data )
     else:
         return ''