diff options
Diffstat (limited to 'Lib')
-rw-r--r-- | Lib/ocaml/mlheading.swg | 88 | ||||
-rw-r--r-- | Lib/ocaml/mliheading.swg | 20 | ||||
-rw-r--r-- | Lib/ocaml/ocaml.i | 4 | ||||
-rw-r--r-- | Lib/ocaml/ocaml.swg | 181 | ||||
-rw-r--r-- | Lib/ocaml/std_vector.i | 65 | ||||
-rw-r--r-- | Lib/ocaml/typecheck.i | 42 | ||||
-rw-r--r-- | Lib/ocaml/typemaps.i | 12 |
7 files changed, 205 insertions, 207 deletions
diff --git a/Lib/ocaml/mlheading.swg b/Lib/ocaml/mlheading.swg index b68fbf3f3..64cc9de60 100644 --- a/Lib/ocaml/mlheading.swg +++ b/Lib/ocaml/mlheading.swg @@ -1,3 +1,4 @@ +(* -*- tuareg -*- *) open Int32 open Int64 @@ -29,26 +30,75 @@ exception LabelNotFromThisEnum of c_obj let invoke obj = match obj with C_obj o -> o | _ -> raise (NotObject obj) let fnhelper fin f arg = let args = match arg with C_list l -> l | C_void -> [] | _ -> [ arg ] in - match f args with - [] -> C_void - | [ x ] -> (if fin then Gc.finalise - (fun x -> ignore ((invoke x) "~" C_void)) x) ; x - | lst -> C_list lst + match f args with + [] -> C_void + | [ x ] -> (if fin then Gc.finalise + (fun x -> ignore ((invoke x) "~" C_void)) x) ; x + | lst -> C_list lst + let rec get_int x = match x with - C_char c - | C_uchar c -> (int_of_char c) - | C_short s - | C_ushort s - | C_int s -> s - | C_uint u - | C_int32 u -> (Int32.to_int u) - | C_int64 u -> (Int64.to_int u) - | C_float f -> (int_of_float f) - | C_double d -> (int_of_float d) - | C_ptr (p,q) -> (Int64.to_int p) - | C_obj o -> (try (get_int (o "int" C_void)) - with _ -> (get_int (o "&" C_void))) - | _ -> raise (Failure "Can't convert to int") + C_bool b -> if b then 1 else 0 + | C_char c + | C_uchar c -> (int_of_char c) + | C_short s + | C_ushort s + | C_int s -> s + | C_uint u + | C_int32 u -> (Int32.to_int u) + | C_int64 u -> (Int64.to_int u) + | C_float f -> (int_of_float f) + | C_double d -> (int_of_float d) + | C_ptr (p,q) -> (Int64.to_int p) + | C_obj o -> (try (get_int (o "int" C_void)) + with _ -> (get_int (o "&" C_void))) + | _ -> raise (Failure "Can't convert to int") + +let rec get_float x = + match x with + C_char c + | C_uchar c -> (float_of_int (int_of_char c)) + | C_short s -> (float_of_int s) + | C_ushort s -> (float_of_int s) + | C_int s -> (float_of_int s) + | C_uint u + | C_int32 u -> (float_of_int (Int32.to_int u)) + | C_int64 u -> (float_of_int (Int64.to_int u)) + | C_float f -> f + | C_double d -> d + | C_obj o -> (try (get_float (o "float" C_void)) + with _ -> (get_float (o "double" C_void))) + | _ -> raise (Failure "Can't convert to float") + +let rec get_char x = + (char_of_int (get_int x)) + +let rec get_string x = + match x with + C_string str -> str + | _ -> raise (Failure "Can't convert to string") + +let rec get_bool x = + match x with + C_bool b -> b + | _ -> + (try if get_int x != 0 then true else false + with _ -> raise (Failure "Can't convert to bool")) + let addr_of obj = (invoke obj) "&" C_void let _ = Callback.register "caml_obj_ptr" addr_of + +let make_float f = C_float f +let make_double f = C_double f +let make_string s = C_string s +let make_bool b = C_bool b +let make_char c = C_char c +let make_char_i c = C_char (char_of_int c) +let make_uchar c = C_uchar c +let make_uchar_i c = C_uchar (char_of_int c) +let make_short i = C_short i +let make_ushort i = C_ushort i +let make_int i = C_int i +let make_uint i = C_uint (Int32.of_int i) +let make_int32 i = C_int32 (Int32.of_int i) +let make_int64 i = C_int64 (Int64.of_int i) diff --git a/Lib/ocaml/mliheading.swg b/Lib/ocaml/mliheading.swg index 3c525f985..1eba962e8 100644 --- a/Lib/ocaml/mliheading.swg +++ b/Lib/ocaml/mliheading.swg @@ -1,3 +1,4 @@ +(* -*- tuareg -*- *) type c_obj = C_void | C_bool of bool @@ -25,3 +26,22 @@ exception LabelNotFromThisEnum of c_obj val invoke : c_obj -> (string -> c_obj -> c_obj) val get_int : c_obj -> int +val get_float : c_obj -> float +val get_string : c_obj -> string +val get_char : c_obj -> char +val get_bool : c_obj -> bool + +val make_float : float -> c_obj +val make_double : float -> c_obj +val make_string : string -> c_obj +val make_bool : bool -> c_obj +val make_char : char -> c_obj +val make_char_i : int -> c_obj +val make_uchar : char -> c_obj +val make_uchar_i : int -> c_obj +val make_short : int -> c_obj +val make_ushort : int -> c_obj +val make_int : int -> c_obj +val make_uint : int -> c_obj +val make_int32 : int -> c_obj +val make_int64 : int -> c_obj diff --git a/Lib/ocaml/ocaml.i b/Lib/ocaml/ocaml.i index 3d543dc8b..d081e8d15 100644 --- a/Lib/ocaml/ocaml.i +++ b/Lib/ocaml/ocaml.i @@ -21,10 +21,6 @@ #define SWIG_malloc(size) swig_malloc(size, FUNC_NAME) #define SWIG_free(mem) free(mem) -/* Guile compatibility kludges */ -#define SCM_VALIDATE_VECTOR(argnum, value) (void)0 -#define SCM_VALIDATE_LIST(argnum, value) (void)0 - /* Read in standard typemaps. */ %include "swig.swg" %include "typemaps.i" diff --git a/Lib/ocaml/ocaml.swg b/Lib/ocaml/ocaml.swg index b91d14ca4..396539a99 100644 --- a/Lib/ocaml/ocaml.swg +++ b/Lib/ocaml/ocaml.swg @@ -24,44 +24,9 @@ extern "C" { #define C_string 15 #define C_enum 16 -struct custom_block_contents { - swig_type_info *type; - void *object; - char *delete_fn; -}; - -static void generic_delete_fn( value v ) { - CAMLparam1(v); - CAMLlocal1(x); - struct custom_block_contents *new_proxy; - value *deleter = NULL; - - new_proxy = (struct custom_block_contents *)(Data_custom_val(v)); - if( new_proxy->delete_fn ) - deleter = caml_named_value(new_proxy->delete_fn); - if( *deleter ) - x = callback( *deleter, v ); - free( new_proxy->delete_fn ); - CAMLreturn0; -} - -static struct custom_operations makeptr_custom_ops = { - "SWIG-Wrapped Object", - generic_delete_fn, - custom_compare_default, - custom_hash_default, - custom_serialize_default, - custom_deserialize_default -}; - -static value _wrap_delete_void( value v ) { - CAMLparam0(); - CAMLreturn(Val_unit); -} - /* Cast a pointer if possible; returns 1 if successful */ - static int + SWIGSTATIC int SWIG_Cast (void *source, swig_type_info *source_type, void **ptr, swig_type_info *dest_type) { @@ -101,9 +66,9 @@ static value _wrap_delete_void( value v ) { } } - static void caml_print_list( value v ); + SWIGSTATIC void caml_print_list( value v ); - static void caml_print_val( value v ) { + SWIGSTATIC void caml_print_val( value v ) { switch( Tag_val(v) ) { case C_bool: if( Bool_val(Field(v,0)) ) fprintf( stderr, "true " ); @@ -143,7 +108,7 @@ static value _wrap_delete_void( value v ) { for( i = 0; i < Wosize_val( Field(v,0) ); i++ ) caml_print_val( Field(Field(v,0),i) ); } - break; + break; case C_list: caml_print_list( Field(v,0) ); break; @@ -156,7 +121,7 @@ static value _wrap_delete_void( value v ) { } } - static void caml_print_list( value v ) { + SWIGSTATIC void caml_print_list( value v ) { CAMLparam1(v); while( v && Is_block(v) ) { fprintf( stderr, "[ " ); @@ -166,56 +131,56 @@ static value _wrap_delete_void( value v ) { } } -static value caml_list_nth( value lst, int n ) { - CAMLparam1(lst); - int i = 0; - while( i < n && lst && Is_block(lst) ) { - i++; lst = Field(lst,1); + SWIGSTATIC value caml_list_nth( value lst, int n ) { + CAMLparam1(lst); + int i = 0; + while( i < n && lst && Is_block(lst) ) { + i++; lst = Field(lst,1); + } + if( lst == Val_unit ) CAMLreturn(Val_unit); + else CAMLreturn(Field(lst,0)); } - if( lst == Val_unit ) CAMLreturn(Val_unit); - else CAMLreturn(Field(lst,0)); -} -static value caml_list_append( value lst, value elt ) { - CAMLparam2(lst,elt); - CAMLlocal3(v,vt,lh); - lh = Val_unit; - v = Val_unit; - - /* Appending C_void should have no effect */ - if( !Is_block(elt) ) return lst; + SWIGSTATIC value caml_list_append( value lst, value elt ) { + CAMLparam2(lst,elt); + CAMLlocal3(v,vt,lh); + lh = Val_unit; + v = Val_unit; + + /* Appending C_void should have no effect */ + if( !Is_block(elt) ) return lst; + + while( lst && Is_block(lst) ) { + if( v && v != Val_unit ) { + vt = alloc_tuple(2); + Store_field(v,1,vt); + v = vt; + } else { + v = lh = alloc_tuple(2); + } + Store_field(v,0,Field(lst,0)); + lst = Field(lst,1); + } - while( lst && Is_block(lst) ) { - if( v && v != Val_unit ) { + if( v && Is_block(v) ) { vt = alloc_tuple(2); Store_field(v,1,vt); v = vt; } else { v = lh = alloc_tuple(2); } - Store_field(v,0,Field(lst,0)); - lst = Field(lst,1); - } + Store_field(v,0,elt); + Store_field(v,1,Val_unit); - if( v && Is_block(v) ) { - vt = alloc_tuple(2); - Store_field(v,1,vt); - v = vt; - } else { - v = lh = alloc_tuple(2); + CAMLreturn(lh); } - Store_field(v,0,elt); - Store_field(v,1,Val_unit); - - CAMLreturn(lh); -} -static int caml_list_length( value lst ) { - CAMLparam1(lst); - int i = 0; - while( lst && Is_block(lst) ) { i++; lst = Field(lst,1); } - CAMLreturn(i); -} + SWIGSTATIC int caml_list_length( value lst ) { + CAMLparam1(lst); + int i = 0; + while( lst && Is_block(lst) ) { i++; lst = Field(lst,1); } + CAMLreturn(i); + } #ifdef __cplusplus namespace caml { @@ -226,17 +191,14 @@ static int caml_list_length( value lst ) { }; #endif -#ifdef __cplusplus - extern "C" -#endif - value caml_swig_alloc(int x,int y) { + SWIGSTATIC value caml_swig_alloc(int x,int y) { #ifdef __cplusplus using namespace caml; #endif return alloc(x,y); } - - static value caml_val_bool( int b ) { + + SWIGSTATIC value caml_val_bool( int b ) { CAMLparam0(); CAMLlocal1(bv); bv = caml_swig_alloc(1,C_bool); @@ -244,7 +206,7 @@ static int caml_list_length( value lst ) { CAMLreturn(bv); } - static value caml_val_char( char c ) { + SWIGSTATIC value caml_val_char( char c ) { CAMLparam0(); CAMLlocal1(cv); cv = caml_swig_alloc(1,C_char); @@ -252,7 +214,7 @@ static int caml_list_length( value lst ) { CAMLreturn(cv); } - static value caml_val_uchar( unsigned char uc ) { + SWIGSTATIC value caml_val_uchar( unsigned char uc ) { CAMLparam0(); CAMLlocal1(ucv); ucv = caml_swig_alloc(1,C_uchar); @@ -260,7 +222,7 @@ static int caml_list_length( value lst ) { CAMLreturn(ucv); } - static value caml_val_short( short s ) { + SWIGSTATIC value caml_val_short( short s ) { CAMLparam0(); CAMLlocal1(sv); sv = caml_swig_alloc(1,C_short); @@ -268,7 +230,7 @@ static int caml_list_length( value lst ) { CAMLreturn(sv); } - static value caml_val_ushort( unsigned short us ) { + SWIGSTATIC value caml_val_ushort( unsigned short us ) { CAMLparam0(); CAMLlocal1(usv); usv = caml_swig_alloc(1,C_ushort); @@ -276,7 +238,7 @@ static int caml_list_length( value lst ) { CAMLreturn(usv); } - static value caml_val_int( int i ) { + SWIGSTATIC value caml_val_int( int i ) { CAMLparam0(); CAMLlocal1(iv); iv = caml_swig_alloc(1,C_int); @@ -284,7 +246,7 @@ static int caml_list_length( value lst ) { CAMLreturn(iv); } - static value caml_val_uint( unsigned int ui ) { + SWIGSTATIC value caml_val_uint( unsigned int ui ) { CAMLparam0(); CAMLlocal1(uiv); uiv = caml_swig_alloc(1,C_int); @@ -292,7 +254,7 @@ static int caml_list_length( value lst ) { CAMLreturn(uiv); } - static value caml_val_long( long l ) { + SWIGSTATIC value caml_val_long( long l ) { CAMLparam0(); CAMLlocal1(lv); lv = caml_swig_alloc(1,C_int64); @@ -300,7 +262,7 @@ static int caml_list_length( value lst ) { CAMLreturn(lv); } - static value caml_val_ulong( unsigned long ul ) { + SWIGSTATIC value caml_val_ulong( unsigned long ul ) { CAMLparam0(); CAMLlocal1(ulv); ulv = caml_swig_alloc(1,C_int64); @@ -308,7 +270,7 @@ static int caml_list_length( value lst ) { CAMLreturn(ulv); } - static value caml_val_float( float f ) { + SWIGSTATIC value caml_val_float( float f ) { CAMLparam0(); CAMLlocal1(fv); fv = caml_swig_alloc(1,C_float); @@ -316,7 +278,7 @@ static int caml_list_length( value lst ) { CAMLreturn(fv); } - static value caml_val_double( double d ) { + SWIGSTATIC value caml_val_double( double d ) { CAMLparam0(); CAMLlocal1(fv); fv = caml_swig_alloc(1,C_double); @@ -324,7 +286,7 @@ static int caml_list_length( value lst ) { CAMLreturn(fv); } - static value caml_val_ptr( void *p, swig_type_info *info ) { + SWIGSTATIC value caml_val_ptr( void *p, swig_type_info *info ) { CAMLparam0(); CAMLlocal1(vv); vv = caml_swig_alloc(2,C_ptr); @@ -333,7 +295,7 @@ static int caml_list_length( value lst ) { CAMLreturn(vv); } - static value caml_val_string( char *p ) { + SWIGSTATIC value caml_val_string( char *p ) { CAMLparam0(); CAMLlocal1(vv); if( !p ) CAMLreturn(caml_val_ptr( (void *)p, 0 )); @@ -342,7 +304,7 @@ static int caml_list_length( value lst ) { CAMLreturn(vv); } - static value caml_val_string_len( char *p, int len ) { + SWIGSTATIC value caml_val_string_len( char *p, int len ) { CAMLparam0(); CAMLlocal1(vv); if( !p || len < 0 ) CAMLreturn(caml_val_ptr( (void *)p, 0 )); @@ -352,14 +314,14 @@ static int caml_list_length( value lst ) { CAMLreturn(vv); } - static value caml_val_obj( void *v, char *object_type ) { + SWIGSTATIC value caml_val_obj( void *v, char *object_type ) { CAMLparam0(); CAMLreturn(callback2(*caml_named_value("caml_create_object_fn"), caml_val_ptr(v,SWIG_TypeQuery(object_type)), copy_string(object_type))); } - static long caml_long_val_full( value v, char *name ) { + SWIGSTATIC long caml_long_val_full( value v, char *name ) { CAMLparam1(v); if( !Is_block(v) ) return 0; @@ -395,11 +357,11 @@ static int caml_list_length( value lst ) { } } - static long caml_long_val( value v ) { + SWIGSTATIC long caml_long_val( value v ) { return caml_long_val_full(v,0); } - static double caml_double_val( value v ) { + SWIGSTATIC double caml_double_val( value v ) { CAMLparam1(v); if( !Is_block(v) ) return 0.0; switch( Tag_val(v) ) { @@ -424,7 +386,7 @@ static int caml_list_length( value lst ) { } } - static int caml_ptr_val_internal( value v, void **out, + SWIGSTATIC int caml_ptr_val_internal( value v, void **out, swig_type_info *descriptor ) { CAMLparam1(v); void *outptr = NULL; @@ -443,14 +405,15 @@ static int caml_list_length( value lst ) { outdescr = (swig_type_info *)(long)Int64_val(Field(v,1)); break; default: - outptr = (void *)caml_long_val(v); + *out = 0; + CAMLreturn(1); break; } CAMLreturn(SWIG_GetPtr(outptr,out,descriptor,outdescr)); } - static void *caml_ptr_val( value v, swig_type_info *descriptor ) { + SWIGSTATIC void *caml_ptr_val( value v, swig_type_info *descriptor ) { CAMLparam0(); void *out = NULL; if( !caml_ptr_val_internal( v, &out, descriptor ) ) @@ -459,11 +422,11 @@ static int caml_list_length( value lst ) { failwith( "No appropriate conversion found." ); } - static char *caml_string_val( value v ) { + SWIGSTATIC char *caml_string_val( value v ) { return (char *)caml_ptr_val( v, 0 ); } - static int caml_bool_check( value v ) { + SWIGSTATIC int caml_bool_check( value v ) { CAMLparam1(v); if( !Is_block(v) ) return 0; @@ -478,7 +441,7 @@ static int caml_list_length( value lst ) { } } - static int caml_int_check( value v ) { + SWIGSTATIC int caml_int_check( value v ) { CAMLparam1(v); if( !Is_block(v) ) return 0; @@ -499,7 +462,7 @@ static int caml_list_length( value lst ) { } } - static int caml_float_check( value v ) { + SWIGSTATIC int caml_float_check( value v ) { CAMLparam1(v); if( !Is_block(v) ) return 0; @@ -513,7 +476,7 @@ static int caml_list_length( value lst ) { } } - static int caml_ptr_check( value v ) { + SWIGSTATIC int caml_ptr_check( value v ) { CAMLparam1(v); if( !Is_block(v) ) return 0; diff --git a/Lib/ocaml/std_vector.i b/Lib/ocaml/std_vector.i index 3eb6ab82b..1d244dff4 100644 --- a/Lib/ocaml/std_vector.i +++ b/Lib/ocaml/std_vector.i @@ -7,42 +7,6 @@ // Ocaml implementation %include std_common.i -%include exception.i - -// __getitem__ is required to raise an IndexError for for-loops to work -// other methods which can raise are made to throw an IndexError as well -%exception std::vector::__getitem__ { - try { - $action - } catch (std::out_of_range& e) { - SWIG_exception(SWIG_IndexError,const_cast<char*>(e.what())); - } -} - -%exception std::vector::__setitem__ { - try { - $action - } catch (std::out_of_range& e) { - SWIG_exception(SWIG_IndexError,const_cast<char*>(e.what())); - } -} - -%exception std::vector::__delitem__ { - try { - $action - } catch (std::out_of_range& e) { - SWIG_exception(SWIG_IndexError,const_cast<char*>(e.what())); - } -} - -%exception std::vector::pop { - try { - $action - } catch (std::out_of_range& e) { - SWIG_exception(SWIG_IndexError,const_cast<char*>(e.what())); - } -} - // ------------------------------------------------------------------------ // std::vector @@ -72,19 +36,26 @@ #include <vector> #include <algorithm> #include <stdexcept> - %} +%} // exported class namespace std { - - template<class T> class vector { - }; - - - // Partial specialization for vectors of pointers. [ beazley ] - - template<class T> class vector<T*> { + template <class T> class vector { + public: + vector(unsigned int size = 0); + vector(unsigned int size, const T& value); + vector(const vector<T>&); + unsigned int size() const; + bool empty() const; + void clear(); + void push_back(const T& x); + T operator [] ( int f ); + vector <T> &operator = ( vector <T> &other ); + %extend { + void set( int i, T x ) { + (*self)[i] = x; + } + }; }; - -} +}; diff --git a/Lib/ocaml/typecheck.i b/Lib/ocaml/typecheck.i index 8c8eaea97..255fe3227 100644 --- a/Lib/ocaml/typecheck.i +++ b/Lib/ocaml/typecheck.i @@ -8,8 +8,8 @@ if( !Is_block($input) ) $1 = 0; else { switch( Tag_val($input) ) { - case C_char: $1 = 1; - default: $1 = 0; + case C_char: $1 = 1; break; + default: $1 = 0; break; } } } @@ -18,8 +18,8 @@ if( !Is_block($input) ) $1 = 0; else { switch( Tag_val($input) ) { - case C_uchar: $1 = 1; - default: $1 = 0; + case C_uchar: $1 = 1; break; + default: $1 = 0; break; } } } @@ -28,8 +28,8 @@ if( !Is_block($input) ) $1 = 0; else { switch( Tag_val($input) ) { - case C_short: $1 = 1; - default: $1 = 0; + case C_short: $1 = 1; break; + default: $1 = 0; break; } } } @@ -38,8 +38,8 @@ if( !Is_block($input) ) $1 = 0; else { switch( Tag_val($input) ) { - case C_ushort: $1 = 1; - default: $1 = 0; + case C_ushort: $1 = 1; break; + default: $1 = 0; break; } } } @@ -51,8 +51,8 @@ if( !Is_block($input) ) $1 = 0; else { switch( Tag_val($input) ) { - case C_int: $1 = 1; - default: $1 = 0; + case C_int: $1 = 1; break; + default: $1 = 0; break; } } } @@ -61,9 +61,9 @@ if( !Is_block($input) ) $1 = 0; else { switch( Tag_val($input) ) { - case C_uint: $1 = 1; - case C_int32: $1 = 1; - default: $1 = 0; + case C_uint: $1 = 1; break; + case C_int32: $1 = 1; break; + default: $1 = 0; break; } } } @@ -72,8 +72,8 @@ if( !Is_block($input) ) $1 = 0; else { switch( Tag_val($input) ) { - case C_int64: $1 = 1; - default: $1 = 0; + case C_int64: $1 = 1; break; + default: $1 = 0; break; } } } @@ -82,8 +82,8 @@ if( !Is_block($input) ) $1 = 0; else { switch( Tag_val($input) ) { - case C_bool: $1 = 1; - default: $1 = 0; + case C_bool: $1 = 1; break; + default: $1 = 0; break; } } } @@ -92,8 +92,8 @@ if( !Is_block($input) ) $1 = 0; else { switch( Tag_val($input) ) { - case C_float: $1 = 1; - default: $1 = 0; + case C_float: $1 = 1; break; + default: $1 = 0; break; } } } @@ -102,8 +102,8 @@ if( !Is_block($input) ) $1 = 0; else { switch( Tag_val($input) ) { - case C_double: $1 = 1; - default: $1 = 0; + case C_double: $1 = 1; break; + default: $1 = 0; break; } } } diff --git a/Lib/ocaml/typemaps.i b/Lib/ocaml/typemaps.i index 8baf76fca..2e33c00c7 100644 --- a/Lib/ocaml/typemaps.i +++ b/Lib/ocaml/typemaps.i @@ -48,7 +48,7 @@ } %typemap(ocaml,out) SWIGTYPE * { - value *fromval = caml_named_value("create_$*1_type_from_ptr"); + value *fromval = caml_named_value("create_$ntype_from_ptr"); if( fromval ) { $result = callback(*fromval,caml_val_ptr((void *)$1,$descriptor)); } else { @@ -61,7 +61,7 @@ } %typemap(ocaml,varout) SWIGTYPE * { - value *fromval = caml_named_value("create_$*1_type_from_ptr"); + value *fromval = caml_named_value("create_$ntype_from_ptr"); if( fromval ) { $result = callback(*fromval,caml_val_ptr((void *)$1,$descriptor)); } else { @@ -78,7 +78,7 @@ } %typemap(ocaml,out) SWIGTYPE & { - value *fromval = caml_named_value("create_$*1_ltype_from_ptr"); + value *fromval = caml_named_value("create_$ntype_from_ptr"); if( fromval ) { $result = callback(*fromval,caml_val_ptr((void *) $1,$descriptor)); } else { @@ -86,7 +86,7 @@ } } -#else +#endif %typemap(ocaml,in) SWIGTYPE { $1 = *(($&1_ltype) caml_ptr_val($input,$descriptor)) ; @@ -94,7 +94,7 @@ %typemap(ocaml,out) SWIGTYPE { void *temp = calloc(1,sizeof($ltype)); - value *fromval = caml_named_value("create_$ltype_from_ptr"); + value *fromval = caml_named_value("create_$ntype_from_ptr"); *(($ltype *)temp) = $1; if( fromval ) { $result = callback(*fromval,caml_val_ptr((void *)temp,$descriptor)); @@ -103,8 +103,6 @@ } } -#endif - /* Arrays */ /* Enums */ |