3 /* SWIG pointer structure */
29 #define C_director_core 17
32 /* Cast a pointer if possible; returns 1 if successful */
35 SWIG_Cast (void *source, swig_type_info *source_type,
36 void **ptr, swig_type_info *dest_type)
38 if( !source ) { // Special case for NULL. This is a popular question
39 // for other modules on the list, so I want an easy way out...
44 #ifdef TYPE_CAST_VERBOSE
45 fprintf( stderr, "Trying to cast %s to %s\n",
46 source_type ? source_type->str : "<none>",
47 dest_type ? dest_type->str : "<none>" );
49 if (dest_type != source_type) {
50 /* We have a type mismatch. Will have to look through our type
51 mapping table to figure out whether or not we can accept this
54 Ignore typechecks for void *. Allow any conversion. */
55 if( !dest_type || !source_type ||
56 !strcmp(dest_type->name,"_p_void") ||
57 !strcmp(source_type->name,"_p_void") ) {
62 SWIG_TypeCheckStruct(source_type, dest_type );
63 #ifdef TYPE_CAST_VERBOSE
64 fprintf( stderr, "Typecheck -> %s\n",
65 tc ? tc->str : "<none>" );
69 *ptr = SWIG_TypeCast(tc, source, &newmemory);
70 assert(!newmemory); /* newmemory handling not yet implemented */
81 /* Return 0 if successful. */
83 SWIG_GetPtr(void *inptr, void **outptr,
84 swig_type_info *intype, swig_type_info *outtype) {
86 return SWIG_Cast(inptr, intype,
87 outptr, outtype) == -1;
94 SWIGSTATIC void caml_print_list( CAML_VALUE v );
96 SWIGSTATIC void caml_print_val( CAML_VALUE v ) {
97 switch( SWIG_Tag_val(v) ) {
99 if( Bool_val(SWIG_Field(v,0)) ) fprintf( stderr, "true " );
100 else fprintf( stderr, "false " );
104 fprintf( stderr, "'%c' (\\%03d) ",
105 (Int_val(SWIG_Field(v,0)) >= ' ' &&
106 Int_val(SWIG_Field(v,0)) < 127) ? Int_val(SWIG_Field(v,0)) : '.',
107 Int_val(SWIG_Field(v,0)) );
112 fprintf( stderr, "%d ", (int)caml_long_val(v) );
117 fprintf( stderr, "%ud ", (unsigned int)caml_long_val(v) );
120 fprintf( stderr, "%ld ", caml_long_val(v) );
124 fprintf( stderr, "%f ", caml_double_val(v) );
130 swig_type_info *ty = (swig_type_info *)(long)SWIG_Int64_val(SWIG_Field(v,1));
131 caml_ptr_val_internal(v,&vout,0);
132 fprintf( stderr, "PTR(%p,%s) ",
134 ty ? ty->name : "(null)" );
140 for( i = 0; i < Wosize_val( SWIG_Field(v,0) ); i++ )
141 caml_print_val( SWIG_Field(SWIG_Field(v,0),i) );
145 caml_print_list( SWIG_Field(v,0) );
148 fprintf( stderr, "OBJ(%p) ", (void *)SWIG_Field(v,0) );
153 caml_ptr_val_internal(v,&cout,0);
154 fprintf( stderr, "'%s' ", (char *)cout );
160 SWIGSTATIC void caml_print_list( CAML_VALUE v ) {
162 while( v && Is_block(v) ) {
163 fprintf( stderr, "[ " );
164 caml_print_val( SWIG_Field(v,0) );
165 fprintf( stderr, "]\n" );
171 SWIGSTATIC CAML_VALUE caml_list_nth( CAML_VALUE lst, int n ) {
174 while( i < n && lst && Is_block(lst) ) {
175 i++; lst = SWIG_Field(lst,1);
177 if( lst == Val_unit ) CAMLreturn(Val_unit);
178 else CAMLreturn(SWIG_Field(lst,0));
181 SWIGSTATIC CAML_VALUE caml_list_append( CAML_VALUE lst, CAML_VALUE elt ) {
183 SWIG_CAMLlocal3(v,vt,lh);
187 /* Appending C_void should have no effect */
188 if( !Is_block(elt) ) return lst;
190 while( lst && Is_block(lst) ) {
191 if( v && v != Val_unit ) {
193 SWIG_Store_field(v,1,vt);
196 v = lh = alloc_tuple(2);
198 SWIG_Store_field(v,0,SWIG_Field(lst,0));
199 lst = SWIG_Field(lst,1);
202 if( v && Is_block(v) ) {
204 SWIG_Store_field(v,1,vt);
207 v = lh = alloc_tuple(2);
209 SWIG_Store_field(v,0,elt);
210 SWIG_Store_field(v,1,Val_unit);
215 SWIGSTATIC int caml_list_length( CAML_VALUE lst ) {
218 while( lst && Is_block(lst) ) { i++; lst = SWIG_Field(lst,1); }
222 SWIGSTATIC void caml_array_set( CAML_VALUE arr, int n, CAML_VALUE item ) {
223 CAMLparam2(arr,item);
224 SWIG_Store_field(SWIG_Field(arr,0),n,item);
228 SWIGSTATIC value caml_array_nth( CAML_VALUE arr, int n ) {
230 if( SWIG_Tag_val(arr) == C_array )
231 CAMLreturn(SWIG_Field(SWIG_Field(arr,0),n));
232 else if( SWIG_Tag_val(arr) == C_list )
233 CAMLreturn(caml_list_nth(arr,0));
235 failwith("Need array or list");
238 SWIGSTATIC int caml_array_len( CAML_VALUE arr ) {
240 if( SWIG_Tag_val(arr) == C_array )
241 CAMLreturn(Wosize_val(SWIG_Field(arr,0)));
242 else if( SWIG_Tag_val(arr) == C_list )
243 CAMLreturn(caml_list_length(arr));
245 failwith("Need array or list");
248 SWIGSTATIC CAML_VALUE caml_swig_alloc(int x,int y) {
249 return caml_alloc(x,y);
252 SWIGSTATIC value caml_array_new( int n ) {
255 vv = caml_swig_alloc(1,C_array);
256 SWIG_Store_field(vv,0,alloc_tuple(n));
260 SWIGSTATIC CAML_VALUE caml_val_bool( int b ) {
263 bv = caml_swig_alloc(1,C_bool);
264 SWIG_Store_field(bv,0,Val_bool(b));
268 SWIGSTATIC CAML_VALUE caml_val_char( char c ) {
271 cv = caml_swig_alloc(1,C_char);
272 SWIG_Store_field(cv,0,Val_int(c));
276 SWIGSTATIC CAML_VALUE caml_val_uchar( unsigned char uc ) {
278 SWIG_CAMLlocal1(ucv);
279 ucv = caml_swig_alloc(1,C_uchar);
280 SWIG_Store_field(ucv,0,Val_int(uc));
284 SWIGSTATIC CAML_VALUE caml_val_short( short s ) {
287 sv = caml_swig_alloc(1,C_short);
288 SWIG_Store_field(sv,0,Val_int(s));
292 SWIGSTATIC CAML_VALUE caml_val_ushort( unsigned short us ) {
294 SWIG_CAMLlocal1(usv);
295 usv = caml_swig_alloc(1,C_ushort);
296 SWIG_Store_field(usv,0,Val_int(us));
300 SWIGSTATIC CAML_VALUE caml_val_int( int i ) {
303 iv = caml_swig_alloc(1,C_int);
304 SWIG_Store_field(iv,0,Val_int(i));
308 SWIGSTATIC CAML_VALUE caml_val_uint( unsigned int ui ) {
310 SWIG_CAMLlocal1(uiv);
311 uiv = caml_swig_alloc(1,C_int);
312 SWIG_Store_field(uiv,0,Val_int(ui));
316 SWIGSTATIC CAML_VALUE caml_val_long( long l ) {
319 lv = caml_swig_alloc(1,C_int64);
320 SWIG_Store_field(lv,0,copy_int64(l));
324 SWIGSTATIC CAML_VALUE caml_val_ulong( unsigned long ul ) {
326 SWIG_CAMLlocal1(ulv);
327 ulv = caml_swig_alloc(1,C_int64);
328 SWIG_Store_field(ulv,0,copy_int64(ul));
332 SWIGSTATIC CAML_VALUE caml_val_float( float f ) {
335 fv = caml_swig_alloc(1,C_float);
336 SWIG_Store_field(fv,0,copy_double((double)f));
340 SWIGSTATIC CAML_VALUE caml_val_double( double d ) {
343 fv = caml_swig_alloc(1,C_double);
344 SWIG_Store_field(fv,0,copy_double(d));
348 SWIGSTATIC CAML_VALUE caml_val_ptr( void *p, swig_type_info *info ) {
351 vv = caml_swig_alloc(2,C_ptr);
352 SWIG_Store_field(vv,0,copy_int64((long)p));
353 SWIG_Store_field(vv,1,copy_int64((long)info));
357 SWIGSTATIC CAML_VALUE caml_val_string( const char *p ) {
360 if( !p ) CAMLreturn(caml_val_ptr( (void *)p, 0 ));
361 vv = caml_swig_alloc(1,C_string);
362 SWIG_Store_field(vv,0,copy_string(p));
366 SWIGSTATIC CAML_VALUE caml_val_string_len( const char *p, int len ) {
369 if( !p || len < 0 ) CAMLreturn(caml_val_ptr( (void *)p, 0 ));
370 vv = caml_swig_alloc(1,C_string);
371 SWIG_Store_field(vv,0,alloc_string(len));
372 memcpy(String_val(SWIG_Field(vv,0)),p,len);
376 #define caml_val_obj(v, name) caml_val_obj_helper(v, SWIG_TypeQuery((name)), name)
377 SWIGSTATIC CAML_VALUE caml_val_obj_helper( void *v, swig_type_info *type, char *name) {
379 CAMLreturn(callback2(*caml_named_value("caml_create_object_fn"),
380 caml_val_ptr(v,type),
384 SWIGSTATIC long caml_long_val_full( CAML_VALUE v, char *name ) {
386 if( !Is_block(v) ) return 0;
388 switch( SWIG_Tag_val(v) ) {
395 CAMLreturn(Int_val(SWIG_Field(v,0)));
398 CAMLreturn(Int32_val(SWIG_Field(v,0)));
400 CAMLreturn((long)SWIG_Int64_val(SWIG_Field(v,0)));
403 CAMLreturn((long)Double_val(SWIG_Field(v,0)));
405 CAMLreturn((long)String_val(SWIG_Field(v,0)));
407 CAMLreturn((long)SWIG_Int64_val(SWIG_Field(SWIG_Field(v,0),0)));
409 SWIG_CAMLlocal1(ret);
410 CAML_VALUE *enum_to_int = caml_named_value(SWIG_MODULE "_enum_to_int");
411 if( !name ) failwith( "Not an enum conversion" );
412 ret = callback2(*enum_to_int,*caml_named_value(name),v);
413 CAMLreturn(caml_long_val(ret));
416 failwith("No conversion to int");
420 SWIGSTATIC long caml_long_val( CAML_VALUE v ) {
421 return caml_long_val_full(v,0);
424 SWIGSTATIC double caml_double_val( CAML_VALUE v ) {
426 if( !Is_block(v) ) return 0.0;
427 switch( SWIG_Tag_val(v) ) {
434 CAMLreturn_type(Int_val(SWIG_Field(v,0)));
437 CAMLreturn_type(Int32_val(SWIG_Field(v,0)));
439 CAMLreturn_type(SWIG_Int64_val(SWIG_Field(v,0)));
442 CAMLreturn_type(Double_val(SWIG_Field(v,0)));
444 fprintf( stderr, "Unknown block tag %d\n", SWIG_Tag_val(v) );
445 failwith("No conversion to double");
449 SWIGSTATIC int caml_ptr_val_internal( CAML_VALUE v, void **out,
450 swig_type_info *descriptor ) {
453 swig_type_info *outdescr = NULL;
455 if( v == Val_unit ) {
459 if( !Is_block(v) ) return -1;
460 switch( SWIG_Tag_val(v) ) {
462 if( !caml_long_val( v ) ) {
472 (caml_ptr_val_internal
473 (callback(*caml_named_value("caml_obj_ptr"),v),
476 outptr = (void *)String_val(SWIG_Field(v,0));
479 outptr = (void *)(long)SWIG_Int64_val(SWIG_Field(v,0));
480 outdescr = (swig_type_info *)(long)SWIG_Int64_val(SWIG_Field(v,1));
488 CAMLreturn(SWIG_GetPtr(outptr,out,outdescr,descriptor));
491 SWIGSTATIC void *caml_ptr_val( CAML_VALUE v, swig_type_info *descriptor ) {
493 #ifdef TYPE_CAST_VERBOSE
497 if( !caml_ptr_val_internal( v, &out, descriptor ) )
498 CAMLreturn_type(out);
500 failwith( "No appropriate conversion found." );
503 SWIGSTATIC char *caml_string_val( CAML_VALUE v ) {
504 return (char *)caml_ptr_val( v, 0 );
507 SWIGSTATIC int caml_string_len( CAML_VALUE v ) {
508 switch( SWIG_Tag_val(v) ) {
510 return string_length(SWIG_Field(v,0));
512 return strlen((char *)caml_ptr_val(v,0));
516 SWIGSTATIC int caml_bool_check( CAML_VALUE v ) {
519 if( !Is_block(v) ) return 0;
521 switch( SWIG_Tag_val(v) ) {
531 SWIGSTATIC int caml_int_check( CAML_VALUE v ) {
534 if( !Is_block(v) ) return 0;
536 switch( SWIG_Tag_val(v) ) {
552 SWIGSTATIC int caml_float_check( CAML_VALUE v ) {
554 if( !Is_block(v) ) return 0;
556 switch( SWIG_Tag_val(v) ) {
566 SWIGSTATIC int caml_ptr_check( CAML_VALUE v ) {
568 if( !Is_block(v) ) return 0;
570 switch( SWIG_Tag_val(v) ) {
581 static swig_module_info *SWIG_Ocaml_GetModule() {
584 pointer = callback(*caml_named_value("swig_find_type_info"), caml_val_int(0));
585 if (Is_block(pointer) && SWIG_Tag_val(pointer) == C_ptr) {
586 return (swig_module_info *)(void *)(long)SWIG_Int64_val(SWIG_Field(pointer,0));
591 static void SWIG_Ocaml_SetModule(swig_module_info *pointer) {
592 CAML_VALUE mod_pointer;
594 mod_pointer = caml_val_ptr(pointer, NULL);
595 callback(*caml_named_value("swig_set_type_info"), mod_pointer);