diff options
Diffstat (limited to 'linux-x86/share/swig/perl5/std_common.i')
-rw-r--r-- | linux-x86/share/swig/perl5/std_common.i | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/linux-x86/share/swig/perl5/std_common.i b/linux-x86/share/swig/perl5/std_common.i new file mode 100644 index 0000000..7c1ff23 --- /dev/null +++ b/linux-x86/share/swig/perl5/std_common.i @@ -0,0 +1,28 @@ +/* ----------------------------------------------------------------------------- + * std_common.i + * + * SWIG typemaps for STL - common utilities + * ----------------------------------------------------------------------------- */ + +%include <std/std_except.i> + +%apply size_t { std::size_t }; + +%fragment("<string>"); +%{ +SWIGINTERN +double SwigSvToNumber(SV* sv) { + return SvIOK(sv) ? double(SvIVX(sv)) : SvNVX(sv); +} +SWIGINTERN +std::string SwigSvToString(SV* sv) { + STRLEN len; + char *ptr = SvPV(sv, len); + return std::string(ptr, len); +} +SWIGINTERN +void SwigSvFromString(SV* sv, const std::string& s) { + sv_setpvn(sv,s.data(),s.size()); +} +%} + |