more cases

git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk/SWIG@5796 626c5289-ae23-0410-ae9c-e8d60b6d4f22
This commit is contained in:
Marcelo Matus 2004-03-29 06:01:39 +00:00
commit 2c5dc2113b
4 changed files with 79 additions and 1 deletions

View file

@ -1,25 +1,38 @@
%module lib_std_pair
%include std_pair.i
%include std_string.i
%include std_complex.i
%inline
%{
struct A
{
int val;
A(int v = 0): val(v)
{
}
};
struct B
{
};
%}
namespace std {
%template() pair<double, double>;
%template(String) basic_string<char>;
%template(IntPair) pair<int, int>;
%template(SIPair) pair<std::string, int>;
%template(CIPair) pair<std::complex<double>, int>;
%template(SIIPair) pair<std::pair<std::string, int>, int>;
%template(AIntPair) pair<A, int>;
%template(ABPair) pair<A, B>;
%template(IntAPair) pair<int, A>;
}
%std_comp_methods(std::pair<std::pair<std::string, int>, int>);
%apply std::pair<int,int> *INOUT {std::pair<int,int> *INOUT2};
@ -113,6 +126,11 @@ p_inoutd(std::pair<double, double> *INOUT) {
std::swap(INOUT->first, INOUT->second);
}
std::string
s_ident(const std::string& s) {
return s;
}
#if 0
std::pair<char, char>
p_ident(std::pair<char, char> p, const std::pair<char, char>& q) {
@ -143,6 +161,7 @@ std::pair<int, int>
}
#endif
%}

View file

@ -9,9 +9,28 @@ 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::string test_value(std::string x) {

View file

@ -2,6 +2,14 @@ import lib_std_string
x="hello"
if lib_std_string.test_ccvalue(x) != x:
raise RuntimeError, "bad string mapping"
if lib_std_string.test_cvalue(x) != x:
raise RuntimeError, "bad string mapping"
if lib_std_string.test_value(x) != x:
raise RuntimeError, "bad string mapping"
@ -34,3 +42,32 @@ if lib_std_string.test_value(a) != x:
if lib_std_string.test_const_reference(a) != x:
raise RuntimeError, "bad string mapping"
b = lib_std_string.string(" world")
if a + b != "hello world":
raise RuntimeError, "bad string mapping"
if a + " world" != "hello world":
raise RuntimeError, "bad string mapping"
if "hello" + b != "hello world":
raise RuntimeError, "bad string mapping"
c = "hello" + b
if c.find_last_of("l") != 9:
raise RuntimeError, "bad string mapping"
s = "hello world"
b = lib_std_string.B("hi")
b.name = "hello"
if b.name != "hello":
raise RuntimeError, "bad string mapping"
b.a = lib_std_string.A("hello")
if b.a != "hello":
raise RuntimeError, "bad string mapping"

View file

@ -196,6 +196,7 @@ if t.var_namet != 'hol\0\0':
if t.strlen('hile') != 4:
print t.strlen('hile')
raise RuntimeError, "bad string typemap"
if t.strlen('hil\0') != 4:
@ -224,6 +225,7 @@ if cvar.var_pchar != None:
cvar.var_pchar = ''
if cvar.var_pchar != '':
print '%c' % (cvar.var_pchar[0],)
raise RuntimeError, "bad char empty case"
cvar.var_pcharc = None
@ -251,6 +253,7 @@ if t.strlen(pc) != 4:
cvar.var_pchar = pc
if cvar.var_pchar != "hola":
print cvar.var_pchar
raise RuntimeError, "bad pointer case"
cvar.var_namet = pc