static PyObject* evaluate_snippet(PyObject* self, PyObject* args, PyObject *keywds) { const char *filename, *src; char *out; unsigned max_stack = 500, gc_min_objects = 1000, max_trace = 20; double gc_growth_trigger = 2; int error; PyObject *ext_vars = NULL, *ext_codes = NULL; PyObject *tla_vars = NULL, *tla_codes = NULL; PyObject *import_callback = NULL; PyObject *native_callbacks = NULL; struct JsonlangVm *vm; static char *kwlist[] = { "filename", "src", "max_stack", "gc_min_objects", "gc_growth_trigger", "ext_vars", "ext_codes", "tla_vars", "tla_codes", "max_trace", "import_callback", "native_callbacks", NULL }; (void) self; if (!PyArg_ParseTupleAndKeywords( args, keywds, "ss|IIdOOOOIOO", kwlist, &filename, &src, &max_stack, &gc_min_objects, &gc_growth_trigger, &ext_vars, &ext_codes, &tla_vars, &tla_codes, &max_trace, &import_callback, &native_callbacks)) { return NULL; } vm = jsonlang_make(); jsonlang_max_stack(vm, max_stack); jsonlang_gc_min_objects(vm, gc_min_objects); jsonlang_max_trace(vm, max_trace); jsonlang_gc_growth_trigger(vm, gc_growth_trigger); if (!handle_vars(vm, ext_vars, 0, 0)) return NULL; if (!handle_vars(vm, ext_codes, 1, 0)) return NULL; if (!handle_vars(vm, tla_vars, 0, 1)) return NULL; if (!handle_vars(vm, tla_codes, 1, 1)) return NULL; struct ImportCtx ctx = { vm, import_callback }; if (!handle_import_callback(&ctx, import_callback)) { return NULL; } struct NativeCtx *ctxs = NULL; if (!handle_native_callbacks(vm, native_callbacks, &ctxs)) { free(ctxs); return NULL; } out = jsonlang_evaluate_snippet(vm, filename, src, &error); free(ctxs); return handle_result(vm, out, error); }
static PyObject* evaluate_file(PyObject* self, PyObject* args, PyObject *keywds) { const char *filename; char *out; unsigned max_stack = 500, gc_min_objects = 1000, max_trace = 20; double gc_growth_trigger = 2; int error; PyObject *ext_vars = NULL, *import_callback = NULL; struct JsonnetVm *vm; static char *kwlist[] = {"filename", "max_stack", "gc_min_objects", "gc_growth_trigger", "ext_vars", "max_trace", "import_callback", NULL}; (void) self; if (!PyArg_ParseTupleAndKeywords(args, keywds, "s|IIdOIO", kwlist, &filename, &max_stack, &gc_min_objects, &gc_growth_trigger, &ext_vars, &max_trace, &import_callback)) { return NULL; } vm = jsonnet_make(); jsonnet_max_stack(vm, max_stack); jsonnet_gc_min_objects(vm, gc_min_objects); jsonnet_max_trace(vm, max_trace); jsonnet_gc_growth_trigger(vm, gc_growth_trigger); if (!handle_ext_vars(vm, ext_vars)) { return NULL; } struct ImportCtx ctx = { vm, import_callback }; if (!handle_import_callback(&ctx, import_callback)) { return NULL; } out = jsonnet_evaluate_file(vm, filename, &error); return handle_result(vm, out, error); }