diff options
author | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2010-05-21 09:10:23 +0000 |
---|---|---|
committer | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2010-05-21 09:10:23 +0000 |
commit | 87af442f946da3b5ab3bc8fb351824ec8c240fe7 (patch) | |
tree | 792f75b9f15c0da49ecf99a8512ccd5581f59733 /ext/dl/cfunc.c | |
parent | c6b6293bc13b9107cad52f407810cddc4dd0b475 (diff) | |
download | ruby-87af442f946da3b5ab3bc8fb351824ec8c240fe7.tar.gz |
* suppress warnings.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@27944 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'ext/dl/cfunc.c')
-rw-r--r-- | ext/dl/cfunc.c | 44 |
1 files changed, 23 insertions, 21 deletions
diff --git a/ext/dl/cfunc.c b/ext/dl/cfunc.c index f2579da191..b123b50d24 100644 --- a/ext/dl/cfunc.c +++ b/ext/dl/cfunc.c @@ -82,7 +82,7 @@ rb_dlcfunc_new(void (*func)(), int type, const char *name, ID calltype) rb_secure(4); if( func ){ val = TypedData_Make_Struct(rb_cDLCFunc, struct cfunc_data, &dlcfunc_data_type, data); - data->ptr = func; + data->ptr = (void *)(VALUE)func; data->name = name ? strdup(name) : NULL; data->type = type; data->calltype = calltype; @@ -306,9 +306,11 @@ rb_dlcfunc_inspect(VALUE self) } -# define DECL_FUNC_CDECL(f,ret,args) ret (FUNC_CDECL(*f))(args) +# define DECL_FUNC_CDECL(f,ret,args,val) \ + ret (FUNC_CDECL(*f))(args) = (ret (FUNC_CDECL(*))(args))(VALUE)(val) #ifdef FUNC_STDCALL -# define DECL_FUNC_STDCALL(f,ret,args) ret (FUNC_STDCALL(*f))(args) +# define DECL_FUNC_STDCALL(f,ret,args,val) \ + ret (FUNC_STDCALL(*f))(args) = (ret (FUNC_STDCALL(*))(args))(VALUE)(val) #endif #define CALL_CASE switch( RARRAY_LEN(ary) ){ \ @@ -376,7 +378,7 @@ rb_dlcfunc_call(VALUE self, VALUE ary) switch( cfunc->type ){ case DLTYPE_VOID: #define CASE(n) case n: { \ - DECL_FUNC_CDECL(f,void,DLSTACK_PROTO##n) = cfunc->ptr; \ + DECL_FUNC_CDECL(f,void,DLSTACK_PROTO##n,cfunc->ptr); \ f(DLSTACK_ARGS##n(stack)); \ result = Qnil; \ } @@ -385,7 +387,7 @@ rb_dlcfunc_call(VALUE self, VALUE ary) break; case DLTYPE_VOIDP: #define CASE(n) case n: { \ - DECL_FUNC_CDECL(f,void*,DLSTACK_PROTO##n) = cfunc->ptr; \ + DECL_FUNC_CDECL(f,void*,DLSTACK_PROTO##n,cfunc->ptr); \ void * ret; \ ret = f(DLSTACK_ARGS##n(stack)); \ result = PTR2NUM(ret); \ @@ -395,7 +397,7 @@ rb_dlcfunc_call(VALUE self, VALUE ary) break; case DLTYPE_CHAR: #define CASE(n) case n: { \ - DECL_FUNC_CDECL(f,char,DLSTACK_PROTO##n) = cfunc->ptr; \ + DECL_FUNC_CDECL(f,char,DLSTACK_PROTO##n,cfunc->ptr); \ char ret; \ ret = f(DLSTACK_ARGS##n(stack)); \ result = CHR2FIX(ret); \ @@ -405,7 +407,7 @@ rb_dlcfunc_call(VALUE self, VALUE ary) break; case DLTYPE_SHORT: #define CASE(n) case n: { \ - DECL_FUNC_CDECL(f,short,DLSTACK_PROTO##n) = cfunc->ptr; \ + DECL_FUNC_CDECL(f,short,DLSTACK_PROTO##n,cfunc->ptr); \ short ret; \ ret = f(DLSTACK_ARGS##n(stack)); \ result = INT2NUM((int)ret); \ @@ -415,7 +417,7 @@ rb_dlcfunc_call(VALUE self, VALUE ary) break; case DLTYPE_INT: #define CASE(n) case n: { \ - DECL_FUNC_CDECL(f,int,DLSTACK_PROTO##n) = cfunc->ptr; \ + DECL_FUNC_CDECL(f,int,DLSTACK_PROTO##n,cfunc->ptr); \ int ret; \ ret = f(DLSTACK_ARGS##n(stack)); \ result = INT2NUM(ret); \ @@ -425,7 +427,7 @@ rb_dlcfunc_call(VALUE self, VALUE ary) break; case DLTYPE_LONG: #define CASE(n) case n: { \ - DECL_FUNC_CDECL(f,long,DLSTACK_PROTO##n) = cfunc->ptr; \ + DECL_FUNC_CDECL(f,long,DLSTACK_PROTO##n,cfunc->ptr); \ long ret; \ ret = f(DLSTACK_ARGS##n(stack)); \ result = LONG2NUM(ret); \ @@ -436,7 +438,7 @@ rb_dlcfunc_call(VALUE self, VALUE ary) #if HAVE_LONG_LONG /* used in ruby.h */ case DLTYPE_LONG_LONG: #define CASE(n) case n: { \ - DECL_FUNC_CDECL(f,LONG_LONG,DLSTACK_PROTO##n) = cfunc->ptr; \ + DECL_FUNC_CDECL(f,LONG_LONG,DLSTACK_PROTO##n,cfunc->ptr); \ LONG_LONG ret; \ ret = f(DLSTACK_ARGS##n(stack)); \ result = LL2NUM(ret); \ @@ -447,7 +449,7 @@ rb_dlcfunc_call(VALUE self, VALUE ary) #endif case DLTYPE_FLOAT: #define CASE(n) case n: { \ - DECL_FUNC_CDECL(f,float,DLSTACK_PROTO##n) = cfunc->ptr; \ + DECL_FUNC_CDECL(f,float,DLSTACK_PROTO##n,cfunc->ptr); \ float ret; \ ret = f(DLSTACK_ARGS##n(stack)); \ result = rb_float_new(ret); \ @@ -457,7 +459,7 @@ rb_dlcfunc_call(VALUE self, VALUE ary) break; case DLTYPE_DOUBLE: #define CASE(n) case n: { \ - DECL_FUNC_CDECL(f,double,DLSTACK_PROTO##n) = cfunc->ptr; \ + DECL_FUNC_CDECL(f,double,DLSTACK_PROTO##n,cfunc->ptr); \ double ret; \ ret = f(DLSTACK_ARGS##n(stack)); \ result = rb_float_new(ret); \ @@ -475,7 +477,7 @@ rb_dlcfunc_call(VALUE self, VALUE ary) switch( cfunc->type ){ case DLTYPE_VOID: #define CASE(n) case n: { \ - DECL_FUNC_STDCALL(f,void,DLSTACK_PROTO##n##_) = cfunc->ptr; \ + DECL_FUNC_STDCALL(f,void,DLSTACK_PROTO##n##_,cfunc->ptr); \ f(DLSTACK_ARGS##n(stack)); \ result = Qnil; \ } @@ -484,7 +486,7 @@ rb_dlcfunc_call(VALUE self, VALUE ary) break; case DLTYPE_VOIDP: #define CASE(n) case n: { \ - DECL_FUNC_STDCALL(f,void*,DLSTACK_PROTO##n##_) = cfunc->ptr; \ + DECL_FUNC_STDCALL(f,void*,DLSTACK_PROTO##n##_,cfunc->ptr); \ void * ret; \ ret = f(DLSTACK_ARGS##n(stack)); \ result = PTR2NUM(ret); \ @@ -494,7 +496,7 @@ rb_dlcfunc_call(VALUE self, VALUE ary) break; case DLTYPE_CHAR: #define CASE(n) case n: { \ - DECL_FUNC_STDCALL(f,char,DLSTACK_PROTO##n##_) = cfunc->ptr; \ + DECL_FUNC_STDCALL(f,char,DLSTACK_PROTO##n##_,cfunc->ptr); \ char ret; \ ret = f(DLSTACK_ARGS##n(stack)); \ result = CHR2FIX(ret); \ @@ -504,7 +506,7 @@ rb_dlcfunc_call(VALUE self, VALUE ary) break; case DLTYPE_SHORT: #define CASE(n) case n: { \ - DECL_FUNC_STDCALL(f,short,DLSTACK_PROTO##n##_) = cfunc->ptr; \ + DECL_FUNC_STDCALL(f,short,DLSTACK_PROTO##n##_,cfunc->ptr); \ short ret; \ ret = f(DLSTACK_ARGS##n(stack)); \ result = INT2NUM((int)ret); \ @@ -514,7 +516,7 @@ rb_dlcfunc_call(VALUE self, VALUE ary) break; case DLTYPE_INT: #define CASE(n) case n: { \ - DECL_FUNC_STDCALL(f,int,DLSTACK_PROTO##n##_) = cfunc->ptr; \ + DECL_FUNC_STDCALL(f,int,DLSTACK_PROTO##n##_,cfunc->ptr); \ int ret; \ ret = f(DLSTACK_ARGS##n(stack)); \ result = INT2NUM(ret); \ @@ -524,7 +526,7 @@ rb_dlcfunc_call(VALUE self, VALUE ary) break; case DLTYPE_LONG: #define CASE(n) case n: { \ - DECL_FUNC_STDCALL(f,long,DLSTACK_PROTO##n##_) = cfunc->ptr; \ + DECL_FUNC_STDCALL(f,long,DLSTACK_PROTO##n##_,cfunc->ptr); \ long ret; \ ret = f(DLSTACK_ARGS##n(stack)); \ result = LONG2NUM(ret); \ @@ -535,7 +537,7 @@ rb_dlcfunc_call(VALUE self, VALUE ary) #if HAVE_LONG_LONG /* used in ruby.h */ case DLTYPE_LONG_LONG: #define CASE(n) case n: { \ - DECL_FUNC_STDCALL(f,LONG_LONG,DLSTACK_PROTO##n##_) = cfunc->ptr; \ + DECL_FUNC_STDCALL(f,LONG_LONG,DLSTACK_PROTO##n##_,cfunc->ptr); \ LONG_LONG ret; \ ret = f(DLSTACK_ARGS##n(stack)); \ result = LL2NUM(ret); \ @@ -546,7 +548,7 @@ rb_dlcfunc_call(VALUE self, VALUE ary) #endif case DLTYPE_FLOAT: #define CASE(n) case n: { \ - DECL_FUNC_STDCALL(f,float,DLSTACK_PROTO##n##_) = cfunc->ptr; \ + DECL_FUNC_STDCALL(f,float,DLSTACK_PROTO##n##_,cfunc->ptr); \ float ret; \ ret = f(DLSTACK_ARGS##n(stack)); \ result = rb_float_new(ret); \ @@ -556,7 +558,7 @@ rb_dlcfunc_call(VALUE self, VALUE ary) break; case DLTYPE_DOUBLE: #define CASE(n) case n: { \ - DECL_FUNC_STDCALL(f,double,DLSTACK_PROTO##n##_) = cfunc->ptr; \ + DECL_FUNC_STDCALL(f,double,DLSTACK_PROTO##n##_,cfunc->ptr); \ double ret; \ ret = f(DLSTACK_ARGS##n(stack)); \ result = rb_float_new(ret); \ |