Fix ~15 tests, minor doc fixes, improve STL support.
git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk@10298 626c5289-ae23-0410-ae9c-e8d60b6d4f22
This commit is contained in:
parent
25fd00698b
commit
4d283f59c3
32 changed files with 744 additions and 522 deletions
|
|
@ -22,12 +22,12 @@ namespace test {
|
|||
}
|
||||
};
|
||||
|
||||
/* A minimalistic complex class */
|
||||
class complex {
|
||||
/* A minimalistic test_complex class */
|
||||
class test_complex {
|
||||
double re;
|
||||
double im;
|
||||
public:
|
||||
complex(double r = 0, double i = 0) {
|
||||
test_complex(double r = 0, double i = 0) {
|
||||
re = r;
|
||||
im = i;
|
||||
}
|
||||
|
|
@ -44,16 +44,29 @@ namespace test {
|
|||
/* SWIG interface tests */
|
||||
|
||||
#ifdef SWIGPYTHON
|
||||
%typemap(in) test::complex * {
|
||||
%typemap(in) test::test_complex * {
|
||||
if (PyComplex_Check($input)) {
|
||||
$1 = new complex(PyComplex_RealAsDouble($input),
|
||||
$1 = new test_complex(PyComplex_RealAsDouble($input),
|
||||
PyComplex_ImagAsDouble($input));
|
||||
} else {
|
||||
PyErr_SetString(PyExc_TypeError,"Expected complex.\n");
|
||||
PyErr_SetString(PyExc_TypeError,"Expected test_complex.\n");
|
||||
return NULL;
|
||||
}
|
||||
}
|
||||
%typemap(freearg) test::complex * {
|
||||
%typemap(freearg) test::test_complex * {
|
||||
delete $1;
|
||||
}
|
||||
#endif
|
||||
#ifdef SWIGOCTAVE
|
||||
%typemap(in) test::test_complex * {
|
||||
if ($input.is_complex_scalar()) {
|
||||
$1 = new test_complex($input.complex_value().real(),
|
||||
$input.complex_value().imag());
|
||||
} else {
|
||||
error("Expected test_complex.");
|
||||
}
|
||||
}
|
||||
%typemap(freearg) test::test_complex * {
|
||||
delete $1;
|
||||
}
|
||||
#endif
|
||||
|
|
@ -68,6 +81,14 @@ namespace test {
|
|||
delete $1;
|
||||
}
|
||||
#endif
|
||||
#ifdef SWIGOCTAVE
|
||||
%typemap(in) string_class * {
|
||||
$1 = new string_class($input.string_value().c_str());
|
||||
}
|
||||
%typemap(freearg) string_class * {
|
||||
delete $1;
|
||||
}
|
||||
#endif
|
||||
#ifdef SWIGRUBY
|
||||
%typemap(in) string_class * {
|
||||
$1 = new string_class(STR2CSTR($input));
|
||||
|
|
@ -81,26 +102,26 @@ namespace test {
|
|||
%inline %{
|
||||
namespace test {
|
||||
class string_class;
|
||||
class complex;
|
||||
class test_complex;
|
||||
|
||||
/* Functions in the namespace itself */
|
||||
char *stest1(string_class *s) {
|
||||
return s->c_str();
|
||||
}
|
||||
double ctest1(complex *c) {
|
||||
double ctest1(test_complex *c) {
|
||||
return c->real();
|
||||
}
|
||||
}
|
||||
|
||||
namespace test2 {
|
||||
using test::string_class;
|
||||
using test::complex;
|
||||
using test::test_complex;
|
||||
|
||||
/* Functions in another namespace */
|
||||
char *stest2(string_class *s) {
|
||||
return s->c_str();
|
||||
}
|
||||
double ctest2(complex *c) {
|
||||
double ctest2(test_complex *c) {
|
||||
return c->real();
|
||||
}
|
||||
}
|
||||
|
|
@ -111,7 +132,7 @@ namespace test {
|
|||
char *stest3(string_class *s) {
|
||||
return s->c_str();
|
||||
}
|
||||
double ctest3(complex *c) {
|
||||
double ctest3(test_complex *c) {
|
||||
return c->real();
|
||||
}
|
||||
}
|
||||
|
|
@ -122,7 +143,7 @@ namespace test {
|
|||
char *stest4(string_class *s) {
|
||||
return s->c_str();
|
||||
}
|
||||
double ctest4(complex *c) {
|
||||
double ctest4(test_complex *c) {
|
||||
return c->real();
|
||||
}
|
||||
}
|
||||
|
|
@ -133,7 +154,7 @@ namespace test {
|
|||
char *stest5(string_class *s) {
|
||||
return s->c_str();
|
||||
}
|
||||
double ctest5(complex *c) {
|
||||
double ctest5(test_complex *c) {
|
||||
return c->real();
|
||||
}
|
||||
}
|
||||
|
|
@ -141,35 +162,35 @@ namespace test {
|
|||
char *stest6(test::string_class *s) {
|
||||
return s->c_str();
|
||||
}
|
||||
double ctest6(test::complex *c) {
|
||||
double ctest6(test::test_complex *c) {
|
||||
return c->real();
|
||||
}
|
||||
|
||||
char *stest7(test2::string_class *s) {
|
||||
return s->c_str();
|
||||
}
|
||||
double ctest7(test2::complex *c) {
|
||||
double ctest7(test2::test_complex *c) {
|
||||
return c->real();
|
||||
}
|
||||
|
||||
char *stest8(test3::string_class *s) {
|
||||
return s->c_str();
|
||||
}
|
||||
double ctest8(test3::complex *c) {
|
||||
double ctest8(test3::test_complex *c) {
|
||||
return c->real();
|
||||
}
|
||||
|
||||
char *stest9(test4::string_class *s) {
|
||||
return s->c_str();
|
||||
}
|
||||
double ctest9(test4::complex *c) {
|
||||
double ctest9(test4::test_complex *c) {
|
||||
return c->real();
|
||||
}
|
||||
|
||||
char *stest10(test5::string_class *s) {
|
||||
return s->c_str();
|
||||
}
|
||||
double ctest10(test5::complex *c) {
|
||||
double ctest10(test5::test_complex *c) {
|
||||
return c->real();
|
||||
}
|
||||
|
||||
|
|
@ -178,17 +199,17 @@ namespace test {
|
|||
char *stest11(test11::string_class *s) {
|
||||
return s->c_str();
|
||||
}
|
||||
double ctest11(test11::complex *c) {
|
||||
double ctest11(test11::test_complex *c) {
|
||||
return c->real();
|
||||
}
|
||||
|
||||
using namespace test2;
|
||||
using test::complex;
|
||||
using test::test_complex;
|
||||
|
||||
char *stest12(string_class *s) {
|
||||
return s->c_str();
|
||||
}
|
||||
double ctest12(complex *c) {
|
||||
double ctest12(test_complex *c) {
|
||||
return c->real();
|
||||
}
|
||||
%}
|
||||
|
|
@ -203,6 +224,14 @@ namespace Split {
|
|||
}
|
||||
}
|
||||
#endif
|
||||
#ifdef SWIGOCTAVE
|
||||
%typemap(in) PosInteger {
|
||||
$1 = $input.long_value();
|
||||
if ($1 < 0) {
|
||||
error("domain error");
|
||||
}
|
||||
}
|
||||
#endif
|
||||
#ifdef SWIGRUBY
|
||||
%typemap(in) PosInteger {
|
||||
$1 = NUM2INT($input);
|
||||
|
|
|
|||
|
|
@ -13,8 +13,14 @@ srcdir = @srcdir@
|
|||
top_srcdir = @top_srcdir@
|
||||
top_builddir = @top_builddir@
|
||||
|
||||
#CPP_TEST_CASES +=
|
||||
# CPP_TEST_CASES +=
|
||||
|
||||
CPP_TEST_BROKEN += \
|
||||
implicittest \
|
||||
li_implicit \
|
||||
li_std_map \
|
||||
li_std_set \
|
||||
li_std_stream
|
||||
|
||||
#C_TEST_CASES +=
|
||||
|
||||
|
|
|
|||
|
|
@ -1,18 +1,19 @@
|
|||
arrays_global
|
||||
|
||||
arrays_global.array_i = arrays_global.array_const_i;
|
||||
arrays_global.cvar.array_i = arrays_global.cvar.array_const_i;
|
||||
|
||||
BeginString_FIX44a;
|
||||
BeginString_FIX44b;
|
||||
BeginString_FIX44c;
|
||||
BeginString_FIX44d;
|
||||
BeginString_FIX44d;
|
||||
BeginString_FIX44b ="12"'\0'"45";
|
||||
BeginString_FIX44b;
|
||||
BeginString_FIX44d;
|
||||
BeginString_FIX44e;
|
||||
BeginString_FIX44f;
|
||||
cvar.BeginString_FIX44a;
|
||||
cvar.BeginString_FIX44b;
|
||||
cvar.BeginString_FIX44c;
|
||||
cvar.BeginString_FIX44d;
|
||||
cvar.BeginString_FIX44d;
|
||||
cvar.BeginString_FIX44b = strcat("12","\0","45");
|
||||
cvar.BeginString_FIX44b;
|
||||
cvar.BeginString_FIX44d;
|
||||
cvar.BeginString_FIX44e;
|
||||
cvar.BeginString_FIX44f;
|
||||
|
||||
test_a("hello","hi","chello","chi");
|
||||
|
||||
test_b("1234567","hi");
|
||||
|
||||
|
|
|
|||
|
|
@ -5,28 +5,28 @@ if (!strcmp(p,"test"))
|
|||
error("test failed!")
|
||||
endif
|
||||
|
||||
p = constover.test_pconst("test")
|
||||
p = constover.test_pconst("test");
|
||||
if (!strcmp(p,"test_pconst"))
|
||||
error("test_pconst failed!")
|
||||
endif
|
||||
|
||||
f = constover.Foo()
|
||||
p = f.test("test")
|
||||
f = constover.Foo();
|
||||
p = f.test("test");
|
||||
if (!strcmp(p,"test"))
|
||||
error("member-test failed!")
|
||||
endif
|
||||
|
||||
p = f.test_pconst("test")
|
||||
p = f.test_pconst("test");
|
||||
if (!strcmp(p,"test_pconst"))
|
||||
error("member-test_pconst failed!")
|
||||
endif
|
||||
|
||||
p = f.test_constm("test")
|
||||
p = f.test_constm("test");
|
||||
if (!strcmp(p,"test_constmethod"))
|
||||
error("member-test_constm failed!")
|
||||
endif
|
||||
|
||||
p = f.test_pconstm("test")
|
||||
p = f.test_pconstm("test");
|
||||
if (!strcmp(p,"test_pconstmethod"))
|
||||
error("member-test_pconstm failed!")
|
||||
endif
|
||||
|
|
|
|||
68
Examples/test-suite/octave/implicittest.i
Normal file
68
Examples/test-suite/octave/implicittest.i
Normal file
|
|
@ -0,0 +1,68 @@
|
|||
%module(naturalvar="1") implicittest
|
||||
|
||||
%implicitconv;
|
||||
|
||||
%inline
|
||||
{
|
||||
struct B { };
|
||||
}
|
||||
|
||||
%inline
|
||||
{
|
||||
struct A
|
||||
{
|
||||
int ii;
|
||||
A(int i) { ii = 1; }
|
||||
A(double d) { ii = 2; }
|
||||
A(const B& b) { ii = 3; }
|
||||
explicit A(char *s) { ii = 4; }
|
||||
|
||||
int get() const { return ii; }
|
||||
|
||||
};
|
||||
|
||||
int get(const A& a) { return a.ii; }
|
||||
|
||||
template <class T>
|
||||
struct A_T
|
||||
{
|
||||
int ii;
|
||||
A_T(int i) { ii = 1; }
|
||||
A_T(double d) { ii = 2; }
|
||||
A_T(const B& b) { ii = 3; }
|
||||
explicit A_T(char *s) { ii = 4; }
|
||||
|
||||
int get() const { return ii; }
|
||||
|
||||
};
|
||||
}
|
||||
|
||||
%inline
|
||||
{
|
||||
struct Foo
|
||||
{
|
||||
int ii;
|
||||
Foo(){ ii = 0;}
|
||||
Foo(int){ ii = 1;}
|
||||
Foo(double){ ii = 2;}
|
||||
explicit Foo(char *s){ii = 3;}
|
||||
Foo(const Foo& f){ ii = f.ii;}
|
||||
|
||||
};
|
||||
|
||||
struct Bar
|
||||
{
|
||||
int ii;
|
||||
Foo f;
|
||||
Bar() {ii = -1;}
|
||||
Bar(const Foo& ff){ ii = ff.ii;}
|
||||
};
|
||||
|
||||
|
||||
int get_b(const Bar&b) { return b.ii; }
|
||||
|
||||
Foo foo;
|
||||
|
||||
}
|
||||
|
||||
%template(A_int) A_T<int>;
|
||||
|
|
@ -1,12 +0,0 @@
|
|||
langobj
|
||||
|
||||
|
||||
x ="hello"
|
||||
rx = sys.getrefcount(x)
|
||||
v = identity(x)
|
||||
rv = sys.getrefcount(v)
|
||||
if v != x:
|
||||
error
|
||||
|
||||
if rv - rx != 1:
|
||||
error
|
||||
|
|
@ -47,9 +47,9 @@ if (b.a.c != 3)
|
|||
endif
|
||||
|
||||
|
||||
myFoo = li_attribute.MyFoo;
|
||||
myFoo = li_attribute.MyFoo();
|
||||
myFoo.x = 8;
|
||||
myClass = li_attribute.MyClass;
|
||||
myClass = li_attribute.MyClass();
|
||||
myClass.Foo = myFoo;
|
||||
if (myClass.Foo.x != 8)
|
||||
error
|
||||
|
|
|
|||
|
|
@ -10,10 +10,10 @@ function main()
|
|||
li_boost_shared_ptr.cvar.debug_shared = debug;
|
||||
|
||||
# Change loop count to run for a long time to monitor memory
|
||||
loopCount = 1 #5000
|
||||
loopCount = 1; #5000
|
||||
for i=0:loopCount,
|
||||
self.runtest();
|
||||
endif
|
||||
endfor
|
||||
|
||||
if (li_boost_shared_ptr.Klass.getTotal_count() != 0)
|
||||
error("Klass.total_count=", li_boost_shared_ptr.Klass.getTotal_count())
|
||||
|
|
@ -454,10 +454,10 @@ function runtest()
|
|||
|
||||
# templates
|
||||
pid = li_boost_shared_ptr.PairIntDouble(10, 20.2)
|
||||
if (pid.baseVal1 != 20 or pid.baseVal2 != 40.4)
|
||||
if (pid.baseVal1 != 20 || pid.baseVal2 != 40.4)
|
||||
error("Base values wrong")
|
||||
endif
|
||||
if (pid.val1 != 10 or pid.val2 != 20.2)
|
||||
if (pid.val1 != 10 || pid.val2 != 20.2)
|
||||
error("Derived Values wrong")
|
||||
endif
|
||||
endfunction
|
||||
|
|
|
|||
55
Examples/test-suite/octave/li_std_string.i
Normal file
55
Examples/test-suite/octave/li_std_string.i
Normal file
|
|
@ -0,0 +1,55 @@
|
|||
%module li_std_string
|
||||
|
||||
%naturalvar A;
|
||||
|
||||
|
||||
%include <std_basic_string.i>
|
||||
%include <std_string.i>
|
||||
|
||||
|
||||
%inline %{
|
||||
|
||||
struct A : std::string
|
||||
{
|
||||
A(const std::string& s) : std::string(s)
|
||||
{
|
||||
}
|
||||
};
|
||||
|
||||
struct B
|
||||
{
|
||||
B(const std::string& s) : cname(0), name(s), a(s)
|
||||
{
|
||||
}
|
||||
|
||||
char *cname;
|
||||
std::string name;
|
||||
A a;
|
||||
|
||||
};
|
||||
|
||||
|
||||
const char* test_ccvalue(const char* x) {
|
||||
return x;
|
||||
}
|
||||
|
||||
char* test_cvalue(char* x) {
|
||||
return x;
|
||||
}
|
||||
|
||||
std::basic_string<char> test_value_basic1(std::basic_string<char> x) {
|
||||
return x;
|
||||
}
|
||||
|
||||
std::basic_string<char,std::char_traits<char> > test_value_basic2(std::basic_string<char,std::char_traits<char> > x) {
|
||||
return x;
|
||||
}
|
||||
|
||||
std::basic_string<char,std::char_traits<char>,std::allocator<char> > test_value_basic3(std::basic_string<char,std::char_traits<char>,std::allocator<char> > x) {
|
||||
return x;
|
||||
}
|
||||
|
||||
%}
|
||||
|
||||
%include ../li_std_string.i
|
||||
|
||||
|
|
@ -48,8 +48,8 @@ if (!strcmp(stest12("hello"),"hello"))
|
|||
error
|
||||
endif
|
||||
|
||||
c = complex(2,3)
|
||||
r = c.real
|
||||
c = complex(2,3);
|
||||
r = real(c);
|
||||
|
||||
if (ctest1(c) != r)
|
||||
error
|
||||
|
|
|
|||
|
|
@ -3,6 +3,6 @@ overload_rename
|
|||
|
||||
f = overload_rename.Foo(1);
|
||||
f = overload_rename.Foo(1,1);
|
||||
f = overload_rename.Foo_int(1,1);
|
||||
f = overload_rename.Foo_int(1,1,1);
|
||||
f = overload_rename.new_Foo_int(1,1);
|
||||
f = overload_rename.new_Foo_int(1,1,1);
|
||||
|
||||
|
|
|
|||
|
|
@ -13,22 +13,3 @@ if (a.ref_count() != 3)
|
|||
endif
|
||||
|
||||
|
||||
rca = b2.get_rca();
|
||||
b3 = B.create(rca);
|
||||
|
||||
if (a.ref_count() != 5)
|
||||
error("This program will crash... now")
|
||||
endif
|
||||
|
||||
|
||||
v = vector_A(2);
|
||||
v(0) = a;
|
||||
v(1) = a;
|
||||
|
||||
x = v(0);
|
||||
clear v;
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@ template_default_arg
|
|||
|
||||
|
||||
helloInt = template_default_arg.Hello_int();
|
||||
helloInt.foo(template_default_arg.Hello_int.hi);
|
||||
helloInt.foo(template_default_arg.Hello_int_hi);
|
||||
|
||||
|
||||
x = template_default_arg.X_int();
|
||||
|
|
@ -18,7 +18,7 @@ endif
|
|||
|
||||
|
||||
|
||||
y = template_default_arg.Y_unsigned()
|
||||
y = template_default_arg.Y_unsigned();
|
||||
if (y.meth(20.0, 200) != 200)
|
||||
error("Y_unsigned test 1 failed")
|
||||
endif
|
||||
|
|
@ -33,7 +33,7 @@ endif
|
|||
|
||||
x = template_default_arg.X_longlong();
|
||||
x = template_default_arg.X_longlong(20.0);
|
||||
x = template_default_arg.X_longlong(20.0, 200L);
|
||||
x = template_default_arg.X_longlong(20.0, 200);
|
||||
|
||||
|
||||
x = template_default_arg.X_int();
|
||||
|
|
@ -49,7 +49,7 @@ x = template_default_arg.X_hello_unsigned(20.0, template_default_arg.Hello_int()
|
|||
y = template_default_arg.Y_hello_unsigned();
|
||||
y.meth(20.0, template_default_arg.Hello_int());
|
||||
y.meth(template_default_arg.Hello_int());
|
||||
y.meth()
|
||||
y.meth();
|
||||
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -1,7 +1,5 @@
|
|||
template_type_namespace
|
||||
|
||||
if (!strcmp(typeinfo(foo()(0)),typeinfo("")))
|
||||
error
|
||||
endif
|
||||
assert(strcmp(foo()(1),"foo"));
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -228,6 +228,7 @@ This testcase tests operators for defines
|
|||
|
||||
|
||||
|
||||
#ifndef SWIGOCTAVE
|
||||
#ifdef __cplusplus
|
||||
|
||||
#define %mangle(...) #@__VA_ARGS__
|
||||
|
|
@ -245,6 +246,7 @@ inline const char* mangle ## #@__VA_ARGS__ () {
|
|||
}
|
||||
|
||||
#endif
|
||||
#endif
|
||||
|
||||
|
||||
#if defined (__cplusplus) \
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
from template_typedef import *
|
||||
|
||||
d = make_Identity_float()
|
||||
c = make_Identity_real()
|
||||
c = make_Identity_reald()
|
||||
|
||||
|
||||
try:
|
||||
|
|
@ -18,14 +18,14 @@ except:
|
|||
raise RuntimeError
|
||||
|
||||
try:
|
||||
f = make_Multiplies_real_real_real_real(c, c)
|
||||
f = make_Multiplies_reald_reald_reald_reald(c, c)
|
||||
a = f.this
|
||||
except:
|
||||
print f, "is not an instance"
|
||||
raise RuntimeError
|
||||
|
||||
try:
|
||||
g = make_Multiplies_float_float_real_real(d, c)
|
||||
g = make_Multiplies_float_float_reald_reald(d, c)
|
||||
a = g.this
|
||||
except:
|
||||
print g, "is not an instance"
|
||||
|
|
|
|||
|
|
@ -55,7 +55,7 @@
|
|||
|
||||
%}
|
||||
|
||||
#ifdef SWIGPYTHON
|
||||
#if defined(SWIGPYTHON)
|
||||
%extend_smart_pointer(RCPtr<A>);
|
||||
%template(RCPtr_A) RCPtr<A>;
|
||||
#endif
|
||||
|
|
@ -96,7 +96,7 @@
|
|||
|
||||
%}
|
||||
|
||||
#ifdef SWIGPYTHON
|
||||
#if defined(SWIGPYTHON) || defined(SWIGOCTAVE)
|
||||
|
||||
%include <std_vector.i>
|
||||
%template(vector_A) std::vector<RCPtr<A> >;
|
||||
|
|
|
|||
|
|
@ -1,14 +1,14 @@
|
|||
%module template_arg_replace
|
||||
|
||||
%warnfilter(SWIGWARN_RUBY_WRONG_NAME) Matrix<float, 3, 3>; /* Ruby, wrong class name */
|
||||
%warnfilter(SWIGWARN_RUBY_WRONG_NAME) test_Matrix<float, 3, 3>; /* Ruby, wrong class name */
|
||||
|
||||
%inline %{
|
||||
|
||||
template <typename T, int r, int c> class Matrix {
|
||||
template <typename T, int r, int c> class test_Matrix {
|
||||
public:
|
||||
void Func(const Matrix<T,r,c> &m) { };
|
||||
void Func(const test_Matrix<T,r,c> &m) { };
|
||||
};
|
||||
%}
|
||||
|
||||
%template (matrix33f) Matrix<float,3, 3>;
|
||||
%template (matrix33f) test_Matrix<float,3, 3>;
|
||||
|
||||
|
|
|
|||
|
|
@ -8,15 +8,15 @@
|
|||
//
|
||||
#if 0
|
||||
|
||||
#define real double
|
||||
#define reald double
|
||||
%{
|
||||
#define real double
|
||||
#define reald double
|
||||
%}
|
||||
|
||||
#else
|
||||
|
||||
%inline %{
|
||||
typedef double real;
|
||||
typedef double reald;
|
||||
%}
|
||||
|
||||
#endif
|
||||
|
|
@ -24,7 +24,7 @@
|
|||
|
||||
%inline %{
|
||||
|
||||
// typedef double real;
|
||||
// typedef double reald;
|
||||
|
||||
namespace vfncs {
|
||||
|
||||
|
|
@ -78,29 +78,29 @@
|
|||
};
|
||||
|
||||
template<>
|
||||
struct arith_traits< real, real >
|
||||
struct arith_traits< reald, reald >
|
||||
{
|
||||
|
||||
typedef real argument_type;
|
||||
typedef real result_type;
|
||||
typedef reald argument_type;
|
||||
typedef reald result_type;
|
||||
static const char* const arg_type;
|
||||
static const char* const res_type;
|
||||
};
|
||||
|
||||
template<>
|
||||
struct arith_traits< real, float >
|
||||
struct arith_traits< reald, float >
|
||||
{
|
||||
typedef float argument_type;
|
||||
typedef real result_type;
|
||||
typedef reald result_type;
|
||||
static const char* const arg_type;
|
||||
static const char* const res_type;
|
||||
};
|
||||
|
||||
template<>
|
||||
struct arith_traits< float, real >
|
||||
struct arith_traits< float, reald >
|
||||
{
|
||||
typedef float argument_type;
|
||||
typedef real result_type;
|
||||
typedef reald result_type;
|
||||
static const char* const arg_type;
|
||||
static const char* const res_type;
|
||||
};
|
||||
|
|
@ -124,14 +124,14 @@
|
|||
const char* const arith_traits< float, float >::arg_type = "float";
|
||||
const char* const arith_traits< float, float >::res_type = "float";
|
||||
|
||||
const char* const arith_traits< real, real >::arg_type = "real";
|
||||
const char* const arith_traits< real, real >::res_type = "real";
|
||||
const char* const arith_traits< reald, reald >::arg_type = "reald";
|
||||
const char* const arith_traits< reald, reald >::res_type = "reald";
|
||||
|
||||
const char* const arith_traits< real, float >::arg_type = "float";
|
||||
const char* const arith_traits< real, float >::res_type = "real";
|
||||
const char* const arith_traits< reald, float >::arg_type = "float";
|
||||
const char* const arith_traits< reald, float >::res_type = "reald";
|
||||
|
||||
const char* const arith_traits< float, real >::arg_type = "float";
|
||||
const char* const arith_traits< float, real >::res_type = "real";
|
||||
const char* const arith_traits< float, reald >::arg_type = "float";
|
||||
const char* const arith_traits< float, reald >::res_type = "reald";
|
||||
|
||||
#endif
|
||||
|
||||
|
|
@ -145,32 +145,32 @@ namespace vfncs {
|
|||
%template() arith_traits<float, float >;
|
||||
%template(make_Identity_float) make_Identity<float >;
|
||||
|
||||
%template(UnaryFunction_real_real) UnaryFunction<real, real >;
|
||||
%template(ArithUnaryFunction_real_real) ArithUnaryFunction<real, real >;
|
||||
%template(UnaryFunction_reald_reald) UnaryFunction<reald, reald >;
|
||||
%template(ArithUnaryFunction_reald_reald) ArithUnaryFunction<reald, reald >;
|
||||
|
||||
%template() unary_func_traits<real, real >;
|
||||
%template() arith_traits<real, real >;
|
||||
%template(make_Identity_real) make_Identity<real >;
|
||||
%template() unary_func_traits<reald, reald >;
|
||||
%template() arith_traits<reald, reald >;
|
||||
%template(make_Identity_reald) make_Identity<reald >;
|
||||
|
||||
/* [beazley] Added this part */
|
||||
%template() unary_func_traits<float,real>;
|
||||
%template(UnaryFunction_float_real) UnaryFunction<float,real>;
|
||||
%template(ArithUnaryFunction_float_real) ArithUnaryFunction<float,real>;
|
||||
%template() unary_func_traits<float,reald>;
|
||||
%template(UnaryFunction_float_reald) UnaryFunction<float,reald>;
|
||||
%template(ArithUnaryFunction_float_reald) ArithUnaryFunction<float,reald>;
|
||||
|
||||
/* */
|
||||
|
||||
%template() arith_traits<real, float >;
|
||||
%template() arith_traits<float, real >;
|
||||
%template() arith_traits<reald, float >;
|
||||
%template() arith_traits<float, reald >;
|
||||
%template() arith_traits<float, float >;
|
||||
|
||||
%template(make_Multiplies_float_float_real_real)
|
||||
make_Multiplies<float, float, real, real>;
|
||||
%template(make_Multiplies_float_float_reald_reald)
|
||||
make_Multiplies<float, float, reald, reald>;
|
||||
|
||||
%template(make_Multiplies_float_float_float_float)
|
||||
make_Multiplies<float, float, float, float>;
|
||||
|
||||
%template(make_Multiplies_real_real_real_real)
|
||||
make_Multiplies<real, real, real, real>;
|
||||
%template(make_Multiplies_reald_reald_reald_reald)
|
||||
make_Multiplies<reald, reald, reald, reald>;
|
||||
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@ typedef size_t MY_sizeT;
|
|||
typedef long MY_intT;
|
||||
typedef double MY_floatT;
|
||||
|
||||
class Array
|
||||
class test_Array
|
||||
{
|
||||
public:
|
||||
typedef MY_intT intT;
|
||||
|
|
@ -19,7 +19,7 @@ template <typename T>
|
|||
class ArrayIterator
|
||||
{
|
||||
public:
|
||||
typedef Array::intT intT;
|
||||
typedef test_Array::intT intT;
|
||||
};
|
||||
|
||||
|
||||
|
|
@ -27,13 +27,13 @@ template <typename T>
|
|||
class ArrayReverseIterator
|
||||
{
|
||||
public:
|
||||
typedef Array::intT intT;
|
||||
typedef test_Array::intT intT;
|
||||
};
|
||||
|
||||
|
||||
template <typename T>
|
||||
class ArrayPrimitiveT
|
||||
: public Array
|
||||
: public test_Array
|
||||
{
|
||||
public:
|
||||
typedef T ValueT;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue