diff options
author | yugui <yugui@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2008-08-25 15:13:14 +0000 |
---|---|---|
committer | yugui <yugui@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2008-08-25 15:13:14 +0000 |
commit | d0233291bc8a5068e52c69c210e5979e5324b5bc (patch) | |
tree | 7d9459449c33792c63eeb7baa071e76352e0baab /trunk/ext/dl/dl.h | |
parent | 0dc342de848a642ecce8db697b8fecd83a63e117 (diff) | |
parent | 72eaacaa15256ab95c3b52ea386f88586fb9da40 (diff) |
re-adding tag v1_9_0_4 as an alias of trunk@18848v1_9_0_4
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/tags/v1_9_0_4@18849 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'trunk/ext/dl/dl.h')
-rw-r--r-- | trunk/ext/dl/dl.h | 190 |
1 files changed, 0 insertions, 190 deletions
diff --git a/trunk/ext/dl/dl.h b/trunk/ext/dl/dl.h deleted file mode 100644 index 7b8ad077ae..0000000000 --- a/trunk/ext/dl/dl.h +++ /dev/null @@ -1,190 +0,0 @@ -#ifndef RUBY_DL_H -#define RUBY_DL_H - -#include <ruby.h> - -#if !defined(FUNC_CDECL) -# define FUNC_CDECL(x) x -#endif -#if !defined(FUNC_STDCALL) -# define FUNC_STDCALL(x) x -#endif - -#if defined(HAVE_DLFCN_H) -# include <dlfcn.h> -# /* some stranger systems may not define all of these */ -#ifndef RTLD_LAZY -#define RTLD_LAZY 0 -#endif -#ifndef RTLD_GLOBAL -#define RTLD_GLOBAL 0 -#endif -#ifndef RTLD_NOW -#define RTLD_NOW 0 -#endif -#else -# if defined(HAVE_WINDOWS_H) -# include <windows.h> -# define dlclose(ptr) FreeLibrary((HINSTANCE)ptr) -# define dlopen(name,flag) ((void*)LoadLibrary(name)) -# define dlerror() "unknown error" -# define dlsym(handle,name) ((void*)GetProcAddress(handle,name)) -# define RTLD_LAZY -1 -# define RTLD_NOW -1 -# define RTLD_GLOBAL -1 -# endif -#endif - -#define MAX_CALLBACK 5 -#define DLSTACK_TYPE long -#define DLSTACK_SIZE (20) -#define DLSTACK_PROTO \ - DLSTACK_TYPE,DLSTACK_TYPE,DLSTACK_TYPE,DLSTACK_TYPE,DLSTACK_TYPE,\ - DLSTACK_TYPE,DLSTACK_TYPE,DLSTACK_TYPE,DLSTACK_TYPE,DLSTACK_TYPE,\ - DLSTACK_TYPE,DLSTACK_TYPE,DLSTACK_TYPE,DLSTACK_TYPE,DLSTACK_TYPE,\ - DLSTACK_TYPE,DLSTACK_TYPE,DLSTACK_TYPE,DLSTACK_TYPE,DLSTACK_TYPE -#define DLSTACK_ARGS(stack) \ - stack[0],stack[1],stack[2],stack[3],stack[4],\ - stack[5],stack[6],stack[7],stack[8],stack[9],\ - stack[10],stack[11],stack[12],stack[13],stack[14],\ - stack[15],stack[16],stack[17],stack[18],stack[19] - -#define DLSTACK_PROTO0 -#define DLSTACK_PROTO1 DLSTACK_TYPE -#define DLSTACK_PROTO2 DLSTACK_PROTO1, DLSTACK_TYPE -#define DLSTACK_PROTO3 DLSTACK_PROTO2, DLSTACK_TYPE -#define DLSTACK_PROTO4 DLSTACK_PROTO3, DLSTACK_TYPE -#define DLSTACK_PROTO4 DLSTACK_PROTO3, DLSTACK_TYPE -#define DLSTACK_PROTO5 DLSTACK_PROTO4, DLSTACK_TYPE -#define DLSTACK_PROTO6 DLSTACK_PROTO5, DLSTACK_TYPE -#define DLSTACK_PROTO7 DLSTACK_PROTO6, DLSTACK_TYPE -#define DLSTACK_PROTO8 DLSTACK_PROTO7, DLSTACK_TYPE -#define DLSTACK_PROTO9 DLSTACK_PROTO8, DLSTACK_TYPE -#define DLSTACK_PROTO10 DLSTACK_PROTO9, DLSTACK_TYPE -#define DLSTACK_PROTO11 DLSTACK_PROTO10, DLSTACK_TYPE -#define DLSTACK_PROTO12 DLSTACK_PROTO11, DLSTACK_TYPE -#define DLSTACK_PROTO13 DLSTACK_PROTO12, DLSTACK_TYPE -#define DLSTACK_PROTO14 DLSTACK_PROTO13, DLSTACK_TYPE -#define DLSTACK_PROTO14 DLSTACK_PROTO13, DLSTACK_TYPE -#define DLSTACK_PROTO15 DLSTACK_PROTO14, DLSTACK_TYPE -#define DLSTACK_PROTO16 DLSTACK_PROTO15, DLSTACK_TYPE -#define DLSTACK_PROTO17 DLSTACK_PROTO16, DLSTACK_TYPE -#define DLSTACK_PROTO18 DLSTACK_PROTO17, DLSTACK_TYPE -#define DLSTACK_PROTO19 DLSTACK_PROTO18, DLSTACK_TYPE -#define DLSTACK_PROTO20 DLSTACK_PROTO19, DLSTACK_TYPE - -#define DLSTACK_ARGS0(stack) -#define DLSTACK_ARGS1(stack) stack[0] -#define DLSTACK_ARGS2(stack) DLSTACK_ARGS1(stack), stack[1] -#define DLSTACK_ARGS3(stack) DLSTACK_ARGS2(stack), stack[2] -#define DLSTACK_ARGS4(stack) DLSTACK_ARGS3(stack), stack[3] -#define DLSTACK_ARGS5(stack) DLSTACK_ARGS4(stack), stack[4] -#define DLSTACK_ARGS6(stack) DLSTACK_ARGS5(stack), stack[5] -#define DLSTACK_ARGS7(stack) DLSTACK_ARGS6(stack), stack[6] -#define DLSTACK_ARGS8(stack) DLSTACK_ARGS7(stack), stack[7] -#define DLSTACK_ARGS9(stack) DLSTACK_ARGS8(stack), stack[8] -#define DLSTACK_ARGS10(stack) DLSTACK_ARGS9(stack), stack[9] -#define DLSTACK_ARGS11(stack) DLSTACK_ARGS10(stack), stack[10] -#define DLSTACK_ARGS12(stack) DLSTACK_ARGS11(stack), stack[11] -#define DLSTACK_ARGS13(stack) DLSTACK_ARGS12(stack), stack[12] -#define DLSTACK_ARGS14(stack) DLSTACK_ARGS13(stack), stack[13] -#define DLSTACK_ARGS15(stack) DLSTACK_ARGS14(stack), stack[14] -#define DLSTACK_ARGS16(stack) DLSTACK_ARGS15(stack), stack[15] -#define DLSTACK_ARGS17(stack) DLSTACK_ARGS16(stack), stack[16] -#define DLSTACK_ARGS18(stack) DLSTACK_ARGS17(stack), stack[17] -#define DLSTACK_ARGS19(stack) DLSTACK_ARGS18(stack), stack[18] -#define DLSTACK_ARGS20(stack) DLSTACK_ARGS19(stack), stack[19] - -extern VALUE rb_mDL; -extern VALUE rb_cDLHandle; -extern VALUE rb_cDLSymbol; -extern VALUE rb_eDLError; -extern VALUE rb_eDLTypeError; - -typedef struct { char c; void *x; } s_voidp; -typedef struct { char c; short x; } s_short; -typedef struct { char c; int x; } s_int; -typedef struct { char c; long x; } s_long; -typedef struct { char c; float x; } s_float; -typedef struct { char c; double x; } s_double; -#if HAVE_LONG_LONG -typedef struct { char c; LONG_LONG x; } s_long_long; -#endif - -#define ALIGN_VOIDP (sizeof(s_voidp) - sizeof(void *)) -#define ALIGN_SHORT (sizeof(s_short) - sizeof(short)) -#define ALIGN_CHAR (1) -#define ALIGN_INT (sizeof(s_int) - sizeof(int)) -#define ALIGN_LONG (sizeof(s_long) - sizeof(long)) -#if HAVE_LONG_LONG -#define ALIGN_LONG_LONG (sizeof(s_long_long) - sizeof(LONG_LONG)) -#endif -#define ALIGN_FLOAT (sizeof(s_float) - sizeof(float)) -#define ALIGN_DOUBLE (sizeof(s_double) - sizeof(double)) - -#define DLALIGN(ptr,offset,align) {\ - while( (((unsigned long)((char *)ptr + offset)) % align) != 0 ) offset++;\ -} - - -#define DLTYPE_VOID 0 -#define DLTYPE_VOIDP 1 -#define DLTYPE_CHAR 2 -#define DLTYPE_SHORT 3 -#define DLTYPE_INT 4 -#define DLTYPE_LONG 5 -#if HAVE_LONG_LONG -#define DLTYPE_LONG_LONG 6 -#endif -#define DLTYPE_FLOAT 7 -#define DLTYPE_DOUBLE 8 -#define MAX_DLTYPE 9 - -#if SIZEOF_VOIDP == SIZEOF_LONG -# define PTR2NUM(x) (ULONG2NUM((unsigned long)(x))) -# define NUM2PTR(x) ((void*)(NUM2ULONG(x))) -#else -/* # error --->> Ruby/DL2 requires sizeof(void*) == sizeof(long) to be compiled. <<--- */ -# define PTR2NUM(x) (ULL2NUM((unsigned long long)(x))) -# define NUM2PTR(x) ((void*)(NUM2ULL(x))) -#endif - -#define BOOL2INT(x) ((x == Qtrue)?1:0) -#define INT2BOOL(x) (x?Qtrue:Qfalse) - -typedef void (*freefunc_t)(void*); - -struct dl_handle { - void *ptr; - int open; - int enable_close; -}; - - -struct cfunc_data { - void *ptr; - char *name; - int type; - ID calltype; -}; -extern ID rbdl_id_cdecl; -extern ID rbdl_id_stdcall; -#define CFUNC_CDECL (rbdl_id_cdecl) -#define CFUNC_STDCALL (rbdl_id_stdcall) - -struct ptr_data { - void *ptr; - long size; - freefunc_t free; -}; - -#define RDL_HANDLE(obj) ((struct dl_handle *)(DATA_PTR(obj))) -#define RCFUNC_DATA(obj) ((struct cfunc_data *)(DATA_PTR(obj))) -#define RPTR_DATA(obj) ((struct ptr_data *)(DATA_PTR(obj))) - -VALUE rb_dlcfunc_new(void (*func)(), int dltype, const char * name, ID calltype); -VALUE rb_dlptr_new(void *ptr, long size, freefunc_t func); -VALUE rb_dlptr_new2(VALUE klass, void *ptr, long size, freefunc_t func); -VALUE rb_dlptr_malloc(long size, freefunc_t func); - -#endif |