Advertisement
Guest User

Untitled

a guest
Oct 11th, 2017
66
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 0.86 KB | None | 0 0
  1. from vulkan import ffi
  2.  
  3. def __convert_struct_field( s, fields ):
  4.     for field,fieldtype in fields:
  5.         if fieldtype.type.kind == 'primitive':
  6.             yield (field,getattr( s, field ))
  7.         else:
  8.             yield (field, convert_to_python( getattr( s, field ) ))
  9.  
  10. def convert_to_python(s):
  11.     if type(s) == int:
  12.         return s
  13.     ffitype=ffi.typeof(s)
  14.     if ffitype.kind == 'struct':
  15.         return dict(__convert_struct_field( s, ffitype.fields ) )
  16.     elif ffitype.kind == 'array':
  17.         if ffitype.item.kind == 'primitive':
  18.             if ffitype.item.cname == 'char':
  19.                 return ffi.string(s)
  20.             else:
  21.                 return [ s[i] for i in range(ffitype.length) ]
  22.         else:
  23.             return [ convert_to_python(s[i]) for i in range(ffitype.length) ]
  24.     elif ffitype.kind == 'primitive':
  25.         return int(s)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement