diff dyncall/dyncall_api.c @ 466:ddfb9577a00e

introduced platform-native thiscall mode (DC_CALL_C_DEFAULT_THIS), as needed for upcoming aggregate support (until now only x86 platforms allowed for specifically selecting thiscall mode, given the different conventions on the same platform); also added respective DC_SIGCHAR_CC_THISCALL ('*')
author Tassilo Philipp
date Wed, 02 Feb 2022 18:30:44 +0100
parents 2fb084f98439
children 71c884e610f0
line wrap: on
line diff
--- a/dyncall/dyncall_api.c	Wed Feb 02 12:55:23 2022 +0100
+++ b/dyncall/dyncall_api.c	Wed Feb 02 18:30:44 2022 +0100
@@ -6,7 +6,7 @@
  Description: C interface to call vm
  License:
 
-   Copyright (c) 2007-2020 Daniel Adler <dadler@uni-goettingen.de>, 
+   Copyright (c) 2007-2022 Daniel Adler <dadler@uni-goettingen.de>,
                            Tassilo Philipp <tphilipp@potion-studios.com>
 
    Permission to use, copy, modify, and distribute this software for any
@@ -29,124 +29,124 @@
 #include "dyncall_callvm.h"
 
 void dcReset(DCCallVM* vm)
-{ 
-  vm->mVTpointer->reset(vm); 
+{
+  vm->mVTpointer->reset(vm);
 }
 
-void dcFree(DCCallVM* vm) 
-{ 
-  vm->mVTpointer->free(vm); 
+void dcFree(DCCallVM* vm)
+{
+  vm->mVTpointer->free(vm);
 }
 
-void dcMode(DCCallVM* vm,DCint mode) 
-{ 
+void dcMode(DCCallVM* vm,DCint mode)
+{
   vm->mVTpointer->mode(vm,mode);
 }
 
-void dcArgBool(DCCallVM* vm,DCbool x) 
-{ 
-  vm->mVTpointer->argBool(vm, x); 
+void dcArgBool(DCCallVM* vm,DCbool x)
+{
+  vm->mVTpointer->argBool(vm, x);
 }
 
 void dcArgChar(DCCallVM* vm,DCchar x)
-{ 
-  vm->mVTpointer->argChar(vm, x); 
+{
+  vm->mVTpointer->argChar(vm, x);
 }
 
-void dcArgShort(DCCallVM* vm,DCshort x) 
-{ 
-  vm->mVTpointer->argShort(vm, x); 
+void dcArgShort(DCCallVM* vm,DCshort x)
+{
+  vm->mVTpointer->argShort(vm, x);
 }
 
-void dcArgInt(DCCallVM* vm,DCint x) 
-{ 
-  vm->mVTpointer->argInt(vm, x); 
+void dcArgInt(DCCallVM* vm,DCint x)
+{
+  vm->mVTpointer->argInt(vm, x);
 }
 
-void dcArgLong(DCCallVM* vm,DClong x) 
-{ 
-  vm->mVTpointer->argLong(vm, x); 
+void dcArgLong(DCCallVM* vm,DClong x)
+{
+  vm->mVTpointer->argLong(vm, x);
 }
 
-void dcArgLongLong(DCCallVM* vm, DClonglong x) 
-{ 
-  vm->mVTpointer->argLongLong(vm, x); 
+void dcArgLongLong(DCCallVM* vm, DClonglong x)
+{
+  vm->mVTpointer->argLongLong(vm, x);
 }
 
-void dcArgFloat(DCCallVM* vm, DCfloat x) 
-{ 
-  vm->mVTpointer->argFloat(vm, x); 
+void dcArgFloat(DCCallVM* vm, DCfloat x)
+{
+  vm->mVTpointer->argFloat(vm, x);
 }
 
-void dcArgDouble(DCCallVM* vm, DCdouble x) 
-{ 
-  vm->mVTpointer->argDouble(vm, x); 
+void dcArgDouble(DCCallVM* vm, DCdouble x)
+{
+  vm->mVTpointer->argDouble(vm, x);
 }
 
-void dcArgPointer(DCCallVM* vm, DCpointer x) 
-{ 
-  vm->mVTpointer->argPointer(vm, x); 
+void dcArgPointer(DCCallVM* vm, DCpointer x)
+{
+  vm->mVTpointer->argPointer(vm, x);
 }
 
-void dcArgStruct(DCCallVM* vm, DCstruct* s, DCpointer x) 
-{ 
-  vm->mVTpointer->argStruct(vm, s, x); 
+void dcArgStruct(DCCallVM* vm, DCstruct* s, DCpointer x)
+{
+  vm->mVTpointer->argStruct(vm, s, x);
 }
 
 
-void dcCallVoid(DCCallVM* vm, DCpointer funcptr) 
-{        
-  vm->mVTpointer->callVoid(vm, funcptr); 
+void dcCallVoid(DCCallVM* vm, DCpointer funcptr)
+{
+  vm->mVTpointer->callVoid(vm, funcptr);
 }
 
-DCchar dcCallChar(DCCallVM* vm, DCpointer funcptr) 
-{ 
-  return vm->mVTpointer->callChar(vm, funcptr); 
+DCchar dcCallChar(DCCallVM* vm, DCpointer funcptr)
+{
+  return vm->mVTpointer->callChar(vm, funcptr);
 }
 
-DCbool dcCallBool(DCCallVM* vm, DCpointer funcptr) 
-{ 
-  return vm->mVTpointer->callBool(vm, funcptr); 
+DCbool dcCallBool(DCCallVM* vm, DCpointer funcptr)
+{
+  return vm->mVTpointer->callBool(vm, funcptr);
 }
 
-DCshort dcCallShort(DCCallVM* vm, DCpointer funcptr) 
-{ 
-  return vm->mVTpointer->callShort(vm, funcptr); 
+DCshort dcCallShort(DCCallVM* vm, DCpointer funcptr)
+{
+  return vm->mVTpointer->callShort(vm, funcptr);
 }
 
-DCint dcCallInt(DCCallVM* vm, DCpointer funcptr) 
-{ 
-  return vm->mVTpointer->callInt(vm, funcptr); 
+DCint dcCallInt(DCCallVM* vm, DCpointer funcptr)
+{
+  return vm->mVTpointer->callInt(vm, funcptr);
 }
 
-DClong dcCallLong(DCCallVM* vm, DCpointer funcptr) 
-{ 
-  return vm->mVTpointer->callLong(vm, funcptr); 
+DClong dcCallLong(DCCallVM* vm, DCpointer funcptr)
+{
+  return vm->mVTpointer->callLong(vm, funcptr);
 }
 
-DClonglong dcCallLongLong(DCCallVM* vm, DCpointer funcptr) 
-{ 
-  return vm->mVTpointer->callLongLong(vm, funcptr); 
+DClonglong dcCallLongLong(DCCallVM* vm, DCpointer funcptr)
+{
+  return vm->mVTpointer->callLongLong(vm, funcptr);
 }
 
-DCfloat dcCallFloat(DCCallVM* vm, DCpointer funcptr) 
-{ 
-  return vm->mVTpointer->callFloat(vm, funcptr); 
+DCfloat dcCallFloat(DCCallVM* vm, DCpointer funcptr)
+{
+  return vm->mVTpointer->callFloat(vm, funcptr);
 }
 
-DCdouble dcCallDouble(DCCallVM* vm, DCpointer funcptr) 
-{ 
-  return vm->mVTpointer->callDouble(vm, funcptr); 
+DCdouble dcCallDouble(DCCallVM* vm, DCpointer funcptr)
+{
+  return vm->mVTpointer->callDouble(vm, funcptr);
 }
 
-DCpointer dcCallPointer(DCCallVM* vm, DCpointer funcptr) 
-{ 
-  return vm->mVTpointer->callPointer(vm, funcptr); 
+DCpointer dcCallPointer(DCCallVM* vm, DCpointer funcptr)
+{
+  return vm->mVTpointer->callPointer(vm, funcptr);
 }
 
-void dcCallStruct(DCCallVM* vm, DCpointer funcptr, DCstruct* s, DCpointer x) 
-{ 
-  vm->mVTpointer->callStruct(vm, funcptr, s, x); 
+void dcCallStruct(DCCallVM* vm, DCpointer funcptr, DCstruct* s, DCpointer x)
+{
+  vm->mVTpointer->callStruct(vm, funcptr, s, x);
 }
 
 DCint dcGetError(DCCallVM *vm)
@@ -159,6 +159,7 @@
   switch(sig_char)
   {
     case DC_SIGCHAR_CC_DEFAULT:          return DC_CALL_C_DEFAULT;
+    case DC_SIGCHAR_CC_THISCALL:         return DC_CALL_C_DEFAULT_THIS;
     case DC_SIGCHAR_CC_ELLIPSIS:         return DC_CALL_C_ELLIPSIS;
     case DC_SIGCHAR_CC_ELLIPSIS_VARARGS: return DC_CALL_C_ELLIPSIS_VARARGS;
     case DC_SIGCHAR_CC_CDECL:            return DC_CALL_C_X86_CDECL;