annotate dyncall/dyncall.h @ 0:3e629dc19168

initial from svn dyncall-1745
author Daniel Adler
date Thu, 19 Mar 2015 22:24:28 +0100
parents
children 7ca57dbefed4
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.h
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
6 Description: public header for library dyncall
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
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
29 dyncall C API
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
30
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
31 REVISION
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
32 2015/01/16 added SYS_PPC32 system call
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
33 2007/12/11 initial
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
34
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
35 */
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
36
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
37 #ifndef DYNCALL_H
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
38 #define DYNCALL_H
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
39
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
40 #include "dyncall_types.h"
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
41
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
42 #ifdef __cplusplus
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
43 extern "C" {
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
44 #endif
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
45
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
46 typedef struct DCCallVM_ DCCallVM;
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
47 typedef struct DCstruct_ DCstruct;
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
48
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
49 /* Supported Calling Convention Modes */
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
50
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
51 #define DC_CALL_C_DEFAULT 0
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
52 #define DC_CALL_C_ELLIPSIS 100
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
53 #define DC_CALL_C_ELLIPSIS_VARARGS 101
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
54 #define DC_CALL_C_X86_CDECL 1
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
55 #define DC_CALL_C_X86_WIN32_STD 2
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
56 #define DC_CALL_C_X86_WIN32_FAST_MS 3
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
57 #define DC_CALL_C_X86_WIN32_FAST_GNU 4
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
58 #define DC_CALL_C_X86_WIN32_THIS_MS 5
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
59 #define DC_CALL_C_X86_WIN32_THIS_GNU 6
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
60 #define DC_CALL_C_X64_WIN64 7
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
61 #define DC_CALL_C_X64_SYSV 8
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
62 #define DC_CALL_C_PPC32_DARWIN 9
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
63 #define DC_CALL_C_PPC32_OSX DC_CALL_C_PPC32_DARWIN /* alias */
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
64 #define DC_CALL_C_ARM_ARM_EABI 10
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
65 #define DC_CALL_C_ARM_THUMB_EABI 11
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
66 #define DC_CALL_C_ARM_ARMHF 30
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
67 #define DC_CALL_C_MIPS32_EABI 12
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
68 #define DC_CALL_C_MIPS32_PSPSDK DC_CALL_C_MIPS32_EABI /* alias - deprecated. */
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
69 #define DC_CALL_C_PPC32_SYSV 13
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
70 #define DC_CALL_C_PPC32_LINUX DC_CALL_C_PPC32_SYSV /* alias */
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
71 #define DC_CALL_C_ARM_ARM 14
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
72 #define DC_CALL_C_ARM_THUMB 15
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
73 #define DC_CALL_C_MIPS32_O32 16
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
74 #define DC_CALL_C_MIPS64_N32 17
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
75 #define DC_CALL_C_MIPS64_N64 18
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
76 #define DC_CALL_C_X86_PLAN9 19
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
77 #define DC_CALL_C_SPARC32 20
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
78 #define DC_CALL_C_SPARC64 21
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
79 #define DC_CALL_C_ARM64 22
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
80 #define DC_CALL_C_PPC64 23
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
81 #define DC_CALL_C_PPC64_LINUX DC_CALL_C_PPC64 /* alias */
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
82 #define DC_CALL_SYS_DEFAULT 200
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
83 #define DC_CALL_SYS_X86_INT80H_LINUX 201
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
84 #define DC_CALL_SYS_X86_INT80H_BSD 202
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
85 #define DC_CALL_SYS_PPC32 210
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
86
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
87 /* Error codes. */
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
88
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
89 #define DC_ERROR_NONE 0
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
90 #define DC_ERROR_UNSUPPORTED_MODE -1
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
91
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
92 DC_API DCCallVM* dcNewCallVM (DCsize size);
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
93 DC_API void dcFree (DCCallVM* vm);
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
94 DC_API void dcReset (DCCallVM* vm);
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
95
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
96 DC_API void dcMode (DCCallVM* vm, DCint mode);
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
97
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
98 DC_API void dcArgBool (DCCallVM* vm, DCbool value);
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
99 DC_API void dcArgChar (DCCallVM* vm, DCchar value);
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
100 DC_API void dcArgShort (DCCallVM* vm, DCshort value);
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
101 DC_API void dcArgInt (DCCallVM* vm, DCint value);
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
102 DC_API void dcArgLong (DCCallVM* vm, DClong value);
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
103 DC_API void dcArgLongLong (DCCallVM* vm, DClonglong value);
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
104 DC_API void dcArgFloat (DCCallVM* vm, DCfloat value);
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
105 DC_API void dcArgDouble (DCCallVM* vm, DCdouble value);
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
106 DC_API void dcArgPointer (DCCallVM* vm, DCpointer value);
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
107 DC_API void dcArgStruct (DCCallVM* vm, DCstruct* s, DCpointer value);
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
108
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
109 DC_API void dcCallVoid (DCCallVM* vm, DCpointer funcptr);
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
110 DC_API DCbool dcCallBool (DCCallVM* vm, DCpointer funcptr);
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
111 DC_API DCchar dcCallChar (DCCallVM* vm, DCpointer funcptr);
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
112 DC_API DCshort dcCallShort (DCCallVM* vm, DCpointer funcptr);
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
113 DC_API DCint dcCallInt (DCCallVM* vm, DCpointer funcptr);
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
114 DC_API DClong dcCallLong (DCCallVM* vm, DCpointer funcptr);
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
115 DC_API DClonglong dcCallLongLong (DCCallVM* vm, DCpointer funcptr);
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
116 DC_API DCfloat dcCallFloat (DCCallVM* vm, DCpointer funcptr);
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
117 DC_API DCdouble dcCallDouble (DCCallVM* vm, DCpointer funcptr);
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
118 DC_API DCpointer dcCallPointer (DCCallVM* vm, DCpointer funcptr);
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
119 DC_API void dcCallStruct (DCCallVM* vm, DCpointer funcptr, DCstruct* s, DCpointer returnValue);
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
120
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
121 DC_API DCint dcGetError (DCCallVM* vm);
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
122
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
123 #define DEFAULT_ALIGNMENT 0
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
124 DC_API DCstruct* dcNewStruct (DCsize fieldCount, DCint alignment);
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
125 DC_API void dcStructField (DCstruct* s, DCint type, DCint alignment, DCsize arrayLength);
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
126 DC_API void dcSubStruct (DCstruct* s, DCsize fieldCount, DCint alignment, DCsize arrayLength);
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
127 /* Each dcNewStruct or dcSubStruct call must be paired with a dcCloseStruct. */
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
128 DC_API void dcCloseStruct (DCstruct* s);
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
129 DC_API DCsize dcStructSize (DCstruct* s);
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
130 DC_API DCsize dcStructAlignment(DCstruct* s);
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
131 DC_API void dcFreeStruct (DCstruct* s);
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
132
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
133 DC_API DCstruct* dcDefineStruct (const char* signature);
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
134
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
135
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
136 #ifdef __cplusplus
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
137 }
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
138 #endif
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
139
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
140 #endif /* DYNCALL_H */
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
141