Initial import
[samba] / source / python / py_spoolss_forms_conv.c
diff --git a/source/python/py_spoolss_forms_conv.c b/source/python/py_spoolss_forms_conv.c
new file mode 100644 (file)
index 0000000..ede729c
--- /dev/null
@@ -0,0 +1,91 @@
+/* 
+   Python wrappers for DCERPC/SMB client routines.
+
+   Copyright (C) Tim Potter, 2002
+   
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 2 of the License, or
+   (at your option) any later version.
+   
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+   
+   You should have received a copy of the GNU General Public License
+   along with this program; if not, write to the Free Software
+   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+*/
+
+#include "python/py_spoolss.h"
+#include "python/py_conv.h"
+
+struct pyconv py_FORM[] = {
+       { "flags", PY_UINT32, offsetof(FORM, flags) },
+       { "width", PY_UINT32, offsetof(FORM, size_x) },
+       { "length", PY_UINT32, offsetof(FORM, size_y) },
+       { "top", PY_UINT32, offsetof(FORM, top) },
+       { "left", PY_UINT32, offsetof(FORM, left) },
+       { "right", PY_UINT32, offsetof(FORM, right) },
+       { "bottom", PY_UINT32, offsetof(FORM, bottom) },
+       { NULL }
+};
+
+struct pyconv py_FORM_1[] = {
+       { "flags", PY_UINT32, offsetof(FORM_1, flag) },
+       { "width", PY_UINT32, offsetof(FORM_1, width) },
+       { "length", PY_UINT32, offsetof(FORM_1, length) },
+       { "top", PY_UINT32, offsetof(FORM_1, top) },
+       { "left", PY_UINT32, offsetof(FORM_1, left) },
+       { "right", PY_UINT32, offsetof(FORM_1, right) },
+       { "bottom", PY_UINT32, offsetof(FORM_1, bottom) },
+       { "name", PY_UNISTR, offsetof(FORM_1, name) },
+       { NULL }
+};
+
+BOOL py_from_FORM_1(PyObject **dict, FORM_1 *form)
+{
+       *dict = from_struct(form, py_FORM_1);
+
+       PyDict_SetItemString(*dict, "level", PyInt_FromLong(1));
+
+       return True;
+}
+
+BOOL py_to_FORM(FORM *form, PyObject *dict)
+{
+       PyObject *obj, *dict_copy = PyDict_Copy(dict);
+       char *name;
+       BOOL result = False;
+
+       if (!(obj = PyDict_GetItemString(dict_copy, "name")) || 
+           !PyString_Check(obj))
+               goto done;
+
+       PyDict_DelItemString(dict_copy, "name");
+
+       if (!(obj = PyDict_GetItemString(dict_copy, "level")) ||
+           !PyInt_Check(obj))
+               goto done;
+
+       PyDict_DelItemString(dict_copy, "level");
+
+       if (!to_struct(form, dict_copy, py_FORM))
+               goto done;
+
+       /* Careful!  We can't call PyString_AsString(obj) then delete
+          obj and still expect to have our pointer pointing somewhere
+          useful. */
+
+       obj = PyDict_GetItemString(dict, "name");
+       name = PyString_AsString(obj);
+
+       init_unistr2(&form->name, name, UNI_STR_TERMINATE);
+       
+       result = True;
+
+done:
+       Py_DECREF(dict_copy);
+       return result;
+}