root/trunk/infrastructure/pyd/generators/func_wrap.py

Revision 24, 1.0 kB (checked in by KirkMcDonald, 2 years ago)

CeleriD/Pyd? integration.

Line 
1 f = open('func_wrap.txt', 'w')
2
3 template = "d_type!(ArgType!(fn_t, %s))(PyTuple_GetItem(args, %s))"
4
5 for i in range(1, 11):
6     f.write(" " * 8 + "} static if (MIN_ARGS <= %s && MAX_ARGS >= %s) {\n" % (i, i))
7     f.write(" " * 12 + "if (ARGS == %s) {\n" % i)
8     f.write(" " * 16 +    "static if (is(RetType : void)) {\n")
9     f.write(" " * 20 +        "fn(\n")
10     for j in range(i):
11         f.write(" " * 24 + template % (j+1, j))
12         if j < i-1:
13             f.write(',')
14         f.write('\n')
15     f.write(" " * 20 +        ");\n")
16     f.write(" " * 20 +        "Py_INCREF(Py_None);\n")
17     f.write(" " * 20 +        "ret = Py_None;\n")
18     f.write(" " * 16 +    "} else {\n")
19     f.write(" " * 20 +        "ret = _py( fn(\n")
20     for j in range(i):
21         f.write(" " * 24 + template % (j+1, j))
22         if j < i-1:
23             f.write(',')
24         f.write('\n')
25     f.write(" " * 20 +        ") );\n")
26     f.write(" " * 16 +    "}\n")
27     f.write(" " * 12 + "}\n")
28 f.write (" " * 8 + "}")
Note: See TracBrowser for help on using the browser.