ExternalLibraryFunction.st
changeset 20307 678da26adf03
parent 20299 7db2dc640f2f
child 20309 98a12d386c4a
equal deleted inserted replaced
20306:07ff17265c6b 20307:678da26adf03
    71    extern ffi_type *__get_ffi_type_uint64();
    71    extern ffi_type *__get_ffi_type_uint64();
    72    extern ffi_type *__get_ffi_type_float();
    72    extern ffi_type *__get_ffi_type_float();
    73    extern ffi_type *__get_ffi_type_double();
    73    extern ffi_type *__get_ffi_type_double();
    74    extern ffi_type *__get_ffi_type_void();
    74    extern ffi_type *__get_ffi_type_void();
    75    extern ffi_type *__get_ffi_type_pointer();
    75    extern ffi_type *__get_ffi_type_pointer();
    76    extern INTFUNC __get_ffi_prep_cif();
    76    extern INTLFUNC __get_ffi_prep_cif();
    77    extern INTFUNC __get_ffi_call();
    77    extern INTLFUNC __get_ffi_call();
    78 #  ifdef _MINGW__
    78 #  ifdef _MINGW__
    79 #   define ffi_prep_cif (*(__get_ffi_prep_cif()))
    79 #   define ffi_prep_cif (*(__get_ffi_prep_cif()))
    80 #   define ffi_call (*(__get_ffi_call()))
    80 #   define ffi_call     (*(__get_ffi_call()))
    81 #  endif
    81 #  endif
    82 # endif
    82 # endif
    83 
    83 
    84 # define TYPE_UINT      __get_ffi_type_uint()
    84 # define TYPE_UINT      __get_ffi_type_uint()
    85 # define TYPE_UINT8     __get_ffi_type_uint8()
    85 # define TYPE_UINT8     __get_ffi_type_uint8()
   296 !
   296 !
   297 
   297 
   298 dllMappingAt:baseLibname put:aNameOrPath
   298 dllMappingAt:baseLibname put:aNameOrPath
   299     "allows for dll's to be replaced,
   299     "allows for dll's to be replaced,
   300      for example, if you want to use the mozilla sqlite dll
   300      for example, if you want to use the mozilla sqlite dll
   301         C:\Program Files\Mozilla Firefox\mozsqlite3.dll
   301 	C:\Program Files\Mozilla Firefox\mozsqlite3.dll
   302      for the sqlite3, execute:
   302      for the sqlite3, execute:
   303         ExternalLibraryFunction
   303 	ExternalLibraryFunction
   304             dllMappingAt:'sqlite3'
   304 	    dllMappingAt:'sqlite3'
   305             put: 'C:\Program Files\Mozilla Firefox\mozsqlite3.dll'
   305 	    put: 'C:\Program Files\Mozilla Firefox\mozsqlite3.dll'
   306      for mingw:
   306      for mingw:
   307         ExternalLibraryFunction
   307 	ExternalLibraryFunction
   308             dllMappingAt:'sqlite3'
   308 	    dllMappingAt:'sqlite3'
   309             put:'C:\mingw64\opt\bin\libsqlite3-0.dll'
   309 	    put:'C:\mingw64\opt\bin\libsqlite3-0.dll'
   310     "
   310     "
   311 
   311 
   312     self dllMapping at:baseLibname put: aNameOrPath
   312     self dllMapping at:baseLibname put: aNameOrPath
   313 !
   313 !
   314 
   314 
  1128     void **__argValuePointers = __argValuePointersIncludingThis;
  1128     void **__argValuePointers = __argValuePointersIncludingThis;
  1129     void *__returnValuePointer;
  1129     void *__returnValuePointer;
  1130     int __numArgs, __numArgsIncludingThis;
  1130     int __numArgs, __numArgsIncludingThis;
  1131     static INT null = 0;
  1131     static INT null = 0;
  1132     int i = -1;
  1132     int i = -1;
  1133     VOIDFUNC codeAddress = (VOIDFUNC)__INST(code_);
  1133     voidFUNC codeAddress = (voidFUNC)__INST(code_);
  1134     int __numArgsWanted;
  1134     int __numArgsWanted;
  1135 
  1135 
  1136 #   define __FAIL__(fcode) \
  1136 #   define __FAIL__(fcode) \
  1137     { \
  1137     { \
  1138 	failureCode = fcode; failureArgNr = __mkSmallInteger(i+1); goto getOutOfHere; \
  1138 	failureCode = fcode; failureArgNr = __mkSmallInteger(i+1); goto getOutOfHere; \