comparison 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
comparison
equal deleted inserted replaced
-1:000000000000 0:3e629dc19168
1 /*
2
3 Package: dyncall
4 Library: dyncall
5 File: dyncall/dyncall_api.c
6 Description: C interface to call vm
7 License:
8
9 Copyright (c) 2007-2015 Daniel Adler <dadler@uni-goettingen.de>,
10 Tassilo Philipp <tphilipp@potion-studios.com>
11
12 Permission to use, copy, modify, and distribute this software for any
13 purpose with or without fee is hereby granted, provided that the above
14 copyright notice and this permission notice appear in all copies.
15
16 THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
17 WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
18 MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
19 ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
20 WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
21 ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
22 OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
23
24 */
25
26
27
28 #include "dyncall.h"
29 #include "dyncall_callvm.h"
30 #include "dyncall_alloc.h"
31
32 void dcReset(DCCallVM* vm)
33 {
34 vm->mVTpointer->reset(vm);
35 }
36
37 void dcFree(DCCallVM* vm)
38 {
39 vm->mVTpointer->free(vm);
40 }
41
42 void dcMode(DCCallVM* vm,DCint mode)
43 {
44 vm->mVTpointer->mode(vm,mode);
45 /* dcReset(vm); -- in order to support ellipsis calls, we need to allow
46 * a dcMode(callvm, DC_CALL_C_ELLIPSIS_VARARGS) */
47 }
48
49 void dcArgBool(DCCallVM* vm,DCbool x)
50 {
51 vm->mVTpointer->argBool(vm, x);
52 }
53
54 void dcArgChar(DCCallVM* vm,DCchar x)
55 {
56 vm->mVTpointer->argChar(vm, x);
57 }
58
59 void dcArgShort(DCCallVM* vm,DCshort x)
60 {
61 vm->mVTpointer->argShort(vm, x);
62 }
63
64 void dcArgInt(DCCallVM* vm,DCint x)
65 {
66 vm->mVTpointer->argInt(vm, x);
67 }
68
69 void dcArgLong(DCCallVM* vm,DClong x)
70 {
71 vm->mVTpointer->argLong(vm, x);
72 }
73
74 void dcArgLongLong(DCCallVM* vm, DClonglong x)
75 {
76 vm->mVTpointer->argLongLong(vm, x);
77 }
78
79 void dcArgFloat(DCCallVM* vm, DCfloat x)
80 {
81 vm->mVTpointer->argFloat(vm, x);
82 }
83
84 void dcArgDouble(DCCallVM* vm, DCdouble x)
85 {
86 vm->mVTpointer->argDouble(vm, x);
87 }
88
89 void dcArgPointer(DCCallVM* vm, DCpointer x)
90 {
91 vm->mVTpointer->argPointer(vm, x);
92 }
93
94 void dcArgStruct(DCCallVM* vm, DCstruct* s, DCpointer x)
95 {
96 vm->mVTpointer->argStruct(vm, s, x);
97 }
98
99
100 void dcCallVoid(DCCallVM* vm, DCpointer funcptr)
101 {
102 vm->mVTpointer->callVoid(vm, funcptr);
103 }
104
105 DCchar dcCallChar(DCCallVM* vm, DCpointer funcptr)
106 {
107 return vm->mVTpointer->callChar(vm, funcptr);
108 }
109
110 DCbool dcCallBool(DCCallVM* vm, DCpointer funcptr)
111 {
112 return vm->mVTpointer->callBool(vm, funcptr);
113 }
114
115 DCshort dcCallShort(DCCallVM* vm, DCpointer funcptr)
116 {
117 return vm->mVTpointer->callShort(vm, funcptr);
118 }
119
120 DCint dcCallInt(DCCallVM* vm, DCpointer funcptr)
121 {
122 return vm->mVTpointer->callInt(vm, funcptr);
123 }
124
125 DClong dcCallLong(DCCallVM* vm, DCpointer funcptr)
126 {
127 return vm->mVTpointer->callLong(vm, funcptr);
128 }
129
130 DClonglong dcCallLongLong(DCCallVM* vm, DCpointer funcptr)
131 {
132 return vm->mVTpointer->callLongLong(vm, funcptr);
133 }
134
135 DCfloat dcCallFloat(DCCallVM* vm, DCpointer funcptr)
136 {
137 return vm->mVTpointer->callFloat(vm, funcptr);
138 }
139
140 DCdouble dcCallDouble(DCCallVM* vm, DCpointer funcptr)
141 {
142 return vm->mVTpointer->callDouble(vm, funcptr);
143 }
144
145 DCpointer dcCallPointer(DCCallVM* vm, DCpointer funcptr)
146 {
147 return vm->mVTpointer->callPointer(vm, funcptr);
148 }
149
150 void dcCallStruct(DCCallVM* vm, DCpointer funcptr, DCstruct* s, DCpointer x)
151 {
152 vm->mVTpointer->callStruct(vm, funcptr, s, x);
153 }
154
155 DCint dcGetError(DCCallVM *vm)
156 {
157 return vm->mError;
158 }
159
160 const char* dcGetErrorString(int mode)
161 {
162 switch(mode) {
163 case DC_ERROR_NONE: return "none";
164 case DC_ERROR_UNSUPPORTED_MODE: return "unsupported mode";
165 default: return "(unknown mode id)";
166 }
167 }
168