Merged trunk up to revision 12551
git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/branches/szager-python-builtin@12552 626c5289-ae23-0410-ae9c-e8d60b6d4f22
This commit is contained in:
commit
93499e12af
160 changed files with 3204 additions and 1238 deletions
|
|
@ -269,7 +269,7 @@
|
|||
|
||||
const key_type& get_next_key(std::map< K, T >::iterator *swigiterator) {
|
||||
std::map< K, T >::iterator iter = *swigiterator;
|
||||
swigiterator++;
|
||||
(*swigiterator)++;
|
||||
return (*iter).first;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -162,7 +162,7 @@ private void* swigCPtr;
|
|||
private bool swigCMemOwn;
|
||||
|
||||
public this(void* cObject, bool ownCObject) {
|
||||
super($imdmodule.$dclassnameSmartPtrUpcast(cObject), ownCObject);
|
||||
super($imdmodule.$dclazznameSmartPtrUpcast(cObject), ownCObject);
|
||||
swigCPtr = cObject;
|
||||
swigCMemOwn = ownCObject;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -84,7 +84,7 @@ mixin $imdmodule.SwigOperatorDefinitions;
|
|||
private void* swigCPtr;
|
||||
|
||||
public this(void* cObject, bool ownCObject) {
|
||||
super($imdmodule.$dclassnameUpcast(cObject), ownCObject);
|
||||
super($imdmodule.$dclazznameUpcast(cObject), ownCObject);
|
||||
swigCPtr = cObject;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -68,8 +68,12 @@ char * typemaps instead:
|
|||
%typemap(in) TYPE &INPUT
|
||||
%{ $1 = ($1_ltype)$input; %}
|
||||
|
||||
%typemap(out) TYPE *INPUT, TYPE &INPUT ""
|
||||
|
||||
%typemap(freearg) TYPE *INPUT, TYPE &INPUT ""
|
||||
|
||||
%typemap(argout) TYPE *INPUT, TYPE &INPUT ""
|
||||
|
||||
%typemap(directorout) TYPE *INPUT
|
||||
%{ $result = ($1_ltype)&$input; %}
|
||||
|
||||
|
|
@ -95,7 +99,7 @@ INPUT_TYPEMAP(long, int64);
|
|||
INPUT_TYPEMAP(unsigned long, uint64);
|
||||
INPUT_TYPEMAP(long long, int64);
|
||||
INPUT_TYPEMAP(unsigned long long, uint64);
|
||||
INPUT_TYPEMAP(float, float);
|
||||
INPUT_TYPEMAP(float, float32);
|
||||
INPUT_TYPEMAP(double, float64);
|
||||
|
||||
#undef INPUT_TYPEMAP
|
||||
|
|
@ -181,6 +185,8 @@ char * typemaps instead:
|
|||
$1 = &temp;
|
||||
}
|
||||
|
||||
%typemap(out) TYPE *OUTPUT, TYPE &OUTPUT ""
|
||||
|
||||
%typemap(freearg) TYPE *OUTPUT, TYPE &OUTPUT ""
|
||||
|
||||
%typemap(argout) TYPE *OUTPUT
|
||||
|
|
@ -219,7 +225,7 @@ OUTPUT_TYPEMAP(long, int64);
|
|||
OUTPUT_TYPEMAP(unsigned long, uint64);
|
||||
OUTPUT_TYPEMAP(long long, int64);
|
||||
OUTPUT_TYPEMAP(unsigned long long, uint64);
|
||||
OUTPUT_TYPEMAP(float, float);
|
||||
OUTPUT_TYPEMAP(float, float32);
|
||||
OUTPUT_TYPEMAP(double, float64);
|
||||
|
||||
#undef OUTPUT_TYPEMAP
|
||||
|
|
@ -303,8 +309,12 @@ char * typemaps instead:
|
|||
$1 = ($1_ltype) $input->array;
|
||||
}
|
||||
|
||||
%typemap(out) TYPE *INOUT, TYPE &INOUT ""
|
||||
|
||||
%typemap(freearg) TYPE *INOUT, TYPE &INOUT ""
|
||||
|
||||
%typemap(argout) TYPE *INOUT, TYPE &INOUT ""
|
||||
|
||||
%typemap(directorout,warning="Need to provide TYPE *INOUT directorout typemap") TYPE *INOUT, TYPE &INOUT {
|
||||
}
|
||||
|
||||
|
|
@ -329,7 +339,7 @@ INOUT_TYPEMAP(long, int64);
|
|||
INOUT_TYPEMAP(unsigned long, uint64);
|
||||
INOUT_TYPEMAP(long long, int64);
|
||||
INOUT_TYPEMAP(unsigned long long, uint64);
|
||||
INOUT_TYPEMAP(float, float);
|
||||
INOUT_TYPEMAP(float, float32);
|
||||
INOUT_TYPEMAP(double, float64);
|
||||
|
||||
#undef INOUT_TYPEMAP
|
||||
|
|
|
|||
|
|
@ -66,8 +66,10 @@ or provide a %apply statement
|
|||
%enddef
|
||||
|
||||
// now the code
|
||||
SWIG_NUMBER_TYPEMAP(int); SWIG_NUMBER_TYPEMAP(unsigned int); SWIG_NUMBER_TYPEMAP(signed int);
|
||||
SWIG_NUMBER_TYPEMAP(unsigned char); SWIG_NUMBER_TYPEMAP(signed char);
|
||||
|
||||
SWIG_NUMBER_TYPEMAP(short); SWIG_NUMBER_TYPEMAP(unsigned short); SWIG_NUMBER_TYPEMAP(signed short);
|
||||
SWIG_NUMBER_TYPEMAP(int); SWIG_NUMBER_TYPEMAP(unsigned int); SWIG_NUMBER_TYPEMAP(signed int);
|
||||
SWIG_NUMBER_TYPEMAP(long); SWIG_NUMBER_TYPEMAP(unsigned long); SWIG_NUMBER_TYPEMAP(signed long);
|
||||
SWIG_NUMBER_TYPEMAP(float);
|
||||
SWIG_NUMBER_TYPEMAP(double);
|
||||
|
|
@ -345,6 +347,8 @@ for array handling
|
|||
// as well as defining typemaps for
|
||||
// fixed len arrays in & out, & variable length arrays in
|
||||
|
||||
SWIG_TYPEMAP_NUM_ARR(schar,signed char);
|
||||
SWIG_TYPEMAP_NUM_ARR(uchar,unsigned char);
|
||||
SWIG_TYPEMAP_NUM_ARR(int,int);
|
||||
SWIG_TYPEMAP_NUM_ARR(uint,unsigned int);
|
||||
SWIG_TYPEMAP_NUM_ARR(short,short);
|
||||
|
|
|
|||
|
|
@ -11,141 +11,91 @@
|
|||
// However, I think I'll wait until someone asks for it...
|
||||
// ------------------------------------------------------------------------
|
||||
|
||||
%include <exception.i>
|
||||
|
||||
%{
|
||||
#include <string>
|
||||
#include <vector>
|
||||
using std::string;
|
||||
using std::vector;
|
||||
%}
|
||||
|
||||
|
||||
%include <exception.i>
|
||||
%include <std_vector.i>
|
||||
|
||||
%naturalvar std::string;
|
||||
%naturalvar std::wstring;
|
||||
|
||||
namespace std {
|
||||
template <class charT> class basic_string {
|
||||
public:
|
||||
typedef charT *pointer;
|
||||
typedef charT &reference;
|
||||
typedef const charT &const_reference;
|
||||
typedef size_t size_type;
|
||||
typedef ptrdiff_t difference_type;
|
||||
basic_string();
|
||||
basic_string( charT *str );
|
||||
size_t size();
|
||||
charT operator []( int pos ) const;
|
||||
charT *c_str() const;
|
||||
basic_string<charT> &operator = ( const basic_string &ws );
|
||||
basic_string<charT> &operator = ( const charT *str );
|
||||
basic_string<charT> &append( const basic_string<charT> &other );
|
||||
basic_string<charT> &append( const charT *str );
|
||||
void push_back( charT c );
|
||||
void clear();
|
||||
void reserve( size_type t );
|
||||
void resize( size_type n, charT c = charT() );
|
||||
int compare( const basic_string<charT> &other ) const;
|
||||
int compare( const charT *str ) const;
|
||||
basic_string<charT> &insert( size_type pos,
|
||||
const basic_string<charT> &str );
|
||||
size_type find( const basic_string<charT> &other, int pos = 0 ) const;
|
||||
size_type find( charT c, int pos = 0 ) const;
|
||||
%extend {
|
||||
bool operator == ( const basic_string<charT> &other ) const {
|
||||
return self->compare( other ) == 0;
|
||||
}
|
||||
bool operator != ( const basic_string<charT> &other ) const {
|
||||
return self->compare( other ) != 0;
|
||||
}
|
||||
bool operator < ( const basic_string<charT> &other ) const {
|
||||
return self->compare( other ) == -1;
|
||||
}
|
||||
bool operator > ( const basic_string<charT> &other ) const {
|
||||
return self->compare( other ) == 1;
|
||||
}
|
||||
bool operator <= ( const basic_string<charT> &other ) const {
|
||||
return self->compare( other ) != 1;
|
||||
}
|
||||
bool operator >= ( const basic_string<charT> &other ) const {
|
||||
return self->compare( other ) != -1;
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
%template(string) basic_string<char>;
|
||||
%template(wstring) basic_string<wchar_t>;
|
||||
typedef basic_string<char> string;
|
||||
typedef basic_string<wchar_t> wstring;
|
||||
%naturalvar string;
|
||||
%naturalvar wstring;
|
||||
|
||||
class string;
|
||||
class wstring;
|
||||
|
||||
/* Overloading check */
|
||||
%typemap(in) string {
|
||||
/* %typemap(in) string */
|
||||
if (caml_ptr_check($input))
|
||||
$1.assign((char *)caml_ptr_val($input,0), caml_string_len($input));
|
||||
else
|
||||
SWIG_exception(SWIG_TypeError, "string expected");
|
||||
}
|
||||
|
||||
/* Overloading check */
|
||||
%typemap(in) string {
|
||||
if (caml_ptr_check($input))
|
||||
$1.assign((char *)caml_ptr_val($input,0),
|
||||
caml_string_len($input));
|
||||
else
|
||||
SWIG_exception(SWIG_TypeError, "string expected");
|
||||
}
|
||||
%typemap(in) const string & (std::string temp) {
|
||||
/* %typemap(in) const string & */
|
||||
if (caml_ptr_check($input)) {
|
||||
temp.assign((char *)caml_ptr_val($input,0), caml_string_len($input));
|
||||
$1 = &temp;
|
||||
} else {
|
||||
SWIG_exception(SWIG_TypeError, "string expected");
|
||||
}
|
||||
}
|
||||
|
||||
%typemap(in) const string & (std::string temp) {
|
||||
if (caml_ptr_check($input)) {
|
||||
temp.assign((char *)caml_ptr_val($input,0),
|
||||
caml_string_len($input));
|
||||
$1 = &temp;
|
||||
} else {
|
||||
SWIG_exception(SWIG_TypeError, "string expected");
|
||||
}
|
||||
}
|
||||
%typemap(in) string & (std::string temp) {
|
||||
/* %typemap(in) string & */
|
||||
if (caml_ptr_check($input)) {
|
||||
temp.assign((char *)caml_ptr_val($input,0), caml_string_len($input));
|
||||
$1 = &temp;
|
||||
} else {
|
||||
SWIG_exception(SWIG_TypeError, "string expected");
|
||||
}
|
||||
}
|
||||
|
||||
%typemap(in) string & (std::string temp) {
|
||||
if (caml_ptr_check($input)) {
|
||||
temp.assign((char *)caml_ptr_val($input,0),
|
||||
caml_string_len($input));
|
||||
$1 = &temp;
|
||||
} else {
|
||||
SWIG_exception(SWIG_TypeError, "string expected");
|
||||
}
|
||||
}
|
||||
%typemap(in) string * (std::string *temp) {
|
||||
/* %typemap(in) string * */
|
||||
if (caml_ptr_check($input)) {
|
||||
temp = new std::string((char *)caml_ptr_val($input,0), caml_string_len($input));
|
||||
$1 = temp;
|
||||
} else {
|
||||
SWIG_exception(SWIG_TypeError, "string expected");
|
||||
}
|
||||
}
|
||||
|
||||
%typemap(in) string * (std::string *temp) {
|
||||
if (caml_ptr_check($input)) {
|
||||
temp = new std::string((char *)caml_ptr_val($input,0),
|
||||
caml_string_len($input));
|
||||
$1 = temp;
|
||||
} else {
|
||||
SWIG_exception(SWIG_TypeError, "string expected");
|
||||
}
|
||||
}
|
||||
%typemap(free) string * (std::string *temp) {
|
||||
delete temp;
|
||||
}
|
||||
|
||||
%typemap(free) string * (std::string *temp) {
|
||||
delete temp;
|
||||
}
|
||||
%typemap(argout) string & {
|
||||
/* %typemap(argout) string & */
|
||||
swig_result = caml_list_append(swig_result,caml_val_string_len((*$1).c_str(), (*$1).size()));
|
||||
}
|
||||
|
||||
%typemap(argout) string & {
|
||||
caml_list_append(swig_result,caml_val_string_len((*$1).c_str(),
|
||||
(*$1).size()));
|
||||
}
|
||||
%typemap(directorout) string {
|
||||
/* %typemap(directorout) string */
|
||||
$result.assign((char *)caml_ptr_val($input,0), caml_string_len($input));
|
||||
}
|
||||
|
||||
%typemap(directorout) string {
|
||||
$result.assign((char *)caml_ptr_val($input,0),
|
||||
caml_string_len($input));
|
||||
}
|
||||
%typemap(out) string {
|
||||
/* %typemap(out) string */
|
||||
$result = caml_val_string_len($1.c_str(),$1.size());
|
||||
}
|
||||
|
||||
%typemap(out) string {
|
||||
$result = caml_val_string_len($1.c_str(),$1.size());
|
||||
}
|
||||
|
||||
%typemap(out) string * {
|
||||
%typemap(out) string * {
|
||||
/* %typemap(out) string * */
|
||||
$result = caml_val_string_len((*$1).c_str(),(*$1).size());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#ifdef ENABLE_CHARPTR_ARRAY
|
||||
char **c_charptr_array( const std::vector <string > &str_v );
|
||||
char **c_charptr_array( const std::vector <std::string > &str_v );
|
||||
|
||||
%{
|
||||
SWIGEXT char **c_charptr_array( const std::vector <string > &str_v ) {
|
||||
SWIGEXT char **c_charptr_array( const std::vector <std::string > &str_v ) {
|
||||
char **out = new char *[str_v.size() + 1];
|
||||
out[str_v.size()] = 0;
|
||||
for( int i = 0; i < str_v.size(); i++ ) {
|
||||
|
|
@ -157,7 +107,7 @@ char **c_charptr_array( const std::vector <string > &str_v );
|
|||
#endif
|
||||
|
||||
#ifdef ENABLE_STRING_VECTOR
|
||||
%template (StringVector) std::vector<string >;
|
||||
%template (StringVector) std::vector<std::string >;
|
||||
|
||||
%insert(ml) %{
|
||||
(* Some STL convenience items *)
|
||||
|
|
|
|||
|
|
@ -1,118 +1,135 @@
|
|||
open Pcaml ;;
|
||||
open Camlp4
|
||||
|
||||
module Id : Sig.Id =
|
||||
struct
|
||||
let name = "swigp4"
|
||||
let version = "0.1"
|
||||
end
|
||||
|
||||
module Make (Syntax : Sig.Camlp4Syntax) =
|
||||
struct
|
||||
open Sig
|
||||
include Syntax
|
||||
|
||||
let lap x y = x :: y
|
||||
let c_ify e @OCAMLLOC@ =
|
||||
match e with
|
||||
<:expr< $int:_$ >> -> <:expr< (C_int $e$) >>
|
||||
| <:expr< $str:_$ >> -> <:expr< (C_string $e$) >>
|
||||
| <:expr< $chr:_$ >> -> <:expr< (C_char $e$) >>
|
||||
| <:expr< $flo:_$ >> -> <:expr< (C_double $e$) >>
|
||||
| <:expr< True >> -> <:expr< (C_bool $e$) >>
|
||||
| <:expr< False >> -> <:expr< (C_bool $e$) >>
|
||||
| _ -> <:expr< $e$ >>
|
||||
let mk_list args @OCAMLLOC@ f =
|
||||
let rec mk_list_inner args @OCAMLLOC@ f =
|
||||
match args with
|
||||
[] -> <:expr< [] >>
|
||||
| x :: xs ->
|
||||
(let @OCAMLLOC@ = MLast.loc_of_expr x in
|
||||
<:expr< [ ($f x @OCAMLLOC@$) ] @ ($mk_list_inner xs @OCAMLLOC@ f$) >>) in
|
||||
match args with
|
||||
[] -> <:expr< (Obj.magic C_void) >>
|
||||
| [ a ] -> <:expr< (Obj.magic $f a @OCAMLLOC@$) >>
|
||||
| _ -> <:expr< (Obj.magic (C_list ($mk_list_inner args @OCAMLLOC@ f$))) >>
|
||||
let _loc = Loc.ghost
|
||||
let lap x y = x :: y
|
||||
let c_ify e loc =
|
||||
match e with
|
||||
<:expr< $int:_$ >> -> <:expr< (C_int $e$) >>
|
||||
| <:expr< $str:_$ >> -> <:expr< (C_string $e$) >>
|
||||
| <:expr< $chr:_$ >> -> <:expr< (C_char $e$) >>
|
||||
| <:expr< $flo:_$ >> -> <:expr< (C_double $e$) >>
|
||||
| <:expr< True >> -> <:expr< (C_bool $e$) >>
|
||||
| <:expr< False >> -> <:expr< (C_bool $e$) >>
|
||||
| _ -> <:expr< $e$ >>
|
||||
let mk_list args loc f =
|
||||
let rec mk_list_inner args loc f =
|
||||
match args with
|
||||
[] -> <:expr< [] >>
|
||||
| x :: xs ->
|
||||
(let loc = Ast.loc_of_expr x in
|
||||
<:expr< [ ($f x _loc$) ] @ ($mk_list_inner xs loc f$) >>) in
|
||||
match args with
|
||||
[] -> <:expr< (Obj.magic C_void) >>
|
||||
| [ a ] -> <:expr< (Obj.magic $f a _loc$) >>
|
||||
| _ -> <:expr< (Obj.magic (C_list ($mk_list_inner args loc f$))) >> ;;
|
||||
|
||||
EXTEND Gram
|
||||
GLOBAL: expr;
|
||||
|
||||
EXTEND
|
||||
expr:
|
||||
[ [ e1 = expr ; "'" ; "[" ; e2 = expr ; "]" ->
|
||||
<:expr< (invoke $e1$) "[]" (C_list [ $c_ify e2 @OCAMLLOC@$ ]) >>
|
||||
| e1 = expr ; "->" ; l = LIDENT ; "(" ; args = LIST0 (expr LEVEL "simple") SEP "," ; ")" ->
|
||||
<:expr< (invoke $e1$) $str:l$ ($mk_list args @OCAMLLOC@ c_ify$) >>
|
||||
| e1 = expr ; "->" ; u = UIDENT ; "(" ; args = LIST0 (expr LEVEL "simple") SEP "," ; ")" ->
|
||||
<:expr< (invoke $e1$) $str:u$ ($mk_list args @OCAMLLOC@ c_ify$) >>
|
||||
| e1 = expr ; "->" ; s = expr LEVEL "simple" ; "(" ; args = LIST0 (expr LEVEL "simple") SEP "," ; ")" ->
|
||||
<:expr< (invoke $e1$) $s$ ($mk_list args @OCAMLLOC@ c_ify$) >>
|
||||
| e1 = expr ; "'" ; "." ; "(" ; args = LIST0 (expr LEVEL "simple") SEP "," ; ")" ->
|
||||
<:expr< (invoke $e1$) "()" ($mk_list args @OCAMLLOC@ c_ify$) >>
|
||||
| e1 = expr ; "'" ; "->" ; l = LIDENT ; "(" ; args = LIST0 (expr LEVEL "simple") SEP "," ; ")" ->
|
||||
<:expr< (invoke ((invoke $e1$) "->" C_void)) $str:l$ ($mk_list args @OCAMLLOC@ c_ify$) >>
|
||||
| e1 = expr ; "'" ; "->" ; u = UIDENT ; "(" ; args = LIST0 (expr LEVEL "simple") SEP "," ; ")" ->
|
||||
<:expr< (invoke ((invoke $e1$) "->" C_void)) $str:u$ ($mk_list args @OCAMLLOC@ c_ify$) >>
|
||||
| e1 = expr ; "'" ; "->" ; s = expr LEVEL "simple" ; "(" ; args = LIST0 (expr LEVEL "simple") SEP "," ; ")" ->
|
||||
<:expr< (invoke ((invoke $e1$) "->" C_void)) $s$ ($mk_list args @OCAMLLOC@ c_ify$) >>
|
||||
| e1 = expr ; "'" ; "++" ->
|
||||
<:expr< (invoke $e1$) "++" C_void >>
|
||||
| e1 = expr ; "'" ; "--" ->
|
||||
<:expr< (invoke $e1$) "--" C_void >>
|
||||
| e1 = expr ; "'" ; "-" ; e2 = expr ->
|
||||
<:expr< (invoke $e1$) "-" (C_list [ $c_ify e2 @OCAMLLOC@$ ]) >>
|
||||
| e1 = expr ; "'" ; "+" ; e2 = expr -> <:expr< (invoke $e1$) "+" (C_list [ $c_ify e2 @OCAMLLOC@$ ]) >>
|
||||
| e1 = expr ; "'" ; "*" ; e2 = expr -> <:expr< (invoke $e1$) "*" (C_list [ $c_ify e2 @OCAMLLOC@$ ]) >>
|
||||
| "'" ; "&" ; e1 = expr ->
|
||||
<:expr< (invoke $e1$) "&" C_void >>
|
||||
| "'" ; "!" ; e1 = expr ->
|
||||
<:expr< (invoke $e1$) "!" C_void >>
|
||||
| "'" ; "~" ; e1 = expr ->
|
||||
<:expr< (invoke $e1$) "~" C_void >>
|
||||
| e1 = expr ; "'" ; "/" ; e2 = expr ->
|
||||
<:expr< (invoke $e1$) "/" (C_list [ $c_ify e2 @OCAMLLOC@$ ]) >>
|
||||
| e1 = expr ; "'" ; "%" ; e2 = expr ->
|
||||
<:expr< (invoke $e1$) "%" (C_list [ $c_ify e2 @OCAMLLOC@$ ]) >>
|
||||
| e1 = expr ; "'" ; "lsl" ; e2 = expr ->
|
||||
<:expr< (invoke $e1$) ("<" ^ "<") (C_list [ $c_ify e2 @OCAMLLOC@$ ]) >>
|
||||
| e1 = expr ; "'" ; "lsr" ; e2 = expr ->
|
||||
<:expr< (invoke $e1$) (">" ^ ">") (C_list [ $c_ify e2 @OCAMLLOC@$ ]) >>
|
||||
| e1 = expr ; "'" ; "<" ; e2 = expr ->
|
||||
<:expr< (invoke $e1$) "<" (C_list [ $c_ify e2 @OCAMLLOC@$ ]) >>
|
||||
| e1 = expr ; "'" ; "<=" ; e2 = expr ->
|
||||
<:expr< (invoke $e1$) "<=" (C_list [ $c_ify e2 @OCAMLLOC@$ ]) >>
|
||||
| e1 = expr ; "'" ; ">" ; e2 = expr ->
|
||||
<:expr< (invoke $e1$) ">" (C_list [ $c_ify e2 @OCAMLLOC@$ ]) >>
|
||||
| e1 = expr ; "'" ; ">=" ; e2 = expr ->
|
||||
<:expr< (invoke $e1$) ">=" (C_list [ $c_ify e2 @OCAMLLOC@$ ]) >>
|
||||
| e1 = expr ; "'" ; "==" ; e2 = expr ->
|
||||
<:expr< (invoke $e1$) "==" (C_list [ $c_ify e2 @OCAMLLOC@$ ]) >>
|
||||
| e1 = expr ; "'" ; "!=" ; e2 = expr ->
|
||||
<:expr< (invoke $e1$) "!=" (C_list [ $c_ify e2 @OCAMLLOC@$ ]) >>
|
||||
| e1 = expr ; "'" ; "&" ; e2 = expr ->
|
||||
<:expr< (invoke $e1$) "&" (C_list [ $c_ify e2 @OCAMLLOC@$ ]) >>
|
||||
| e1 = expr ; "'" ; "^" ; e2 = expr ->
|
||||
<:expr< (invoke $e1$) "^" (C_list [ $c_ify e2 @OCAMLLOC@$ ]) >>
|
||||
| e1 = expr ; "'" ; "|" ; e2 = expr ->
|
||||
<:expr< (invoke $e1$) "|" (C_list [ $c_ify e2 @OCAMLLOC@$ ]) >>
|
||||
| e1 = expr ; "'" ; "&&" ; e2 = expr ->
|
||||
<:expr< (invoke $e1$) "&&" (C_list [ $c_ify e2 @OCAMLLOC@$ ]) >>
|
||||
| e1 = expr ; "'" ; "||" ; e2 = expr ->
|
||||
<:expr< (invoke $e1$) "||" (C_list [ $c_ify e2 @OCAMLLOC@$ ]) >>
|
||||
| e1 = expr ; "'" ; "=" ; e2 = expr ->
|
||||
<:expr< (invoke $e1$) "=" (C_list [ $c_ify e2 @OCAMLLOC@$ ]) >>
|
||||
| e1 = expr ; "'" ; "+=" ; e2 = expr ->
|
||||
<:expr< (invoke $e1$) "+=" (C_list [ $c_ify e2 @OCAMLLOC@$ ]) >>
|
||||
| e1 = expr ; "'" ; "-=" ; e2 = expr ->
|
||||
<:expr< (invoke $e1$) "-=" (C_list [ $c_ify e2 @OCAMLLOC@$ ]) >>
|
||||
| e1 = expr ; "'" ; "*=" ; e2 = expr ->
|
||||
<:expr< (invoke $e1$) "*=" (C_list [ $c_ify e2 @OCAMLLOC@$ ]) >>
|
||||
| e1 = expr ; "'" ; "/=" ; e2 = expr ->
|
||||
<:expr< (invoke $e1$) "/=" (C_list [ $c_ify e2 @OCAMLLOC@$ ]) >>
|
||||
| e1 = expr ; "'" ; "%=" ; e2 = expr ->
|
||||
<:expr< (invoke $e1$) "%=" (C_list [ $c_ify e2 @OCAMLLOC@$ ]) >>
|
||||
| e1 = expr ; "'" ; "lsl" ; "=" ; e2 = expr ->
|
||||
<:expr< (invoke $e1$) ("<" ^ "<=") (C_list [ $c_ify e2 @OCAMLLOC@$ ]) >>
|
||||
| e1 = expr ; "'" ; "lsr" ; "=" ; e2 = expr ->
|
||||
<:expr< (invoke $e1$) (">" ^ ">=") (C_list [ $c_ify e2 @OCAMLLOC@$ ]) >>
|
||||
| e1 = expr ; "'" ; "&=" ; e2 = expr ->
|
||||
<:expr< (invoke $e1$) "&=" (C_list [ $c_ify e2 @OCAMLLOC@$ ]) >>
|
||||
| e1 = expr ; "'" ; "^=" ; e2 = expr ->
|
||||
<:expr< (invoke $e1$) "^=" (C_list [ $c_ify e2 @OCAMLLOC@$ ]) >>
|
||||
| e1 = expr ; "'" ; "|=" ; e2 = expr ->
|
||||
<:expr< (invoke $e1$) "|=" (C_list [ $c_ify e2 @OCAMLLOC@$ ]) >>
|
||||
| "'" ; e = expr -> c_ify e @OCAMLLOC@
|
||||
| c = expr ; "as" ; id = LIDENT -> <:expr< $lid:"get_" ^ id$ $c$ >>
|
||||
| c = expr ; "to" ; id = LIDENT -> <:expr< $uid:"C_" ^ id$ $c$ >>
|
||||
| "`" ; "`" ; l = LIDENT -> <:expr< C_enum `$lid:l$ >>
|
||||
| "`" ; "`" ; u = UIDENT -> <:expr< C_enum `$uid:u$ >>
|
||||
| f = expr ; "'" ; "(" ; args = LIST0 (expr LEVEL "simple") SEP "," ; ")" ->
|
||||
<:expr< $f$ ($mk_list args @OCAMLLOC@ c_ify$) >>
|
||||
] ] ;
|
||||
END ;;
|
||||
|
||||
expr: LEVEL "top"
|
||||
[ [ e1 = expr ; "'" ; "[" ; e2 = expr ; "]" ->
|
||||
<:expr< (invoke $e1$) "[]" (C_list [ $c_ify e2 _loc$ ]) >>
|
||||
| e1 = expr ; "->" ; l = LIDENT ; "(" ; args = LIST0 (expr LEVEL "simple") SEP "," ; ")" ->
|
||||
<:expr< (invoke $e1$) $str:l$ ($mk_list args _loc c_ify$) >>
|
||||
| e1 = expr ; "->" ; u = UIDENT ; "(" ; args = LIST0 (expr LEVEL "simple") SEP "," ; ")" ->
|
||||
<:expr< (invoke $e1$) $str:u$ ($mk_list args _loc c_ify$) >>
|
||||
| e1 = expr ; "->" ; s = expr LEVEL "simple" ; "(" ; args = LIST0 (expr LEVEL "simple") SEP "," ; ")" ->
|
||||
<:expr< (invoke $e1$) $s$ ($mk_list args _loc c_ify$) >>
|
||||
| e1 = expr ; "'" ; "." ; "(" ; args = LIST0 (expr LEVEL "simple") SEP "," ; ")" ->
|
||||
<:expr< (invoke $e1$) "()" ($mk_list args _loc c_ify$) >>
|
||||
| e1 = expr ; "'" ; "->" ; l = LIDENT ; "(" ; args = LIST0 (expr LEVEL "simple") SEP "," ; ")" ->
|
||||
<:expr< (invoke ((invoke $e1$) "->" C_void)) $str:l$ ($mk_list args _loc c_ify$) >>
|
||||
| e1 = expr ; "'" ; "->" ; u = UIDENT ; "(" ; args = LIST0 (expr LEVEL "simple") SEP "," ; ")" ->
|
||||
<:expr< (invoke ((invoke $e1$) "->" C_void)) $str:u$ ($mk_list args _loc c_ify$) >>
|
||||
| e1 = expr ; "'" ; "->" ; s = expr LEVEL "simple" ; "(" ; args = LIST0 (expr LEVEL "simple") SEP "," ; ")" ->
|
||||
<:expr< (invoke ((invoke $e1$) "->" C_void)) $s$ ($mk_list args _loc c_ify$) >>
|
||||
| e1 = expr ; "'" ; "++" ->
|
||||
<:expr< (invoke $e1$) "++" C_void >>
|
||||
| e1 = expr ; "'" ; "--" ->
|
||||
<:expr< (invoke $e1$) "--" C_void >>
|
||||
| e1 = expr ; "'" ; "-" ; e2 = expr ->
|
||||
<:expr< (invoke $e1$) "-" (C_list [ $c_ify e2 _loc$ ]) >>
|
||||
| e1 = expr ; "'" ; "+" ; e2 = expr -> <:expr< (invoke $e1$) "+" (C_list [ $c_ify e2 _loc$ ]) >>
|
||||
| e1 = expr ; "'" ; "*" ; e2 = expr -> <:expr< (invoke $e1$) "*" (C_list [ $c_ify e2 _loc$ ]) >>
|
||||
| "'" ; "&" ; e1 = expr ->
|
||||
<:expr< (invoke $e1$) "&" C_void >>
|
||||
| "'" ; "!" ; e1 = expr ->
|
||||
<:expr< (invoke $e1$) "!" C_void >>
|
||||
| "'" ; "~" ; e1 = expr ->
|
||||
<:expr< (invoke $e1$) "~" C_void >>
|
||||
| e1 = expr ; "'" ; "/" ; e2 = expr ->
|
||||
<:expr< (invoke $e1$) "/" (C_list [ $c_ify e2 _loc$ ]) >>
|
||||
| e1 = expr ; "'" ; "%" ; e2 = expr ->
|
||||
<:expr< (invoke $e1$) "%" (C_list [ $c_ify e2 _loc$ ]) >>
|
||||
| e1 = expr ; "'" ; "lsl" ; e2 = expr ->
|
||||
<:expr< (invoke $e1$) ("<" ^ "<") (C_list [ $c_ify e2 _loc$ ]) >>
|
||||
| e1 = expr ; "'" ; "lsr" ; e2 = expr ->
|
||||
<:expr< (invoke $e1$) (">" ^ ">") (C_list [ $c_ify e2 _loc$ ]) >>
|
||||
| e1 = expr ; "'" ; "<" ; e2 = expr ->
|
||||
<:expr< (invoke $e1$) "<" (C_list [ $c_ify e2 _loc$ ]) >>
|
||||
| e1 = expr ; "'" ; "<=" ; e2 = expr ->
|
||||
<:expr< (invoke $e1$) "<=" (C_list [ $c_ify e2 _loc$ ]) >>
|
||||
| e1 = expr ; "'" ; ">" ; e2 = expr ->
|
||||
<:expr< (invoke $e1$) ">" (C_list [ $c_ify e2 _loc$ ]) >>
|
||||
| e1 = expr ; "'" ; ">=" ; e2 = expr ->
|
||||
<:expr< (invoke $e1$) ">=" (C_list [ $c_ify e2 _loc$ ]) >>
|
||||
| e1 = expr ; "'" ; "==" ; e2 = expr ->
|
||||
<:expr< (invoke $e1$) "==" (C_list [ $c_ify e2 _loc$ ]) >>
|
||||
| e1 = expr ; "'" ; "!=" ; e2 = expr ->
|
||||
<:expr< (invoke $e1$) "!=" (C_list [ $c_ify e2 _loc$ ]) >>
|
||||
| e1 = expr ; "'" ; "&" ; e2 = expr ->
|
||||
<:expr< (invoke $e1$) "&" (C_list [ $c_ify e2 _loc$ ]) >>
|
||||
| e1 = expr ; "'" ; "^" ; e2 = expr ->
|
||||
<:expr< (invoke $e1$) "^" (C_list [ $c_ify e2 _loc$ ]) >>
|
||||
| e1 = expr ; "'" ; "|" ; e2 = expr ->
|
||||
<:expr< (invoke $e1$) "|" (C_list [ $c_ify e2 _loc$ ]) >>
|
||||
| e1 = expr ; "'" ; "&&" ; e2 = expr ->
|
||||
<:expr< (invoke $e1$) "&&" (C_list [ $c_ify e2 _loc$ ]) >>
|
||||
| e1 = expr ; "'" ; "||" ; e2 = expr ->
|
||||
<:expr< (invoke $e1$) "||" (C_list [ $c_ify e2 _loc$ ]) >>
|
||||
| e1 = expr ; "'" ; "=" ; e2 = expr ->
|
||||
<:expr< (invoke $e1$) "=" (C_list [ $c_ify e2 _loc$ ]) >>
|
||||
| e1 = expr ; "'" ; "+=" ; e2 = expr ->
|
||||
<:expr< (invoke $e1$) "+=" (C_list [ $c_ify e2 _loc$ ]) >>
|
||||
| e1 = expr ; "'" ; "-=" ; e2 = expr ->
|
||||
<:expr< (invoke $e1$) "-=" (C_list [ $c_ify e2 _loc$ ]) >>
|
||||
| e1 = expr ; "'" ; "*=" ; e2 = expr ->
|
||||
<:expr< (invoke $e1$) "*=" (C_list [ $c_ify e2 _loc$ ]) >>
|
||||
| e1 = expr ; "'" ; "/=" ; e2 = expr ->
|
||||
<:expr< (invoke $e1$) "/=" (C_list [ $c_ify e2 _loc$ ]) >>
|
||||
| e1 = expr ; "'" ; "%=" ; e2 = expr ->
|
||||
<:expr< (invoke $e1$) "%=" (C_list [ $c_ify e2 _loc$ ]) >>
|
||||
| e1 = expr ; "'" ; "lsl" ; "=" ; e2 = expr ->
|
||||
<:expr< (invoke $e1$) ("<" ^ "<=") (C_list [ $c_ify e2 _loc$ ]) >>
|
||||
| e1 = expr ; "'" ; "lsr" ; "=" ; e2 = expr ->
|
||||
<:expr< (invoke $e1$) (">" ^ ">=") (C_list [ $c_ify e2 _loc$ ]) >>
|
||||
| e1 = expr ; "'" ; "&=" ; e2 = expr ->
|
||||
<:expr< (invoke $e1$) "&=" (C_list [ $c_ify e2 _loc$ ]) >>
|
||||
| e1 = expr ; "'" ; "^=" ; e2 = expr ->
|
||||
<:expr< (invoke $e1$) "^=" (C_list [ $c_ify e2 _loc$ ]) >>
|
||||
| e1 = expr ; "'" ; "|=" ; e2 = expr ->
|
||||
<:expr< (invoke $e1$) "|=" (C_list [ $c_ify e2 _loc$ ]) >>
|
||||
| "'" ; e = expr -> c_ify e _loc
|
||||
| c = expr ; "as" ; id = LIDENT -> <:expr< $lid:"get_" ^ id$ $c$ >>
|
||||
| c = expr ; "to" ; id = LIDENT -> <:expr< $uid:"C_" ^ id$ $c$ >>
|
||||
| "`" ; "`" ; l = LIDENT -> <:expr< C_enum `$lid:l$ >>
|
||||
| "`" ; "`" ; u = UIDENT -> <:expr< C_enum `$uid:u$ >>
|
||||
| f = expr ; "'" ; "(" ; args = LIST0 (expr LEVEL "simple") SEP "," ; ")" ->
|
||||
<:expr< $f$ ($mk_list args _loc c_ify$) >>
|
||||
] ] ;
|
||||
END ;;
|
||||
|
||||
end
|
||||
|
||||
module M = Register.OCamlSyntaxExtension(Id)(Make)
|
||||
|
|
|
|||
|
|
@ -82,6 +82,17 @@
|
|||
}
|
||||
}
|
||||
|
||||
%typemap(in) char *& (char *temp) {
|
||||
/* %typemap(in) char *& */
|
||||
temp = (char*)caml_val_ptr($1,$descriptor);
|
||||
$1 = &temp;
|
||||
}
|
||||
|
||||
%typemap(argout) char *& {
|
||||
/* %typemap(argout) char *& */
|
||||
swig_result = caml_list_append(swig_result,caml_val_string_len(*$1, strlen(*$1)));
|
||||
}
|
||||
|
||||
#else
|
||||
|
||||
%typemap(in) SWIGTYPE {
|
||||
|
|
|
|||
|
|
@ -38,11 +38,6 @@
|
|||
// Include the unified typemap library
|
||||
%include <typemaps/swigtypemaps.swg>
|
||||
|
||||
|
||||
%typemap(constcode,noblock=1) int double {
|
||||
SWIG_Octave_SetConstant(module_ns,"$symname",octave_value($value));
|
||||
}
|
||||
|
||||
%typecheck(SWIG_TYPECHECK_SWIGOBJECT) SWIG_Object "$1 = (*$input).is_defined();";
|
||||
%typecheck(SWIG_TYPECHECK_SWIGOBJECT) octave_value_list "$1 = true;";
|
||||
|
||||
|
|
|
|||
|
|
@ -100,3 +100,9 @@
|
|||
#ifdef bind
|
||||
#undef bind
|
||||
#endif
|
||||
#ifdef access
|
||||
#undef access
|
||||
#endif
|
||||
#ifdef stat
|
||||
#undef stat
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -195,7 +195,7 @@ as follows :
|
|||
if (!SvIOK(tempsv)) {
|
||||
SWIG_croak("expected a integer reference");
|
||||
}
|
||||
dvalue = (bool) SvIV(tempsv);
|
||||
dvalue = SvIV(tempsv) ? true : false;
|
||||
$1 = &dvalue;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -106,12 +106,6 @@ namespace Swig {
|
|||
Director(zval* self) : swig_self(self) {
|
||||
}
|
||||
|
||||
~Director() {
|
||||
for (swig_ownership_map::iterator i = swig_owner.begin(); i != swig_owner.end(); i++) {
|
||||
swig_owner.erase(i);
|
||||
}
|
||||
}
|
||||
|
||||
bool swig_is_overridden_method(char *cname, char *lc_fname) {
|
||||
zval classname;
|
||||
zend_class_entry **ce;
|
||||
|
|
|
|||
|
|
@ -201,7 +201,7 @@
|
|||
return_value->type = IS_LONG;
|
||||
} else {
|
||||
char temp[256];
|
||||
sprintf(temp, "%lld", $1);
|
||||
sprintf(temp, "%lld", (long long)$1);
|
||||
ZVAL_STRING(return_value, temp, 1);
|
||||
}
|
||||
%}
|
||||
|
|
@ -212,7 +212,7 @@
|
|||
return_value->type = IS_LONG;
|
||||
} else {
|
||||
char temp[256];
|
||||
sprintf(temp, "%llu", $1);
|
||||
sprintf(temp, "%llu", (unsigned long long)$1);
|
||||
ZVAL_STRING(return_value, temp, 1);
|
||||
}
|
||||
%}
|
||||
|
|
@ -239,7 +239,7 @@
|
|||
return_value->type = IS_LONG;
|
||||
} else {
|
||||
char temp[256];
|
||||
sprintf(temp, "%lld", *$1);
|
||||
sprintf(temp, "%lld", (long long)(*$1));
|
||||
ZVAL_STRING(return_value, temp, 1);
|
||||
}
|
||||
%}
|
||||
|
|
@ -250,7 +250,7 @@
|
|||
return_value->type = IS_LONG;
|
||||
} else {
|
||||
char temp[256];
|
||||
sprintf(temp, "%llu", *$1);
|
||||
sprintf(temp, "%llu", (unsigned long long)(*$1));
|
||||
ZVAL_STRING(return_value, temp, 1);
|
||||
}
|
||||
%}
|
||||
|
|
@ -414,17 +414,17 @@
|
|||
%php_typecheck(unsigned int,SWIG_TYPECHECK_UINT32,IS_LONG)
|
||||
%php_typecheck(short,SWIG_TYPECHECK_INT16,IS_LONG)
|
||||
%php_typecheck(unsigned short,SWIG_TYPECHECK_UINT16,IS_LONG)
|
||||
%php_typecheck(long,SWIG_TYPECHECK_INT64,IS_LONG)
|
||||
%php_typecheck(unsigned long,SWIG_TYPECHECK_UINT64,IS_LONG)
|
||||
%php_typecheck(long,SWIG_TYPECHECK_INT32,IS_LONG)
|
||||
%php_typecheck(unsigned long,SWIG_TYPECHECK_UINT32,IS_LONG)
|
||||
%php_typecheck(long long,SWIG_TYPECHECK_INT64,IS_LONG)
|
||||
%php_typecheck(unsigned long long,SWIG_TYPECHECK_UINT64,IS_LONG)
|
||||
%php_typecheck(signed char,SWIG_TYPECHECK_INT8,IS_LONG)
|
||||
%php_typecheck(unsigned char,SWIG_TYPECHECK_UINT8,IS_LONG)
|
||||
%php_typecheck(size_t,SWIG_TYPECHECK_INT16,IS_LONG)
|
||||
%php_typecheck(enum SWIGTYPE,SWIG_TYPECHECK_INT8,IS_LONG)
|
||||
%php_typecheck(size_t,SWIG_TYPECHECK_SIZE,IS_LONG)
|
||||
%php_typecheck(enum SWIGTYPE,SWIG_TYPECHECK_INTEGER,IS_LONG)
|
||||
%php_typecheck(bool,SWIG_TYPECHECK_BOOL,IS_BOOL)
|
||||
%php_typecheck(float,SWIG_TYPECHECK_FLOAT,IS_DOUBLE)
|
||||
%php_typecheck(double,SWIG_TYPECHECK_BOOL,IS_DOUBLE)
|
||||
%php_typecheck(double,SWIG_TYPECHECK_DOUBLE,IS_DOUBLE)
|
||||
%php_typecheck(char,SWIG_TYPECHECK_CHAR,IS_STRING)
|
||||
|
||||
%typemap(typecheck,precedence=SWIG_TYPECHECK_STRING) char *, char *&, char []
|
||||
|
|
|
|||
|
|
@ -246,7 +246,7 @@ static swig_module_info *SWIG_Php_GetModule() {
|
|||
|
||||
TSRMLS_FETCH();
|
||||
|
||||
if (zend_get_constant(const_name, sizeof(const_name), pointer TSRMLS_CC)) {
|
||||
if (zend_get_constant(const_name, sizeof(const_name) - 1, pointer TSRMLS_CC)) {
|
||||
if (pointer->type == IS_LONG) {
|
||||
ret = (swig_module_info *) pointer->value.lval;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -24,76 +24,108 @@
|
|||
* its value can be changed by foo().
|
||||
* ----------------------------------------------------------------------------- */
|
||||
|
||||
%define double_typemap(TYPE)
|
||||
%typemap(in) TYPE *INPUT(TYPE temp)
|
||||
%define BOOL_TYPEMAP(TYPE)
|
||||
%typemap(in) TYPE *INPUT(TYPE temp), TYPE &INPUT(TYPE temp)
|
||||
%{
|
||||
convert_to_boolean_ex($input);
|
||||
temp = Z_LVAL_PP($input) ? true : false;
|
||||
$1 = &temp;
|
||||
%}
|
||||
%typemap(argout) TYPE *INPUT, TYPE &INPUT "";
|
||||
%typemap(in,numinputs=0) TYPE *OUTPUT(TYPE temp), TYPE &OUTPUT(TYPE temp) "$1 = &temp;";
|
||||
%typemap(argout,fragment="t_output_helper") TYPE *OUTPUT, TYPE &OUTPUT
|
||||
{
|
||||
zval *o;
|
||||
MAKE_STD_ZVAL(o);
|
||||
ZVAL_BOOL(o,temp$argnum);
|
||||
t_output_helper( &$result, o );
|
||||
}
|
||||
%typemap(in) TYPE *REFERENCE (TYPE lvalue), TYPE &REFERENCE (TYPE lvalue)
|
||||
%{
|
||||
convert_to_boolean_ex($input);
|
||||
lvalue = (*$input)->value.lval ? true : false;
|
||||
$1 = &lvalue;
|
||||
%}
|
||||
%typemap(argout) TYPE *REFERENCE, TYPE &REFERENCE
|
||||
%{
|
||||
(*$arg)->value.lval = lvalue$argnum ? true : false;
|
||||
(*$arg)->type = IS_BOOL;
|
||||
%}
|
||||
%enddef
|
||||
|
||||
%define DOUBLE_TYPEMAP(TYPE)
|
||||
%typemap(in) TYPE *INPUT(TYPE temp), TYPE &INPUT(TYPE temp)
|
||||
%{
|
||||
convert_to_double_ex($input);
|
||||
temp = (TYPE) Z_DVAL_PP($input);
|
||||
$1 = &temp;
|
||||
%}
|
||||
%typemap(argout) TYPE *INPUT "";
|
||||
%typemap(in,numinputs=0) TYPE *OUTPUT(TYPE temp) "$1 = &temp;";
|
||||
%typemap(argout,fragment="t_output_helper") TYPE *OUTPUT
|
||||
%typemap(argout) TYPE *INPUT, TYPE &INPUT "";
|
||||
%typemap(in,numinputs=0) TYPE *OUTPUT(TYPE temp), TYPE &OUTPUT(TYPE temp) "$1 = &temp;";
|
||||
%typemap(argout,fragment="t_output_helper") TYPE *OUTPUT, TYPE &OUTPUT
|
||||
{
|
||||
zval *o;
|
||||
MAKE_STD_ZVAL(o);
|
||||
ZVAL_DOUBLE(o,temp$argnum);
|
||||
t_output_helper( &$result, o );
|
||||
}
|
||||
%typemap(in) TYPE *REFERENCE (TYPE dvalue)
|
||||
%typemap(in) TYPE *REFERENCE (TYPE dvalue), TYPE &REFERENCE (TYPE dvalue)
|
||||
%{
|
||||
convert_to_double_ex($input);
|
||||
dvalue = (TYPE) (*$input)->value.dval;
|
||||
$1 = &dvalue;
|
||||
%}
|
||||
%typemap(argout) TYPE *REFERENCE
|
||||
%typemap(argout) TYPE *REFERENCE, TYPE &REFERENCE
|
||||
%{
|
||||
$1->value.dval = (double)(lvalue$argnum);
|
||||
$1->type = IS_DOUBLE;
|
||||
%}
|
||||
%enddef
|
||||
|
||||
%define int_typemap(TYPE)
|
||||
%typemap(in) TYPE *INPUT(TYPE temp)
|
||||
%define INT_TYPEMAP(TYPE)
|
||||
%typemap(in) TYPE *INPUT(TYPE temp), TYPE &INPUT(TYPE temp)
|
||||
%{
|
||||
convert_to_long_ex($input);
|
||||
temp = (TYPE) Z_LVAL_PP($input);
|
||||
$1 = &temp;
|
||||
%}
|
||||
%typemap(argout) TYPE *INPUT "";
|
||||
%typemap(in,numinputs=0) TYPE *OUTPUT(TYPE temp) "$1 = &temp;";
|
||||
%typemap(argout,fragment="t_output_helper") TYPE *OUTPUT
|
||||
%typemap(argout) TYPE *INPUT, TYPE &INPUT "";
|
||||
%typemap(in,numinputs=0) TYPE *OUTPUT(TYPE temp), TYPE &OUTPUT(TYPE temp) "$1 = &temp;";
|
||||
%typemap(argout,fragment="t_output_helper") TYPE *OUTPUT, TYPE &OUTPUT
|
||||
{
|
||||
zval *o;
|
||||
MAKE_STD_ZVAL(o);
|
||||
ZVAL_LONG(o,temp$argnum);
|
||||
t_output_helper( &$result, o );
|
||||
}
|
||||
%typemap(in) TYPE *REFERENCE (TYPE lvalue)
|
||||
%typemap(in) TYPE *REFERENCE (TYPE lvalue), TYPE &REFERENCE (TYPE lvalue)
|
||||
%{
|
||||
convert_to_long_ex($input);
|
||||
lvalue = (TYPE) (*$input)->value.lval;
|
||||
$1 = &lvalue;
|
||||
%}
|
||||
%typemap(argout) TYPE *REFERENCE
|
||||
%typemap(argout) TYPE *REFERENCE, TYPE &REFERENCE
|
||||
%{
|
||||
(*$arg)->value.lval = (long)(lvalue$argnum);
|
||||
(*$arg)->type = IS_LONG;
|
||||
%}
|
||||
%enddef
|
||||
|
||||
double_typemap(float);
|
||||
double_typemap(double);
|
||||
BOOL_TYPEMAP(bool);
|
||||
|
||||
int_typemap(int);
|
||||
int_typemap(short);
|
||||
int_typemap(long);
|
||||
int_typemap(unsigned int);
|
||||
int_typemap(unsigned short);
|
||||
int_typemap(unsigned long);
|
||||
int_typemap(unsigned char);
|
||||
DOUBLE_TYPEMAP(float);
|
||||
DOUBLE_TYPEMAP(double);
|
||||
|
||||
int_typemap(long long);
|
||||
INT_TYPEMAP(int);
|
||||
INT_TYPEMAP(short);
|
||||
INT_TYPEMAP(long);
|
||||
INT_TYPEMAP(unsigned int);
|
||||
INT_TYPEMAP(unsigned short);
|
||||
INT_TYPEMAP(unsigned long);
|
||||
INT_TYPEMAP(unsigned char);
|
||||
INT_TYPEMAP(signed char);
|
||||
|
||||
INT_TYPEMAP(long long);
|
||||
%typemap(argout,fragment="t_output_helper") long long *OUTPUT
|
||||
{
|
||||
zval *o;
|
||||
|
|
@ -102,7 +134,7 @@ int_typemap(long long);
|
|||
ZVAL_LONG(o, temp$argnum);
|
||||
} else {
|
||||
char temp[256];
|
||||
sprintf(temp, "%lld", temp$argnum);
|
||||
sprintf(temp, "%lld", (long long)temp$argnum);
|
||||
ZVAL_STRING(o, temp, 1);
|
||||
}
|
||||
t_output_helper( &$result, o );
|
||||
|
|
@ -119,7 +151,7 @@ int_typemap(long long);
|
|||
(*$arg)->type = IS_LONG;
|
||||
} else {
|
||||
char temp[256];
|
||||
sprintf(temp, "%lld", lvalue$argnum);
|
||||
sprintf(temp, "%lld", (long long)lvalue$argnum);
|
||||
ZVAL_STRING((*$arg), temp, 1);
|
||||
}
|
||||
%}
|
||||
|
|
@ -130,11 +162,11 @@ int_typemap(long long);
|
|||
($result)->type = IS_LONG;
|
||||
} else {
|
||||
char temp[256];
|
||||
sprintf(temp, "%lld", *arg$argnum);
|
||||
sprintf(temp, "%lld", (long long)(*arg$argnum));
|
||||
ZVAL_STRING($result, temp, 1);
|
||||
}
|
||||
%}
|
||||
int_typemap(unsigned long long);
|
||||
INT_TYPEMAP(unsigned long long);
|
||||
%typemap(argout,fragment="t_output_helper") unsigned long long *OUTPUT
|
||||
{
|
||||
zval *o;
|
||||
|
|
@ -143,7 +175,7 @@ int_typemap(unsigned long long);
|
|||
ZVAL_LONG(o, temp$argnum);
|
||||
} else {
|
||||
char temp[256];
|
||||
sprintf(temp, "%llu", temp$argnum);
|
||||
sprintf(temp, "%llu", (unsigned long long)temp$argnum);
|
||||
ZVAL_STRING(o, temp, 1);
|
||||
}
|
||||
t_output_helper( &$result, o );
|
||||
|
|
@ -160,7 +192,7 @@ int_typemap(unsigned long long);
|
|||
(*$arg)->type = IS_LONG;
|
||||
} else {
|
||||
char temp[256];
|
||||
sprintf(temp, "%llu", lvalue$argnum);
|
||||
sprintf(temp, "%llu", (unsigned long long)lvalue$argnum);
|
||||
ZVAL_STRING((*$arg), temp, 1);
|
||||
}
|
||||
%}
|
||||
|
|
@ -171,11 +203,12 @@ int_typemap(unsigned long long);
|
|||
($result)->type = IS_LONG;
|
||||
} else {
|
||||
char temp[256];
|
||||
sprintf(temp, "%llu", *arg$argnum);
|
||||
sprintf(temp, "%llu", (unsigned long long)(*arg$argnum));
|
||||
ZVAL_STRING($result, temp, 1);
|
||||
}
|
||||
%}
|
||||
|
||||
%typemap(in) bool *INOUT = bool *INPUT;
|
||||
%typemap(in) float *INOUT = float *INPUT;
|
||||
%typemap(in) double *INOUT = double *INPUT;
|
||||
|
||||
|
|
@ -188,7 +221,9 @@ int_typemap(unsigned long long);
|
|||
%typemap(in) unsigned long *INOUT = unsigned long *INPUT;
|
||||
%typemap(in) unsigned char *INOUT = unsigned char *INPUT;
|
||||
%typemap(in) unsigned long long *INOUT = unsigned long long *INPUT;
|
||||
%typemap(in) signed char *INOUT = signed char *INPUT;
|
||||
|
||||
%typemap(in) bool &INOUT = bool *INPUT;
|
||||
%typemap(in) float &INOUT = float *INPUT;
|
||||
%typemap(in) double &INOUT = double *INPUT;
|
||||
|
||||
|
|
@ -203,7 +238,9 @@ int_typemap(unsigned long long);
|
|||
%typemap(in) unsigned char &INOUT = unsigned char *INPUT;
|
||||
%typemap(in) unsigned long long &INOUT = unsigned long long *INPUT;
|
||||
%typemap(in) unsigned long long &INPUT = unsigned long long *INPUT;
|
||||
%typemap(in) signed char &INOUT = signed char *INPUT;
|
||||
|
||||
%typemap(argout) bool *INOUT = bool *OUTPUT;
|
||||
%typemap(argout) float *INOUT = float *OUTPUT;
|
||||
%typemap(argout) double *INOUT= double *OUTPUT;
|
||||
|
||||
|
|
@ -215,7 +252,9 @@ int_typemap(unsigned long long);
|
|||
%typemap(argout) unsigned long *INOUT = unsigned long *OUTPUT;
|
||||
%typemap(argout) unsigned char *INOUT = unsigned char *OUTPUT;
|
||||
%typemap(argout) unsigned long long *INOUT = unsigned long long *OUTPUT;
|
||||
%typemap(argout) signed char *INOUT = signed char *OUTPUT;
|
||||
|
||||
%typemap(argout) bool &INOUT = bool *OUTPUT;
|
||||
%typemap(argout) float &INOUT = float *OUTPUT;
|
||||
%typemap(argout) double &INOUT= double *OUTPUT;
|
||||
|
||||
|
|
@ -227,6 +266,7 @@ int_typemap(unsigned long long);
|
|||
%typemap(argout) unsigned long &INOUT = unsigned long *OUTPUT;
|
||||
%typemap(argout) unsigned char &INOUT = unsigned char *OUTPUT;
|
||||
%typemap(argout) unsigned long long &INOUT = unsigned long long *OUTPUT;
|
||||
%typemap(argout) signed char &INOUT = signed char *OUTPUT;
|
||||
|
||||
%typemap(in) char INPUT[ANY] ( char temp[$1_dim0] )
|
||||
%{
|
||||
|
|
|
|||
|
|
@ -404,11 +404,11 @@ namespace Swig {
|
|||
}
|
||||
|
||||
/* methods to implement pseudo protected director members */
|
||||
virtual bool swig_get_inner(const char* /* protected_method_name */) const {
|
||||
virtual bool swig_get_inner(const char* /* swig_protected_method_name */) const {
|
||||
return true;
|
||||
}
|
||||
|
||||
virtual void swig_set_inner(const char* /* protected_method_name */, bool /* val */) const {
|
||||
virtual void swig_set_inner(const char* /* swig_protected_method_name */, bool /* swig_val */) const {
|
||||
}
|
||||
|
||||
/* ownership management */
|
||||
|
|
|
|||
|
|
@ -124,7 +124,8 @@ PYTHONBN(zip);
|
|||
*/
|
||||
PYTHONBN(True);
|
||||
PYTHONBN(False);
|
||||
PYTHONBN(None);
|
||||
|
||||
PYTHONKW(None);
|
||||
|
||||
|
||||
/*
|
||||
|
|
|
|||
|
|
@ -58,6 +58,11 @@ struct timeval rb_time_timeval(VALUE);
|
|||
$1 = NUM2LONG(rb_funcall($input, rb_intern("tv_sec"), 0));
|
||||
}
|
||||
|
||||
%typemap(typecheck) time_t
|
||||
{
|
||||
$1 = (NIL_P($input) || TYPE(rb_funcall($input, rb_intern("respond_to?"), 1, ID2SYM(rb_intern("tv_sec")))) == T_TRUE);
|
||||
}
|
||||
|
||||
%typemap(out) time_t
|
||||
{
|
||||
$result = rb_time_new($1, 0);
|
||||
|
|
|
|||
|
|
@ -20,12 +20,13 @@
|
|||
%}
|
||||
|
||||
//
|
||||
// Common code for supporting the STD C++ namespace
|
||||
// Common code for supporting the C++ std namespace
|
||||
//
|
||||
|
||||
%{
|
||||
#include <string>
|
||||
#include <stdexcept>
|
||||
#include <stddef.h>
|
||||
%}
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -40,11 +40,7 @@ SWIG_AsPtr_dec(String)(SWIG_Object obj, String **val)
|
|||
SWIGINTERNINLINE SWIG_Object
|
||||
SWIG_From_dec(String)(const String& s)
|
||||
{
|
||||
if (s.size()) {
|
||||
return SWIG_FromCharPtrAndSize(s.data(), s.size());
|
||||
} else {
|
||||
return SWIG_FromCharPtrAndSize(s.c_str(), 0);
|
||||
}
|
||||
return SWIG_FromCharPtrAndSize(s.data(), s.size());
|
||||
}
|
||||
}
|
||||
%enddef
|
||||
|
|
|
|||
|
|
@ -206,7 +206,7 @@
|
|||
/* typecheck */
|
||||
|
||||
%typemap(typecheck,noblock=1,precedence=StringCode,
|
||||
fragment=#SWIG_AsCharPtr) Char *, Char const*& {
|
||||
fragment=#SWIG_AsCharPtr) Char *, const Char *, Char const*& {
|
||||
int res = SWIG_AsCharPtr($input, 0, 0);
|
||||
$1 = SWIG_CheckState(res);
|
||||
}
|
||||
|
|
@ -351,7 +351,7 @@
|
|||
%typemap(typecheck,noblock=1,precedence=StringCode,
|
||||
fragment=#SWIG_AsCharArray)
|
||||
Char [ANY], const Char[ANY] {
|
||||
int res = SWIG_AsCharArray($input, (Char *)0, 0);
|
||||
int res = SWIG_AsCharArray($input, (Char *)0, $1_dim0);
|
||||
$1 = SWIG_CheckState(res);
|
||||
}
|
||||
|
||||
|
|
@ -577,8 +577,6 @@ SWIG_AsVal_dec(Char)(SWIG_Object obj, Char *val)
|
|||
}
|
||||
}
|
||||
|
||||
%typemaps_asvalfromn(CharCode, Char);
|
||||
|
||||
%_typemap_string(StringCode,
|
||||
Char,
|
||||
SWIG_AsCharPtrAndSize,
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue