0
|
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
|
84
|
160 //@@@ not used, (re)introduce or cleanup
|
|
161 //const char* dcGetErrorString(int mode)
|
|
162 //{
|
|
163 // switch(mode) {
|
|
164 // case DC_ERROR_NONE: return "none";
|
|
165 // case DC_ERROR_UNSUPPORTED_MODE: return "unsupported mode";
|
|
166 // default: return "(unknown mode id)";
|
|
167 // }
|
|
168 //}
|
0
|
169
|