2 /* Python wrapper functions auto-generated by pidl */
3 #define PY_SSIZE_T_CLEAN 1 /* We use Py_ssize_t for PyArg_ParseTupleAndKeywords */
7 #include "librpc/rpc/pyrpc.h"
8 #include "librpc/rpc/pyrpc_util.h"
9 #include "bin/default/librpc/gen_ndr/ndr_browser.h"
10 #include "bin/default/librpc/gen_ndr/ndr_browser_c.h"
13 * These functions are here to ensure they can be optimized out by
14 * the compiler based on the constant input values
17 static inline unsigned long long ndr_sizeof2uintmax(size_t var_size)
33 static inline long long ndr_sizeof2intmax(size_t var_size)
49 static inline PyObject *ndr_PyLong_FromLongLong(long long v)
51 if (v > LONG_MAX || v < LONG_MIN) {
52 return PyLong_FromLongLong(v);
54 return PyInt_FromLong(v);
58 static inline PyObject *ndr_PyLong_FromUnsignedLongLong(unsigned long long v)
61 return PyLong_FromUnsignedLongLong(v);
63 return PyInt_FromLong(v);
67 #include "librpc/gen_ndr/srvsvc.h"
68 static PyTypeObject BrowserrSrvInfo100Ctr_Type;
69 static PyTypeObject BrowserrSrvInfo101Ctr_Type;
70 PyObject *py_import_BrowserrSrvInfoUnion(TALLOC_CTX *mem_ctx, int level, union BrowserrSrvInfoUnion *in);
71 union BrowserrSrvInfoUnion *py_export_BrowserrSrvInfoUnion(TALLOC_CTX *mem_ctx, int level, PyObject *in);
72 static PyTypeObject BrowserrSrvInfo_Type;
73 static PyTypeObject browser_InterfaceType;
75 void initbrowser(void);static PyTypeObject *srvsvc_NetSrvInfo100_Type;
76 static PyTypeObject *BaseObject_Type;
77 static PyTypeObject *srvsvc_NetSrvInfo101_Type;
78 static PyTypeObject *ClientConnection_Type;
79 static PyTypeObject *ndr_syntax_id_Type;
81 static PyObject *py_BrowserrSrvInfo100Ctr_get_entries_read(PyObject *obj, void *closure)
83 struct BrowserrSrvInfo100Ctr *object = (struct BrowserrSrvInfo100Ctr *)pytalloc_get_ptr(obj);
84 PyObject *py_entries_read;
85 py_entries_read = ndr_PyLong_FromUnsignedLongLong((uint32_t)object->entries_read);
86 return py_entries_read;
89 static int py_BrowserrSrvInfo100Ctr_set_entries_read(PyObject *py_obj, PyObject *value, void *closure)
91 struct BrowserrSrvInfo100Ctr *object = (struct BrowserrSrvInfo100Ctr *)pytalloc_get_ptr(py_obj);
93 PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->entries_read");
97 const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->entries_read));
98 if (PyLong_Check(value)) {
99 unsigned long long test_var;
100 test_var = PyLong_AsUnsignedLongLong(value);
101 if (PyErr_Occurred() != NULL) {
104 if (test_var > uint_max) {
105 PyErr_Format(PyExc_OverflowError, "Expected type %s or %s within range 0 - %llu, got %llu",\
106 PyInt_Type.tp_name, PyLong_Type.tp_name, uint_max, test_var);
109 object->entries_read = test_var;
110 } else if (PyInt_Check(value)) {
112 test_var = PyInt_AsLong(value);
113 if (test_var < 0 || test_var > uint_max) {
114 PyErr_Format(PyExc_OverflowError, "Expected type %s or %s within range 0 - %llu, got %ld",\
115 PyInt_Type.tp_name, PyLong_Type.tp_name, uint_max, test_var);
118 object->entries_read = test_var;
120 PyErr_Format(PyExc_TypeError, "Expected type %s or %s",\
121 PyInt_Type.tp_name, PyLong_Type.tp_name);
128 static PyObject *py_BrowserrSrvInfo100Ctr_get_entries(PyObject *obj, void *closure)
130 struct BrowserrSrvInfo100Ctr *object = (struct BrowserrSrvInfo100Ctr *)pytalloc_get_ptr(obj);
131 PyObject *py_entries;
132 if (object->entries == NULL) {
133 py_entries = Py_None;
134 Py_INCREF(py_entries);
136 py_entries = PyList_New(object->entries_read);
137 if (py_entries == NULL) {
142 for (entries_cntr_1 = 0; entries_cntr_1 < (object->entries_read); entries_cntr_1++) {
143 PyObject *py_entries_1;
144 py_entries_1 = pytalloc_reference_ex(srvsvc_NetSrvInfo100_Type, object->entries, &object->entries[entries_cntr_1]);
145 PyList_SetItem(py_entries, entries_cntr_1, py_entries_1);
152 static int py_BrowserrSrvInfo100Ctr_set_entries(PyObject *py_obj, PyObject *value, void *closure)
154 struct BrowserrSrvInfo100Ctr *object = (struct BrowserrSrvInfo100Ctr *)pytalloc_get_ptr(py_obj);
155 talloc_unlink(pytalloc_get_mem_ctx(py_obj), discard_const(object->entries));
157 PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->entries");
160 if (value == Py_None) {
161 object->entries = NULL;
163 object->entries = NULL;
165 PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct *object->entries");
168 PY_CHECK_TYPE(&PyList_Type, value, return -1;);
171 object->entries = talloc_array_ptrtype(pytalloc_get_mem_ctx(py_obj), object->entries, PyList_GET_SIZE(value));
172 if (!object->entries) { return -1;; }
173 talloc_set_name_const(object->entries, "ARRAY: object->entries");
174 for (entries_cntr_1 = 0; entries_cntr_1 < PyList_GET_SIZE(value); entries_cntr_1++) {
175 if (PyList_GET_ITEM(value, entries_cntr_1) == NULL) {
176 PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->entries[entries_cntr_1]");
179 PY_CHECK_TYPE(srvsvc_NetSrvInfo100_Type, PyList_GET_ITEM(value, entries_cntr_1), return -1;);
180 if (talloc_reference(object->entries, pytalloc_get_mem_ctx(PyList_GET_ITEM(value, entries_cntr_1))) == NULL) {
184 object->entries[entries_cntr_1] = *(struct srvsvc_NetSrvInfo100 *)pytalloc_get_ptr(PyList_GET_ITEM(value, entries_cntr_1));
191 static PyGetSetDef py_BrowserrSrvInfo100Ctr_getsetters[] = {
193 .name = discard_const_p(char, "entries_read"),
194 .get = py_BrowserrSrvInfo100Ctr_get_entries_read,
195 .set = py_BrowserrSrvInfo100Ctr_set_entries_read,
196 .doc = discard_const_p(char, "PIDL-generated element entries_read")
199 .name = discard_const_p(char, "entries"),
200 .get = py_BrowserrSrvInfo100Ctr_get_entries,
201 .set = py_BrowserrSrvInfo100Ctr_set_entries,
202 .doc = discard_const_p(char, "PIDL-generated element entries")
207 static PyObject *py_BrowserrSrvInfo100Ctr_new(PyTypeObject *type, PyObject *args, PyObject *kwargs)
209 return pytalloc_new(struct BrowserrSrvInfo100Ctr, type);
213 static PyTypeObject BrowserrSrvInfo100Ctr_Type = {
214 PyObject_HEAD_INIT(NULL) 0,
215 .tp_name = "browser.BrowserrSrvInfo100Ctr",
216 .tp_getset = py_BrowserrSrvInfo100Ctr_getsetters,
218 .tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,
219 .tp_new = py_BrowserrSrvInfo100Ctr_new,
223 static PyObject *py_BrowserrSrvInfo101Ctr_get_entries_read(PyObject *obj, void *closure)
225 struct BrowserrSrvInfo101Ctr *object = (struct BrowserrSrvInfo101Ctr *)pytalloc_get_ptr(obj);
226 PyObject *py_entries_read;
227 py_entries_read = ndr_PyLong_FromUnsignedLongLong((uint32_t)object->entries_read);
228 return py_entries_read;
231 static int py_BrowserrSrvInfo101Ctr_set_entries_read(PyObject *py_obj, PyObject *value, void *closure)
233 struct BrowserrSrvInfo101Ctr *object = (struct BrowserrSrvInfo101Ctr *)pytalloc_get_ptr(py_obj);
235 PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->entries_read");
239 const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->entries_read));
240 if (PyLong_Check(value)) {
241 unsigned long long test_var;
242 test_var = PyLong_AsUnsignedLongLong(value);
243 if (PyErr_Occurred() != NULL) {
246 if (test_var > uint_max) {
247 PyErr_Format(PyExc_OverflowError, "Expected type %s or %s within range 0 - %llu, got %llu",\
248 PyInt_Type.tp_name, PyLong_Type.tp_name, uint_max, test_var);
251 object->entries_read = test_var;
252 } else if (PyInt_Check(value)) {
254 test_var = PyInt_AsLong(value);
255 if (test_var < 0 || test_var > uint_max) {
256 PyErr_Format(PyExc_OverflowError, "Expected type %s or %s within range 0 - %llu, got %ld",\
257 PyInt_Type.tp_name, PyLong_Type.tp_name, uint_max, test_var);
260 object->entries_read = test_var;
262 PyErr_Format(PyExc_TypeError, "Expected type %s or %s",\
263 PyInt_Type.tp_name, PyLong_Type.tp_name);
270 static PyObject *py_BrowserrSrvInfo101Ctr_get_entries(PyObject *obj, void *closure)
272 struct BrowserrSrvInfo101Ctr *object = (struct BrowserrSrvInfo101Ctr *)pytalloc_get_ptr(obj);
273 PyObject *py_entries;
274 if (object->entries == NULL) {
275 py_entries = Py_None;
276 Py_INCREF(py_entries);
278 py_entries = PyList_New(object->entries_read);
279 if (py_entries == NULL) {
284 for (entries_cntr_1 = 0; entries_cntr_1 < (object->entries_read); entries_cntr_1++) {
285 PyObject *py_entries_1;
286 py_entries_1 = pytalloc_reference_ex(srvsvc_NetSrvInfo101_Type, object->entries, &object->entries[entries_cntr_1]);
287 PyList_SetItem(py_entries, entries_cntr_1, py_entries_1);
294 static int py_BrowserrSrvInfo101Ctr_set_entries(PyObject *py_obj, PyObject *value, void *closure)
296 struct BrowserrSrvInfo101Ctr *object = (struct BrowserrSrvInfo101Ctr *)pytalloc_get_ptr(py_obj);
297 talloc_unlink(pytalloc_get_mem_ctx(py_obj), discard_const(object->entries));
299 PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->entries");
302 if (value == Py_None) {
303 object->entries = NULL;
305 object->entries = NULL;
307 PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct *object->entries");
310 PY_CHECK_TYPE(&PyList_Type, value, return -1;);
313 object->entries = talloc_array_ptrtype(pytalloc_get_mem_ctx(py_obj), object->entries, PyList_GET_SIZE(value));
314 if (!object->entries) { return -1;; }
315 talloc_set_name_const(object->entries, "ARRAY: object->entries");
316 for (entries_cntr_1 = 0; entries_cntr_1 < PyList_GET_SIZE(value); entries_cntr_1++) {
317 if (PyList_GET_ITEM(value, entries_cntr_1) == NULL) {
318 PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->entries[entries_cntr_1]");
321 PY_CHECK_TYPE(srvsvc_NetSrvInfo101_Type, PyList_GET_ITEM(value, entries_cntr_1), return -1;);
322 if (talloc_reference(object->entries, pytalloc_get_mem_ctx(PyList_GET_ITEM(value, entries_cntr_1))) == NULL) {
326 object->entries[entries_cntr_1] = *(struct srvsvc_NetSrvInfo101 *)pytalloc_get_ptr(PyList_GET_ITEM(value, entries_cntr_1));
333 static PyGetSetDef py_BrowserrSrvInfo101Ctr_getsetters[] = {
335 .name = discard_const_p(char, "entries_read"),
336 .get = py_BrowserrSrvInfo101Ctr_get_entries_read,
337 .set = py_BrowserrSrvInfo101Ctr_set_entries_read,
338 .doc = discard_const_p(char, "PIDL-generated element entries_read")
341 .name = discard_const_p(char, "entries"),
342 .get = py_BrowserrSrvInfo101Ctr_get_entries,
343 .set = py_BrowserrSrvInfo101Ctr_set_entries,
344 .doc = discard_const_p(char, "PIDL-generated element entries")
349 static PyObject *py_BrowserrSrvInfo101Ctr_new(PyTypeObject *type, PyObject *args, PyObject *kwargs)
351 return pytalloc_new(struct BrowserrSrvInfo101Ctr, type);
355 static PyTypeObject BrowserrSrvInfo101Ctr_Type = {
356 PyObject_HEAD_INIT(NULL) 0,
357 .tp_name = "browser.BrowserrSrvInfo101Ctr",
358 .tp_getset = py_BrowserrSrvInfo101Ctr_getsetters,
360 .tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,
361 .tp_new = py_BrowserrSrvInfo101Ctr_new,
364 PyObject *py_import_BrowserrSrvInfoUnion(TALLOC_CTX *mem_ctx, int level, union BrowserrSrvInfoUnion *in)
370 if (in->info100 == NULL) {
374 ret = pytalloc_reference_ex(&BrowserrSrvInfo100Ctr_Type, in->info100, in->info100);
379 if (in->info101 == NULL) {
383 ret = pytalloc_reference_ex(&BrowserrSrvInfo101Ctr_Type, in->info101, in->info101);
393 PyErr_SetString(PyExc_TypeError, "unknown union level");
397 union BrowserrSrvInfoUnion *py_export_BrowserrSrvInfoUnion(TALLOC_CTX *mem_ctx, int level, PyObject *in)
399 union BrowserrSrvInfoUnion *ret = talloc_zero(mem_ctx, union BrowserrSrvInfoUnion);
403 PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct ret->info100");
404 talloc_free(ret); return NULL;
411 PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct *ret->info100");
412 talloc_free(ret); return NULL;
414 PY_CHECK_TYPE(&BrowserrSrvInfo100Ctr_Type, in, talloc_free(ret); return NULL;);
415 if (talloc_reference(mem_ctx, pytalloc_get_mem_ctx(in)) == NULL) {
417 talloc_free(ret); return NULL;
419 ret->info100 = (struct BrowserrSrvInfo100Ctr *)pytalloc_get_ptr(in);
425 PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct ret->info101");
426 talloc_free(ret); return NULL;
433 PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct *ret->info101");
434 talloc_free(ret); return NULL;
436 PY_CHECK_TYPE(&BrowserrSrvInfo101Ctr_Type, in, talloc_free(ret); return NULL;);
437 if (talloc_reference(mem_ctx, pytalloc_get_mem_ctx(in)) == NULL) {
439 talloc_free(ret); return NULL;
441 ret->info101 = (struct BrowserrSrvInfo101Ctr *)pytalloc_get_ptr(in);
454 static PyObject *py_BrowserrSrvInfo_get_level(PyObject *obj, void *closure)
456 struct BrowserrSrvInfo *object = (struct BrowserrSrvInfo *)pytalloc_get_ptr(obj);
458 py_level = ndr_PyLong_FromUnsignedLongLong((uint32_t)object->level);
462 static int py_BrowserrSrvInfo_set_level(PyObject *py_obj, PyObject *value, void *closure)
464 struct BrowserrSrvInfo *object = (struct BrowserrSrvInfo *)pytalloc_get_ptr(py_obj);
466 PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->level");
470 const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->level));
471 if (PyLong_Check(value)) {
472 unsigned long long test_var;
473 test_var = PyLong_AsUnsignedLongLong(value);
474 if (PyErr_Occurred() != NULL) {
477 if (test_var > uint_max) {
478 PyErr_Format(PyExc_OverflowError, "Expected type %s or %s within range 0 - %llu, got %llu",\
479 PyInt_Type.tp_name, PyLong_Type.tp_name, uint_max, test_var);
482 object->level = test_var;
483 } else if (PyInt_Check(value)) {
485 test_var = PyInt_AsLong(value);
486 if (test_var < 0 || test_var > uint_max) {
487 PyErr_Format(PyExc_OverflowError, "Expected type %s or %s within range 0 - %llu, got %ld",\
488 PyInt_Type.tp_name, PyLong_Type.tp_name, uint_max, test_var);
491 object->level = test_var;
493 PyErr_Format(PyExc_TypeError, "Expected type %s or %s",\
494 PyInt_Type.tp_name, PyLong_Type.tp_name);
501 static PyObject *py_BrowserrSrvInfo_get_info(PyObject *obj, void *closure)
503 struct BrowserrSrvInfo *object = (struct BrowserrSrvInfo *)pytalloc_get_ptr(obj);
505 py_info = py_import_BrowserrSrvInfoUnion(pytalloc_get_mem_ctx(obj), object->level, &object->info);
506 if (py_info == NULL) {
512 static int py_BrowserrSrvInfo_set_info(PyObject *py_obj, PyObject *value, void *closure)
514 struct BrowserrSrvInfo *object = (struct BrowserrSrvInfo *)pytalloc_get_ptr(py_obj);
516 PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->info");
520 union BrowserrSrvInfoUnion *info_switch_0;
521 info_switch_0 = py_export_BrowserrSrvInfoUnion(pytalloc_get_mem_ctx(py_obj), object->level, value);
522 if (info_switch_0 == NULL) {
525 object->info = *info_switch_0;
530 static PyGetSetDef py_BrowserrSrvInfo_getsetters[] = {
532 .name = discard_const_p(char, "level"),
533 .get = py_BrowserrSrvInfo_get_level,
534 .set = py_BrowserrSrvInfo_set_level,
535 .doc = discard_const_p(char, "PIDL-generated element level")
538 .name = discard_const_p(char, "info"),
539 .get = py_BrowserrSrvInfo_get_info,
540 .set = py_BrowserrSrvInfo_set_info,
541 .doc = discard_const_p(char, "PIDL-generated element info")
546 static PyObject *py_BrowserrSrvInfo_new(PyTypeObject *type, PyObject *args, PyObject *kwargs)
548 return pytalloc_new(struct BrowserrSrvInfo, type);
552 static PyTypeObject BrowserrSrvInfo_Type = {
553 PyObject_HEAD_INIT(NULL) 0,
554 .tp_name = "browser.BrowserrSrvInfo",
555 .tp_getset = py_BrowserrSrvInfo_getsetters,
557 .tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,
558 .tp_new = py_BrowserrSrvInfo_new,
562 static bool pack_py_BrowserrQueryOtherDomains_args_in(PyObject *args, PyObject *kwargs, struct BrowserrQueryOtherDomains *r)
564 PyObject *py_server_unc;
566 const char *kwnames[] = {
567 "server_unc", "info", NULL
570 if (!PyArg_ParseTupleAndKeywords(args, kwargs, "OO:BrowserrQueryOtherDomains", discard_const_p(char *, kwnames), &py_server_unc, &py_info)) {
574 if (py_server_unc == NULL) {
575 PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct r->in.server_unc");
578 if (py_server_unc == Py_None) {
579 r->in.server_unc = NULL;
581 r->in.server_unc = NULL;
582 if (py_server_unc == NULL) {
583 PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct *r->in.server_unc");
587 const char *test_str;
588 const char *talloc_str;
589 PyObject *unicode = NULL;
590 if (PyUnicode_Check(py_server_unc)) {
591 unicode = PyUnicode_AsEncodedString(py_server_unc, "utf-8", "ignore");
592 if (unicode == NULL) {
596 test_str = PyString_AS_STRING(unicode);
597 } else if (PyString_Check(py_server_unc)) {
598 test_str = PyString_AS_STRING(py_server_unc);
600 PyErr_Format(PyExc_TypeError, "Expected string or unicode object, got %s", Py_TYPE(py_server_unc)->tp_name);
603 talloc_str = talloc_strdup(r, test_str);
604 if (unicode != NULL) {
607 if (talloc_str == NULL) {
611 r->in.server_unc = talloc_str;
614 if (py_info == NULL) {
615 PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct r->in.info");
618 r->in.info = talloc_ptrtype(r, r->in.info);
619 if (py_info == NULL) {
620 PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct *r->in.info");
623 PY_CHECK_TYPE(&BrowserrSrvInfo_Type, py_info, return false;);
624 if (talloc_reference(r, pytalloc_get_mem_ctx(py_info)) == NULL) {
628 r->in.info = (struct BrowserrSrvInfo *)pytalloc_get_ptr(py_info);
632 static PyObject *unpack_py_BrowserrQueryOtherDomains_args_out(struct BrowserrQueryOtherDomains *r)
636 PyObject *py_total_entries;
637 result = PyTuple_New(2);
638 py_info = pytalloc_reference_ex(&BrowserrSrvInfo_Type, r->out.info, r->out.info);
639 PyTuple_SetItem(result, 0, py_info);
640 py_total_entries = ndr_PyLong_FromUnsignedLongLong((uint32_t)*r->out.total_entries);
641 PyTuple_SetItem(result, 1, py_total_entries);
642 if (!W_ERROR_IS_OK(r->out.result)) {
643 PyErr_SetWERROR(r->out.result);
650 const struct PyNdrRpcMethodDef py_ndr_browser_methods[] = {
651 { "BrowserrQueryOtherDomains", "S.BrowserrQueryOtherDomains(server_unc, info) -> (info, total_entries)", (py_dcerpc_call_fn)dcerpc_BrowserrQueryOtherDomains_r, (py_data_pack_fn)pack_py_BrowserrQueryOtherDomains_args_in, (py_data_unpack_fn)unpack_py_BrowserrQueryOtherDomains_args_out, 2, &ndr_table_browser },
655 static PyObject *interface_browser_new(PyTypeObject *type, PyObject *args, PyObject *kwargs)
657 return py_dcerpc_interface_init_helper(type, args, kwargs, &ndr_table_browser);
660 #define PY_DOC_BROWSER "Browsing"
661 static PyTypeObject browser_InterfaceType = {
662 PyObject_HEAD_INIT(NULL) 0,
663 .tp_name = "browser.browser",
664 .tp_basicsize = sizeof(dcerpc_InterfaceObject),
665 .tp_doc = "browser(binding, lp_ctx=None, credentials=None) -> connection\n"
667 "binding should be a DCE/RPC binding string (for example: ncacn_ip_tcp:127.0.0.1)\n"
668 "lp_ctx should be a path to a smb.conf file or a param.LoadParm object\n"
669 "credentials should be a credentials.Credentials object.\n\n"PY_DOC_BROWSER,
670 .tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,
671 .tp_new = interface_browser_new,
674 static PyObject *syntax_browser_new(PyTypeObject *type, PyObject *args, PyObject *kwargs)
676 return py_dcerpc_syntax_init_helper(type, args, kwargs, &ndr_table_browser.syntax_id);
679 #define PY_DOC_BROWSER_SYNTAX "Browsing"
680 static PyTypeObject browser_SyntaxType = {
681 PyObject_HEAD_INIT(NULL) 0,
682 .tp_name = "browser.browser",
683 .tp_doc = "abstract_syntax()\n"PY_DOC_BROWSER_SYNTAX,
684 .tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,
685 .tp_new = syntax_browser_new,
688 static PyMethodDef browser_methods[] = {
689 { NULL, NULL, 0, NULL }
692 void initbrowser(void)
695 PyObject *dep_samba_dcerpc_srvsvc;
696 PyObject *dep_talloc;
697 PyObject *dep_samba_dcerpc_base;
698 PyObject *dep_samba_dcerpc_misc;
700 dep_samba_dcerpc_srvsvc = PyImport_ImportModule("samba.dcerpc.srvsvc");
701 if (dep_samba_dcerpc_srvsvc == NULL)
704 dep_talloc = PyImport_ImportModule("talloc");
705 if (dep_talloc == NULL)
708 dep_samba_dcerpc_base = PyImport_ImportModule("samba.dcerpc.base");
709 if (dep_samba_dcerpc_base == NULL)
712 dep_samba_dcerpc_misc = PyImport_ImportModule("samba.dcerpc.misc");
713 if (dep_samba_dcerpc_misc == NULL)
716 srvsvc_NetSrvInfo100_Type = (PyTypeObject *)PyObject_GetAttrString(dep_samba_dcerpc_srvsvc, "NetSrvInfo100");
717 if (srvsvc_NetSrvInfo100_Type == NULL)
720 BaseObject_Type = (PyTypeObject *)PyObject_GetAttrString(dep_talloc, "BaseObject");
721 if (BaseObject_Type == NULL)
724 srvsvc_NetSrvInfo101_Type = (PyTypeObject *)PyObject_GetAttrString(dep_samba_dcerpc_srvsvc, "NetSrvInfo101");
725 if (srvsvc_NetSrvInfo101_Type == NULL)
728 ClientConnection_Type = (PyTypeObject *)PyObject_GetAttrString(dep_samba_dcerpc_base, "ClientConnection");
729 if (ClientConnection_Type == NULL)
732 ndr_syntax_id_Type = (PyTypeObject *)PyObject_GetAttrString(dep_samba_dcerpc_misc, "ndr_syntax_id");
733 if (ndr_syntax_id_Type == NULL)
736 BrowserrSrvInfo100Ctr_Type.tp_base = BaseObject_Type;
737 BrowserrSrvInfo100Ctr_Type.tp_basicsize = pytalloc_BaseObject_size();
739 BrowserrSrvInfo101Ctr_Type.tp_base = BaseObject_Type;
740 BrowserrSrvInfo101Ctr_Type.tp_basicsize = pytalloc_BaseObject_size();
742 BrowserrSrvInfo_Type.tp_base = BaseObject_Type;
743 BrowserrSrvInfo_Type.tp_basicsize = pytalloc_BaseObject_size();
745 browser_InterfaceType.tp_base = ClientConnection_Type;
747 browser_SyntaxType.tp_base = ndr_syntax_id_Type;
748 browser_SyntaxType.tp_basicsize = pytalloc_BaseObject_size();
750 if (PyType_Ready(&BrowserrSrvInfo100Ctr_Type) < 0)
752 if (PyType_Ready(&BrowserrSrvInfo101Ctr_Type) < 0)
754 if (PyType_Ready(&BrowserrSrvInfo_Type) < 0)
756 if (PyType_Ready(&browser_InterfaceType) < 0)
758 if (PyType_Ready(&browser_SyntaxType) < 0)
760 if (!PyInterface_AddNdrRpcMethods(&browser_InterfaceType, py_ndr_browser_methods))
763 #ifdef PY_BROWSERRSRVINFO100CTR_PATCH
764 PY_BROWSERRSRVINFO100CTR_PATCH(&BrowserrSrvInfo100Ctr_Type);
766 #ifdef PY_BROWSERRSRVINFO101CTR_PATCH
767 PY_BROWSERRSRVINFO101CTR_PATCH(&BrowserrSrvInfo101Ctr_Type);
769 #ifdef PY_BROWSERRSRVINFO_PATCH
770 PY_BROWSERRSRVINFO_PATCH(&BrowserrSrvInfo_Type);
772 #ifdef PY_BROWSER_PATCH
773 PY_BROWSER_PATCH(&browser_InterfaceType);
775 #ifdef PY_ABSTRACT_SYNTAX_PATCH
776 PY_ABSTRACT_SYNTAX_PATCH(&browser_SyntaxType);
779 m = Py_InitModule3("browser", browser_methods, "browser DCE/RPC");
783 Py_INCREF((PyObject *)(void *)&BrowserrSrvInfo100Ctr_Type);
784 PyModule_AddObject(m, "BrowserrSrvInfo100Ctr", (PyObject *)(void *)&BrowserrSrvInfo100Ctr_Type);
785 Py_INCREF((PyObject *)(void *)&BrowserrSrvInfo101Ctr_Type);
786 PyModule_AddObject(m, "BrowserrSrvInfo101Ctr", (PyObject *)(void *)&BrowserrSrvInfo101Ctr_Type);
787 Py_INCREF((PyObject *)(void *)&BrowserrSrvInfo_Type);
788 PyModule_AddObject(m, "BrowserrSrvInfo", (PyObject *)(void *)&BrowserrSrvInfo_Type);
789 Py_INCREF((PyObject *)(void *)&browser_InterfaceType);
790 PyModule_AddObject(m, "browser", (PyObject *)(void *)&browser_InterfaceType);
791 Py_INCREF((PyObject *)(void *)&browser_SyntaxType);
792 PyModule_AddObject(m, "abstract_syntax", (PyObject *)(void *)&browser_SyntaxType);
793 #ifdef PY_MOD_BROWSER_PATCH
794 PY_MOD_BROWSER_PATCH(m);