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 )
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 )
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 )
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 ''
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 ) )