@@ -34,17 +34,17 @@ def fromstring(data, mappath=None):
34
34
'test'
35
35
" " "
36
36
import re
37
- if re.search (" ^\s*MAP" , data, re.I ):
37
+ if re.search (r " ^\s*MAP" , data, re.I ):
38
38
return msLoadMapFromString (data, mappath)
39
- elif re.search (" ^\s*LAYER" , data, re.I ):
39
+ elif re.search (r " ^\s*LAYER" , data, re.I ):
40
40
ob = layerObj ()
41
41
ob.updateFromString (data)
42
42
return ob
43
- elif re.search (" ^\s*CLASS" , data, re.I ):
43
+ elif re.search (r " ^\s*CLASS" , data, re.I ):
44
44
ob = classObj ()
45
45
ob.updateFromString (data)
46
46
return ob
47
- elif re.search (" ^\s*STYLE" , data, re.I ):
47
+ elif re.search (r " ^\s*STYLE" , data, re.I ):
48
48
ob = styleObj ()
49
49
ob.updateFromString (data)
50
50
return ob
@@ -358,9 +358,13 @@ def fromstring(data, mappath=None):
358
358
msSetError (MS_IMGERR, " failed to get image buffer" , " write()" );
359
359
return MS_FAILURE;
360
360
}
361
-
362
- noerr = PyObject_CallMethod (file, " write" , " s#" , imgbuffer,
363
- imgsize);
361
+ #if PY_MAJOR_VERSION >= 3
362
+ // see https://docs.python.org/3/c-api/arg.html
363
+ noerr = PyObject_CallMethod (file, " write" , " y#" , imgbuffer, imgsize);
364
+ #else
365
+ noerr = PyObject_CallMethod (file, " write" , " s#" , imgbuffer, imgsize);
366
+ #endif
367
+
364
368
free (imgbuffer);
365
369
if (noerr == NULL )
366
370
return MS_FAILURE;
@@ -438,3 +442,43 @@ def fromstring(data, mappath=None):
438
442
}
439
443
440
444
}
445
+
446
+
447
+ /* *****************************************************************************
448
+ * Extensions to hashTableObj - add dict methods
449
+ *****************************************************************************/
450
+
451
+ %extend hashTableObj{
452
+ %pythoncode %{
453
+
454
+ def __getitem__ (self, key):
455
+ return self.get (key)
456
+
457
+ def __setitem__ (self, key, value):
458
+ return self.set (key, value)
459
+
460
+ def __delitem__ (self, key) :
461
+ return self.remove (key)
462
+
463
+ def __contains__ (self, key):
464
+ return key.lower () in [k.lower () for k in self.keys ()]
465
+
466
+ def __len__ (self):
467
+ return self.numitems
468
+
469
+ def keys (self):
470
+
471
+ keys = []
472
+ k = None
473
+
474
+ while True :
475
+ k = self.nextKey (k)
476
+ if k :
477
+ keys.append (k)
478
+ else :
479
+ break
480
+
481
+ return keys
482
+
483
+ %}
484
+ };
0 commit comments