1 --- a/pycaml_ml.c 2004-12-02 17:17:07.000000000 +0100
2 +++ b/pycaml_ml.c 2008-03-27 12:15:23.000000000 +0100
4 extern DL_IMPORT(PyObject *) PyObject_GetAttrString(PyObject *, char *);
6 extern DL_IMPORT(PyObject *) PyObject_GetAttr(PyObject *, PyObject *);
7 +extern DL_IMPORT(PyObject *) PyObject_CallObject(PyObject *, PyObject *);
9 extern DL_IMPORT(int) PyObject_IsTrue(PyObject *);
10 extern DL_IMPORT(int) PyObject_Not(PyObject *);
12 extern DL_IMPORT(PyObject *) PyTuple_New(int size);
14 extern DL_IMPORT(int) PyTuple_Size(PyObject *);
15 +extern DL_IMPORT(int) PyTuple_Check(PyObject *);
17 extern DL_IMPORT(PyObject *) PyTuple_GetItem(PyObject *, int);
21 #endif//DONT_COMPILE_THIS
24 +#undef PyRun_SimpleString
25 +int PyRun_SimpleString(const char* command) { return PyRun_SimpleStringFlags(command, NULL); }
28 +int PyRun_AnyFile(FILE* fp, const char* filename) { return PyRun_AnyFileExFlags(fp, filename, 0, NULL); }
30 +#undef PyRun_SimpleFile
31 +int PyRun_SimpleFile(FILE* fp, const char* filename) { return PyRun_SimpleFileExFlags(fp, filename, 0, NULL); }
33 +#undef PyRun_InteractiveOne
34 +int PyRun_InteractiveOne(FILE* fp, const char* filename) { return PyRun_InteractiveOneFlags(fp, filename, NULL); }
36 +#undef PyRun_InteractiveLoop
37 +int PyRun_InteractiveLoop(FILE* fp, const char* filename) { return PyRun_InteractiveLoopFlags(fp, filename, NULL); }
39 +#undef PyRun_AnyFileEx
40 +int PyRun_AnyFileEx(FILE* fp, const char* filename, int closeit) { return PyRun_AnyFileExFlags(fp, filename, closeit, NULL); }
42 +#undef PyRun_SimpleFileEx
43 +int PyRun_SimpleFileEx(FILE* fp, const char* filename, int closeit) { return PyRun_SimpleFileExFlags(fp, filename, closeit, NULL); }
46 +PyObject* PyRun_String(const char* str, int start, PyObject* globals, PyObject* locals) { return PyRun_StringFlags(str, start, globals, locals, NULL); }
49 +PyObject* PyRun_File(FILE* fp, const char* filename, int start, PyObject* globals, PyObject* locals) { return PyRun_FileExFlags(fp, filename, start, globals, locals, 0, NULL); }
52 +PyObject* PyRun_FileEx(FILE* fp, const char* filename, int start, PyObject* globals, PyObject* locals, int closeit) { return PyRun_FileExFlags(fp, filename, start, globals, locals, closeit, NULL); }
54 +#undef Py_CompileString
55 +PyObject* Py_CompileString(const char* str, const char* filename, int start) { return Py_CompileStringFlags(str, filename, start, NULL); }
58 +PyObject* PyRange_New(PyObject* start, PyObject* stop, PyObject* step) { return PyObject_CallFunction((PyObject*)&PyRange_Type, "lll", start, stop, step); }
61 +int PyTuple_Check(PyObject* op) { return PyObject_TypeCheck(op, &PyTuple_Type); }
64 /* Value -> Pyobject */
66 value pywrapvalue( value cb ) {
68 { (void *)PyObject_GetAttrString, 16, "PyObject_GetAttrString" },
70 { (void *)PyObject_GetAttr, 17, "PyObject_GetAttr" },
71 + { (void *)PyObject_CallObject, 17, "PyObject_CallObject" },
73 { (void *)PyObject_IsTrue, 18, "PyObject_IsTrue" },
74 { (void *)PyObject_Not, 18, "PyObject_Not" },
76 { (void *)PyTuple_New, 39, "PyTuple_New" },
78 { (void *)PyTuple_Size, 18, "PyTuple_Size" },
79 + { (void *)PyTuple_Check, 18, "PyTuple_Check" },
81 { (void *)PyTuple_GetItem, 40, "PyTuple_GetItem" },
83 @@ -1385,3 +1430,24 @@
88 +value pycaml_setargs(value argv) {
92 + cargv[0] = String_val(argv);
94 + PySys_SetArgv(1, cargv);
99 +value pytrue( value unit ) {
101 + CAMLreturn(pywrap(Py_True));
104 +value pyfalse(value unit) {
106 + CAMLreturn(pywrap(Py_False));