• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /asuswrt-rt-n18u-9.0.0.4.380.2695/release/src-rt/router/samba-3.5.8/pidl/lib/Parse/Pidl/Samba4/

Lines Matching refs:pidl

38 sub pidl($$)
114 $self->pidl("PyObject *ret;");
115 $self->pidl("");
117 $self->pidl("switch ($switch) {");
121 $self->pidl("$e->{CASE}:");
128 $self->pidl("ret = Py_None;");
131 $self->pidl("return ret;");
132 $self->pidl("");
138 $self->pidl("}");
140 $self->pidl("PyErr_SetString(PyExc_TypeError, \"unknown union level\");");
141 $self->pidl("return NULL;");
150 $self->pidl("$typename *ret = talloc_zero($mem_ctx, $typename);");
152 $self->pidl("switch ($switch) {");
156 $self->pidl("$e->{CASE}:");
162 $self->pidl("break;");
164 $self->pidl("");
168 $self->pidl("default:");
170 $self->pidl("PyErr_SetString(PyExc_TypeError, \"invalid union level value\");");
171 $self->pidl("talloc_free(ret);");
172 $self->pidl("ret = NULL;");
177 $self->pidl("}");
178 $self->pidl("");
179 $self->pidl("return ret;");
188 $self->pidl("");
195 $self->pidl("static PyObject *py_$name\_get_$e->{NAME}(PyObject *obj, void *closure)");
196 $self->pidl("{");
198 $self->pidl("$cname *object = ($cname *)py_talloc_get_ptr(obj);");
199 $self->pidl("PyObject *py_$e->{NAME};");
201 $self->pidl("return py_$e->{NAME};");
203 $self->pidl("}");
204 $self->pidl("");
206 $self->pidl("static int py_$name\_set_$e->{NAME}(PyObject *py_obj, PyObject *value, void *closure)");
207 $self->pidl("{");
209 $self->pidl("$cname *object = ($cname *)py_talloc_get_ptr(py_obj);");
216 $self->pidl("talloc_free($varname);");
219 $self->pidl("return 0;");
221 $self->pidl("}");
222 $self->pidl("");
226 $self->pidl("static PyGetSetDef ".$getsetters."[] = {");
229 $self->pidl("{ discard_const_p(char, \"$e->{NAME}\"), py_$name\_get_$e->{NAME}, py_$name\_set_$e->{NAME} },");
231 $self->pidl("{ NULL }");
233 $self->pidl("};");
234 $self->pidl("");
237 $self->pidl("static PyObject *py_$name\_new(PyTypeObject *type, PyObject *args, PyObject *kwargs)");
238 $self->pidl("{");
240 $self->pidl("return py_talloc_new($cname, type);");
242 $self->pidl("}");
243 $self->pidl("");
250 $self->pidl("static PyObject *py_$name\_ndr_pack(PyObject *py_obj)");
251 $self->pidl("{");
253 $self->pidl("$cname *object = ($cname *)py_talloc_get_ptr(py_obj);");
254 $self->pidl("DATA_BLOB blob;");
255 $self->pidl("enum ndr_err_code err;");
256 $self->pidl("err = ndr_push_struct_blob(&blob, py_talloc_get_mem_ctx(py_obj), NULL, object, (ndr_push_flags_fn_t)ndr_push_$name);");
257 $self->pidl("if (err != NDR_ERR_SUCCESS) {");
259 $self->pidl("PyErr_SetNdrError(err);");
260 $self->pidl("return NULL;");
262 $self->pidl("}");
263 $self->pidl("");
264 $self->pidl("return PyString_FromStringAndSize((char *)blob.data, blob.length);");
266 $self->pidl("}");
267 $self->pidl("");
269 $self->pidl("static PyObject *py_$name\_ndr_unpack(PyObject *py_obj, PyObject *args)");
270 $self->pidl("{");
272 $self->pidl("$cname *object = ($cname *)py_talloc_get_ptr(py_obj);");
273 $self->pidl("DATA_BLOB blob;");
274 $self->pidl("enum ndr_err_code err;");
275 $self->pidl("if (!PyArg_ParseTuple(args, \"s#:__ndr_unpack__\", &blob.data, &blob.length))");
276 $self->pidl("\treturn NULL;");
277 $self->pidl("");
292 $self->pidl("err = ndr_pull_struct_blob_all(&blob, py_talloc_get_mem_ctx(py_obj), NULL, object, (ndr_pull_flags_fn_t)ndr_pull_$name);");
294 $self->pidl("err = ndr_pull_struct_blob(&blob, py_talloc_get_mem_ctx(py_obj), NULL, object, (ndr_pull_flags_fn_t)ndr_pull_$name);");
296 $self->pidl("if (err != NDR_ERR_SUCCESS) {");
298 $self->pidl("PyErr_SetNdrError(err);");
299 $self->pidl("return NULL;");
301 $self->pidl("}");
302 $self->pidl("");
303 $self->pidl("Py_RETURN_NONE;");
305 $self->pidl("}");
306 $self->pidl("");
308 $self->pidl("static PyMethodDef $py_methods\[] = {");
310 $self->pidl("{ \"__ndr_pack__\", (PyCFunction)py_$name\_ndr_pack, METH_NOARGS, \"S.pack() -> blob\\nNDR pack\" },");
311 $self->pidl("{ \"__ndr_unpack__\", (PyCFunction)py_$name\_ndr_unpack, METH_VARARGS, \"S.unpack(blob) -> None\\nNDR unpack\" },");
312 $self->pidl("{ NULL, NULL, 0, NULL }");
314 $self->pidl("};");
315 $self->pidl("");
319 $self->pidl("");
322 $self->pidl("static PyTypeObject $typeobject = {");
324 $self->pidl("PyObject_HEAD_INIT(NULL) 0,");
325 $self->pidl(".tp_name = \"$modulename.$prettyname\",");
326 $self->pidl(".tp_basicsize = sizeof(py_talloc_Object),");
327 $self->pidl(".tp_dealloc = py_talloc_dealloc,");
328 $self->pidl(".tp_getset = $getsetters,");
329 $self->pidl(".tp_repr = py_talloc_default_repr,");
331 $self->pidl(".tp_doc = $docstring,");
333 $self->pidl(".tp_methods = $py_methods,");
334 $self->pidl(".tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,");
335 $self->pidl(".tp_new = py_$name\_new,");
337 $self->pidl("};");
339 $self->pidl("");
388 $self->pidl("static PyObject *$outfnname(struct $fn->{NAME} *r)");
389 $self->pidl("{");
391 $self->pidl("PyObject *result = Py_None;");
396 $self->pidl("PyObject *py_$e->{NAME};");
407 $self->pidl("result = PyTuple_New($result_size);");
419 $self->pidl("PyTuple_SetItem(result, $i, $py_name);");
423 $self->pidl("result = $py_name;");
436 $self->pidl("PyTuple_SetItem(result, $i, $conv);");
438 $self->pidl("result = $conv;");
450 $self->pidl("return result;");
452 $self->pidl("}");
453 $self->pidl("");
465 $self->pidl("static bool $infnname(PyObject *args, PyObject *kwargs, struct $fn->{NAME} *r)");
466 $self->pidl("{");
477 $self->pidl("PyObject *py_$e->{NAME};");
486 $self->pidl("const char *kwnames[] = {");
488 $self->pidl($args_names . "NULL");
490 $self->pidl("};");
492 $self->pidl("");
493 $self->pidl("if (!PyArg_ParseTupleAndKeywords(args, kwargs, \"$args_format:$fn->{NAME}\", discard_const_p(char *, kwnames)$args_string)) {");
495 $self->pidl("return false;");
497 $self->pidl("}");
498 $self->pidl("");
507 $self->pidl("PY_CHECK_TYPE(&PyList_Type, $py_var, $fail);");
510 $self->pidl("r->in.$e->{NAME} = talloc_ptrtype(r, r->in.$e->{NAME});");
511 $self->pidl("*r->in.$e->{NAME} = $val;");
513 $self->pidl("r->in.$e->{NAME} = $val;");
519 $self->pidl("return true;");
521 $self->pidl("}");
522 $self->pidl("");
558 $self->pidl("if (!W_ERROR_IS_OK($var)) {");
560 $self->pidl("PyErr_SetWERROR($var);");
561 $self->pidl("talloc_free($mem_ctx);") if ($mem_ctx);
562 $self->pidl("return $retval;");
564 $self->pidl("}");
565 $self->pidl("");
572 $self->pidl("if (NT_STATUS_IS_ERR($var)) {");
574 $self->pidl("PyErr_SetNTSTATUS($var);");
575 $self->pidl("talloc_free($mem_ctx);") if ($mem_ctx);
576 $self->pidl("return $retval;");
578 $self->pidl("}");
579 $self->pidl("");
613 $self->pidl("PyObject *py_import_$d->{NAME}(TALLOC_CTX *mem_ctx, int level, " .mapTypeName($d) . " *in)");
614 $self->pidl("{");
618 $self->pidl("}");
619 $self->pidl("");
621 $self->pidl(mapTypeName($d) . " *py_export_$d->{NAME}(TALLOC_CTX *mem_ctx, int level, PyObject *in)");
622 $self->pidl("{");
626 $self->pidl("}");
627 $self->pidl("");
636 $self->pidl("#define $docstring ".has_property($d, "helpstring"));
648 $self->pidl("#include \"".unmake_str($interface->{PROPERTIES}->{pyhelper})."\"\n");
661 $self->pidl("");
679 $self->pidl("const struct PyNdrRpcMethodDef py_ndr_$interface->{NAME}\_methods[] = {");
683 $self->pidl("{ \"$prettyname\", $docstring, (dcerpc_call_fn)$callfn, (py_data_pack_fn)$infn, (py_data_unpack_fn)$outfn, $opnum, &ndr_table_$interface->{NAME} },");
685 $self->pidl("{ NULL }");
687 $self->pidl("};");
688 $self->pidl("");
690 $self->pidl("static PyObject *interface_$interface->{NAME}_new(PyTypeObject *type, PyObject *args, PyObject *kwargs)");
691 $self->pidl("{");
693 $self->pidl("return py_dcerpc_interface_init_helper(type, args, kwargs, &ndr_table_$interface->{NAME});");
695 $self->pidl("}");
697 $self->pidl("");
714 $self->pidl("static PyTypeObject $interface->{NAME}_InterfaceType = {");
716 $self->pidl("PyObject_HEAD_INIT(NULL) 0,");
717 $self->pidl(".tp_name = \"$basename.$interface->{NAME}\",");
718 $self->pidl(".tp_basicsize = sizeof(dcerpc_InterfaceObject),");
719 $self->pidl(".tp_base = &dcerpc_InterfaceType,");
720 $self->pidl(".tp_doc = $docstring,");
721 $self->pidl(".tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,");
722 $self->pidl(".tp_new = interface_$interface->{NAME}_new,");
724 $self->pidl("};");
726 $self->pidl("");
815 $self->pidl("memset($dest, 0, sizeof(" . get_value_of($dest) . "));");
817 $self->pidl("memcpy($dest, $src, sizeof(" . get_value_of($dest) . "));");
819 $self->pidl("$dest = $src;");
839 $self->pidl("PY_CHECK_TYPE(&PyInt_Type, $cvar, $fail);");
840 $self->pidl("$target = PyInt_AsLong($cvar);");
848 $self->pidl("PyErr_SetString(PyExc_TypeError, \"Can not convert C Type " . mapTypeName($ctype) . " to Python\");");
851 $self->pidl("PY_CHECK_TYPE($ctype_name, $cvar, $fail);");
857 $self->pidl("$target = data_blob_talloc($mem_ctx, PyString_AsString($cvar), PyString_Size($cvar));");
863 $self->pidl("$target = talloc_strdup($mem_ctx, PyString_AsString($cvar));");
868 $self->pidl("$target = PyString_AsString($cvar);");
874 $self->pidl("$target = NT_STATUS(PyInt_AsLong($cvar));");
879 $self->pidl("$target = W_ERROR(PyInt_AsLong($cvar));");
884 $self->pidl("$target = PyCObject_AsVoidPtr($cvar);");
908 $self->pidl("if ($py_var == Py_None) {");
910 $self->pidl("$var_name = NULL;");
912 $self->pidl("} else {");
915 $self->pidl("$var_name = talloc_ptrtype($mem_ctx, $var_name);");
919 $self->pidl("}");
928 $self->pidl("PY_CHECK_TYPE(&PyUnicode_Type, $py_var, $fail);");
930 $self->pidl($var_name . " = PyString_AsString(PyUnicode_AsEncodedString($py_var, \"utf-8\", \"ignore\"));");
933 $self->pidl("PY_CHECK_TYPE(&PyList_Type, $py_var, $fail);");
934 $self->pidl("{");
936 $self->pidl("int $counter;");
938 $self->pidl("$var_name = talloc_array_ptrtype($mem_ctx, $var_name, PyList_Size($py_var));");
940 $self->pidl("for ($counter = 0; $counter < PyList_Size($py_var); $counter++) {");
944 $self->pidl("}");
946 $self->pidl("}");
1046 $self->pidl("if ($var == NULL) {");
1048 $self->pidl($fail);
1050 $self->pidl("}");
1064 $self->pidl("if ($var_name == NULL) {");
1066 $self->pidl("$py_var = Py_None;");
1068 $self->pidl("} else {");
1074 $self->pidl("}");
1084 $self->pidl("$py_var = PyUnicode_Decode($var_name, strlen($var_name), \"utf-8\", \"ignore\");");
1093 $self->pidl("$py_var = PyList_New($length);");
1095 $self->pidl("{");
1098 $self->pidl("int $counter;");
1099 $self->pidl("for ($counter = 0; $counter < $length; $counter++) {");
1102 $self->pidl("PyObject *$member_var;");
1104 $self->pidl("PyList_SetItem($py_var, $counter, $member_var);");
1106 $self->pidl("}");
1108 $self->pidl("}");
1113 $self->pidl("$py_var = py_import_" . GetNextLevel($e, $l)->{DATA_TYPE} . "($mem_ctx, $switch, $var_name);");
1121 $self->pidl("$py_var = $conv;");
1143 /* Python wrapper functions auto-generated by pidl */
1163 $self->pidl("static PyMethodDef $basename\_methods[] = {");
1167 $self->pidl("{ \"$fn_name\", (PyCFunction)$pyfn_name, $flags, $doc },");
1170 $self->pidl("{ NULL, NULL, 0, NULL }");
1172 $self->pidl("};");
1174 $self->pidl("");
1176 $self->pidl("void init$basename(void)");
1177 $self->pidl("{");
1179 $self->pidl("PyObject *m;");
1181 $self->pidl("PyObject *dep_$_;");
1183 $self->pidl("");
1186 $self->pidl("dep_$_ = PyImport_ImportModule(\"samba.dcerpc.$_\");");
1187 $self->pidl("if (dep_$_ == NULL)");
1188 $self->pidl("\treturn;");
1189 $self->pidl("");
1196 $self->pidl("$_\_Type = (PyTypeObject *)PyObject_GetAttrString(dep_$basefile, \"$pretty_name\");");
1197 $self->pidl("if ($_\_Type == NULL)");
1198 $self->pidl("\treturn;");
1199 $self->pidl("");
1203 $self->pidl("if (PyType_Ready($_) < 0)");
1204 $self->pidl("\treturn;");
1207 $self->pidl($_) foreach (@{$self->{readycode}});
1211 $self->pidl("#ifdef PY_".uc($typename)."_PATCH");
1212 $self->pidl("PY_".uc($typename)."_PATCH($cvar);");
1213 $self->pidl("#endif");
1216 $self->pidl("");
1218 $self->pidl("m = Py_InitModule3(\"$basename\", $basename\_methods, \"$basename DCE/RPC\");");
1219 $self->pidl("if (m == NULL)");
1220 $self->pidl("\treturn;");
1221 $self->pidl("");
1233 $self->pidl("PyModule_AddObject(m, \"$name\", $py_obj);");
1238 $self->pidl("Py_INCREF($c_name);");
1239 $self->pidl("PyModule_AddObject(m, \"$object_name\", $c_name);");
1242 $self->pidl("#ifdef PY_MOD_".uc($basename)."_PATCH");
1243 $self->pidl("PY_MOD_".uc($basename)."_PATCH(m);");
1244 $self->pidl("#endif");
1246 $self->pidl("");
1248 $self->pidl("}");