Mercurial > pub > dyncall > dyncall
diff dyncall/dyncall_api.c @ 0:3e629dc19168
initial from svn dyncall-1745
author | Daniel Adler |
---|---|
date | Thu, 19 Mar 2015 22:24:28 +0100 |
parents | |
children | 67961454902b |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/dyncall/dyncall_api.c Thu Mar 19 22:24:28 2015 +0100 @@ -0,0 +1,168 @@ +/* + + Package: dyncall + Library: dyncall + File: dyncall/dyncall_api.c + Description: C interface to call vm + License: + + Copyright (c) 2007-2015 Daniel Adler <dadler@uni-goettingen.de>, + Tassilo Philipp <tphilipp@potion-studios.com> + + Permission to use, copy, modify, and distribute this software for any + purpose with or without fee is hereby granted, provided that the above + copyright notice and this permission notice appear in all copies. + + THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + +*/ + + + +#include "dyncall.h" +#include "dyncall_callvm.h" +#include "dyncall_alloc.h" + +void dcReset(DCCallVM* vm) +{ + vm->mVTpointer->reset(vm); +} + +void dcFree(DCCallVM* vm) +{ + vm->mVTpointer->free(vm); +} + +void dcMode(DCCallVM* vm,DCint mode) +{ + vm->mVTpointer->mode(vm,mode); + /* dcReset(vm); -- in order to support ellipsis calls, we need to allow + * a dcMode(callvm, DC_CALL_C_ELLIPSIS_VARARGS) */ +} + +void dcArgBool(DCCallVM* vm,DCbool x) +{ + vm->mVTpointer->argBool(vm, x); +} + +void dcArgChar(DCCallVM* vm,DCchar x) +{ + vm->mVTpointer->argChar(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 dcArgLong(DCCallVM* vm,DClong x) +{ + vm->mVTpointer->argLong(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 dcArgDouble(DCCallVM* vm, DCdouble x) +{ + vm->mVTpointer->argDouble(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 dcCallVoid(DCCallVM* vm, DCpointer funcptr) +{ + vm->mVTpointer->callVoid(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); +} + +DCshort dcCallShort(DCCallVM* vm, DCpointer funcptr) +{ + return vm->mVTpointer->callShort(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); +} + +DClonglong dcCallLongLong(DCCallVM* vm, DCpointer funcptr) +{ + return vm->mVTpointer->callLongLong(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); +} + +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); +} + +DCint dcGetError(DCCallVM *vm) +{ + return vm->mError; +} + +const char* dcGetErrorString(int mode) +{ + switch(mode) { + case DC_ERROR_NONE: return "none"; + case DC_ERROR_UNSUPPORTED_MODE: return "unsupported mode"; + default: return "(unknown mode id)"; + } +} +