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>
|
||||
%}
|
||||
|
||||
namespace std {
|
||||
|
||||
// use "const string &" typemaps for wrapping member strings
|
||||
%naturalvar string;
|
||||
|
||||
class string;
|
||||
|
||||
%typemap(ctype) string "char *"
|
||||
%typemap(ctype) const string & "char *"
|
||||
%typemap(couttype) string "char *"
|
||||
%typemap(couttype) const string & "char *"
|
||||
|
||||
%typemap(in) string {
|
||||
if ($input) {
|
||||
$1.assign($input);
|
||||
}
|
||||
else {
|
||||
$1.resize(0);
|
||||
}
|
||||
}
|
||||
|
||||
%typemap(in) const string & {
|
||||
if ($input) {
|
||||
$1 = new std::string($input);
|
||||
}
|
||||
else {
|
||||
$1 = new std::string();
|
||||
$1->resize(0);
|
||||
}
|
||||
}
|
||||
|
||||
%typemap(freearg) const string & {
|
||||
if ($1)
|
||||
delete $1;
|
||||
}
|
||||
|
||||
%typemap(out) string, const string &, string * {
|
||||
const char *str = cppresult->c_str();
|
||||
size_t len = strlen(str);
|
||||
$result = (char *) malloc(len + 1);
|
||||
memcpy($result, str, len);
|
||||
$result[len] = '\0';
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
%{
|
||||
#include <string>
|
||||
%}
|
||||
|
||||
namespace std {
|
||||
|
||||
// use "const string &" typemaps for wrapping member strings
|
||||
%naturalvar string;
|
||||
|
||||
class string;
|
||||
|
||||
%typemap(ctype) string "char *"
|
||||
%typemap(ctype) const string & "char *"
|
||||
%typemap(couttype) string "char *"
|
||||
%typemap(couttype) const string & "char *"
|
||||
|
||||
%typemap(in) string {
|
||||
if ($input) {
|
||||
$1.assign($input);
|
||||
}
|
||||
else {
|
||||
$1.resize(0);
|
||||
}
|
||||
}
|
||||
|
||||
%typemap(in) const string & {
|
||||
if ($input) {
|
||||
$1 = new std::string($input);
|
||||
}
|
||||
else {
|
||||
$1 = new std::string();
|
||||
$1->resize(0);
|
||||
}
|
||||
}
|
||||
|
||||
%typemap(freearg) const string & {
|
||||
if ($1)
|
||||
delete $1;
|
||||
}
|
||||
|
||||
%typemap(out) string, const string &, string * {
|
||||
const char *str = cppresult.c_str();
|
||||
size_t len = strlen(str);
|
||||
$result = (char *) malloc(len + 1);
|
||||
memcpy($result, str, len);
|
||||
$result[len] = '\0';
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue