Fix for returning objects.
git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/branches/gsoc2008-maciekd@11109 626c5289-ae23-0410-ae9c-e8d60b6d4f22
This commit is contained in:
parent
d0ae20ec39
commit
4acb01b741
4 changed files with 63 additions and 87 deletions
|
|
@ -1,50 +1,50 @@
|
||||||
%{
|
%{
|
||||||
#include <string>
|
#include <string>
|
||||||
%}
|
%}
|
||||||
|
|
||||||
namespace std {
|
namespace std {
|
||||||
|
|
||||||
// use "const string &" typemaps for wrapping member strings
|
// use "const string &" typemaps for wrapping member strings
|
||||||
%naturalvar string;
|
%naturalvar string;
|
||||||
|
|
||||||
class string;
|
class string;
|
||||||
|
|
||||||
%typemap(ctype) string "char *"
|
%typemap(ctype) string "char *"
|
||||||
%typemap(ctype) const string & "char *"
|
%typemap(ctype) const string & "char *"
|
||||||
%typemap(couttype) string "char *"
|
%typemap(couttype) string "char *"
|
||||||
%typemap(couttype) const string & "char *"
|
%typemap(couttype) const string & "char *"
|
||||||
|
|
||||||
%typemap(in) string {
|
%typemap(in) string {
|
||||||
if ($input) {
|
if ($input) {
|
||||||
$1.assign($input);
|
$1.assign($input);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
$1.resize(0);
|
$1.resize(0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
%typemap(in) const string & {
|
%typemap(in) const string & {
|
||||||
if ($input) {
|
if ($input) {
|
||||||
$1 = new std::string($input);
|
$1 = new std::string($input);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
$1 = new std::string();
|
$1 = new std::string();
|
||||||
$1->resize(0);
|
$1->resize(0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
%typemap(freearg) const string & {
|
%typemap(freearg) const string & {
|
||||||
if ($1)
|
if ($1)
|
||||||
delete $1;
|
delete $1;
|
||||||
}
|
}
|
||||||
|
|
||||||
%typemap(out) string, const string &, string * {
|
%typemap(out) string, const string &, string * {
|
||||||
const char *str = cppresult->c_str();
|
const char *str = cppresult.c_str();
|
||||||
size_t len = strlen(str);
|
size_t len = strlen(str);
|
||||||
$result = (char *) malloc(len + 1);
|
$result = (char *) malloc(len + 1);
|
||||||
memcpy($result, str, len);
|
memcpy($result, str, len);
|
||||||
$result[len] = '\0';
|
$result[len] = '\0';
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -612,9 +612,7 @@ ready:
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
return_var_type = type;
|
return_var_type = type;
|
||||||
SwigType_add_pointer(return_var_type);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Wrapper_add_localv(wrapper, "cppresult", SwigType_str(return_var_type, 0), "cppresult", NIL);
|
Wrapper_add_localv(wrapper, "cppresult", SwigType_str(return_var_type, 0), "cppresult", NIL);
|
||||||
return_object = true;
|
return_object = true;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
32
Tools/config/config.guess
vendored
32
Tools/config/config.guess
vendored
|
|
@ -4,7 +4,7 @@
|
||||||
# 2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software Foundation,
|
# 2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software Foundation,
|
||||||
# Inc.
|
# Inc.
|
||||||
|
|
||||||
timestamp='2007-03-06'
|
timestamp='2006-07-02'
|
||||||
|
|
||||||
# This file is free software; you can redistribute it and/or modify it
|
# This file is free software; you can redistribute it and/or modify it
|
||||||
# under the terms of the GNU General Public License as published by
|
# under the terms of the GNU General Public License as published by
|
||||||
|
|
@ -161,7 +161,6 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
|
||||||
arm*) machine=arm-unknown ;;
|
arm*) machine=arm-unknown ;;
|
||||||
sh3el) machine=shl-unknown ;;
|
sh3el) machine=shl-unknown ;;
|
||||||
sh3eb) machine=sh-unknown ;;
|
sh3eb) machine=sh-unknown ;;
|
||||||
sh5el) machine=sh5le-unknown ;;
|
|
||||||
*) machine=${UNAME_MACHINE_ARCH}-unknown ;;
|
*) machine=${UNAME_MACHINE_ARCH}-unknown ;;
|
||||||
esac
|
esac
|
||||||
# The Operating System including object format, if it has switched
|
# The Operating System including object format, if it has switched
|
||||||
|
|
@ -781,7 +780,7 @@ EOF
|
||||||
i*:CYGWIN*:*)
|
i*:CYGWIN*:*)
|
||||||
echo ${UNAME_MACHINE}-pc-cygwin
|
echo ${UNAME_MACHINE}-pc-cygwin
|
||||||
exit ;;
|
exit ;;
|
||||||
*:MINGW*:*)
|
i*:MINGW*:*)
|
||||||
echo ${UNAME_MACHINE}-pc-mingw32
|
echo ${UNAME_MACHINE}-pc-mingw32
|
||||||
exit ;;
|
exit ;;
|
||||||
i*:windows32*:*)
|
i*:windows32*:*)
|
||||||
|
|
@ -791,15 +790,12 @@ EOF
|
||||||
i*:PW*:*)
|
i*:PW*:*)
|
||||||
echo ${UNAME_MACHINE}-pc-pw32
|
echo ${UNAME_MACHINE}-pc-pw32
|
||||||
exit ;;
|
exit ;;
|
||||||
*:Interix*:[3456]*)
|
x86:Interix*:[3456]*)
|
||||||
case ${UNAME_MACHINE} in
|
echo i586-pc-interix${UNAME_RELEASE}
|
||||||
x86)
|
exit ;;
|
||||||
echo i586-pc-interix${UNAME_RELEASE}
|
EM64T:Interix*:[3456]*)
|
||||||
exit ;;
|
echo x86_64-unknown-interix${UNAME_RELEASE}
|
||||||
EM64T | authenticamd)
|
exit ;;
|
||||||
echo x86_64-unknown-interix${UNAME_RELEASE}
|
|
||||||
exit ;;
|
|
||||||
esac ;;
|
|
||||||
[345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*)
|
[345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*)
|
||||||
echo i${UNAME_MACHINE}-pc-mks
|
echo i${UNAME_MACHINE}-pc-mks
|
||||||
exit ;;
|
exit ;;
|
||||||
|
|
@ -954,9 +950,6 @@ EOF
|
||||||
x86_64:Linux:*:*)
|
x86_64:Linux:*:*)
|
||||||
echo x86_64-unknown-linux-gnu
|
echo x86_64-unknown-linux-gnu
|
||||||
exit ;;
|
exit ;;
|
||||||
xtensa:Linux:*:*)
|
|
||||||
echo xtensa-unknown-linux-gnu
|
|
||||||
exit ;;
|
|
||||||
i*86:Linux:*:*)
|
i*86:Linux:*:*)
|
||||||
# The BFD linker knows what the default object file format is, so
|
# The BFD linker knows what the default object file format is, so
|
||||||
# first see if it will tell us. cd to the root directory to prevent
|
# first see if it will tell us. cd to the root directory to prevent
|
||||||
|
|
@ -1215,15 +1208,6 @@ EOF
|
||||||
SX-6:SUPER-UX:*:*)
|
SX-6:SUPER-UX:*:*)
|
||||||
echo sx6-nec-superux${UNAME_RELEASE}
|
echo sx6-nec-superux${UNAME_RELEASE}
|
||||||
exit ;;
|
exit ;;
|
||||||
SX-7:SUPER-UX:*:*)
|
|
||||||
echo sx7-nec-superux${UNAME_RELEASE}
|
|
||||||
exit ;;
|
|
||||||
SX-8:SUPER-UX:*:*)
|
|
||||||
echo sx8-nec-superux${UNAME_RELEASE}
|
|
||||||
exit ;;
|
|
||||||
SX-8R:SUPER-UX:*:*)
|
|
||||||
echo sx8r-nec-superux${UNAME_RELEASE}
|
|
||||||
exit ;;
|
|
||||||
Power*:Rhapsody:*:*)
|
Power*:Rhapsody:*:*)
|
||||||
echo powerpc-apple-rhapsody${UNAME_RELEASE}
|
echo powerpc-apple-rhapsody${UNAME_RELEASE}
|
||||||
exit ;;
|
exit ;;
|
||||||
|
|
|
||||||
16
Tools/config/config.sub
vendored
16
Tools/config/config.sub
vendored
|
|
@ -4,7 +4,7 @@
|
||||||
# 2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software Foundation,
|
# 2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software Foundation,
|
||||||
# Inc.
|
# Inc.
|
||||||
|
|
||||||
timestamp='2007-01-18'
|
timestamp='2006-09-20'
|
||||||
|
|
||||||
# This file is (in principle) common to ALL GNU software.
|
# This file is (in principle) common to ALL GNU software.
|
||||||
# The presence of a machine in this file suggests that SOME GNU software
|
# The presence of a machine in this file suggests that SOME GNU software
|
||||||
|
|
@ -245,12 +245,12 @@ case $basic_machine in
|
||||||
| bfin \
|
| bfin \
|
||||||
| c4x | clipper \
|
| c4x | clipper \
|
||||||
| d10v | d30v | dlx | dsp16xx \
|
| d10v | d30v | dlx | dsp16xx \
|
||||||
| fido | fr30 | frv \
|
| fr30 | frv \
|
||||||
| h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
|
| h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
|
||||||
| i370 | i860 | i960 | ia64 \
|
| i370 | i860 | i960 | ia64 \
|
||||||
| ip2k | iq2000 \
|
| ip2k | iq2000 \
|
||||||
| m32c | m32r | m32rle | m68000 | m68k | m88k \
|
| m32c | m32r | m32rle | m68000 | m68k | m88k \
|
||||||
| maxq | mb | microblaze | mcore | mep \
|
| maxq | mb | microblaze | mcore \
|
||||||
| mips | mipsbe | mipseb | mipsel | mipsle \
|
| mips | mipsbe | mipseb | mipsel | mipsle \
|
||||||
| mips16 \
|
| mips16 \
|
||||||
| mips64 | mips64el \
|
| mips64 | mips64el \
|
||||||
|
|
@ -324,7 +324,7 @@ case $basic_machine in
|
||||||
| clipper-* | craynv-* | cydra-* \
|
| clipper-* | craynv-* | cydra-* \
|
||||||
| d10v-* | d30v-* | dlx-* \
|
| d10v-* | d30v-* | dlx-* \
|
||||||
| elxsi-* \
|
| elxsi-* \
|
||||||
| f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \
|
| f30[01]-* | f700-* | fr30-* | frv-* | fx80-* \
|
||||||
| h8300-* | h8500-* \
|
| h8300-* | h8500-* \
|
||||||
| hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \
|
| hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \
|
||||||
| i*86-* | i860-* | i960-* | ia64-* \
|
| i*86-* | i860-* | i960-* | ia64-* \
|
||||||
|
|
@ -925,9 +925,6 @@ case $basic_machine in
|
||||||
basic_machine=sh-hitachi
|
basic_machine=sh-hitachi
|
||||||
os=-hms
|
os=-hms
|
||||||
;;
|
;;
|
||||||
sh5el)
|
|
||||||
basic_machine=sh5le-unknown
|
|
||||||
;;
|
|
||||||
sh64)
|
sh64)
|
||||||
basic_machine=sh64-unknown
|
basic_machine=sh64-unknown
|
||||||
;;
|
;;
|
||||||
|
|
@ -1222,7 +1219,7 @@ case $os in
|
||||||
| -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \
|
| -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \
|
||||||
| -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \
|
| -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \
|
||||||
| -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \
|
| -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \
|
||||||
| -skyos* | -haiku* | -rdos* | -toppers* | -drops*)
|
| -skyos* | -haiku* | -rdos* | -toppers*)
|
||||||
# Remember, each alternative MUST END IN *, to match a version number.
|
# Remember, each alternative MUST END IN *, to match a version number.
|
||||||
;;
|
;;
|
||||||
-qnx*)
|
-qnx*)
|
||||||
|
|
@ -1417,9 +1414,6 @@ case $basic_machine in
|
||||||
m68*-cisco)
|
m68*-cisco)
|
||||||
os=-aout
|
os=-aout
|
||||||
;;
|
;;
|
||||||
mep-*)
|
|
||||||
os=-elf
|
|
||||||
;;
|
|
||||||
mips*-cisco)
|
mips*-cisco)
|
||||||
os=-elf
|
os=-elf
|
||||||
;;
|
;;
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue