Octave: cleanup/restructure library files
- Restructure runtime code into declarations, function and class definitions, and initialisation code - Rename internal functions/types to follow SWIG_Octave... or SwigOct... naming styles - Style/comment/whitespace cleanups
This commit is contained in:
parent
6c04378e20
commit
bf12d76d03
42 changed files with 4288 additions and 3702 deletions
|
|
@ -1,72 +1,82 @@
|
|||
//
|
||||
// std_common.i - Common STL support code
|
||||
//
|
||||
|
||||
%include <std/std_except.i>
|
||||
%include <octstdcommon.swg>
|
||||
|
||||
|
||||
// Generate the traits for a 'primitive' type, such as 'double',
|
||||
// for which the SWIG_AsVal and SWIG_From methods are already defined.
|
||||
|
||||
%define %traits_ptypen(Type...)
|
||||
%fragment(SWIG_Traits_frag(Type),"header",
|
||||
fragment=SWIG_AsVal_frag(Type),
|
||||
fragment=SWIG_From_frag(Type),
|
||||
fragment="StdTraits") {
|
||||
namespace swig {
|
||||
template <> struct traits<Type > {
|
||||
typedef value_category category;
|
||||
static const char* type_name() { return #Type; }
|
||||
};
|
||||
template <> struct traits_asval<Type > {
|
||||
typedef Type value_type;
|
||||
static int asval(octave_value obj, value_type *val) {
|
||||
return SWIG_AsVal(Type)(obj, val);
|
||||
}
|
||||
};
|
||||
template <> struct traits_from<Type > {
|
||||
typedef Type value_type;
|
||||
static octave_value from(const value_type& val) {
|
||||
return SWIG_From(Type)(val);
|
||||
}
|
||||
};
|
||||
}
|
||||
%fragment(SWIG_Traits_frag(Type), "header", fragment = SWIG_AsVal_frag(Type), fragment = SWIG_From_frag(Type), fragment = "StdTraits")
|
||||
{
|
||||
|
||||
namespace swig
|
||||
{
|
||||
|
||||
template <> struct traits<Type > {
|
||||
typedef value_category category;
|
||||
static const char* type_name() {
|
||||
return #Type; }
|
||||
};
|
||||
|
||||
template <> struct traits_asval<Type > {
|
||||
typedef Type value_type;
|
||||
static int asval(octave_value obj, value_type* val) {
|
||||
return SWIG_AsVal(Type)(obj, val);
|
||||
}
|
||||
};
|
||||
|
||||
template <> struct traits_from<Type > {
|
||||
typedef Type value_type;
|
||||
static octave_value from(const value_type& val) {
|
||||
return SWIG_From(Type)(val);
|
||||
}
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
%enddef
|
||||
|
||||
/* Traits for enums. This is bit of a sneaky trick needed because a generic template specialization of enums
|
||||
is not possible (unless using template meta-programming which SWIG doesn't support because of the explicit
|
||||
instantiations required using %template). The STL containers define the 'front' method and the typemap
|
||||
below is used whenever the front method is wrapped returning an enum. This typemap simply picks up the
|
||||
standard enum typemap, but additionally drags in a fragment containing the traits_asval and traits_from
|
||||
required in the generated code for enums. */
|
||||
// Traits for enums. This is bit of a sneaky trick needed because a generic template specialization of enums
|
||||
// is not possible (unless using template meta-programming which SWIG doesn't support because of the explicit
|
||||
// instantiations required using %template). The STL containers define the 'front' method and the typemap
|
||||
// below is used whenever the front method is wrapped returning an enum. This typemap simply picks up the
|
||||
// standard enum typemap, but additionally drags in a fragment containing the traits_asval and traits_from
|
||||
// required in the generated code for enums.
|
||||
|
||||
%define %traits_enum(Type...)
|
||||
%fragment("SWIG_Traits_enum_"{Type},"header",
|
||||
fragment=SWIG_AsVal_frag(int),
|
||||
fragment=SWIG_From_frag(int),
|
||||
fragment="StdTraits") {
|
||||
namespace swig {
|
||||
template <> struct traits_asval<Type > {
|
||||
typedef Type value_type;
|
||||
static int asval(octave_value obj, value_type *val) {
|
||||
return SWIG_AsVal(int)(obj, (int *)val);
|
||||
}
|
||||
};
|
||||
template <> struct traits_from<Type > {
|
||||
typedef Type value_type;
|
||||
static octave_value from(const value_type& val) {
|
||||
return SWIG_From(int)((int)val);
|
||||
}
|
||||
};
|
||||
}
|
||||
}
|
||||
%typemap(out, fragment="SWIG_Traits_enum_"{Type}) const enum SWIGTYPE& front %{$typemap(out, const enum SWIGTYPE&)%}
|
||||
%enddef
|
||||
%fragment("SWIG_Traits_enum_" {Type}, "header", fragment = SWIG_AsVal_frag(int), fragment = SWIG_From_frag(int), fragment = "StdTraits") {
|
||||
|
||||
namespace swig
|
||||
{
|
||||
|
||||
template <> struct traits_asval<Type > {
|
||||
typedef Type value_type;
|
||||
static int asval(octave_value obj, value_type* val) {
|
||||
return SWIG_AsVal(int)(obj, (int*) val);
|
||||
}
|
||||
};
|
||||
|
||||
template <> struct traits_from<Type > {
|
||||
typedef Type value_type;
|
||||
static octave_value from(const value_type& val) {
|
||||
return SWIG_From(int)((int) val);
|
||||
}
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
%typemap(out, fragment = "SWIG_Traits_enum_" {Type}) const enum SWIGTYPE& front %{
|
||||
$typemap(out, const enum SWIGTYPE&)
|
||||
%}
|
||||
|
||||
%enddef
|
||||
|
||||
%include <std/std_common.i>
|
||||
|
||||
//
|
||||
// Generates the traits for all the known primitive
|
||||
// C++ types (int, double, ...)
|
||||
//
|
||||
// Generates the traits for all the known primitive C++ types (int, double, ...)
|
||||
%apply_cpptypes(%traits_ptypen);
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue