All of guile's interface files now use the scm interface. This should not affect any users. Swig generated code using the scm interface can be mixed with gh interface using user code. It does simplify maintenance of the guile swig code though.
86 lines
2.3 KiB
OpenEdge ABL
86 lines
2.3 KiB
OpenEdge ABL
/* -----------------------------------------------------------------------------
|
|
* std_string.i
|
|
*
|
|
* SWIG typemaps for std::string
|
|
* ----------------------------------------------------------------------------- */
|
|
|
|
// ------------------------------------------------------------------------
|
|
// std::string is typemapped by value
|
|
// This can prevent exporting methods which return a string
|
|
// in order for the user to modify it.
|
|
// However, I think I'll wait until someone asks for it...
|
|
// ------------------------------------------------------------------------
|
|
|
|
%include <exception.i>
|
|
|
|
%{
|
|
#include <string>
|
|
%}
|
|
|
|
namespace std {
|
|
|
|
%naturalvar string;
|
|
|
|
class string;
|
|
|
|
%typemap(typecheck) string = char *;
|
|
%typemap(typecheck) const string & = char *;
|
|
|
|
%typemap(in) string (char * tempptr) {
|
|
if (scm_is_string($input)) {
|
|
tempptr = SWIG_scm2str($input);
|
|
$1.assign(tempptr);
|
|
if (tempptr) SWIG_free(tempptr);
|
|
} else {
|
|
SWIG_exception(SWIG_TypeError, "string expected");
|
|
}
|
|
}
|
|
|
|
%typemap(in) const string & ($*1_ltype temp, char *tempptr) {
|
|
if (scm_is_string($input)) {
|
|
tempptr = SWIG_scm2str($input);
|
|
temp.assign(tempptr);
|
|
if (tempptr) SWIG_free(tempptr);
|
|
$1 = &temp;
|
|
} else {
|
|
SWIG_exception(SWIG_TypeError, "string expected");
|
|
}
|
|
}
|
|
|
|
%typemap(in) string * (char *tempptr) {
|
|
if (scm_is_string($input)) {
|
|
tempptr = SWIG_scm2str($input);
|
|
$1 = new $*1_ltype(tempptr);
|
|
if (tempptr) SWIG_free(tempptr);
|
|
} else {
|
|
SWIG_exception(SWIG_TypeError, "string expected");
|
|
}
|
|
}
|
|
|
|
%typemap(out) string {
|
|
$result = SWIG_str02scm($1.c_str());
|
|
}
|
|
|
|
%typemap(out) const string & {
|
|
$result = SWIG_str02scm($1->c_str());
|
|
}
|
|
|
|
%typemap(out) string * {
|
|
$result = SWIG_str02scm($1->c_str());
|
|
}
|
|
|
|
%typemap(varin) string {
|
|
if (scm_is_string($input)) {
|
|
char *tempptr = SWIG_scm2str($input);
|
|
$1.assign(tempptr);
|
|
if (tempptr) SWIG_free(tempptr);
|
|
} else {
|
|
SWIG_exception(SWIG_TypeError, "string expected");
|
|
}
|
|
}
|
|
|
|
%typemap(varout) string {
|
|
$result = SWIG_str02scm($1.c_str());
|
|
}
|
|
|
|
}
|