Commit | Line | Data |
---|---|---|
920dae64 AT |
1 | // |
2 | // std::wstring | |
3 | // | |
4 | ||
5 | #ifndef SWIG_STD_BASIC_STRING | |
6 | #define SWIG_STD_WSTRING | |
7 | ||
8 | %{ | |
9 | #include <cwchar> | |
10 | %} | |
11 | ||
12 | %include <pywstrings.swg> | |
13 | ||
14 | namespace std | |
15 | { | |
16 | %feature("novaluewrapper") wstring; | |
17 | class wstring; | |
18 | } | |
19 | ||
20 | /* defining the std::string asptr/from methods */ | |
21 | ||
22 | %fragment(SWIG_AsPtr_frag(std::wstring),"header", | |
23 | fragment="SWIG_AsWCharPtrAndSize") { | |
24 | SWIGINTERN int | |
25 | SWIG_AsPtr(std::wstring)(PyObject* obj, std::wstring **val) | |
26 | { | |
27 | static swig_type_info* string_info = SWIG_TypeQuery("std::wstring *"); | |
28 | std::wstring *vptr; | |
29 | if (SWIG_ConvertPtr(obj, (void**)&vptr, string_info, 0) != -1) { | |
30 | if (val) *val = vptr; | |
31 | return SWIG_OLDOBJ; | |
32 | } else { | |
33 | PyErr_Clear(); | |
34 | wchar_t *buf = 0 ; size_t size = 0; | |
35 | int res = 0; | |
36 | if ((res = SWIG_AsWCharPtrAndSize(obj, &buf, &size))) { | |
37 | if (buf) { | |
38 | if (val) *val = new std::wstring(buf, size - 1); | |
39 | if (res == SWIG_NEWOBJ) SWIG_delete_array(buf); | |
40 | return SWIG_NEWOBJ; | |
41 | } | |
42 | } else { | |
43 | PyErr_Clear(); | |
44 | } | |
45 | if (val) { | |
46 | PyErr_SetString(PyExc_TypeError,"a wstring is expected"); | |
47 | } | |
48 | return 0; | |
49 | } | |
50 | } | |
51 | ||
52 | } | |
53 | ||
54 | %fragment(SWIG_From_frag(std::wstring),"header", | |
55 | fragment="SWIG_FromWCharArray") { | |
56 | SWIGINTERNINLINE PyObject* | |
57 | SWIG_From(std::wstring)(const std::wstring& s) | |
58 | { | |
59 | return SWIG_FromWCharArray(s.data(), s.size()); | |
60 | } | |
61 | } | |
62 | ||
63 | ||
64 | %fragment(SWIG_AsVal_frag(std::wstring),"header", | |
65 | fragment=SWIG_AsPtr_frag(std::wstring)) { | |
66 | SWIGINTERN int | |
67 | SWIG_AsVal(std::wstring)(PyObject* obj, std::wstring *val) | |
68 | { | |
69 | std::wstring *s; | |
70 | int res = SWIG_AsPtr(std::wstring)(obj, &s); | |
71 | if ((res != 0) && s) { | |
72 | if (val) *val = *s; | |
73 | if (res == SWIG_NEWOBJ) delete s; | |
74 | return res; | |
75 | } | |
76 | if (val) { | |
77 | PyErr_SetString(PyExc_TypeError,"a wstring is expected"); | |
78 | } | |
79 | return 0; | |
80 | } | |
81 | } | |
82 | ||
83 | %typemap_asptrfromn(SWIG_CCode(UNISTRING), std::wstring); | |
84 | ||
85 | #else | |
86 | ||
87 | %include <std/std_wstring.i> | |
88 | ||
89 | #endif |