From 95c842a9c0cbf7ed6d7abb10ec10293334057da6 Mon Sep 17 00:00:00 2001 From: Simon Marchetto Date: Fri, 26 Sep 2014 09:03:09 +0200 Subject: [PATCH] scilab: fix li_std_string_extra, missing lib std_basic_string.i --- Lib/scilab/std_basic_string.i | 47 +++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 Lib/scilab/std_basic_string.i diff --git a/Lib/scilab/std_basic_string.i b/Lib/scilab/std_basic_string.i new file mode 100644 index 000000000..4922abd35 --- /dev/null +++ b/Lib/scilab/std_basic_string.i @@ -0,0 +1,47 @@ +/* + * C++: basic_string + * Scilab: string + */ + +#define %swig_basic_string(Type...) %swig_sequence_methods_val(Type) + +%fragment(SWIG_AsPtr_frag(std::basic_string), "header", fragment="SWIG_SciString_AsCharPtrAndLength") { +SWIGINTERN int +SWIG_AsPtr_dec(std::basic_string)(int _iVar, std::basic_string **_pstValue) { + char* buf = 0; + size_t len = 0; + int alloc = SWIG_OLDOBJ; + + if (SWIG_IsOK((SWIG_SciString_AsCharPtrAndSize(pvApiCtx, _iVar, &buf, &len, &alloc, SWIG_Scilab_GetFuncName())))) { + if (buf) { + if (_pstValue) { + *_pstValue = new std::string(buf, len - 1); + sciprint("%s\n", (*_pstValue)->c_str()); + } + if (alloc == SWIG_NEWOBJ) { + delete[] buf; + } + return SWIG_NEWOBJ; + } + else { + if (_pstValue) { + *_pstValue = NULL; + } + return SWIG_OLDOBJ; + } + } else { + return SWIG_ERROR; + } +} +} + +%fragment(SWIG_From_frag(std::basic_string), "header", fragment="SWIG_SciString_FromCharPtr") { +SWIGINTERN int +SWIG_From_dec(std::basic_string)(std::basic_string _pstValue) { + return SWIG_SciString_FromCharPtr(pvApiCtx, SWIG_Scilab_GetOutputPosition(), _pstValue.c_str()); +} +} + +%include + +