annotate python/pydc/test/types.py @ 29:6cc2b7fc7ea2

bigger pydc update: - cleanups and refactoring - python 2 fixes in var conversions (especially w/ respect to int vs long) - fix to pydc.free() which didn't work at all - fix to return python bool as actual bool - test lib covering all conversions (manual verification, though :-/)
author Tassilo Philipp
date Wed, 08 Apr 2020 22:17:43 +0200
parents
children 2682a627168c
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
29
6cc2b7fc7ea2 bigger pydc update:
Tassilo Philipp
parents:
diff changeset
1 import pydc
6cc2b7fc7ea2 bigger pydc update:
Tassilo Philipp
parents:
diff changeset
2 import sys
6cc2b7fc7ea2 bigger pydc update:
Tassilo Philipp
parents:
diff changeset
3 import platform
6cc2b7fc7ea2 bigger pydc update:
Tassilo Philipp
parents:
diff changeset
4
6cc2b7fc7ea2 bigger pydc update:
Tassilo Philipp
parents:
diff changeset
5
6cc2b7fc7ea2 bigger pydc update:
Tassilo Philipp
parents:
diff changeset
6
6cc2b7fc7ea2 bigger pydc update:
Tassilo Philipp
parents:
diff changeset
7
6cc2b7fc7ea2 bigger pydc update:
Tassilo Philipp
parents:
diff changeset
8 def theader(title):
6cc2b7fc7ea2 bigger pydc update:
Tassilo Philipp
parents:
diff changeset
9 print(title)
6cc2b7fc7ea2 bigger pydc update:
Tassilo Philipp
parents:
diff changeset
10 print('%8s %20s %16s %-20s %12s %-12s -> %16s %-16s # %s' % ('DC_SIG', 'C_RET_T', 'C_FSYM', 'C_PARAMLIST', 'PYTHON_ARG_T', 'IN_ARGS', 'RET_VAL', 'PYTHON_RET_T', 'NOTES'))
6cc2b7fc7ea2 bigger pydc update:
Tassilo Philipp
parents:
diff changeset
11
6cc2b7fc7ea2 bigger pydc update:
Tassilo Philipp
parents:
diff changeset
12
6cc2b7fc7ea2 bigger pydc update:
Tassilo Philipp
parents:
diff changeset
13 def t(lib, dcsig, c_rtype, c_fsym, c_paramlist, extra_msg, *args):
6cc2b7fc7ea2 bigger pydc update:
Tassilo Philipp
parents:
diff changeset
14 try:
6cc2b7fc7ea2 bigger pydc update:
Tassilo Philipp
parents:
diff changeset
15 fp = pydc.find(lib, c_fsym)
6cc2b7fc7ea2 bigger pydc update:
Tassilo Philipp
parents:
diff changeset
16 r = pydc.call(fp, dcsig, *args)
6cc2b7fc7ea2 bigger pydc update:
Tassilo Philipp
parents:
diff changeset
17 rt = type(r).__name__
6cc2b7fc7ea2 bigger pydc update:
Tassilo Philipp
parents:
diff changeset
18 except:
6cc2b7fc7ea2 bigger pydc update:
Tassilo Philipp
parents:
diff changeset
19 r = '[EXCEPTION]'
6cc2b7fc7ea2 bigger pydc update:
Tassilo Philipp
parents:
diff changeset
20 rt = '!'
6cc2b7fc7ea2 bigger pydc update:
Tassilo Philipp
parents:
diff changeset
21 extra_msg += ' "'+str(sys.exc_info()[1])+'"'
6cc2b7fc7ea2 bigger pydc update:
Tassilo Philipp
parents:
diff changeset
22
6cc2b7fc7ea2 bigger pydc update:
Tassilo Philipp
parents:
diff changeset
23 inarg_types = '('+','.join(map(lambda x: type(x).__name__, args))+')'
6cc2b7fc7ea2 bigger pydc update:
Tassilo Philipp
parents:
diff changeset
24 inargs = ','.join(map(str, args))
6cc2b7fc7ea2 bigger pydc update:
Tassilo Philipp
parents:
diff changeset
25 print('%8s %20s %16s %-20s %12s %-12s -> %16.16s %-16s # %s' % (dcsig, c_rtype, c_fsym, c_paramlist, inarg_types, inargs, str(r), '('+rt+')', extra_msg))
6cc2b7fc7ea2 bigger pydc update:
Tassilo Philipp
parents:
diff changeset
26
6cc2b7fc7ea2 bigger pydc update:
Tassilo Philipp
parents:
diff changeset
27
6cc2b7fc7ea2 bigger pydc update:
Tassilo Philipp
parents:
diff changeset
28
6cc2b7fc7ea2 bigger pydc update:
Tassilo Philipp
parents:
diff changeset
29 # some libc tests ------------------
6cc2b7fc7ea2 bigger pydc update:
Tassilo Philipp
parents:
diff changeset
30
6cc2b7fc7ea2 bigger pydc update:
Tassilo Philipp
parents:
diff changeset
31 try:
6cc2b7fc7ea2 bigger pydc update:
Tassilo Philipp
parents:
diff changeset
32 if sys.platform == "win32":
6cc2b7fc7ea2 bigger pydc update:
Tassilo Philipp
parents:
diff changeset
33 libc = pydc.load("msvcrt")
6cc2b7fc7ea2 bigger pydc update:
Tassilo Philipp
parents:
diff changeset
34 elif sys.platform == "darwin":
6cc2b7fc7ea2 bigger pydc update:
Tassilo Philipp
parents:
diff changeset
35 libc = pydc.load("/usr/lib/libc.dylib")
6cc2b7fc7ea2 bigger pydc update:
Tassilo Philipp
parents:
diff changeset
36 elif "bsd" in sys.platform:
6cc2b7fc7ea2 bigger pydc update:
Tassilo Philipp
parents:
diff changeset
37 libc = pydc.load("/usr/lib/libc.so")
6cc2b7fc7ea2 bigger pydc update:
Tassilo Philipp
parents:
diff changeset
38 #libc = pydc.load("/lib/libc.so.7")
6cc2b7fc7ea2 bigger pydc update:
Tassilo Philipp
parents:
diff changeset
39 elif platform.architecture()[0] == "64bit":
6cc2b7fc7ea2 bigger pydc update:
Tassilo Philipp
parents:
diff changeset
40 libc = pydc.load("/lib64/libc.so.6")
6cc2b7fc7ea2 bigger pydc update:
Tassilo Philipp
parents:
diff changeset
41 else:
6cc2b7fc7ea2 bigger pydc update:
Tassilo Philipp
parents:
diff changeset
42 libc = pydc.load("/lib/libc.so.6")
6cc2b7fc7ea2 bigger pydc update:
Tassilo Philipp
parents:
diff changeset
43
6cc2b7fc7ea2 bigger pydc update:
Tassilo Philipp
parents:
diff changeset
44 theader('CLIB TESTS:')
6cc2b7fc7ea2 bigger pydc update:
Tassilo Philipp
parents:
diff changeset
45
6cc2b7fc7ea2 bigger pydc update:
Tassilo Philipp
parents:
diff changeset
46 # void()
6cc2b7fc7ea2 bigger pydc update:
Tassilo Philipp
parents:
diff changeset
47 t(libc, ")v", "void", "sranddev", "(void)", '')
6cc2b7fc7ea2 bigger pydc update:
Tassilo Philipp
parents:
diff changeset
48
6cc2b7fc7ea2 bigger pydc update:
Tassilo Philipp
parents:
diff changeset
49 # int()
6cc2b7fc7ea2 bigger pydc update:
Tassilo Philipp
parents:
diff changeset
50 t(libc, ")i", "int", "rand", "(void)", '')
6cc2b7fc7ea2 bigger pydc update:
Tassilo Philipp
parents:
diff changeset
51
6cc2b7fc7ea2 bigger pydc update:
Tassilo Philipp
parents:
diff changeset
52 # void(unsigned int)
6cc2b7fc7ea2 bigger pydc update:
Tassilo Philipp
parents:
diff changeset
53 t(libc, "I)v", "void", "srand", "(int)", '', 123)
6cc2b7fc7ea2 bigger pydc update:
Tassilo Philipp
parents:
diff changeset
54
6cc2b7fc7ea2 bigger pydc update:
Tassilo Philipp
parents:
diff changeset
55 # int() (and one different helper call for test)
6cc2b7fc7ea2 bigger pydc update:
Tassilo Philipp
parents:
diff changeset
56 t(libc, ")i", "int", "rand", "(void)", 'with seed <------,')
6cc2b7fc7ea2 bigger pydc update:
Tassilo Philipp
parents:
diff changeset
57 t(libc, "I)v", "void", "srand", "(int)", 'set same seed |', 123)
6cc2b7fc7ea2 bigger pydc update:
Tassilo Philipp
parents:
diff changeset
58 t(libc, ")i", "int", "rand", "(void)", 'should be same result...')
6cc2b7fc7ea2 bigger pydc update:
Tassilo Philipp
parents:
diff changeset
59 t(libc, ")i", "int", "rand", "(void)", '...and now different result')
6cc2b7fc7ea2 bigger pydc update:
Tassilo Philipp
parents:
diff changeset
60
6cc2b7fc7ea2 bigger pydc update:
Tassilo Philipp
parents:
diff changeset
61 # int(int)
6cc2b7fc7ea2 bigger pydc update:
Tassilo Philipp
parents:
diff changeset
62 t(libc, "i)i", "int", "abs", "(int)", ' 10 => 10', 10)
6cc2b7fc7ea2 bigger pydc update:
Tassilo Philipp
parents:
diff changeset
63 t(libc, "i)i", "int", "abs", "(int)", ' 0 => 0', 0)
6cc2b7fc7ea2 bigger pydc update:
Tassilo Philipp
parents:
diff changeset
64 t(libc, "i)i", "int", "abs", "(int)", ' -9209 => 9209', -9209)
6cc2b7fc7ea2 bigger pydc update:
Tassilo Philipp
parents:
diff changeset
65
6cc2b7fc7ea2 bigger pydc update:
Tassilo Philipp
parents:
diff changeset
66 # long(long)
6cc2b7fc7ea2 bigger pydc update:
Tassilo Philipp
parents:
diff changeset
67 t(libc, "j)j", "long", "labs", "(long)", ' 48 => 48', 48)
6cc2b7fc7ea2 bigger pydc update:
Tassilo Philipp
parents:
diff changeset
68 t(libc, "j)j", "long", "labs", "(long)", ' 0 => 0', 0)
6cc2b7fc7ea2 bigger pydc update:
Tassilo Philipp
parents:
diff changeset
69 t(libc, "j)j", "long", "labs", "(long)", '-4271477497 => 4271477497', -4271477497)
6cc2b7fc7ea2 bigger pydc update:
Tassilo Philipp
parents:
diff changeset
70
6cc2b7fc7ea2 bigger pydc update:
Tassilo Philipp
parents:
diff changeset
71 # long long(long long)
6cc2b7fc7ea2 bigger pydc update:
Tassilo Philipp
parents:
diff changeset
72 t(libc, "l)l", "long long", "labs", "(long long)", ' 6334810198 => 6334810198', 6334810198)
6cc2b7fc7ea2 bigger pydc update:
Tassilo Philipp
parents:
diff changeset
73 t(libc, "l)l", "long long", "labs", "(long long)", ' 1 => 1', 1)
6cc2b7fc7ea2 bigger pydc update:
Tassilo Philipp
parents:
diff changeset
74 t(libc, "l)l", "long long", "labs", "(long long)", ' 0 => 0', 0)
6cc2b7fc7ea2 bigger pydc update:
Tassilo Philipp
parents:
diff changeset
75 t(libc, "l)l", "long long", "labs", "(long long)", ' -1 => 1', -1)
6cc2b7fc7ea2 bigger pydc update:
Tassilo Philipp
parents:
diff changeset
76 t(libc, "l)l", "long long", "labs", "(long long)", '-7358758407 => 7358758407', -7358758407)
6cc2b7fc7ea2 bigger pydc update:
Tassilo Philipp
parents:
diff changeset
77
6cc2b7fc7ea2 bigger pydc update:
Tassilo Philipp
parents:
diff changeset
78 pydc.free(libc)
6cc2b7fc7ea2 bigger pydc update:
Tassilo Philipp
parents:
diff changeset
79 except:
6cc2b7fc7ea2 bigger pydc update:
Tassilo Philipp
parents:
diff changeset
80 print("skipping clib tests because: "+str(sys.exc_info()[1]))
6cc2b7fc7ea2 bigger pydc update:
Tassilo Philipp
parents:
diff changeset
81
6cc2b7fc7ea2 bigger pydc update:
Tassilo Philipp
parents:
diff changeset
82
6cc2b7fc7ea2 bigger pydc update:
Tassilo Philipp
parents:
diff changeset
83 # tests with own .so for testing all conversions ------------------
6cc2b7fc7ea2 bigger pydc update:
Tassilo Philipp
parents:
diff changeset
84
6cc2b7fc7ea2 bigger pydc update:
Tassilo Philipp
parents:
diff changeset
85 l = pydc.load(sys.path[0]+"/test.so")
6cc2b7fc7ea2 bigger pydc update:
Tassilo Philipp
parents:
diff changeset
86
6cc2b7fc7ea2 bigger pydc update:
Tassilo Philipp
parents:
diff changeset
87 # test all possible arg types and their conversions to and from python, with
6cc2b7fc7ea2 bigger pydc update:
Tassilo Philipp
parents:
diff changeset
88 # specific focus/tests in areas where python 2 and 3 differ
6cc2b7fc7ea2 bigger pydc update:
Tassilo Philipp
parents:
diff changeset
89 theader('ARG & RET TYPE CONVERSION TESTS:')
6cc2b7fc7ea2 bigger pydc update:
Tassilo Philipp
parents:
diff changeset
90 t(l, "B)B", "int", "i_plus_one", "(int)", ' False => True (using int func in C)', False)
6cc2b7fc7ea2 bigger pydc update:
Tassilo Philipp
parents:
diff changeset
91 t(l, "c)c", "char", "c_plus_one", "(char)", ' "a" (97) => 98', 'a')
6cc2b7fc7ea2 bigger pydc update:
Tassilo Philipp
parents:
diff changeset
92 t(l, "C)C", "unsigned char", "uc_plus_one", "(unsigned char)", ' "a" (97) => 98', 'a')
6cc2b7fc7ea2 bigger pydc update:
Tassilo Philipp
parents:
diff changeset
93 t(l, "c)c", "char", "c_plus_one", "(char)", ' -2 => -1', -2)
6cc2b7fc7ea2 bigger pydc update:
Tassilo Philipp
parents:
diff changeset
94 t(l, "C)C", "unsigned char", "uc_plus_one", "(unsigned char)", ' 10 => 11', 10)
6cc2b7fc7ea2 bigger pydc update:
Tassilo Philipp
parents:
diff changeset
95 t(l, "s)s", "short", "s_plus_one", "(short)", ' 10 => 11', 10)
6cc2b7fc7ea2 bigger pydc update:
Tassilo Philipp
parents:
diff changeset
96 t(l, "S)S", "unsigned short", "us_plus_one", "(unsigned short)", ' 10 => 11', 10)
6cc2b7fc7ea2 bigger pydc update:
Tassilo Philipp
parents:
diff changeset
97 t(l, "i)i", "int", "i_plus_one", "(int)", ' 10 => 11', 10)
6cc2b7fc7ea2 bigger pydc update:
Tassilo Philipp
parents:
diff changeset
98 t(l, "I)I", "unsigned int", "ui_plus_one", "(unsigned int)", ' 10 => 11', 10)
6cc2b7fc7ea2 bigger pydc update:
Tassilo Philipp
parents:
diff changeset
99 t(l, "j)j", "long", "l_plus_one", "(long)", ' 10 => 11', 10)
6cc2b7fc7ea2 bigger pydc update:
Tassilo Philipp
parents:
diff changeset
100 t(l, "J)J", "unsigned long", "ul_plus_one", "(unsigned long)", ' 10 => 11', 10)
6cc2b7fc7ea2 bigger pydc update:
Tassilo Philipp
parents:
diff changeset
101 t(l, "l)l", "long long", "ll_plus_one", "(long long)", ' 10 => 11', 10)
6cc2b7fc7ea2 bigger pydc update:
Tassilo Philipp
parents:
diff changeset
102 t(l, "L)L", "unsigned long long", "ull_plus_one", "(unsigned long long)", ' 10 => 11', 10)
6cc2b7fc7ea2 bigger pydc update:
Tassilo Philipp
parents:
diff changeset
103 t(l, "f)f", "float", "f_plus_one", "(float)", ' -1.23 => -0.23', -1.23)
6cc2b7fc7ea2 bigger pydc update:
Tassilo Philipp
parents:
diff changeset
104 t(l, "d)d", "double", "d_plus_one", "(double)", ' 5.67 => 6.67', 5.67)
6cc2b7fc7ea2 bigger pydc update:
Tassilo Philipp
parents:
diff changeset
105 t(l, "Z)Z", "const char*", "cc_plus_one", "(const char*)", '"lose char" => "ose char"', 'lose char')
6cc2b7fc7ea2 bigger pydc update:
Tassilo Philipp
parents:
diff changeset
106 t(l, "p)Z", "const char*", "cc_plus_one", "(const char*)", '"w/pointer" => "/pointer"', 'w/pointer')
6cc2b7fc7ea2 bigger pydc update:
Tassilo Philipp
parents:
diff changeset
107 t(l, "p)p", "const char*", "cc_plus_one", "(const char*)", ' "x" => p+1 (retval is prob odd addr)', 'x')
6cc2b7fc7ea2 bigger pydc update:
Tassilo Philipp
parents:
diff changeset
108 t(l, "p)p", "const char*", "cc_plus_one", "(const char*)", ' 0xdeadc0de => 0xdeadc0de+1=3735929055',0xdeadc0de)
6cc2b7fc7ea2 bigger pydc update:
Tassilo Philipp
parents:
diff changeset
109
6cc2b7fc7ea2 bigger pydc update:
Tassilo Philipp
parents:
diff changeset
110 # tested checked value conversions
6cc2b7fc7ea2 bigger pydc update:
Tassilo Philipp
parents:
diff changeset
111 theader('ARG & RET TYPE CONVERSION TESTS FOR RANGE CHECKED TYPES:')
6cc2b7fc7ea2 bigger pydc update:
Tassilo Philipp
parents:
diff changeset
112 t(l, "c)c", "char", "c_plus_one", "(char)", ' "~" => 127', '~')
6cc2b7fc7ea2 bigger pydc update:
Tassilo Philipp
parents:
diff changeset
113 t(l, "c)c", "char", "c_plus_one", "(char)", ' "~" => 127', '~')
6cc2b7fc7ea2 bigger pydc update:
Tassilo Philipp
parents:
diff changeset
114 t(l, "c)c", "char", "c_plus_one", "(char)", ' "" => input exc:', '')
6cc2b7fc7ea2 bigger pydc update:
Tassilo Philipp
parents:
diff changeset
115 t(l, "c)c", "char", "c_plus_one", "(char)", ' "" => input exc:', '')
6cc2b7fc7ea2 bigger pydc update:
Tassilo Philipp
parents:
diff changeset
116 t(l, "C)C", "unsigned char", "uc_plus_one", "(unsigned char)", ' "ab" => input exc:', 'ab')
6cc2b7fc7ea2 bigger pydc update:
Tassilo Philipp
parents:
diff changeset
117 t(l, "C)C", "unsigned char", "uc_plus_one", "(unsigned char)", ' "ab" => input exc:', 'ab')
6cc2b7fc7ea2 bigger pydc update:
Tassilo Philipp
parents:
diff changeset
118
6cc2b7fc7ea2 bigger pydc update:
Tassilo Philipp
parents:
diff changeset
119 t(l, "c)c", "char", "c_plus_one", "(char)", ' -128 => -127', -128)
6cc2b7fc7ea2 bigger pydc update:
Tassilo Philipp
parents:
diff changeset
120 t(l, "c)c", "char", "c_plus_one", "(char)", ' 127 => -128 (wrapped)', 127)
6cc2b7fc7ea2 bigger pydc update:
Tassilo Philipp
parents:
diff changeset
121 t(l, "c)c", "char", "c_plus_one", "(char)", ' -129 => input exc:', -129)
6cc2b7fc7ea2 bigger pydc update:
Tassilo Philipp
parents:
diff changeset
122 t(l, "c)c", "char", "c_plus_one", "(char)", ' 128 => input exc:', 128)
6cc2b7fc7ea2 bigger pydc update:
Tassilo Philipp
parents:
diff changeset
123
6cc2b7fc7ea2 bigger pydc update:
Tassilo Philipp
parents:
diff changeset
124 t(l, "C)C", "unsigned char", "uc_plus_one", "(unsigned char)", ' 0 => 1', 0)
6cc2b7fc7ea2 bigger pydc update:
Tassilo Philipp
parents:
diff changeset
125 t(l, "C)C", "unsigned char", "uc_plus_one", "(unsigned char)", ' 255 => 0 (wrapped)', 255)
6cc2b7fc7ea2 bigger pydc update:
Tassilo Philipp
parents:
diff changeset
126 t(l, "C)C", "unsigned char", "uc_plus_one", "(unsigned char)", ' -1 => input exc:', -1)
6cc2b7fc7ea2 bigger pydc update:
Tassilo Philipp
parents:
diff changeset
127 t(l, "C)C", "unsigned char", "uc_plus_one", "(unsigned char)", ' 256 => input exc:', 256)
6cc2b7fc7ea2 bigger pydc update:
Tassilo Philipp
parents:
diff changeset
128
6cc2b7fc7ea2 bigger pydc update:
Tassilo Philipp
parents:
diff changeset
129 t(l, "s)s", "short", "s_plus_one", "(short)", ' -32768 => -32767', -32768)
6cc2b7fc7ea2 bigger pydc update:
Tassilo Philipp
parents:
diff changeset
130 t(l, "s)s", "short", "s_plus_one", "(short)", ' 32767 => -32768 (wrapped)', 32767)
6cc2b7fc7ea2 bigger pydc update:
Tassilo Philipp
parents:
diff changeset
131 t(l, "s)s", "short", "s_plus_one", "(short)", ' -32769 => input exc:', -32769)
6cc2b7fc7ea2 bigger pydc update:
Tassilo Philipp
parents:
diff changeset
132 t(l, "s)s", "short", "s_plus_one", "(short)", ' 32768 => input exc:', 32768)
6cc2b7fc7ea2 bigger pydc update:
Tassilo Philipp
parents:
diff changeset
133
6cc2b7fc7ea2 bigger pydc update:
Tassilo Philipp
parents:
diff changeset
134 t(l, "S)S", "unsigned short", "us_plus_one", "(unsigned short)", ' 0 => 1', 0)
6cc2b7fc7ea2 bigger pydc update:
Tassilo Philipp
parents:
diff changeset
135 t(l, "S)S", "unsigned short", "us_plus_one", "(unsigned short)", ' 65535 => 0 (wrapped)', 65535)
6cc2b7fc7ea2 bigger pydc update:
Tassilo Philipp
parents:
diff changeset
136 t(l, "S)S", "unsigned short", "us_plus_one", "(unsigned short)", ' -1 => input exc:', -1)
6cc2b7fc7ea2 bigger pydc update:
Tassilo Philipp
parents:
diff changeset
137 t(l, "S)S", "unsigned short", "us_plus_one", "(unsigned short)", ' 65536 => input exc:', 65536)
6cc2b7fc7ea2 bigger pydc update:
Tassilo Philipp
parents:
diff changeset
138
6cc2b7fc7ea2 bigger pydc update:
Tassilo Philipp
parents:
diff changeset
139
6cc2b7fc7ea2 bigger pydc update:
Tassilo Philipp
parents:
diff changeset
140 # int
6cc2b7fc7ea2 bigger pydc update:
Tassilo Philipp
parents:
diff changeset
141 # rand(void);
6cc2b7fc7ea2 bigger pydc update:
Tassilo Philipp
parents:
diff changeset
142 #rand()
6cc2b7fc7ea2 bigger pydc update:
Tassilo Philipp
parents:
diff changeset
143 #define DC_SIGCHAR_VOID 'v' ra
6cc2b7fc7ea2 bigger pydc update:
Tassilo Philipp
parents:
diff changeset
144 #define DC_SIGCHAR_BOOL 'B'
6cc2b7fc7ea2 bigger pydc update:
Tassilo Philipp
parents:
diff changeset
145 #define DC_SIGCHAR_CHAR 'c' 2 versions
6cc2b7fc7ea2 bigger pydc update:
Tassilo Philipp
parents:
diff changeset
146 #define DC_SIGCHAR_UCHAR 'C'
6cc2b7fc7ea2 bigger pydc update:
Tassilo Philipp
parents:
diff changeset
147 #define DC_SIGCHAR_SHORT 's'
6cc2b7fc7ea2 bigger pydc update:
Tassilo Philipp
parents:
diff changeset
148 #define DC_SIGCHAR_USHORT 'S'
6cc2b7fc7ea2 bigger pydc update:
Tassilo Philipp
parents:
diff changeset
149 #define DC_SIGCHAR_INT 'i' r
6cc2b7fc7ea2 bigger pydc update:
Tassilo Philipp
parents:
diff changeset
150 #define DC_SIGCHAR_UINT 'I' a
6cc2b7fc7ea2 bigger pydc update:
Tassilo Philipp
parents:
diff changeset
151 #define DC_SIGCHAR_LONG 'j' ra
6cc2b7fc7ea2 bigger pydc update:
Tassilo Philipp
parents:
diff changeset
152 #define DC_SIGCHAR_ULONG 'J'
6cc2b7fc7ea2 bigger pydc update:
Tassilo Philipp
parents:
diff changeset
153 #define DC_SIGCHAR_LONGLONG 'l' ra
6cc2b7fc7ea2 bigger pydc update:
Tassilo Philipp
parents:
diff changeset
154 #define DC_SIGCHAR_ULONGLONG 'L'
6cc2b7fc7ea2 bigger pydc update:
Tassilo Philipp
parents:
diff changeset
155 #define DC_SIGCHAR_FLOAT 'f'
6cc2b7fc7ea2 bigger pydc update:
Tassilo Philipp
parents:
diff changeset
156 #define DC_SIGCHAR_DOUBLE 'd'
6cc2b7fc7ea2 bigger pydc update:
Tassilo Philipp
parents:
diff changeset
157 #define DC_SIGCHAR_POINTER 'p'
6cc2b7fc7ea2 bigger pydc update:
Tassilo Philipp
parents:
diff changeset
158 #define DC_SIGCHAR_STRING 'Z'
6cc2b7fc7ea2 bigger pydc update:
Tassilo Philipp
parents:
diff changeset
159 #define DC_SIGCHAR_STRUCT 'T'
6cc2b7fc7ea2 bigger pydc update:
Tassilo Philipp
parents:
diff changeset
160 #define DC_SIGCHAR_ENDARG ')' /* also works for end struct */
6cc2b7fc7ea2 bigger pydc update:
Tassilo Philipp
parents:
diff changeset
161
6cc2b7fc7ea2 bigger pydc update:
Tassilo Philipp
parents:
diff changeset
162
6cc2b7fc7ea2 bigger pydc update:
Tassilo Philipp
parents:
diff changeset
163
6cc2b7fc7ea2 bigger pydc update:
Tassilo Philipp
parents:
diff changeset
164 # SIG | FROM PYTHON 2 | FROM PYTHON 3 @@@ | C/C++ | TO PYTHON 2 | TO PYTHON 3 @@@
6cc2b7fc7ea2 bigger pydc update:
Tassilo Philipp
parents:
diff changeset
165 # ----+------------------------------------+------------------------------------+---------------------------------+------------------------------------+-----------------------------------
6cc2b7fc7ea2 bigger pydc update:
Tassilo Philipp
parents:
diff changeset
166 # 'v' | | | void | ?NoneType (returned for "xxx)v") | NoneType (returned for "xxx)v")
6cc2b7fc7ea2 bigger pydc update:
Tassilo Philipp
parents:
diff changeset
167 # 'B' | ?PyBool | ?PyBool | bool | ?PyBool | ?PyBool
6cc2b7fc7ea2 bigger pydc update:
Tassilo Philipp
parents:
diff changeset
168 # 'c' | ?PyInt (range checked) | ?PyLong (range checked) | char | ?PyInt | ?PyLong
6cc2b7fc7ea2 bigger pydc update:
Tassilo Philipp
parents:
diff changeset
169 # 'C' | ?PyInt (range checked) | ?PyLong (range checked) | unsigned char | ?PyInt | ?PyLong
6cc2b7fc7ea2 bigger pydc update:
Tassilo Philipp
parents:
diff changeset
170 # 's' | ?PyInt (range checked) | ?PyLong (range checked) | short | ?PyInt | ?PyLong
6cc2b7fc7ea2 bigger pydc update:
Tassilo Philipp
parents:
diff changeset
171 # 'S' | ?PyInt (range checked) | ?PyLong (range checked) | unsigned short | ?PyInt | ?PyLong
6cc2b7fc7ea2 bigger pydc update:
Tassilo Philipp
parents:
diff changeset
172 # 'i' | ?PyInt | ?PyLong | int | ?PyInt | ?PyLong
6cc2b7fc7ea2 bigger pydc update:
Tassilo Philipp
parents:
diff changeset
173 # 'I' | ?PyInt | ?PyLong | unsigned int | ?PyInt | ?PyLong
6cc2b7fc7ea2 bigger pydc update:
Tassilo Philipp
parents:
diff changeset
174 # 'j' | ?PyLong | ?PyLong | long | ?PyLong | ?PyLong
6cc2b7fc7ea2 bigger pydc update:
Tassilo Philipp
parents:
diff changeset
175 # 'J' | ?PyLong | ?PyLong | unsigned long | ?PyLong | ?PyLong
6cc2b7fc7ea2 bigger pydc update:
Tassilo Philipp
parents:
diff changeset
176 # 'l' | ?PyLongLong | ?PyLongLong | long long | ?PyLongLong | ?PyLongLong
6cc2b7fc7ea2 bigger pydc update:
Tassilo Philipp
parents:
diff changeset
177 # 'L' | ?PyLongLong | ?PyLongLong | unsigned long long | ?PyLongLong | ?PyLongLong
6cc2b7fc7ea2 bigger pydc update:
Tassilo Philipp
parents:
diff changeset
178 # 'f' | ?PyFloat (cast to single precision) | ?PyFloat (cast to single precision) | float | ?PyFloat (cast to double precision) | ?PyFloat (cast to double precision)
6cc2b7fc7ea2 bigger pydc update:
Tassilo Philipp
parents:
diff changeset
179 # 'd' | ?PyFloat | ?PyFloat | double | ?PyFloat | ?PyFloat
6cc2b7fc7ea2 bigger pydc update:
Tassilo Philipp
parents:
diff changeset
180 # 'p' | ?PyUnicode/PyString/PyLong | ?PyUnicode/PyBytes/PyLong | void* | ?Py_ssize_t | ?Py_ssize_t
6cc2b7fc7ea2 bigger pydc update:
Tassilo Philipp
parents:
diff changeset
181 # 'Z' | ?PyUnicode/PyString | ?PyUnicode/PyBytes | const char* (UTF-8 for unicode) | ?PyString | ?PyUnicode
6cc2b7fc7ea2 bigger pydc update:
Tassilo Philipp
parents:
diff changeset
182