annotate dyncall/dyncall_callvm.h @ 0:3e629dc19168

initial from svn dyncall-1745
author Daniel Adler
date Thu, 19 Mar 2015 22:24:28 +0100
parents
children f5577f6bf97a
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
1 /*
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
2
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
3 Package: dyncall
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
4 Library: dyncall
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
5 File: dyncall/dyncall_callvm.h
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
6 Description: Common call vm binary interface.
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
7 License:
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
8
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
9 Copyright (c) 2007-2015 Daniel Adler <dadler@uni-goettingen.de>,
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
10 Tassilo Philipp <tphilipp@potion-studios.com>
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
11
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
12 Permission to use, copy, modify, and distribute this software for any
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
13 purpose with or without fee is hereby granted, provided that the above
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
14 copyright notice and this permission notice appear in all copies.
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
15
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
16 THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
17 WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
18 MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
19 ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
20 WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
21 ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
22 OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
23
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
24 */
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
25
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
26
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
27
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
28 #ifndef DYNCALL_CALLVM_H
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
29 #define DYNCALL_CALLVM_H
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
30
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
31 #include "dyncall.h"
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
32
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
33 /* --- callvm virtual function table --------------------------------------- */
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
34
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
35 /* NOTE: if something changes in DCCallVM_, update offset marks in dyncall_call_sparc.S */
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
36
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
37 typedef struct DCCallVM_vt_ DCCallVM_vt;
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
38
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
39 struct DCCallVM_
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
40 {
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
41 DCCallVM_vt* mVTpointer;
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
42 DCint mError;
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
43 };
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
44
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
45 struct DCCallVM_vt_
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
46 {
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
47 void (*free) (DCCallVM* vm);
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
48 void (*reset) (DCCallVM* vm);
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
49 void (*mode) (DCCallVM* vm,DCint mode);
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
50 void (*argBool) (DCCallVM* vm,DCbool B);
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
51 void (*argChar) (DCCallVM* vm,DCchar c);
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
52 void (*argShort) (DCCallVM* vm,DCshort s);
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
53 void (*argInt) (DCCallVM* vm,DCint i);
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
54 void (*argLong) (DCCallVM* vm,DClong l);
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
55 void (*argLongLong) (DCCallVM* vm,DClonglong L);
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
56 void (*argFloat) (DCCallVM* vm,DCfloat f);
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
57 void (*argDouble) (DCCallVM* vm,DCdouble d);
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
58 void (*argPointer) (DCCallVM* vm,DCpointer p);
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
59 void (*argStruct) (DCCallVM* vm,DCstruct* s, DCpointer p);
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
60 void (*callVoid) (DCCallVM* vm,DCpointer funcptr);
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
61 DCbool (*callBool) (DCCallVM* vm,DCpointer funcptr);
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
62 DCchar (*callChar) (DCCallVM* vm,DCpointer funcptr);
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
63 DCshort (*callShort) (DCCallVM* vm,DCpointer funcptr);
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
64 DCint (*callInt) (DCCallVM* vm,DCpointer funcptr);
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
65 DClong (*callLong) (DCCallVM* vm,DCpointer funcptr);
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
66 DClonglong (*callLongLong) (DCCallVM* vm,DCpointer funcptr);
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
67 DCfloat (*callFloat) (DCCallVM* vm,DCpointer funcptr);
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
68 DCdouble (*callDouble) (DCCallVM* vm,DCpointer funcptr);
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
69 DCpointer (*callPointer) (DCCallVM* vm,DCpointer funcptr);
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
70 void (*callStruct) (DCCallVM* vm,DCpointer funcptr,DCstruct* s, DCpointer returnValue);
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
71 };
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
72
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
73 typedef DCvoid (DCvoidvmfunc) (DCCallVM* vm,DCpointer funcptr);
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
74 typedef DCbool (DCboolvmfunc) (DCCallVM* vn,DCpointer funcptr);
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
75 typedef DCchar (DCcharvmfunc) (DCCallVM* vm,DCpointer funcptr);
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
76 typedef DCshort (DCshortvmfunc) (DCCallVM* vm,DCpointer funcptr);
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
77 typedef DCint (DCintvmfunc) (DCCallVM* vm,DCpointer funcptr);
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
78 typedef DClong (DClongvmfunc) (DCCallVM* vm,DCpointer funcptr);
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
79 typedef DClonglong (DClonglongvmfunc) (DCCallVM* vm,DCpointer funcptr);
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
80 typedef DCfloat (DCfloatvmfunc) (DCCallVM* vm,DCpointer funcptr);
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
81 typedef DCdouble (DCdoublevmfunc) (DCCallVM* vm,DCpointer funcptr);
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
82 typedef DCpointer (DCpointervmfunc) (DCCallVM* vm,DCpointer funcptr);
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
83
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
84 /* Common base functions for CallVM implementations. */
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
85
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
86 void dc_callvm_base_init(DCCallVM *pInstance, DCCallVM_vt* pVTable);
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
87
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
88 #endif /* DYNCALL_CALLVM_H */
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
89