/* * C-callable .NET bridge, * * (c) 2003-2009, Sigbjorn Finne * */ #ifndef __HSDOTNET_H__ #define __HSDOTNET_H__ typedef enum { Dotnet_Byte = 0, Dotnet_Boolean, Dotnet_Char, Dotnet_Double, Dotnet_Float, Dotnet_Int, Dotnet_Int8, Dotnet_Int16, Dotnet_Int32, Dotnet_Int64, Dotnet_Word8, Dotnet_Word16, Dotnet_Word32, Dotnet_Word64, Dotnet_Ptr, Dotnet_Unit, Dotnet_Object, Dotnet_String } DotnetType; typedef union { unsigned char arg_byte; unsigned int arg_bool; unsigned char arg_char; int arg_int; signed char arg_int8; signed short arg_int16; signed int arg_int32; #if defined(_MSC_VER) signed __int64 arg_int64; #else signed long long arg_int64; #endif float arg_float; double arg_double; unsigned char arg_word8; unsigned short arg_word16; unsigned int arg_word32; #if defined(_MSC_VER) unsigned __int64 arg_word64; #else unsigned long long arg_word64; #endif void* arg_ptr; void* arg_obj; void* arg_str; } DotnetArgVal; typedef struct { DotnetArgVal arg; int arg_type; } DotnetArg; #if !defined(__cplusplus) extern char* DN_invokeStatic ( char *assemName, char *methName, char *tyArgs, DotnetArg *args, int n_args, int asBoxed, int resultTy, void *res); extern char* DN_getStatic ( char *assemName, char *fieldClsName, DotnetArg *args, int n_args, int asBoxed, int resultTy, void *res); extern char* DN_setStatic ( char *assemName, char *fieldClsName, DotnetArg *args, int n_args, int asBoxed, int resultTy, void *res); extern char* DN_createObject ( char *assemName, char *methName, DotnetArg *args, int n_args, int asBoxed, int resultTy, void *res); extern char* DN_invokeMethod ( char *methName, char *tyArgs, DotnetArg *args, int n_args, int asBoxed, int resultTy, void *res); extern char* DN_getField ( char *methName, DotnetArg *args, int n_args, int asBoxed, int resultTy, void *res); extern char* DN_setField ( char *clsAndMethName, DotnetArg *args, int n_args, int asBoxed, int resultTy, void *res); extern char* DN_mkVector ( int ty, int sz, void* res); extern char* DN_newString ( char* str ); extern char* DN_defineDelegator ( char* delTy, void* funPtr, /*[out]*/void* res); extern char* DN_derefHandle ( void* hPtr, /*[out]*/void* res); extern void DN_setDumpExceptionsFlag ( unsigned char flg ); extern void stopDotnetBridge(void); #endif #endif /* __HSDOTNET_H__ */