@@ -12,6 +12,7 @@ static PyObject *MaxMindDB_error;
12
12
typedef struct {
13
13
PyObject_HEAD /* no semicolon */
14
14
MMDB_s * mmdb ;
15
+ PyObject * mode_auto ;
15
16
PyObject * mode ;
16
17
} Reader_obj ;
17
18
@@ -26,8 +27,6 @@ typedef struct {
26
27
PyObject * languages ;
27
28
PyObject * node_count ;
28
29
PyObject * record_size ;
29
- PyObject * mode_auto ;
30
- PyObject * mode ;
31
30
} Metadata_obj ;
32
31
33
32
static PyObject * from_entry_data_list (MMDB_entry_data_list_s * * entry_data_list );
@@ -102,7 +101,12 @@ static int Reader_init(PyObject *self, PyObject *args, PyObject *kwds)
102
101
}
103
102
104
103
mmdb_obj -> mmdb = mmdb ;
105
- mmdb_obj -> mode = PyInt_FromLong ((long )mode );
104
+ if (mode == 0 ) {
105
+ mmdb_obj -> mode_auto = PyBool_FromLong (1 );
106
+ } else {
107
+ mmdb_obj -> mode_auto = PyBool_FromLong (0 );
108
+ }
109
+ mmdb_obj -> mode = PyString_FromString ("MODE_MMAP_EXT" );
106
110
return 0 ;
107
111
}
108
112
@@ -196,14 +200,10 @@ static PyObject *Reader_metadata(PyObject *self, PyObject *UNUSED(args))
196
200
return NULL ;
197
201
}
198
202
199
- Py_INCREF (mmdb_obj -> mode );
200
- PyDict_SetItemString (metadata_dict , "mode" , mmdb_obj -> mode );
201
-
202
203
PyObject * metadata = PyObject_Call ((PyObject * )& Metadata_Type , args ,
203
204
metadata_dict );
204
205
205
206
Py_DECREF (metadata_dict );
206
- Py_DECREF (mmdb_obj -> mode );
207
207
return metadata ;
208
208
}
209
209
@@ -227,13 +227,14 @@ static void Reader_dealloc(PyObject *self)
227
227
Reader_close (self , NULL );
228
228
}
229
229
230
+ Py_DECREF (obj -> mode_auto );
231
+ Py_DECREF (obj -> mode );
230
232
PyObject_Del (self );
231
233
}
232
234
233
235
static int Metadata_init (PyObject * self , PyObject * args , PyObject * kwds )
234
236
{
235
237
236
- int mode = 0 ;
237
238
PyObject
238
239
* binary_format_major_version ,
239
240
* binary_format_minor_version ,
@@ -255,11 +256,10 @@ static int Metadata_init(PyObject *self, PyObject *args, PyObject *kwds)
255
256
"languages" ,
256
257
"node_count" ,
257
258
"record_size" ,
258
- "mode" ,
259
259
NULL
260
260
};
261
261
262
- if (!PyArg_ParseTupleAndKeywords (args , kwds , "|OOOOOOOOOi " , kwlist ,
262
+ if (!PyArg_ParseTupleAndKeywords (args , kwds , "|OOOOOOOOO " , kwlist ,
263
263
& binary_format_major_version ,
264
264
& binary_format_minor_version ,
265
265
& build_epoch ,
@@ -268,8 +268,7 @@ static int Metadata_init(PyObject *self, PyObject *args, PyObject *kwds)
268
268
& ip_version ,
269
269
& languages ,
270
270
& node_count ,
271
- & record_size ,
272
- & mode )) {
271
+ & record_size )) {
273
272
return -1 ;
274
273
}
275
274
@@ -284,12 +283,6 @@ static int Metadata_init(PyObject *self, PyObject *args, PyObject *kwds)
284
283
obj -> languages = languages ;
285
284
obj -> node_count = node_count ;
286
285
obj -> record_size = record_size ;
287
- if (mode == 0 ) {
288
- obj -> mode_auto = PyBool_FromLong (1 );
289
- } else {
290
- obj -> mode_auto = PyBool_FromLong (0 );
291
- }
292
- obj -> mode = PyString_FromString ("MODE_MMAP_EXT" );
293
286
294
287
Py_INCREF (obj -> binary_format_major_version );
295
288
Py_INCREF (obj -> binary_format_minor_version );
@@ -316,8 +309,6 @@ static void Metadata_dealloc(PyObject *self)
316
309
Py_DECREF (obj -> languages );
317
310
Py_DECREF (obj -> node_count );
318
311
Py_DECREF (obj -> record_size );
319
- Py_DECREF (obj -> mode_auto );
320
- Py_DECREF (obj -> mode );
321
312
PyObject_Del (self );
322
313
}
323
314
@@ -477,12 +468,23 @@ static PyMethodDef Reader_methods[] = {
477
468
{ NULL , NULL , 0 , NULL }
478
469
};
479
470
471
+ /* *INDENT-OFF* */
472
+ static PyMemberDef Reader_members [] = {
473
+ { "mode_auto" , T_OBJECT , offsetof(Reader_obj , mode_auto ),
474
+ READONLY , NULL },
475
+ { "mode" , T_OBJECT , offsetof(Reader_obj , mode ),
476
+ READONLY , NULL },
477
+ { NULL , 0 , 0 , 0 , NULL }
478
+ };
479
+ /* *INDENT-ON* */
480
+
480
481
static PyTypeObject Reader_Type = {
481
482
PyVarObject_HEAD_INIT (NULL , 0 )
482
483
.tp_basicsize = sizeof (Reader_obj ),
483
484
.tp_dealloc = Reader_dealloc ,
484
485
.tp_doc = "Reader object" ,
485
486
.tp_flags = Py_TPFLAGS_DEFAULT ,
487
+ .tp_members = Reader_members ,
486
488
.tp_methods = Reader_methods ,
487
489
.tp_name = "Reader" ,
488
490
.tp_init = Reader_init ,
@@ -512,10 +514,6 @@ static PyMemberDef Metadata_members[] = {
512
514
READONLY , NULL },
513
515
{ "record_size" , T_OBJECT , offsetof(Metadata_obj , record_size ),
514
516
READONLY , NULL },
515
- { "mode_auto" , T_OBJECT , offsetof(Metadata_obj , mode_auto ),
516
- READONLY , NULL },
517
- { "mode" , T_OBJECT , offsetof(Metadata_obj , mode ),
518
- READONLY , NULL },
519
517
{ NULL , 0 , 0 , 0 , NULL }
520
518
};
521
519
/* *INDENT-ON* */
0 commit comments