X-Git-Url: http://matita.cs.unibo.it/gitweb/?p=helm.git;a=blobdiff_plain;f=helm%2FDEVEL%2Flablgtk%2Flablgtk_20001129-0.1.0%2Fwrappers.h;fp=helm%2FDEVEL%2Flablgtk%2Flablgtk_20001129-0.1.0%2Fwrappers.h;h=0000000000000000000000000000000000000000;hp=2006bcbd5958b98b01961dfa2382b788e4f9637f;hb=3ef089a4c58fbe429dd539af6215991ecbe11ee2;hpb=1c7fb836e2af4f2f3d18afd0396701f2094265ff diff --git a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/wrappers.h b/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/wrappers.h deleted file mode 100644 index 2006bcbd5..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/wrappers.h +++ /dev/null @@ -1,225 +0,0 @@ -/* $Id$ */ - -#ifndef _wrappers_ -#define _wrappers_ - -#include -#include - -value copy_memblock_indirected (void *src, asize_t size); -value ml_some (value); -void ml_raise_null_pointer (void) Noreturn; -value Val_pointer (void *); -value copy_string_check (const char*); -value copy_string_or_null (const char *); - -value *ml_global_root_new (value v); -void ml_global_root_destroy (void *data); - -typedef struct { value key; int data; } lookup_info; -value ml_lookup_from_c (lookup_info *table, int data); -int ml_lookup_to_c (lookup_info *table, value key); - -/* Wrapper generators */ - -#define ML_0(cname, conv) \ -value ml_##cname (value unit) { return conv (cname ()); } -#define ML_1(cname, conv1, conv) \ -value ml_##cname (value arg1) { return conv (cname (conv1 (arg1))); } -#define ML_1_post(cname, conv1, conv, post) \ -value ml_##cname (value arg1) \ -{ value ret = conv (cname (conv1(arg1))); post; return ret; } -#define ML_2(cname, conv1, conv2, conv) \ -value ml_##cname (value arg1, value arg2) \ -{ return conv (cname (conv1(arg1), conv2(arg2))); } -#define ML_2_name(mlname, cname, conv1, conv2, conv) \ -value mlname (value arg1, value arg2) \ -{ return conv (cname (conv1(arg1), conv2(arg2))); } -#define ML_3(cname, conv1, conv2, conv3, conv) \ -value ml_##cname (value arg1, value arg2, value arg3) \ -{ return conv (cname (conv1(arg1), conv2(arg2), conv3(arg3))); } -#define ML_3_name(mlname, cname, conv1, conv2, conv3, conv) \ -value mlname (value arg1, value arg2, value arg3) \ -{ return conv (cname (conv1(arg1), conv2(arg2), conv3(arg3))); } -#define ML_4(cname, conv1, conv2, conv3, conv4, conv) \ -value ml_##cname (value arg1, value arg2, value arg3, value arg4) \ -{ return conv (cname (conv1(arg1), conv2(arg2), conv3(arg3), conv4(arg4))); } -#define ML_4_name(mlname, cname, conv1, conv2, conv3, conv4, conv) \ -value mlname (value arg1, value arg2, value arg3, value arg4) \ -{ return conv (cname (conv1(arg1), conv2(arg2), conv3(arg3), conv4(arg4))); } -#define ML_5(cname, conv1, conv2, conv3, conv4, conv5, conv) \ -value ml_##cname (value arg1, value arg2, value arg3, value arg4, value arg5) \ -{ return conv (cname (conv1(arg1), conv2(arg2), conv3(arg3), conv4(arg4), \ - conv5(arg5))); } -#define ML_6(cname, conv1, conv2, conv3, conv4, conv5, conv6, conv) \ -value ml_##cname (value arg1, value arg2, value arg3, value arg4, value arg5, \ - value arg6) \ -{ return conv (cname (conv1(arg1), conv2(arg2), conv3(arg3), conv4(arg4), \ - conv5(arg5), conv6(arg6))); } -#define ML_7(cname, conv1, conv2, conv3, conv4, conv5, conv6, conv7, conv) \ -value ml_##cname (value arg1, value arg2, value arg3, value arg4, value arg5, \ - value arg6, value arg7) \ -{ return conv (cname (conv1(arg1), conv2(arg2), conv3(arg3), conv4(arg4), \ - conv5(arg5), conv6(arg6), conv7(arg7))); } -#define ML_8(cname, conv1, conv2, conv3, conv4, conv5, conv6, conv7, conv8, \ - conv) \ -value ml_##cname (value arg1, value arg2, value arg3, value arg4, value arg5, \ - value arg6, value arg7, value arg8) \ -{ return conv (cname (conv1(arg1), conv2(arg2), conv3(arg3), conv4(arg4), \ - conv5(arg5), conv6(arg6), conv7(arg7), conv8(arg8))); } -#define ML_9(cname, conv1, conv2, conv3, conv4, conv5, conv6, conv7, conv8, \ - conv9, conv) \ -value ml_##cname (value arg1, value arg2, value arg3, value arg4, value arg5, \ - value arg6, value arg7, value arg8, value arg9) \ -{ return conv (cname (conv1(arg1), conv2(arg2), conv3(arg3), conv4(arg4), \ - conv5(arg5), conv6(arg6), conv7(arg7), conv8(arg8), \ - conv9(arg9))); } -#define ML_10(cname, conv1, conv2, conv3, conv4, conv5, conv6, conv7, conv8, \ - conv9, conv10, conv) \ -value ml_##cname (value arg1, value arg2, value arg3, value arg4, value arg5, \ - value arg6, value arg7, value arg8, value arg9, value arg10)\ -{ return conv (cname (conv1(arg1), conv2(arg2), conv3(arg3), conv4(arg4), \ - conv5(arg5), conv6(arg6), conv7(arg7), conv8(arg8), \ - conv9(arg9), conv10(arg10))); } -#define ML_11(cname, conv1, conv2, conv3, conv4, conv5, conv6, conv7, conv8, \ - conv9, conv10, conv11, conv) \ -value ml_##cname (value arg1, value arg2, value arg3, value arg4, value arg5, \ - value arg6, value arg7, value arg8, value arg9, value arg10,\ - value arg11) \ -{ return conv (cname (conv1(arg1), conv2(arg2), conv3(arg3), conv4(arg4), \ - conv5(arg5), conv6(arg6), conv7(arg7), conv8(arg8), \ - conv9(arg9), conv10(arg10), conv11(arg11))); } -#define ML_12(cname, conv1, conv2, conv3, conv4, conv5, conv6, conv7, conv8, \ - conv9, conv10, conv11, conv12, conv) \ -value ml_##cname (value arg1, value arg2, value arg3, value arg4, value arg5, \ - value arg6, value arg7, value arg8, value arg9, value arg10,\ - value arg11, value arg12) \ -{ return conv (cname (conv1(arg1), conv2(arg2), conv3(arg3), conv4(arg4), \ - conv5(arg5), conv6(arg6), conv7(arg7), conv8(arg8), \ - conv9(arg9), conv10(arg10), conv11(arg11), \ - conv12(arg12))); } - -/* Use with care: needs the argument index */ -#define Ignore(x) -#define Insert(x) (x), -#define Split(x,f,g) f(x), g(x) Ignore -#define Split3(x,f,g,h) f(x), g(x), h(x) Ignore -#define Pair(x,f,g) f(Field(x,0)), g(Field(x,1)) Ignore -#define Triple(x,f,g,h) f(Field(x,0)), g(Field(x,1)), h(Field(x,2)) Ignore - -/* For more than 5 arguments */ -#define ML_bc6(cname) \ -value cname##_bc (value *argv, int argn) \ -{ return cname(argv[0],argv[1],argv[2],argv[3],argv[4],argv[5]); } -#define ML_bc7(cname) \ -value cname##_bc (value *argv, int argn) \ -{ return cname(argv[0],argv[1],argv[2],argv[3],argv[4],argv[5],argv[6]); } -#define ML_bc8(cname) \ -value cname##_bc (value *argv, int argn) \ -{ return cname(argv[0],argv[1],argv[2],argv[3],argv[4],argv[5],argv[6], \ - argv[7]); } -#define ML_bc9(cname) \ -value cname##_bc (value *argv, int argn) \ -{ return cname(argv[0],argv[1],argv[2],argv[3],argv[4],argv[5],argv[6], \ - argv[7],argv[8]); } -#define ML_bc10(cname) \ -value cname##_bc (value *argv, int argn) \ -{ return cname(argv[0],argv[1],argv[2],argv[3],argv[4],argv[5],argv[6], \ - argv[7],argv[8],argv[9]); } -#define ML_bc11(cname) \ -value cname##_bc (value *argv, int argn) \ -{ return cname(argv[0],argv[1],argv[2],argv[3],argv[4],argv[5],argv[6], \ - argv[7],argv[8],argv[9],argv[10]); } -#define ML_bc12(cname) \ -value cname##_bc (value *argv, int argn) \ -{ return cname(argv[0],argv[1],argv[2],argv[3],argv[4],argv[5],argv[6], \ - argv[7],argv[8],argv[9],argv[10],argv[11]); } - -/* result conversion */ -#define Unit(x) ((x), Val_unit) -#define Id(x) x -#define Val_char Val_int - -/* parameter conversion */ -#define Bool_ptr(x) ((long) x - 1) -#define Char_val Int_val -#define Float_val(x) ((float)Double_val(x)) - -#define Option_val(val,unwrap,default) \ -((long)val-1 ? unwrap(Field(val,0)) : default) -#define String_option_val(s) Option_val(s,String_val,NULL) - -/* Utility */ - -#define Copy_array(ret,l,src,conv) \ - if (!l) ret = Atom(0); \ - else if (l <= Max_young_wosize) { int i; ret = alloc_tuple(l); \ - for(i=0;ifield); } - -#define Make_Setter(name,conv1,conv2,field) \ -value ml_##name##_##field (value val, value new) \ -{ (conv1(val))->field = conv2(new); return Val_unit; } - -#define Make_Array_Extractor(name,conv1,conv2,field,conv) \ -value ml_##name##_##field (value val, value index) \ -{ return conv ((conv1(val))->field[conv2(index)]); } - -#define Make_Array_Setter(name,conv1,conv2,conv3,field) \ -value ml_##name##_##field (value val, value index, value new) \ -{ (conv1(val))->field[conv2(index)] = conv3(new); return Val_unit; } - -/* ML value is [flag list] */ -#define Make_Flags_val(conv) \ -int Flags_##conv (value list) \ -{ int flags = 0L; \ - while Is_block(list) { flags |= conv(Field(list,0)); list = Field(list,1); }\ - return flags; } - -/* ML value is [flag list option] */ -#define Make_OptFlags_val(conv) \ -int OptFlags_##conv (value list) \ -{ int flags = 0L; \ - if Is_block(list) list = Field(list,0); \ - while Is_block(list) { flags |= conv(Field(list,0)); list = Field(list,1); }\ - return flags; } - -#define Val_copy(val) copy_memblock_indirected (&val, sizeof(val)) -#define Val_string copy_string_check -#define Val_optstring copy_string_or_null -#define Optstring_val(v) (string_length(v) ? String_val(v) : (char*)NULL) -#define Val_option(v,f) (v ? ml_some(f(v)) : Val_unit) - -#define Check_null(v) (v ? v : (ml_raise_null_pointer (), v)) - -#endif /* _wrappers_ */