diff options
Diffstat (limited to 'share/swig/2.0.11/octave/octprimtypes.swg')
-rw-r--r-- | share/swig/2.0.11/octave/octprimtypes.swg | 232 |
1 files changed, 232 insertions, 0 deletions
diff --git a/share/swig/2.0.11/octave/octprimtypes.swg b/share/swig/2.0.11/octave/octprimtypes.swg new file mode 100644 index 0000000..6f43f21 --- /dev/null +++ b/share/swig/2.0.11/octave/octprimtypes.swg @@ -0,0 +1,232 @@ +/* ------------------------------------------------------------ + * Primitive Types + * ------------------------------------------------------------ */ + + +// boolean + +%fragment(SWIG_From_frag(bool),"header") { +SWIGINTERNINLINE octave_value + SWIG_From_dec(bool)(bool value) +{ + return octave_value(value); +} +} + +%fragment(SWIG_AsVal_frag(bool),"header", + fragment=SWIG_AsVal_frag(long)) { +SWIGINTERN int +SWIG_AsVal_dec(bool)(const octave_value& ov, bool *val) +{ + if (!ov.is_bool_type()) + return SWIG_ERROR; + if (val) + *val = ov.bool_value(); + return SWIG_OK; +} +} + +// long + +%fragment(SWIG_From_frag(long),"header") { + SWIGINTERNINLINE octave_value SWIG_From_dec(long) (long value) + { + return octave_value(value); + } +} + + +%fragment(SWIG_AsVal_frag(long),"header") { + SWIGINTERN int SWIG_AsVal_dec(long)(const octave_value& ov, long* val) + { + if (!ov.is_scalar_type()) + return SWIG_TypeError; + if (ov.is_complex_scalar()) + return SWIG_TypeError; + if (ov.is_double_type()||ov.is_single_type()) { + double v=ov.double_value(); + if (v!=floor(v)) + return SWIG_TypeError; + } + if (val) + *val = ov.long_value(); + return SWIG_OK; + } +} + +// unsigned long + +%fragment(SWIG_From_frag(unsigned long),"header") { + SWIGINTERNINLINE octave_value SWIG_From_dec(unsigned long) (unsigned long value) + { + return octave_value(value); + } +} + + +%fragment(SWIG_AsVal_frag(unsigned long),"header") { + SWIGINTERN int SWIG_AsVal_dec(unsigned long)(const octave_value& ov, unsigned long* val) + { + if (!ov.is_scalar_type()) + return SWIG_TypeError; + if (ov.is_complex_scalar()) + return SWIG_TypeError; + if (ov.is_double_type()||ov.is_single_type()) { + double v=ov.double_value(); + if (v<0) + return SWIG_OverflowError; + if (v!=floor(v)) + return SWIG_TypeError; + } + if (ov.is_int8_type()||ov.is_int16_type()|| + ov.is_int32_type()) { + long v=ov.long_value(); + if (v<0) + return SWIG_OverflowError; + } + if (ov.is_int64_type()) { + long long v=ov.int64_scalar_value().value(); + if (v<0) + return SWIG_OverflowError; + } + if (val) + *val = ov.ulong_value(); + return SWIG_OK; + } +} + +// long long + +%fragment(SWIG_From_frag(long long),"header") { + SWIGINTERNINLINE octave_value SWIG_From_dec(long long) (long long value) + { + return octave_int64(value); + } +} + + +%fragment(SWIG_AsVal_frag(long long),"header") { + SWIGINTERN int SWIG_AsVal_dec(long long)(const octave_value& ov, long long* val) + { + if (!ov.is_scalar_type()) + return SWIG_TypeError; + if (ov.is_complex_scalar()) + return SWIG_TypeError; + if (ov.is_double_type()||ov.is_single_type()) { + double v=ov.double_value(); + if (v!=floor(v)) + return SWIG_TypeError; + } + if (val) { + if (ov.is_int64_type()) + *val = ov.int64_scalar_value().value(); + else if (ov.is_uint64_type()) + *val = ov.uint64_scalar_value().value(); + else + *val = ov.long_value(); + } + return SWIG_OK; + } +} + +%fragment(SWIG_From_frag(unsigned long long),"header") { + SWIGINTERNINLINE octave_value SWIG_From_dec(unsigned long long) (unsigned long long value) + { + return octave_uint64(value); + } +} + +%fragment(SWIG_AsVal_frag(unsigned long long),"header") { + SWIGINTERN int SWIG_AsVal_dec(unsigned long long)(const octave_value& ov, unsigned long long* val) + { + if (!ov.is_scalar_type()) + return SWIG_TypeError; + if (ov.is_complex_scalar()) + return SWIG_TypeError; + if (ov.is_double_type()||ov.is_single_type()) { + double v=ov.double_value(); + if (v<0) + return SWIG_OverflowError; + if (v!=floor(v)) + return SWIG_TypeError; + } + if (ov.is_int8_type()||ov.is_int16_type()|| + ov.is_int32_type()) { + long v=ov.long_value(); + if (v<0) + return SWIG_OverflowError; + } + if (ov.is_int64_type()) { + long long v=ov.int64_scalar_value().value(); + if (v<0) + return SWIG_OverflowError; + } + if (val) { + if (ov.is_int64_type()) + *val = ov.int64_scalar_value().value(); + else if (ov.is_uint64_type()) + *val = ov.uint64_scalar_value().value(); + else + *val = ov.long_value(); + } + return SWIG_OK; + } +} + +// double + +%fragment(SWIG_From_frag(double),"header") { + SWIGINTERNINLINE octave_value SWIG_From_dec(double) (double value) + { + return octave_value(value); + } +} + + +%fragment(SWIG_AsVal_frag(double),"header") { + SWIGINTERN int SWIG_AsVal_dec(double)(const octave_value& ov, double* val) + { + if (!ov.is_scalar_type()) + return SWIG_TypeError; + if (ov.is_complex_scalar()) + return SWIG_TypeError; + if (val) + *val = ov.double_value(); + return SWIG_OK; + } +} + +// const char* (strings) + +%fragment("SWIG_AsCharPtrAndSize","header") { +SWIGINTERN int +SWIG_AsCharPtrAndSize(octave_value ov, char** cptr, size_t* psize, int *alloc) +{ + if (ov.is_cell() && ov.rows() == 1 && ov.columns() == 1) + ov = ov.cell_value()(0); + if (!ov.is_string()) + return SWIG_TypeError; + + std::string str=ov.string_value(); + size_t len=str.size(); + char* cstr=(char*)str.c_str(); + if (alloc) { + *cptr = %new_copy_array(cstr, len + 1, char); + *alloc = SWIG_NEWOBJ; + } else if (cptr) + *cptr = cstr; + if (psize) + *psize = len + 1; + return SWIG_OK; +} +} + +%fragment("SWIG_FromCharPtrAndSize","header",fragment="SWIG_pchar_descriptor") { +SWIGINTERNINLINE octave_value +SWIG_FromCharPtrAndSize(const char* carray, size_t size) +{ + return std::string(carray,carray+size); +} +} + + |