python-msilib 0.1.1__cp314-cp314t-win_amd64.whl → 0.3.0__cp314-cp314t-win_amd64.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of python-msilib might be problematic. Click here for more details.
- msilib/__init__.py +281 -109
- msilib/_msi.c +333 -358
- msilib/_msi.cp314t-win_amd64.pyd +0 -0
- msilib/include/_msi.h +334 -331
- msilib/include/pythoncapi_compat.h +40 -1
- msilib/schema.py +5752 -1002
- msilib/sequence.py +117 -111
- msilib/text.py +285 -122
- python_msilib-0.3.0.dist-info/METADATA +91 -0
- python_msilib-0.3.0.dist-info/RECORD +13 -0
- python_msilib-0.1.1.dist-info/METADATA +0 -39
- python_msilib-0.1.1.dist-info/RECORD +0 -13
- {python_msilib-0.1.1.dist-info → python_msilib-0.3.0.dist-info}/WHEEL +0 -0
- {python_msilib-0.1.1.dist-info → python_msilib-0.3.0.dist-info}/licenses/LICENSE +0 -0
- {python_msilib-0.1.1.dist-info → python_msilib-0.3.0.dist-info}/top_level.txt +0 -0
msilib/include/_msi.h
CHANGED
|
@@ -7,47 +7,48 @@ preserve
|
|
|
7
7
|
#include <internal/pycore_modsupport.h>
|
|
8
8
|
|
|
9
9
|
PyDoc_STRVAR(_msi_UuidCreate__doc__,
|
|
10
|
-
"UuidCreate($module, /)\n"
|
|
11
|
-
"--\n"
|
|
12
|
-
"\n"
|
|
13
|
-
"Return the string representation of a new unique identifier.");
|
|
10
|
+
"UuidCreate($module, /)\n"
|
|
11
|
+
"--\n"
|
|
12
|
+
"\n"
|
|
13
|
+
"Return the string representation of a new unique identifier.");
|
|
14
14
|
|
|
15
|
-
#define _MSI_UUIDCREATE_METHODDEF
|
|
16
|
-
{"UuidCreate", (PyCFunction)_msi_UuidCreate, METH_NOARGS,
|
|
15
|
+
#define _MSI_UUIDCREATE_METHODDEF \
|
|
16
|
+
{ "UuidCreate", (PyCFunction)_msi_UuidCreate, METH_NOARGS, \
|
|
17
|
+
_msi_UuidCreate__doc__ },
|
|
17
18
|
|
|
18
|
-
static PyObject *
|
|
19
|
-
_msi_UuidCreate_impl(PyObject *module);
|
|
19
|
+
static PyObject* _msi_UuidCreate_impl(PyObject* module);
|
|
20
20
|
|
|
21
|
-
static PyObject
|
|
22
|
-
|
|
21
|
+
static PyObject* _msi_UuidCreate(
|
|
22
|
+
PyObject* module, PyObject* Py_UNUSED(ignored))
|
|
23
23
|
{
|
|
24
24
|
return _msi_UuidCreate_impl(module);
|
|
25
25
|
}
|
|
26
26
|
|
|
27
27
|
PyDoc_STRVAR(_msi_FCICreate__doc__,
|
|
28
|
-
"FCICreate($module, cabname, files, /)\n"
|
|
29
|
-
"--\n"
|
|
30
|
-
"\n"
|
|
31
|
-
"Create a new CAB file.\n"
|
|
32
|
-
"\n"
|
|
33
|
-
" cabname\n"
|
|
34
|
-
" the name of the CAB file\n"
|
|
35
|
-
" files\n"
|
|
36
|
-
" a list of tuples, each containing the name of the file on disk,\n"
|
|
37
|
-
" and the name of the file inside the CAB file");
|
|
38
|
-
|
|
39
|
-
#define _MSI_FCICREATE_METHODDEF
|
|
40
|
-
{"FCICreate", _PyCFunction_CAST(_msi_FCICreate), METH_FASTCALL,
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
28
|
+
"FCICreate($module, cabname, files, /)\n"
|
|
29
|
+
"--\n"
|
|
30
|
+
"\n"
|
|
31
|
+
"Create a new CAB file.\n"
|
|
32
|
+
"\n"
|
|
33
|
+
" cabname\n"
|
|
34
|
+
" the name of the CAB file\n"
|
|
35
|
+
" files\n"
|
|
36
|
+
" a list of tuples, each containing the name of the file on disk,\n"
|
|
37
|
+
" and the name of the file inside the CAB file");
|
|
38
|
+
|
|
39
|
+
#define _MSI_FCICREATE_METHODDEF \
|
|
40
|
+
{ "FCICreate", _PyCFunction_CAST(_msi_FCICreate), METH_FASTCALL, \
|
|
41
|
+
_msi_FCICreate__doc__ },
|
|
42
|
+
|
|
43
|
+
static PyObject* _msi_FCICreate_impl(
|
|
44
|
+
PyObject* module, const char* cabname, PyObject* files);
|
|
45
|
+
|
|
46
|
+
static PyObject* _msi_FCICreate(
|
|
47
|
+
PyObject* module, PyObject* const* args, Py_ssize_t nargs)
|
|
47
48
|
{
|
|
48
|
-
PyObject
|
|
49
|
-
const char
|
|
50
|
-
PyObject
|
|
49
|
+
PyObject* return_value = NULL;
|
|
50
|
+
const char* cabname;
|
|
51
|
+
PyObject* files;
|
|
51
52
|
|
|
52
53
|
if (!_PyArg_CheckPositional("FCICreate", nargs, 2, 2)) {
|
|
53
54
|
goto exit;
|
|
@@ -73,57 +74,56 @@ exit:
|
|
|
73
74
|
}
|
|
74
75
|
|
|
75
76
|
PyDoc_STRVAR(_msi_Database_Close__doc__,
|
|
76
|
-
"Close($self, /)\n"
|
|
77
|
-
"--\n"
|
|
78
|
-
"\n"
|
|
79
|
-
"Close the database object.");
|
|
77
|
+
"Close($self, /)\n"
|
|
78
|
+
"--\n"
|
|
79
|
+
"\n"
|
|
80
|
+
"Close the database object.");
|
|
80
81
|
|
|
81
|
-
#define _MSI_DATABASE_CLOSE_METHODDEF
|
|
82
|
-
{"Close", (PyCFunction)_msi_Database_Close, METH_NOARGS,
|
|
82
|
+
#define _MSI_DATABASE_CLOSE_METHODDEF \
|
|
83
|
+
{ "Close", (PyCFunction)_msi_Database_Close, METH_NOARGS, \
|
|
84
|
+
_msi_Database_Close__doc__ },
|
|
83
85
|
|
|
84
|
-
static PyObject *
|
|
85
|
-
_msi_Database_Close_impl(msiobj *self);
|
|
86
|
+
static PyObject* _msi_Database_Close_impl(msiobj* self);
|
|
86
87
|
|
|
87
|
-
static PyObject
|
|
88
|
-
|
|
88
|
+
static PyObject* _msi_Database_Close(
|
|
89
|
+
msiobj* self, PyObject* Py_UNUSED(ignored))
|
|
89
90
|
{
|
|
90
91
|
return _msi_Database_Close_impl(self);
|
|
91
92
|
}
|
|
92
93
|
|
|
93
94
|
PyDoc_STRVAR(_msi_Record_GetFieldCount__doc__,
|
|
94
|
-
"GetFieldCount($self, /)\n"
|
|
95
|
-
"--\n"
|
|
96
|
-
"\n"
|
|
97
|
-
"Return the number of fields of the record.");
|
|
95
|
+
"GetFieldCount($self, /)\n"
|
|
96
|
+
"--\n"
|
|
97
|
+
"\n"
|
|
98
|
+
"Return the number of fields of the record.");
|
|
98
99
|
|
|
99
|
-
#define _MSI_RECORD_GETFIELDCOUNT_METHODDEF
|
|
100
|
-
{"GetFieldCount", (PyCFunction)_msi_Record_GetFieldCount, METH_NOARGS,
|
|
100
|
+
#define _MSI_RECORD_GETFIELDCOUNT_METHODDEF \
|
|
101
|
+
{ "GetFieldCount", (PyCFunction)_msi_Record_GetFieldCount, METH_NOARGS, \
|
|
102
|
+
_msi_Record_GetFieldCount__doc__ },
|
|
101
103
|
|
|
102
|
-
static PyObject *
|
|
103
|
-
_msi_Record_GetFieldCount_impl(msiobj *self);
|
|
104
|
+
static PyObject* _msi_Record_GetFieldCount_impl(msiobj* self);
|
|
104
105
|
|
|
105
|
-
static PyObject
|
|
106
|
-
|
|
106
|
+
static PyObject* _msi_Record_GetFieldCount(
|
|
107
|
+
msiobj* self, PyObject* Py_UNUSED(ignored))
|
|
107
108
|
{
|
|
108
109
|
return _msi_Record_GetFieldCount_impl(self);
|
|
109
110
|
}
|
|
110
111
|
|
|
111
112
|
PyDoc_STRVAR(_msi_Record_GetInteger__doc__,
|
|
112
|
-
"GetInteger($self, field, /)\n"
|
|
113
|
-
"--\n"
|
|
114
|
-
"\n"
|
|
115
|
-
"Return the value of field as an integer where possible.");
|
|
113
|
+
"GetInteger($self, field, /)\n"
|
|
114
|
+
"--\n"
|
|
115
|
+
"\n"
|
|
116
|
+
"Return the value of field as an integer where possible.");
|
|
116
117
|
|
|
117
|
-
#define _MSI_RECORD_GETINTEGER_METHODDEF
|
|
118
|
-
{"GetInteger", (PyCFunction)_msi_Record_GetInteger, METH_O,
|
|
118
|
+
#define _MSI_RECORD_GETINTEGER_METHODDEF \
|
|
119
|
+
{ "GetInteger", (PyCFunction)_msi_Record_GetInteger, METH_O, \
|
|
120
|
+
_msi_Record_GetInteger__doc__ },
|
|
119
121
|
|
|
120
|
-
static PyObject *
|
|
121
|
-
_msi_Record_GetInteger_impl(msiobj *self, unsigned int field);
|
|
122
|
+
static PyObject* _msi_Record_GetInteger_impl(msiobj* self, unsigned int field);
|
|
122
123
|
|
|
123
|
-
static PyObject *
|
|
124
|
-
_msi_Record_GetInteger(msiobj *self, PyObject *arg)
|
|
124
|
+
static PyObject* _msi_Record_GetInteger(msiobj* self, PyObject* arg)
|
|
125
125
|
{
|
|
126
|
-
PyObject
|
|
126
|
+
PyObject* return_value = NULL;
|
|
127
127
|
unsigned int field;
|
|
128
128
|
|
|
129
129
|
field = (unsigned int)PyLong_AsUnsignedLongMask(arg);
|
|
@@ -137,21 +137,20 @@ exit:
|
|
|
137
137
|
}
|
|
138
138
|
|
|
139
139
|
PyDoc_STRVAR(_msi_Record_GetString__doc__,
|
|
140
|
-
"GetString($self, field, /)\n"
|
|
141
|
-
"--\n"
|
|
142
|
-
"\n"
|
|
143
|
-
"Return the value of field as a string where possible.");
|
|
140
|
+
"GetString($self, field, /)\n"
|
|
141
|
+
"--\n"
|
|
142
|
+
"\n"
|
|
143
|
+
"Return the value of field as a string where possible.");
|
|
144
144
|
|
|
145
|
-
#define _MSI_RECORD_GETSTRING_METHODDEF
|
|
146
|
-
{"GetString", (PyCFunction)_msi_Record_GetString, METH_O,
|
|
145
|
+
#define _MSI_RECORD_GETSTRING_METHODDEF \
|
|
146
|
+
{ "GetString", (PyCFunction)_msi_Record_GetString, METH_O, \
|
|
147
|
+
_msi_Record_GetString__doc__ },
|
|
147
148
|
|
|
148
|
-
static PyObject *
|
|
149
|
-
_msi_Record_GetString_impl(msiobj *self, unsigned int field);
|
|
149
|
+
static PyObject* _msi_Record_GetString_impl(msiobj* self, unsigned int field);
|
|
150
150
|
|
|
151
|
-
static PyObject *
|
|
152
|
-
_msi_Record_GetString(msiobj *self, PyObject *arg)
|
|
151
|
+
static PyObject* _msi_Record_GetString(msiobj* self, PyObject* arg)
|
|
153
152
|
{
|
|
154
|
-
PyObject
|
|
153
|
+
PyObject* return_value = NULL;
|
|
155
154
|
unsigned int field;
|
|
156
155
|
|
|
157
156
|
field = (unsigned int)PyLong_AsUnsignedLongMask(arg);
|
|
@@ -165,41 +164,42 @@ exit:
|
|
|
165
164
|
}
|
|
166
165
|
|
|
167
166
|
PyDoc_STRVAR(_msi_Record_ClearData__doc__,
|
|
168
|
-
"ClearData($self, /)\n"
|
|
169
|
-
"--\n"
|
|
170
|
-
"\n"
|
|
171
|
-
"Set all fields of the record to 0.");
|
|
167
|
+
"ClearData($self, /)\n"
|
|
168
|
+
"--\n"
|
|
169
|
+
"\n"
|
|
170
|
+
"Set all fields of the record to 0.");
|
|
172
171
|
|
|
173
|
-
#define _MSI_RECORD_CLEARDATA_METHODDEF
|
|
174
|
-
{"ClearData", (PyCFunction)_msi_Record_ClearData, METH_NOARGS,
|
|
172
|
+
#define _MSI_RECORD_CLEARDATA_METHODDEF \
|
|
173
|
+
{ "ClearData", (PyCFunction)_msi_Record_ClearData, METH_NOARGS, \
|
|
174
|
+
_msi_Record_ClearData__doc__ },
|
|
175
175
|
|
|
176
|
-
static PyObject *
|
|
177
|
-
_msi_Record_ClearData_impl(msiobj *self);
|
|
176
|
+
static PyObject* _msi_Record_ClearData_impl(msiobj* self);
|
|
178
177
|
|
|
179
|
-
static PyObject
|
|
180
|
-
|
|
178
|
+
static PyObject* _msi_Record_ClearData(
|
|
179
|
+
msiobj* self, PyObject* Py_UNUSED(ignored))
|
|
181
180
|
{
|
|
182
181
|
return _msi_Record_ClearData_impl(self);
|
|
183
182
|
}
|
|
184
183
|
|
|
185
184
|
PyDoc_STRVAR(_msi_Record_SetString__doc__,
|
|
186
|
-
"SetString($self, field, value, /)\n"
|
|
187
|
-
"--\n"
|
|
188
|
-
"\n"
|
|
189
|
-
"Set field to a string value.");
|
|
185
|
+
"SetString($self, field, value, /)\n"
|
|
186
|
+
"--\n"
|
|
187
|
+
"\n"
|
|
188
|
+
"Set field to a string value.");
|
|
190
189
|
|
|
191
|
-
#define _MSI_RECORD_SETSTRING_METHODDEF
|
|
192
|
-
{"SetString", _PyCFunction_CAST(_msi_Record_SetString), METH_FASTCALL,
|
|
190
|
+
#define _MSI_RECORD_SETSTRING_METHODDEF \
|
|
191
|
+
{ "SetString", _PyCFunction_CAST(_msi_Record_SetString), METH_FASTCALL, \
|
|
192
|
+
_msi_Record_SetString__doc__ },
|
|
193
193
|
|
|
194
|
-
static PyObject
|
|
195
|
-
|
|
194
|
+
static PyObject* _msi_Record_SetString_impl(
|
|
195
|
+
msiobj* self, int field, const wchar_t* value);
|
|
196
196
|
|
|
197
|
-
static PyObject
|
|
198
|
-
|
|
197
|
+
static PyObject* _msi_Record_SetString(
|
|
198
|
+
msiobj* self, PyObject* const* args, Py_ssize_t nargs)
|
|
199
199
|
{
|
|
200
|
-
PyObject
|
|
200
|
+
PyObject* return_value = NULL;
|
|
201
201
|
int field;
|
|
202
|
-
const wchar_t
|
|
202
|
+
const wchar_t* value = NULL;
|
|
203
203
|
|
|
204
204
|
if (!_PyArg_CheckPositional("SetString", nargs, 2, 2)) {
|
|
205
205
|
goto exit;
|
|
@@ -220,29 +220,30 @@ _msi_Record_SetString(msiobj *self, PyObject *const *args, Py_ssize_t nargs)
|
|
|
220
220
|
|
|
221
221
|
exit:
|
|
222
222
|
/* Cleanup for value */
|
|
223
|
-
PyMem_Free((void
|
|
223
|
+
PyMem_Free((void*)value);
|
|
224
224
|
|
|
225
225
|
return return_value;
|
|
226
226
|
}
|
|
227
227
|
|
|
228
228
|
PyDoc_STRVAR(_msi_Record_SetStream__doc__,
|
|
229
|
-
"SetStream($self, field, value, /)\n"
|
|
230
|
-
"--\n"
|
|
231
|
-
"\n"
|
|
232
|
-
"Set field to the contents of the file named value.");
|
|
229
|
+
"SetStream($self, field, value, /)\n"
|
|
230
|
+
"--\n"
|
|
231
|
+
"\n"
|
|
232
|
+
"Set field to the contents of the file named value.");
|
|
233
233
|
|
|
234
|
-
#define _MSI_RECORD_SETSTREAM_METHODDEF
|
|
235
|
-
{"SetStream", _PyCFunction_CAST(_msi_Record_SetStream), METH_FASTCALL,
|
|
234
|
+
#define _MSI_RECORD_SETSTREAM_METHODDEF \
|
|
235
|
+
{ "SetStream", _PyCFunction_CAST(_msi_Record_SetStream), METH_FASTCALL, \
|
|
236
|
+
_msi_Record_SetStream__doc__ },
|
|
236
237
|
|
|
237
|
-
static PyObject
|
|
238
|
-
|
|
238
|
+
static PyObject* _msi_Record_SetStream_impl(
|
|
239
|
+
msiobj* self, int field, const wchar_t* value);
|
|
239
240
|
|
|
240
|
-
static PyObject
|
|
241
|
-
|
|
241
|
+
static PyObject* _msi_Record_SetStream(
|
|
242
|
+
msiobj* self, PyObject* const* args, Py_ssize_t nargs)
|
|
242
243
|
{
|
|
243
|
-
PyObject
|
|
244
|
+
PyObject* return_value = NULL;
|
|
244
245
|
int field;
|
|
245
|
-
const wchar_t
|
|
246
|
+
const wchar_t* value = NULL;
|
|
246
247
|
|
|
247
248
|
if (!_PyArg_CheckPositional("SetStream", nargs, 2, 2)) {
|
|
248
249
|
goto exit;
|
|
@@ -263,27 +264,28 @@ _msi_Record_SetStream(msiobj *self, PyObject *const *args, Py_ssize_t nargs)
|
|
|
263
264
|
|
|
264
265
|
exit:
|
|
265
266
|
/* Cleanup for value */
|
|
266
|
-
PyMem_Free((void
|
|
267
|
+
PyMem_Free((void*)value);
|
|
267
268
|
|
|
268
269
|
return return_value;
|
|
269
270
|
}
|
|
270
271
|
|
|
271
272
|
PyDoc_STRVAR(_msi_Record_SetInteger__doc__,
|
|
272
|
-
"SetInteger($self, field, value, /)\n"
|
|
273
|
-
"--\n"
|
|
274
|
-
"\n"
|
|
275
|
-
"Set field to an integer value.");
|
|
273
|
+
"SetInteger($self, field, value, /)\n"
|
|
274
|
+
"--\n"
|
|
275
|
+
"\n"
|
|
276
|
+
"Set field to an integer value.");
|
|
276
277
|
|
|
277
|
-
#define _MSI_RECORD_SETINTEGER_METHODDEF
|
|
278
|
-
{"SetInteger", _PyCFunction_CAST(_msi_Record_SetInteger), METH_FASTCALL,
|
|
278
|
+
#define _MSI_RECORD_SETINTEGER_METHODDEF \
|
|
279
|
+
{ "SetInteger", _PyCFunction_CAST(_msi_Record_SetInteger), METH_FASTCALL, \
|
|
280
|
+
_msi_Record_SetInteger__doc__ },
|
|
279
281
|
|
|
280
|
-
static PyObject
|
|
281
|
-
|
|
282
|
+
static PyObject* _msi_Record_SetInteger_impl(
|
|
283
|
+
msiobj* self, int field, int value);
|
|
282
284
|
|
|
283
|
-
static PyObject
|
|
284
|
-
|
|
285
|
+
static PyObject* _msi_Record_SetInteger(
|
|
286
|
+
msiobj* self, PyObject* const* args, Py_ssize_t nargs)
|
|
285
287
|
{
|
|
286
|
-
PyObject
|
|
288
|
+
PyObject* return_value = NULL;
|
|
287
289
|
int field;
|
|
288
290
|
int value;
|
|
289
291
|
|
|
@@ -305,24 +307,25 @@ exit:
|
|
|
305
307
|
}
|
|
306
308
|
|
|
307
309
|
PyDoc_STRVAR(_msi_SummaryInformation_GetProperty__doc__,
|
|
308
|
-
"GetProperty($self, field, /)\n"
|
|
309
|
-
"--\n"
|
|
310
|
-
"\n"
|
|
311
|
-
"Return a property of the summary.\n"
|
|
312
|
-
"\n"
|
|
313
|
-
" field\n"
|
|
314
|
-
" the name of the property, one of the PID_* constants");
|
|
315
|
-
|
|
316
|
-
#define _MSI_SUMMARYINFORMATION_GETPROPERTY_METHODDEF
|
|
317
|
-
{"GetProperty", (PyCFunction)_msi_SummaryInformation_GetProperty,
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
310
|
+
"GetProperty($self, field, /)\n"
|
|
311
|
+
"--\n"
|
|
312
|
+
"\n"
|
|
313
|
+
"Return a property of the summary.\n"
|
|
314
|
+
"\n"
|
|
315
|
+
" field\n"
|
|
316
|
+
" the name of the property, one of the PID_* constants");
|
|
317
|
+
|
|
318
|
+
#define _MSI_SUMMARYINFORMATION_GETPROPERTY_METHODDEF \
|
|
319
|
+
{ "GetProperty", (PyCFunction)_msi_SummaryInformation_GetProperty, \
|
|
320
|
+
METH_O, _msi_SummaryInformation_GetProperty__doc__ },
|
|
321
|
+
|
|
322
|
+
static PyObject* _msi_SummaryInformation_GetProperty_impl(
|
|
323
|
+
msiobj* self, int field);
|
|
324
|
+
|
|
325
|
+
static PyObject* _msi_SummaryInformation_GetProperty(
|
|
326
|
+
msiobj* self, PyObject* arg)
|
|
324
327
|
{
|
|
325
|
-
PyObject
|
|
328
|
+
PyObject* return_value = NULL;
|
|
326
329
|
int field;
|
|
327
330
|
|
|
328
331
|
field = PyLong_AsInt(arg);
|
|
@@ -336,47 +339,48 @@ exit:
|
|
|
336
339
|
}
|
|
337
340
|
|
|
338
341
|
PyDoc_STRVAR(_msi_SummaryInformation_GetPropertyCount__doc__,
|
|
339
|
-
"GetPropertyCount($self, /)\n"
|
|
340
|
-
"--\n"
|
|
341
|
-
"\n"
|
|
342
|
-
"Return the number of summary properties.");
|
|
342
|
+
"GetPropertyCount($self, /)\n"
|
|
343
|
+
"--\n"
|
|
344
|
+
"\n"
|
|
345
|
+
"Return the number of summary properties.");
|
|
343
346
|
|
|
344
|
-
#define _MSI_SUMMARYINFORMATION_GETPROPERTYCOUNT_METHODDEF
|
|
345
|
-
{"GetPropertyCount",
|
|
347
|
+
#define _MSI_SUMMARYINFORMATION_GETPROPERTYCOUNT_METHODDEF \
|
|
348
|
+
{ "GetPropertyCount", \
|
|
349
|
+
(PyCFunction)_msi_SummaryInformation_GetPropertyCount, METH_NOARGS, \
|
|
350
|
+
_msi_SummaryInformation_GetPropertyCount__doc__ },
|
|
346
351
|
|
|
347
|
-
static PyObject *
|
|
348
|
-
_msi_SummaryInformation_GetPropertyCount_impl(msiobj *self);
|
|
352
|
+
static PyObject* _msi_SummaryInformation_GetPropertyCount_impl(msiobj* self);
|
|
349
353
|
|
|
350
|
-
static PyObject
|
|
351
|
-
|
|
354
|
+
static PyObject* _msi_SummaryInformation_GetPropertyCount(
|
|
355
|
+
msiobj* self, PyObject* Py_UNUSED(ignored))
|
|
352
356
|
{
|
|
353
357
|
return _msi_SummaryInformation_GetPropertyCount_impl(self);
|
|
354
358
|
}
|
|
355
359
|
|
|
356
360
|
PyDoc_STRVAR(_msi_SummaryInformation_SetProperty__doc__,
|
|
357
|
-
"SetProperty($self, field, value, /)\n"
|
|
358
|
-
"--\n"
|
|
359
|
-
"\n"
|
|
360
|
-
"Set a property.\n"
|
|
361
|
-
"\n"
|
|
362
|
-
" field\n"
|
|
363
|
-
" the name of the property, one of the PID_* constants\n"
|
|
364
|
-
" value\n"
|
|
365
|
-
" the new value of the property (integer or string)");
|
|
366
|
-
|
|
367
|
-
#define _MSI_SUMMARYINFORMATION_SETPROPERTY_METHODDEF
|
|
368
|
-
{"SetProperty", _PyCFunction_CAST(_msi_SummaryInformation_SetProperty),
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
static PyObject
|
|
375
|
-
|
|
361
|
+
"SetProperty($self, field, value, /)\n"
|
|
362
|
+
"--\n"
|
|
363
|
+
"\n"
|
|
364
|
+
"Set a property.\n"
|
|
365
|
+
"\n"
|
|
366
|
+
" field\n"
|
|
367
|
+
" the name of the property, one of the PID_* constants\n"
|
|
368
|
+
" value\n"
|
|
369
|
+
" the new value of the property (integer or string)");
|
|
370
|
+
|
|
371
|
+
#define _MSI_SUMMARYINFORMATION_SETPROPERTY_METHODDEF \
|
|
372
|
+
{ "SetProperty", _PyCFunction_CAST(_msi_SummaryInformation_SetProperty), \
|
|
373
|
+
METH_FASTCALL, _msi_SummaryInformation_SetProperty__doc__ },
|
|
374
|
+
|
|
375
|
+
static PyObject* _msi_SummaryInformation_SetProperty_impl(
|
|
376
|
+
msiobj* self, int field, PyObject* data);
|
|
377
|
+
|
|
378
|
+
static PyObject* _msi_SummaryInformation_SetProperty(
|
|
379
|
+
msiobj* self, PyObject* const* args, Py_ssize_t nargs)
|
|
376
380
|
{
|
|
377
|
-
PyObject
|
|
381
|
+
PyObject* return_value = NULL;
|
|
378
382
|
int field;
|
|
379
|
-
PyObject
|
|
383
|
+
PyObject* data;
|
|
380
384
|
|
|
381
385
|
if (!_PyArg_CheckPositional("SetProperty", nargs, 2, 2)) {
|
|
382
386
|
goto exit;
|
|
@@ -393,73 +397,72 @@ exit:
|
|
|
393
397
|
}
|
|
394
398
|
|
|
395
399
|
PyDoc_STRVAR(_msi_SummaryInformation_Persist__doc__,
|
|
396
|
-
"Persist($self, /)\n"
|
|
397
|
-
"--\n"
|
|
398
|
-
"\n"
|
|
399
|
-
"Write the modified properties to the summary information stream.");
|
|
400
|
+
"Persist($self, /)\n"
|
|
401
|
+
"--\n"
|
|
402
|
+
"\n"
|
|
403
|
+
"Write the modified properties to the summary information stream.");
|
|
400
404
|
|
|
401
|
-
#define _MSI_SUMMARYINFORMATION_PERSIST_METHODDEF
|
|
402
|
-
{"Persist", (PyCFunction)_msi_SummaryInformation_Persist, METH_NOARGS,
|
|
405
|
+
#define _MSI_SUMMARYINFORMATION_PERSIST_METHODDEF \
|
|
406
|
+
{ "Persist", (PyCFunction)_msi_SummaryInformation_Persist, METH_NOARGS, \
|
|
407
|
+
_msi_SummaryInformation_Persist__doc__ },
|
|
403
408
|
|
|
404
|
-
static PyObject *
|
|
405
|
-
_msi_SummaryInformation_Persist_impl(msiobj *self);
|
|
409
|
+
static PyObject* _msi_SummaryInformation_Persist_impl(msiobj* self);
|
|
406
410
|
|
|
407
|
-
static PyObject
|
|
408
|
-
|
|
411
|
+
static PyObject* _msi_SummaryInformation_Persist(
|
|
412
|
+
msiobj* self, PyObject* Py_UNUSED(ignored))
|
|
409
413
|
{
|
|
410
414
|
return _msi_SummaryInformation_Persist_impl(self);
|
|
411
415
|
}
|
|
412
416
|
|
|
413
417
|
PyDoc_STRVAR(_msi_View_Execute__doc__,
|
|
414
|
-
"Execute($self, params, /)\n"
|
|
415
|
-
"--\n"
|
|
416
|
-
"\n"
|
|
417
|
-
"Execute the SQL query of the view.\n"
|
|
418
|
-
"\n"
|
|
419
|
-
" params\n"
|
|
420
|
-
" a record describing actual values of the parameter tokens\n"
|
|
421
|
-
" in the query or None");
|
|
422
|
-
|
|
423
|
-
#define _MSI_VIEW_EXECUTE_METHODDEF
|
|
424
|
-
{"Execute", (PyCFunction)_msi_View_Execute, METH_O,
|
|
418
|
+
"Execute($self, params, /)\n"
|
|
419
|
+
"--\n"
|
|
420
|
+
"\n"
|
|
421
|
+
"Execute the SQL query of the view.\n"
|
|
422
|
+
"\n"
|
|
423
|
+
" params\n"
|
|
424
|
+
" a record describing actual values of the parameter tokens\n"
|
|
425
|
+
" in the query or None");
|
|
426
|
+
|
|
427
|
+
#define _MSI_VIEW_EXECUTE_METHODDEF \
|
|
428
|
+
{ "Execute", (PyCFunction)_msi_View_Execute, METH_O, \
|
|
429
|
+
_msi_View_Execute__doc__ },
|
|
425
430
|
|
|
426
431
|
PyDoc_STRVAR(_msi_View_Fetch__doc__,
|
|
427
|
-
"Fetch($self, /)\n"
|
|
428
|
-
"--\n"
|
|
429
|
-
"\n"
|
|
430
|
-
"Return a result record of the query.");
|
|
432
|
+
"Fetch($self, /)\n"
|
|
433
|
+
"--\n"
|
|
434
|
+
"\n"
|
|
435
|
+
"Return a result record of the query.");
|
|
431
436
|
|
|
432
|
-
#define _MSI_VIEW_FETCH_METHODDEF
|
|
433
|
-
{"Fetch", (PyCFunction)_msi_View_Fetch, METH_NOARGS,
|
|
437
|
+
#define _MSI_VIEW_FETCH_METHODDEF \
|
|
438
|
+
{ "Fetch", (PyCFunction)_msi_View_Fetch, METH_NOARGS, \
|
|
439
|
+
_msi_View_Fetch__doc__ },
|
|
434
440
|
|
|
435
|
-
static PyObject *
|
|
436
|
-
_msi_View_Fetch_impl(msiobj *self);
|
|
441
|
+
static PyObject* _msi_View_Fetch_impl(msiobj* self);
|
|
437
442
|
|
|
438
|
-
static PyObject *
|
|
439
|
-
_msi_View_Fetch(msiobj *self, PyObject *Py_UNUSED(ignored))
|
|
443
|
+
static PyObject* _msi_View_Fetch(msiobj* self, PyObject* Py_UNUSED(ignored))
|
|
440
444
|
{
|
|
441
445
|
return _msi_View_Fetch_impl(self);
|
|
442
446
|
}
|
|
443
447
|
|
|
444
448
|
PyDoc_STRVAR(_msi_View_GetColumnInfo__doc__,
|
|
445
|
-
"GetColumnInfo($self, kind, /)\n"
|
|
446
|
-
"--\n"
|
|
447
|
-
"\n"
|
|
448
|
-
"Return a record describing the columns of the view.\n"
|
|
449
|
-
"\n"
|
|
450
|
-
" kind\n"
|
|
451
|
-
" MSICOLINFO_NAMES or MSICOLINFO_TYPES");
|
|
452
|
-
|
|
453
|
-
#define _MSI_VIEW_GETCOLUMNINFO_METHODDEF
|
|
454
|
-
{"GetColumnInfo", (PyCFunction)_msi_View_GetColumnInfo, METH_O,
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
_msi_View_GetColumnInfo_impl(msiobj
|
|
458
|
-
|
|
459
|
-
static PyObject *
|
|
460
|
-
_msi_View_GetColumnInfo(msiobj *self, PyObject *arg)
|
|
449
|
+
"GetColumnInfo($self, kind, /)\n"
|
|
450
|
+
"--\n"
|
|
451
|
+
"\n"
|
|
452
|
+
"Return a record describing the columns of the view.\n"
|
|
453
|
+
"\n"
|
|
454
|
+
" kind\n"
|
|
455
|
+
" MSICOLINFO_NAMES or MSICOLINFO_TYPES");
|
|
456
|
+
|
|
457
|
+
#define _MSI_VIEW_GETCOLUMNINFO_METHODDEF \
|
|
458
|
+
{ "GetColumnInfo", (PyCFunction)_msi_View_GetColumnInfo, METH_O, \
|
|
459
|
+
_msi_View_GetColumnInfo__doc__ },
|
|
460
|
+
|
|
461
|
+
static PyObject* _msi_View_GetColumnInfo_impl(msiobj* self, int kind);
|
|
462
|
+
|
|
463
|
+
static PyObject* _msi_View_GetColumnInfo(msiobj* self, PyObject* arg)
|
|
461
464
|
{
|
|
462
|
-
PyObject
|
|
465
|
+
PyObject* return_value = NULL;
|
|
463
466
|
int kind;
|
|
464
467
|
|
|
465
468
|
kind = PyLong_AsInt(arg);
|
|
@@ -473,28 +476,28 @@ exit:
|
|
|
473
476
|
}
|
|
474
477
|
|
|
475
478
|
PyDoc_STRVAR(_msi_View_Modify__doc__,
|
|
476
|
-
"Modify($self, kind, data, /)\n"
|
|
477
|
-
"--\n"
|
|
478
|
-
"\n"
|
|
479
|
-
"Modify the view.\n"
|
|
480
|
-
"\n"
|
|
481
|
-
" kind\n"
|
|
482
|
-
" one of the MSIMODIFY_* constants\n"
|
|
483
|
-
" data\n"
|
|
484
|
-
" a record describing the new data");
|
|
485
|
-
|
|
486
|
-
#define _MSI_VIEW_MODIFY_METHODDEF
|
|
487
|
-
{"Modify", _PyCFunction_CAST(_msi_View_Modify), METH_FASTCALL,
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
_msi_View_Modify_impl(msiobj
|
|
491
|
-
|
|
492
|
-
static PyObject
|
|
493
|
-
|
|
479
|
+
"Modify($self, kind, data, /)\n"
|
|
480
|
+
"--\n"
|
|
481
|
+
"\n"
|
|
482
|
+
"Modify the view.\n"
|
|
483
|
+
"\n"
|
|
484
|
+
" kind\n"
|
|
485
|
+
" one of the MSIMODIFY_* constants\n"
|
|
486
|
+
" data\n"
|
|
487
|
+
" a record describing the new data");
|
|
488
|
+
|
|
489
|
+
#define _MSI_VIEW_MODIFY_METHODDEF \
|
|
490
|
+
{ "Modify", _PyCFunction_CAST(_msi_View_Modify), METH_FASTCALL, \
|
|
491
|
+
_msi_View_Modify__doc__ },
|
|
492
|
+
|
|
493
|
+
static PyObject* _msi_View_Modify_impl(msiobj* self, int kind, PyObject* data);
|
|
494
|
+
|
|
495
|
+
static PyObject* _msi_View_Modify(
|
|
496
|
+
msiobj* self, PyObject* const* args, Py_ssize_t nargs)
|
|
494
497
|
{
|
|
495
|
-
PyObject
|
|
498
|
+
PyObject* return_value = NULL;
|
|
496
499
|
int kind;
|
|
497
|
-
PyObject
|
|
500
|
+
PyObject* data;
|
|
498
501
|
|
|
499
502
|
if (!_PyArg_CheckPositional("Modify", nargs, 2, 2)) {
|
|
500
503
|
goto exit;
|
|
@@ -511,43 +514,41 @@ exit:
|
|
|
511
514
|
}
|
|
512
515
|
|
|
513
516
|
PyDoc_STRVAR(_msi_View_Close__doc__,
|
|
514
|
-
"Close($self, /)\n"
|
|
515
|
-
"--\n"
|
|
516
|
-
"\n"
|
|
517
|
-
"Close the view.");
|
|
517
|
+
"Close($self, /)\n"
|
|
518
|
+
"--\n"
|
|
519
|
+
"\n"
|
|
520
|
+
"Close the view.");
|
|
518
521
|
|
|
519
|
-
#define _MSI_VIEW_CLOSE_METHODDEF
|
|
520
|
-
{"Close", (PyCFunction)_msi_View_Close, METH_NOARGS,
|
|
522
|
+
#define _MSI_VIEW_CLOSE_METHODDEF \
|
|
523
|
+
{ "Close", (PyCFunction)_msi_View_Close, METH_NOARGS, \
|
|
524
|
+
_msi_View_Close__doc__ },
|
|
521
525
|
|
|
522
|
-
static PyObject *
|
|
523
|
-
_msi_View_Close_impl(msiobj *self);
|
|
526
|
+
static PyObject* _msi_View_Close_impl(msiobj* self);
|
|
524
527
|
|
|
525
|
-
static PyObject *
|
|
526
|
-
_msi_View_Close(msiobj *self, PyObject *Py_UNUSED(ignored))
|
|
528
|
+
static PyObject* _msi_View_Close(msiobj* self, PyObject* Py_UNUSED(ignored))
|
|
527
529
|
{
|
|
528
530
|
return _msi_View_Close_impl(self);
|
|
529
531
|
}
|
|
530
532
|
|
|
531
533
|
PyDoc_STRVAR(_msi_Database_OpenView__doc__,
|
|
532
|
-
"OpenView($self, sql, /)\n"
|
|
533
|
-
"--\n"
|
|
534
|
-
"\n"
|
|
535
|
-
"Return a view object.\n"
|
|
536
|
-
"\n"
|
|
537
|
-
" sql\n"
|
|
538
|
-
" the SQL statement to execute");
|
|
539
|
-
|
|
540
|
-
#define _MSI_DATABASE_OPENVIEW_METHODDEF
|
|
541
|
-
{"OpenView", (PyCFunction)_msi_Database_OpenView, METH_O,
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
_msi_Database_OpenView_impl(msiobj
|
|
545
|
-
|
|
546
|
-
static PyObject *
|
|
547
|
-
_msi_Database_OpenView(msiobj *self, PyObject *arg)
|
|
534
|
+
"OpenView($self, sql, /)\n"
|
|
535
|
+
"--\n"
|
|
536
|
+
"\n"
|
|
537
|
+
"Return a view object.\n"
|
|
538
|
+
"\n"
|
|
539
|
+
" sql\n"
|
|
540
|
+
" the SQL statement to execute");
|
|
541
|
+
|
|
542
|
+
#define _MSI_DATABASE_OPENVIEW_METHODDEF \
|
|
543
|
+
{ "OpenView", (PyCFunction)_msi_Database_OpenView, METH_O, \
|
|
544
|
+
_msi_Database_OpenView__doc__ },
|
|
545
|
+
|
|
546
|
+
static PyObject* _msi_Database_OpenView_impl(msiobj* self, const wchar_t* sql);
|
|
547
|
+
|
|
548
|
+
static PyObject* _msi_Database_OpenView(msiobj* self, PyObject* arg)
|
|
548
549
|
{
|
|
549
|
-
PyObject
|
|
550
|
-
const wchar_t
|
|
550
|
+
PyObject* return_value = NULL;
|
|
551
|
+
const wchar_t* sql = NULL;
|
|
551
552
|
|
|
552
553
|
if (!PyUnicode_Check(arg)) {
|
|
553
554
|
_PyArg_BadArgument("OpenView", "argument", "str", arg);
|
|
@@ -561,48 +562,50 @@ _msi_Database_OpenView(msiobj *self, PyObject *arg)
|
|
|
561
562
|
|
|
562
563
|
exit:
|
|
563
564
|
/* Cleanup for sql */
|
|
564
|
-
PyMem_Free((void
|
|
565
|
+
PyMem_Free((void*)sql);
|
|
565
566
|
|
|
566
567
|
return return_value;
|
|
567
568
|
}
|
|
568
569
|
|
|
569
570
|
PyDoc_STRVAR(_msi_Database_Commit__doc__,
|
|
570
|
-
"Commit($self, /)\n"
|
|
571
|
-
"--\n"
|
|
572
|
-
"\n"
|
|
573
|
-
"Commit the changes pending in the current transaction.");
|
|
571
|
+
"Commit($self, /)\n"
|
|
572
|
+
"--\n"
|
|
573
|
+
"\n"
|
|
574
|
+
"Commit the changes pending in the current transaction.");
|
|
574
575
|
|
|
575
|
-
#define _MSI_DATABASE_COMMIT_METHODDEF
|
|
576
|
-
{"Commit", (PyCFunction)_msi_Database_Commit, METH_NOARGS,
|
|
576
|
+
#define _MSI_DATABASE_COMMIT_METHODDEF \
|
|
577
|
+
{ "Commit", (PyCFunction)_msi_Database_Commit, METH_NOARGS, \
|
|
578
|
+
_msi_Database_Commit__doc__ },
|
|
577
579
|
|
|
578
|
-
static PyObject *
|
|
579
|
-
_msi_Database_Commit_impl(msiobj *self);
|
|
580
|
+
static PyObject* _msi_Database_Commit_impl(msiobj* self);
|
|
580
581
|
|
|
581
|
-
static PyObject
|
|
582
|
-
|
|
582
|
+
static PyObject* _msi_Database_Commit(
|
|
583
|
+
msiobj* self, PyObject* Py_UNUSED(ignored))
|
|
583
584
|
{
|
|
584
585
|
return _msi_Database_Commit_impl(self);
|
|
585
586
|
}
|
|
586
587
|
|
|
587
588
|
PyDoc_STRVAR(_msi_Database_GetSummaryInformation__doc__,
|
|
588
|
-
"GetSummaryInformation($self, count, /)\n"
|
|
589
|
-
"--\n"
|
|
590
|
-
"\n"
|
|
591
|
-
"Return a new summary information object.\n"
|
|
592
|
-
"\n"
|
|
593
|
-
" count\n"
|
|
594
|
-
" the maximum number of updated values");
|
|
595
|
-
|
|
596
|
-
#define _MSI_DATABASE_GETSUMMARYINFORMATION_METHODDEF
|
|
597
|
-
{"GetSummaryInformation",
|
|
598
|
-
|
|
599
|
-
|
|
600
|
-
|
|
601
|
-
|
|
602
|
-
|
|
603
|
-
|
|
589
|
+
"GetSummaryInformation($self, count, /)\n"
|
|
590
|
+
"--\n"
|
|
591
|
+
"\n"
|
|
592
|
+
"Return a new summary information object.\n"
|
|
593
|
+
"\n"
|
|
594
|
+
" count\n"
|
|
595
|
+
" the maximum number of updated values");
|
|
596
|
+
|
|
597
|
+
#define _MSI_DATABASE_GETSUMMARYINFORMATION_METHODDEF \
|
|
598
|
+
{ "GetSummaryInformation", \
|
|
599
|
+
(PyCFunction)_msi_Database_GetSummaryInformation, METH_O, \
|
|
600
|
+
_msi_Database_GetSummaryInformation__doc__ },
|
|
601
|
+
|
|
602
|
+
static PyObject* _msi_Database_GetSummaryInformation_impl(
|
|
603
|
+
msiobj* self, int count);
|
|
604
|
+
|
|
605
|
+
static PyObject* _msi_Database_GetSummaryInformation(
|
|
606
|
+
msiobj* self, PyObject* arg)
|
|
604
607
|
{
|
|
605
|
-
PyObject
|
|
608
|
+
PyObject* return_value = NULL;
|
|
606
609
|
int count;
|
|
607
610
|
|
|
608
611
|
count = PyLong_AsInt(arg);
|
|
@@ -616,27 +619,28 @@ exit:
|
|
|
616
619
|
}
|
|
617
620
|
|
|
618
621
|
PyDoc_STRVAR(_msi_OpenDatabase__doc__,
|
|
619
|
-
"OpenDatabase($module, path, persist, /)\n"
|
|
620
|
-
"--\n"
|
|
621
|
-
"\n"
|
|
622
|
-
"Return a new database object.\n"
|
|
623
|
-
"\n"
|
|
624
|
-
" path\n"
|
|
625
|
-
" the file name of the MSI file\n"
|
|
626
|
-
" persist\n"
|
|
627
|
-
" the persistence mode");
|
|
628
|
-
|
|
629
|
-
#define _MSI_OPENDATABASE_METHODDEF
|
|
630
|
-
{"OpenDatabase", _PyCFunction_CAST(_msi_OpenDatabase), METH_FASTCALL,
|
|
631
|
-
|
|
632
|
-
|
|
633
|
-
|
|
634
|
-
|
|
635
|
-
|
|
636
|
-
|
|
622
|
+
"OpenDatabase($module, path, persist, /)\n"
|
|
623
|
+
"--\n"
|
|
624
|
+
"\n"
|
|
625
|
+
"Return a new database object.\n"
|
|
626
|
+
"\n"
|
|
627
|
+
" path\n"
|
|
628
|
+
" the file name of the MSI file\n"
|
|
629
|
+
" persist\n"
|
|
630
|
+
" the persistence mode");
|
|
631
|
+
|
|
632
|
+
#define _MSI_OPENDATABASE_METHODDEF \
|
|
633
|
+
{ "OpenDatabase", _PyCFunction_CAST(_msi_OpenDatabase), METH_FASTCALL, \
|
|
634
|
+
_msi_OpenDatabase__doc__ },
|
|
635
|
+
|
|
636
|
+
static PyObject* _msi_OpenDatabase_impl(
|
|
637
|
+
PyObject* module, const wchar_t* path, int persist);
|
|
638
|
+
|
|
639
|
+
static PyObject* _msi_OpenDatabase(
|
|
640
|
+
PyObject* module, PyObject* const* args, Py_ssize_t nargs)
|
|
637
641
|
{
|
|
638
|
-
PyObject
|
|
639
|
-
const wchar_t
|
|
642
|
+
PyObject* return_value = NULL;
|
|
643
|
+
const wchar_t* path = NULL;
|
|
640
644
|
int persist;
|
|
641
645
|
|
|
642
646
|
if (!_PyArg_CheckPositional("OpenDatabase", nargs, 2, 2)) {
|
|
@@ -658,30 +662,29 @@ _msi_OpenDatabase(PyObject *module, PyObject *const *args, Py_ssize_t nargs)
|
|
|
658
662
|
|
|
659
663
|
exit:
|
|
660
664
|
/* Cleanup for path */
|
|
661
|
-
PyMem_Free((void
|
|
665
|
+
PyMem_Free((void*)path);
|
|
662
666
|
|
|
663
667
|
return return_value;
|
|
664
668
|
}
|
|
665
669
|
|
|
666
670
|
PyDoc_STRVAR(_msi_CreateRecord__doc__,
|
|
667
|
-
"CreateRecord($module, count, /)\n"
|
|
668
|
-
"--\n"
|
|
669
|
-
"\n"
|
|
670
|
-
"Return a new record object.\n"
|
|
671
|
-
"\n"
|
|
672
|
-
" count\n"
|
|
673
|
-
" the number of fields of the record");
|
|
674
|
-
|
|
675
|
-
#define _MSI_CREATERECORD_METHODDEF
|
|
676
|
-
{"CreateRecord", (PyCFunction)_msi_CreateRecord, METH_O,
|
|
677
|
-
|
|
678
|
-
|
|
679
|
-
_msi_CreateRecord_impl(PyObject
|
|
680
|
-
|
|
681
|
-
static PyObject *
|
|
682
|
-
_msi_CreateRecord(PyObject *module, PyObject *arg)
|
|
671
|
+
"CreateRecord($module, count, /)\n"
|
|
672
|
+
"--\n"
|
|
673
|
+
"\n"
|
|
674
|
+
"Return a new record object.\n"
|
|
675
|
+
"\n"
|
|
676
|
+
" count\n"
|
|
677
|
+
" the number of fields of the record");
|
|
678
|
+
|
|
679
|
+
#define _MSI_CREATERECORD_METHODDEF \
|
|
680
|
+
{ "CreateRecord", (PyCFunction)_msi_CreateRecord, METH_O, \
|
|
681
|
+
_msi_CreateRecord__doc__ },
|
|
682
|
+
|
|
683
|
+
static PyObject* _msi_CreateRecord_impl(PyObject* module, int count);
|
|
684
|
+
|
|
685
|
+
static PyObject* _msi_CreateRecord(PyObject* module, PyObject* arg)
|
|
683
686
|
{
|
|
684
|
-
PyObject
|
|
687
|
+
PyObject* return_value = NULL;
|
|
685
688
|
int count;
|
|
686
689
|
|
|
687
690
|
count = PyLong_AsInt(arg);
|