first public release of samba4 code
[gd/samba-autobuild/.git] / source4 / python / py_winreg.c
1 /* 
2    Python wrappers for DCERPC/SMB client routines.
3
4    Copyright (C) Tim Potter, 2002
5    
6    This program is free software; you can redistribute it and/or modify
7    it under the terms of the GNU General Public License as published by
8    the Free Software Foundation; either version 2 of the License, or
9    (at your option) any later version.
10    
11    This program is distributed in the hope that it will be useful,
12    but WITHOUT ANY WARRANTY; without even the implied warranty of
13    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14    GNU General Public License for more details.
15    
16    You should have received a copy of the GNU General Public License
17    along with this program; if not, write to the Free Software
18    Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
19 */
20
21 #include "python/py_winreg.h"
22
23 static struct const_vals {
24         char *name;
25         uint32 value;
26 } module_const_vals[] = {
27         
28         /* Registry value types */
29
30         { "REG_NONE", REG_NONE },
31         { "REG_SZ", REG_SZ },
32         { "REG_EXPAND_SZ", REG_EXPAND_SZ },
33         { "REG_BINARY", REG_BINARY },
34         { "REG_DWORD", REG_DWORD },
35         { "REG_DWORD_LE", REG_DWORD_LE },
36         { "REG_DWORD_BE", REG_DWORD_BE },
37         { "REG_LINK", REG_LINK },
38         { "REG_MULTI_SZ", REG_MULTI_SZ },
39         { "REG_RESOURCE_LIST", REG_RESOURCE_LIST },
40         { "REG_FULL_RESOURCE_DESCRIPTOR", REG_FULL_RESOURCE_DESCRIPTOR },
41         { "REG_RESOURCE_REQUIREMENTS_LIST", REG_RESOURCE_REQUIREMENTS_LIST },
42
43         { NULL },
44 };
45
46 static void const_init(PyObject *dict)
47 {
48         struct const_vals *tmp;
49         PyObject *obj;
50
51         for (tmp = module_const_vals; tmp->name; tmp++) {
52                 obj = PyInt_FromLong(tmp->value);
53                 PyDict_SetItemString(dict, tmp->name, obj);
54                 Py_DECREF(obj);
55         }
56 }
57
58 /*
59  * Module initialisation 
60  */
61
62 static PyMethodDef winreg_methods[] = {
63         { NULL }
64 };
65
66 void initwinreg(void)
67 {
68         PyObject *module, *dict;
69
70         /* Initialise module */
71
72         module = Py_InitModule("winreg", winreg_methods);
73         dict = PyModule_GetDict(module);
74
75         /* Initialise constants */
76
77         const_init(dict);
78
79         /* Do samba initialisation */
80
81         py_samba_init();
82 }