annotate test/plain_c++/test_main.cc @ 348:da4b267c10bf r1.1-RC3

- test code fixes and cleanups for win 32
author Tassilo Philipp
date Wed, 08 Jan 2020 17:23:24 +0100
parents dd78bd0152af
children ddfb9577a00e
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: test
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
5 File: test/plain_c++/test_main.cc
324
dd78bd0152af - removal of never-adopted mini-test framework stub
Tassilo Philipp
parents: 281
diff changeset
6 Description:
0
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
324
dd78bd0152af - removal of never-adopted mini-test framework stub
Tassilo Philipp
parents: 281
diff changeset
9 Copyright (c) 2007-2019 Daniel Adler <dadler@uni-goettingen.de>,
0
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 #include "../../dyncall/dyncall.h"
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
30 #include "../common/platformInit.h"
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
31 #include "../common/platformInit.c" /* Impl. for functions only used in this translation unit */
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
32
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
33
324
dd78bd0152af - removal of never-adopted mini-test framework stub
Tassilo Philipp
parents: 281
diff changeset
34 #include <signal.h>
dd78bd0152af - removal of never-adopted mini-test framework stub
Tassilo Philipp
parents: 281
diff changeset
35 #include <setjmp.h>
dd78bd0152af - removal of never-adopted mini-test framework stub
Tassilo Philipp
parents: 281
diff changeset
36
dd78bd0152af - removal of never-adopted mini-test framework stub
Tassilo Philipp
parents: 281
diff changeset
37 jmp_buf jbuf;
dd78bd0152af - removal of never-adopted mini-test framework stub
Tassilo Philipp
parents: 281
diff changeset
38
dd78bd0152af - removal of never-adopted mini-test framework stub
Tassilo Philipp
parents: 281
diff changeset
39
dd78bd0152af - removal of never-adopted mini-test framework stub
Tassilo Philipp
parents: 281
diff changeset
40 void segv_handler(int sig)
dd78bd0152af - removal of never-adopted mini-test framework stub
Tassilo Philipp
parents: 281
diff changeset
41 {
dd78bd0152af - removal of never-adopted mini-test framework stub
Tassilo Philipp
parents: 281
diff changeset
42 longjmp(jbuf, 1);
dd78bd0152af - removal of never-adopted mini-test framework stub
Tassilo Philipp
parents: 281
diff changeset
43 }
dd78bd0152af - removal of never-adopted mini-test framework stub
Tassilo Philipp
parents: 281
diff changeset
44
dd78bd0152af - removal of never-adopted mini-test framework stub
Tassilo Philipp
parents: 281
diff changeset
45
dd78bd0152af - removal of never-adopted mini-test framework stub
Tassilo Philipp
parents: 281
diff changeset
46 /* -------------------------------------------------------------------------
dd78bd0152af - removal of never-adopted mini-test framework stub
Tassilo Philipp
parents: 281
diff changeset
47 * test: identity function calls
0
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
48 * ------------------------------------------------------------------------- */
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
49
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
50 #define DEF_FUNCS(API,NAME) \
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
51 void API fun_##NAME##_v() { } \
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
52 DCbool API fun_##NAME##_b(DCbool x) { return x; } \
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
53 DCint API fun_##NAME##_i(DCint x) { return x; } \
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
54 DClong API fun_##NAME##_j(DClong x) { return x; } \
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
55 DClonglong API fun_##NAME##_l(DClonglong x) { return x; } \
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
56 DCfloat API fun_##NAME##_f(DCfloat x) { return x; } \
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
57 DCdouble API fun_##NAME##_d(DCdouble x) { return x; } \
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
58 DCpointer API fun_##NAME##_p(DCpointer x) { return x; }
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
59
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
60 /* __cdecl */
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
61
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
62 #if !defined(DC__OS_Win32)
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
63 # define __cdecl
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
64 #endif
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
65
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
66
324
dd78bd0152af - removal of never-adopted mini-test framework stub
Tassilo Philipp
parents: 281
diff changeset
67 /* -------------------------------------------------------------------------
dd78bd0152af - removal of never-adopted mini-test framework stub
Tassilo Philipp
parents: 281
diff changeset
68 * test: identity this calls
0
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
69 * ------------------------------------------------------------------------- */
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
70
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
71 union ValueUnion
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
72 {
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
73 DCbool B;
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
74 DCint i;
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
75 DClong j;
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
76 DClonglong l;
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
77 DCfloat f;
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
78 DCdouble d;
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
79 DCpointer p;
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
80 };
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
81
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
82 /* C++ class using __cdecl this call */
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
83
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
84 // #define VTBI_DESTRUCTOR 0
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
85
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
86 /*
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
87 * the layout of the VTable is non-standard and it is not clear what is the initial real first method index.
324
dd78bd0152af - removal of never-adopted mini-test framework stub
Tassilo Philipp
parents: 281
diff changeset
88 * so far it turns out that:
0
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
89 * on vc/x86 : 1
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
90 * on GCC/x86 : 2
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
91 */
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
92
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
93 #if defined DC__C_MSVC
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
94 #define VTBI_BASE 1
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
95 #else
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
96 #define VTBI_BASE 2
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
97 #endif
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
98
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
99 #define VTBI_SET_BOOL VTBI_BASE+0
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
100 #define VTBI_GET_BOOL VTBI_BASE+1
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
101 #define VTBI_SET_INT VTBI_BASE+2
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
102 #define VTBI_GET_INT VTBI_BASE+3
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
103 #define VTBI_SET_LONG VTBI_BASE+4
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
104 #define VTBI_GET_LONG VTBI_BASE+5
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
105 #define VTBI_SET_LONG_LONG VTBI_BASE+6
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
106 #define VTBI_GET_LONG_LONG VTBI_BASE+7
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
107 #define VTBI_SET_FLOAT VTBI_BASE+8
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
108 #define VTBI_GET_FLOAT VTBI_BASE+9
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
109 #define VTBI_SET_DOUBLE VTBI_BASE+10
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
110 #define VTBI_GET_DOUBLE VTBI_BASE+11
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
111 #define VTBI_SET_POINTER VTBI_BASE+12
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
112 #define VTBI_GET_POINTER VTBI_BASE+13
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
113
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
114 class Value
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
115 {
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
116 public:
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
117 virtual ~Value() {}
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
118
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
119 virtual void __cdecl setBool(DCbool x) { mValue.B = x; }
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
120 virtual DCbool __cdecl getBool() { return mValue.B; }
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
121 virtual void __cdecl setInt(DCint x) { mValue.i = x; }
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
122 virtual DCint __cdecl getInt() { return mValue.i; }
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
123 virtual void __cdecl setLong(DClong x) { mValue.j = x; }
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
124 virtual DClong __cdecl getLong() { return mValue.j; }
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
125 virtual void __cdecl setLongLong(DClonglong x) { mValue.l = x; }
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
126 virtual DClonglong __cdecl getLongLong() { return mValue.l; }
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
127 virtual void __cdecl setFloat(DCfloat x) { mValue.f = x; }
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
128 virtual DCfloat __cdecl getFloat() { return mValue.f; }
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
129 virtual void __cdecl setDouble(DCdouble x) { mValue.d = x; }
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
130 virtual DCdouble __cdecl getDouble() { return mValue.d; }
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
131 virtual void __cdecl setPtr(DCpointer x) { mValue.p = x; }
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
132 virtual DCpointer __cdecl getPtr() { return mValue.p; }
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
133 private:
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
134 ValueUnion mValue;
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
135 };
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
136
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
137 /* C++ class using (on win32: microsoft) this call */
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
138
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
139 class ValueMS
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
140 {
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
141 public:
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
142 virtual ~ValueMS() {}
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
143
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
144 virtual void setBool(DCbool x) { mValue.B = x; }
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
145 virtual DCbool getBool() { return mValue.B; }
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
146 virtual void setInt(DCint x) { mValue.i = x; }
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
147 virtual DCint getInt() { return mValue.i; }
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
148 virtual void setLong(DClong x) { mValue.j = x; }
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
149 virtual DClong getLong() { return mValue.j; }
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
150 virtual void setLongLong(DClonglong x) { mValue.l = x; }
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
151 virtual DClonglong getLongLong() { return mValue.l; }
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
152 virtual void setFloat(DCfloat x) { mValue.f = x; }
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
153 virtual DCfloat getFloat() { return mValue.f; }
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
154 virtual void setDouble(DCdouble x) { mValue.d = x; }
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
155 virtual DCdouble getDouble() { return mValue.d; }
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
156 virtual void setPtr(DCpointer x) { mValue.p = x; }
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
157 virtual DCpointer getPtr() { return mValue.p; }
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
158 private:
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
159 ValueUnion mValue;
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
160 };
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
161
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
162 template<typename T>
324
dd78bd0152af - removal of never-adopted mini-test framework stub
Tassilo Philipp
parents: 281
diff changeset
163 bool testCallValue(DCCallVM* pc, const char* name)
0
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
164 {
324
dd78bd0152af - removal of never-adopted mini-test framework stub
Tassilo Philipp
parents: 281
diff changeset
165 bool r = true, b;
0
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
166 T o;
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
167 T* pThis = &o;
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
168 DCpointer* vtbl = *( (DCpointer**) pThis ); /* vtbl is located at beginning of class */
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
169
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
170 /* set/get bool (TRUE) */
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
171
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
172 dcReset(pc);
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
173 dcArgPointer(pc, pThis);
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
174 dcArgBool(pc,DC_TRUE);
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
175 dcCallVoid(pc, vtbl[VTBI_SET_BOOL] );
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
176 dcReset(pc);
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
177 dcArgPointer(pc, pThis);
324
dd78bd0152af - removal of never-adopted mini-test framework stub
Tassilo Philipp
parents: 281
diff changeset
178 b = ( dcCallBool(pc, vtbl[VTBI_GET_BOOL] ) == DC_TRUE );
dd78bd0152af - removal of never-adopted mini-test framework stub
Tassilo Philipp
parents: 281
diff changeset
179 printf("bt (%s): %d\n", name, b);
dd78bd0152af - removal of never-adopted mini-test framework stub
Tassilo Philipp
parents: 281
diff changeset
180 r = r && b;
dd78bd0152af - removal of never-adopted mini-test framework stub
Tassilo Philipp
parents: 281
diff changeset
181
0
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
182 /* set/get bool (FALSE) */
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
183
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
184 dcReset(pc);
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
185 dcArgPointer(pc, pThis);
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
186 dcArgBool(pc,DC_FALSE);
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
187 dcCallVoid(pc, vtbl[VTBI_SET_BOOL] );
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
188 dcReset(pc);
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
189 dcArgPointer(pc, pThis);
324
dd78bd0152af - removal of never-adopted mini-test framework stub
Tassilo Philipp
parents: 281
diff changeset
190 b = ( dcCallBool(pc, vtbl[VTBI_GET_BOOL] ) == DC_FALSE );
dd78bd0152af - removal of never-adopted mini-test framework stub
Tassilo Philipp
parents: 281
diff changeset
191 printf("bf (%s): %d\n", name, b);
dd78bd0152af - removal of never-adopted mini-test framework stub
Tassilo Philipp
parents: 281
diff changeset
192 r = r && b;
0
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
193
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
194 /* set/get int */
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
195
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
196 dcReset(pc);
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
197 dcArgPointer(pc, pThis);
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
198 dcArgInt(pc,1234);
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
199 dcCallVoid(pc, vtbl[VTBI_SET_INT] );
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
200 dcReset(pc);
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
201 dcArgPointer(pc, pThis);
324
dd78bd0152af - removal of never-adopted mini-test framework stub
Tassilo Philipp
parents: 281
diff changeset
202 b = ( dcCallInt(pc, vtbl[VTBI_GET_INT] ) == 1234 );
dd78bd0152af - removal of never-adopted mini-test framework stub
Tassilo Philipp
parents: 281
diff changeset
203 printf("i (%s): %d\n", name, b);
dd78bd0152af - removal of never-adopted mini-test framework stub
Tassilo Philipp
parents: 281
diff changeset
204 r = r && b;
0
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
205
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
206 /* set/get long */
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
207
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
208 dcReset(pc);
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
209 dcArgPointer(pc, pThis);
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
210 dcArgLong(pc,0xCAFEBABEUL);
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
211 dcCallVoid(pc, vtbl[VTBI_SET_LONG] );
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
212 dcReset(pc);
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
213 dcArgPointer(pc, pThis);
324
dd78bd0152af - removal of never-adopted mini-test framework stub
Tassilo Philipp
parents: 281
diff changeset
214 b = ( dcCallLong(pc, vtbl[VTBI_GET_LONG] ) == (DClong)0xCAFEBABEUL );
dd78bd0152af - removal of never-adopted mini-test framework stub
Tassilo Philipp
parents: 281
diff changeset
215 printf("l (%s): %d\n", name, b);
dd78bd0152af - removal of never-adopted mini-test framework stub
Tassilo Philipp
parents: 281
diff changeset
216 r = r && b;
0
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
217
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
218 /* set/get long long */
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
219
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
220 dcReset(pc);
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
221 dcArgPointer(pc, pThis);
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
222 dcArgLongLong(pc,0xCAFEBABEDEADC0DELL);
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
223 dcCallVoid(pc, vtbl[VTBI_SET_LONG_LONG] );
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
224 dcReset(pc);
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
225 dcArgPointer(pc, pThis);
324
dd78bd0152af - removal of never-adopted mini-test framework stub
Tassilo Philipp
parents: 281
diff changeset
226 b = ( dcCallLongLong(pc, vtbl[VTBI_GET_LONG_LONG] ) == (DClonglong)0xCAFEBABEDEADC0DELL );
dd78bd0152af - removal of never-adopted mini-test framework stub
Tassilo Philipp
parents: 281
diff changeset
227 printf("ll (%s): %d\n", name, b);
dd78bd0152af - removal of never-adopted mini-test framework stub
Tassilo Philipp
parents: 281
diff changeset
228 r = r && b;
0
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
229
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
230 /* set/get float */
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
231
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
232 dcReset(pc);
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
233 dcArgPointer(pc, pThis);
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
234 dcArgFloat(pc,1.2345f);
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
235 dcCallVoid(pc, vtbl[VTBI_SET_FLOAT] );
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
236 dcReset(pc);
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
237 dcArgPointer(pc, pThis);
324
dd78bd0152af - removal of never-adopted mini-test framework stub
Tassilo Philipp
parents: 281
diff changeset
238 b = ( dcCallFloat(pc, vtbl[VTBI_GET_FLOAT] ) == 1.2345f );
dd78bd0152af - removal of never-adopted mini-test framework stub
Tassilo Philipp
parents: 281
diff changeset
239 printf("f (%s): %d\n", name, b);
dd78bd0152af - removal of never-adopted mini-test framework stub
Tassilo Philipp
parents: 281
diff changeset
240 r = r && b;
0
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
241
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
242 /* set/get double */
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
243
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
244 dcReset(pc);
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
245 dcArgPointer(pc, pThis);
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
246 dcArgDouble(pc,1.23456789);
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
247 dcCallVoid(pc, vtbl[VTBI_SET_DOUBLE] );
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
248 dcReset(pc);
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
249 dcArgPointer(pc, pThis);
324
dd78bd0152af - removal of never-adopted mini-test framework stub
Tassilo Philipp
parents: 281
diff changeset
250 b = ( dcCallDouble(pc, vtbl[VTBI_GET_DOUBLE] ) == 1.23456789 );
dd78bd0152af - removal of never-adopted mini-test framework stub
Tassilo Philipp
parents: 281
diff changeset
251 printf("d (%s): %d\n", name, b);
dd78bd0152af - removal of never-adopted mini-test framework stub
Tassilo Philipp
parents: 281
diff changeset
252 r = r && b;
0
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
253
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
254 /* set/get pointer */
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
255
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
256 dcReset(pc);
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
257 dcArgPointer(pc, pThis);
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
258 dcArgPointer(pc, (DCpointer) 0xCAFEBABE );
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
259 dcCallVoid(pc, vtbl[VTBI_SET_POINTER] );
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
260 dcReset(pc);
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
261 dcArgPointer(pc, pThis);
324
dd78bd0152af - removal of never-adopted mini-test framework stub
Tassilo Philipp
parents: 281
diff changeset
262 b = ( dcCallPointer(pc, vtbl[VTBI_GET_POINTER] ) == ( (DCpointer) 0xCAFEBABE ) );
dd78bd0152af - removal of never-adopted mini-test framework stub
Tassilo Philipp
parents: 281
diff changeset
263 printf("p (%s): %d\n", name, b);
dd78bd0152af - removal of never-adopted mini-test framework stub
Tassilo Philipp
parents: 281
diff changeset
264 r = r && b;
dd78bd0152af - removal of never-adopted mini-test framework stub
Tassilo Philipp
parents: 281
diff changeset
265
dd78bd0152af - removal of never-adopted mini-test framework stub
Tassilo Philipp
parents: 281
diff changeset
266 return r;
0
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
267 }
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
268
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
269
348
da4b267c10bf - test code fixes and cleanups for win 32
Tassilo Philipp
parents: 324
diff changeset
270 #if defined(DC__OS_Win32)
0
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
271
324
dd78bd0152af - removal of never-adopted mini-test framework stub
Tassilo Philipp
parents: 281
diff changeset
272 int testCallThisMS()
dd78bd0152af - removal of never-adopted mini-test framework stub
Tassilo Philipp
parents: 281
diff changeset
273 {
dd78bd0152af - removal of never-adopted mini-test framework stub
Tassilo Philipp
parents: 281
diff changeset
274 bool r = false;
0
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
275 DCCallVM* pc = dcNewCallVM(4096);
324
dd78bd0152af - removal of never-adopted mini-test framework stub
Tassilo Philipp
parents: 281
diff changeset
276 dcMode(pc, DC_CALL_C_X86_WIN32_THIS_MS);
0
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
277 dcReset(pc);
324
dd78bd0152af - removal of never-adopted mini-test framework stub
Tassilo Philipp
parents: 281
diff changeset
278 if(setjmp(jbuf) != 0)
dd78bd0152af - removal of never-adopted mini-test framework stub
Tassilo Philipp
parents: 281
diff changeset
279 printf("sigsegv\n");
dd78bd0152af - removal of never-adopted mini-test framework stub
Tassilo Philipp
parents: 281
diff changeset
280 else
dd78bd0152af - removal of never-adopted mini-test framework stub
Tassilo Philipp
parents: 281
diff changeset
281 r = testCallValue<ValueMS>(pc, "MS");
0
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
282 dcFree(pc);
324
dd78bd0152af - removal of never-adopted mini-test framework stub
Tassilo Philipp
parents: 281
diff changeset
283 return r;
dd78bd0152af - removal of never-adopted mini-test framework stub
Tassilo Philipp
parents: 281
diff changeset
284 }
0
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
285
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
286 #endif
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
287
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
288
324
dd78bd0152af - removal of never-adopted mini-test framework stub
Tassilo Philipp
parents: 281
diff changeset
289 int testCallThisC()
dd78bd0152af - removal of never-adopted mini-test framework stub
Tassilo Philipp
parents: 281
diff changeset
290 {
dd78bd0152af - removal of never-adopted mini-test framework stub
Tassilo Philipp
parents: 281
diff changeset
291 bool r = false;
0
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
292 DCCallVM* pc = dcNewCallVM(4096);
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
293 dcReset(pc);
324
dd78bd0152af - removal of never-adopted mini-test framework stub
Tassilo Philipp
parents: 281
diff changeset
294 if(setjmp(jbuf) != 0)
dd78bd0152af - removal of never-adopted mini-test framework stub
Tassilo Philipp
parents: 281
diff changeset
295 printf("sigsegv\n");
dd78bd0152af - removal of never-adopted mini-test framework stub
Tassilo Philipp
parents: 281
diff changeset
296 else
dd78bd0152af - removal of never-adopted mini-test framework stub
Tassilo Philipp
parents: 281
diff changeset
297 r = testCallValue<Value>(pc, "c");
0
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
298 dcFree(pc);
324
dd78bd0152af - removal of never-adopted mini-test framework stub
Tassilo Philipp
parents: 281
diff changeset
299 return r;
dd78bd0152af - removal of never-adopted mini-test framework stub
Tassilo Philipp
parents: 281
diff changeset
300 }
0
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
301
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
302
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
303 extern "C" {
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
304
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
305 int main(int argc, char* argv[])
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
306 {
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
307 dcTest_initPlatform();
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
308
324
dd78bd0152af - removal of never-adopted mini-test framework stub
Tassilo Philipp
parents: 281
diff changeset
309 signal(SIGSEGV, segv_handler);
dd78bd0152af - removal of never-adopted mini-test framework stub
Tassilo Philipp
parents: 281
diff changeset
310
dd78bd0152af - removal of never-adopted mini-test framework stub
Tassilo Philipp
parents: 281
diff changeset
311 bool r = true;
0
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
312
324
dd78bd0152af - removal of never-adopted mini-test framework stub
Tassilo Philipp
parents: 281
diff changeset
313 r = testCallThisC() && r;
348
da4b267c10bf - test code fixes and cleanups for win 32
Tassilo Philipp
parents: 324
diff changeset
314 #if defined(DC__OS_Win32)
324
dd78bd0152af - removal of never-adopted mini-test framework stub
Tassilo Philipp
parents: 281
diff changeset
315 r = testCallThisMS() && r;
0
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
316 #endif
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
317
324
dd78bd0152af - removal of never-adopted mini-test framework stub
Tassilo Philipp
parents: 281
diff changeset
318 printf("result: plain_cpp: %d\n", r);
0
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
319
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
320 dcTest_deInitPlatform();
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
321
324
dd78bd0152af - removal of never-adopted mini-test framework stub
Tassilo Philipp
parents: 281
diff changeset
322 return !r;
0
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
323 }
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
324
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
325 } // extern "C"
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
326