comparison test/callback_suite/env.c @ 487:d8f0e6cecdab

- simplified test/callback_suite
author Tassilo Philipp
date Fri, 18 Mar 2022 09:47:18 +0100
parents f5577f6bf97a
children 63f623bff0b9
comparison
equal deleted inserted replaced
486:d160046da104 487:d8f0e6cecdab
22 OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 22 OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
23 23
24 */ 24 */
25 25
26 #include <assert.h> 26 #include <assert.h>
27 #include "_auto_config.h" 27 #include <stdint.h>
28 #include "dyncall_signature.h" 28 #include "dyncall_signature.h"
29 #include "env.h" 29 #include "env.h"
30 30
31 DCValueSet ValueMatrix[CONFIG_MAXARGS]; 31 DCValueSet ValueMatrix[CONFIG_MAXARGS];
32 DCValue Args[CONFIG_MAXARGS];
33 DCValue Result;
34 32
35 DCValueSet K; 33 static DCValueSet K = {
34 .B = DC_TRUE,
35 .c = 13,
36 .C = 19,
37 .s = -23,
38 .S = 41,
39 .i = 134,
40 .I = 257,
41 .j = -12357,
42 .J = 356,
43 .l = -1234556687721LL,
44 .L = 23564634576581ULL,
45 .f = 1.20432545f,
46 .d = 1.0123456,
47 .p = (void*)0x1020345
48 };
36 49
37 void GetReferenceArg(DCValue* output, char ch, int pos) 50 void GetReferenceArg(DCValue* output, char ch, int pos)
38 { 51 {
39 /*
40 static const int Ki = 134;
41 static const double Kd = 1.012356;
42 static const float Kf = 1.20432545f;
43 static const int Kp = 0x1020345;
44 static const DClonglong Kl = 24534543;
45 */
46
47 output->L = 0xCAFEBABEDEADC0DELL; 52 output->L = 0xCAFEBABEDEADC0DELL;
48 pos = pos + 2; 53 pos = pos + 2;
49 switch(ch) { 54 switch(ch) {
50 case DC_SIGCHAR_BOOL: output->B = ( (pos*K.i) % 2) ? DC_TRUE : DC_FALSE ; break; 55 case DC_SIGCHAR_BOOL: output->B = ((pos*K.i) & 1) ? DC_TRUE : DC_FALSE ; break;
51 case DC_SIGCHAR_CHAR: output->c = pos*K.c; break; 56 case DC_SIGCHAR_CHAR: output->c = pos * K.c; break;
52 case DC_SIGCHAR_UCHAR: output->C = pos*K.C; break; 57 case DC_SIGCHAR_UCHAR: output->C = pos * K.C; break;
53 case DC_SIGCHAR_SHORT: output->s = pos*K.s; break; 58 case DC_SIGCHAR_SHORT: output->s = pos * K.s; break;
54 case DC_SIGCHAR_USHORT: output->S = pos*K.S; break; 59 case DC_SIGCHAR_USHORT: output->S = pos * K.S; break;
55 case DC_SIGCHAR_INT: output->i = pos*K.i; break; 60 case DC_SIGCHAR_INT: output->i = pos * K.i; break;
56 case DC_SIGCHAR_UINT: output->I = pos*K.I; break; 61 case DC_SIGCHAR_UINT: output->I = pos * K.I; break;
57 case DC_SIGCHAR_LONG: output->j = pos*K.j; break; 62 case DC_SIGCHAR_LONG: output->j = pos * K.j; break;
58 case DC_SIGCHAR_ULONG: output->J = pos*K.J; break; 63 case DC_SIGCHAR_ULONG: output->J = pos * K.J; break;
59 case DC_SIGCHAR_LONGLONG: output->l = ( (long long) pos ) * K.l; break; 64 case DC_SIGCHAR_LONGLONG: output->l = pos * K.l; break;
60 case DC_SIGCHAR_ULONGLONG:output->L = pos*K.L; break; 65 case DC_SIGCHAR_ULONGLONG:output->L = pos * K.L; break;
61 case DC_SIGCHAR_FLOAT: output->f = ( (float) pos ) * K.f; break; 66 case DC_SIGCHAR_FLOAT: output->f = (float)pos * K.f; break;
62 case DC_SIGCHAR_DOUBLE: output->d = ( (double) pos ) * K.d; break; 67 case DC_SIGCHAR_DOUBLE: output->d = (double)pos * K.d; break;
63 case DC_SIGCHAR_POINTER: output->p = (DCpointer) (unsigned long) (pos* ( (unsigned long) K.p ) ); break; 68 case DC_SIGCHAR_POINTER: output->p = (DCpointer)(pos * (intptr_t)K.p); break;
64 default: assert(0); 69 default: assert(0);
65 } 70 }
66 } 71 }
67 72
68 void GetReferenceResult(DCValue* output, char ch) 73 void GetReferenceResult(DCValue* output, char ch)
71 } 76 }
72 77
73 void InitEnv() 78 void InitEnv()
74 { 79 {
75 int pos; 80 int pos;
76
77 K.B = DC_TRUE;
78 K.c = 13;
79 K.C = 19;
80 K.s = -23;
81 K.S = 41;
82 K.i = 134;
83 K.I = 257;
84 K.j = -12357;
85 K.J = 356;
86 K.l = -1234556687721LL;
87 K.L = 23564634576581ULL;
88 K.f = 1.20432545f;
89 K.d = 1.0123456;
90 K.p = (void*) 0x1020345;
91
92 for(pos = 0 ;pos < CONFIG_MAXARGS ;++pos) { 81 for(pos = 0 ;pos < CONFIG_MAXARGS ;++pos) {
93 DCValue ref; 82 DCValue ref;
94 GetReferenceArg( &ref, DC_SIGCHAR_BOOL , pos); ValueMatrix[pos].B = ref.B; 83 GetReferenceArg( &ref, DC_SIGCHAR_BOOL , pos); ValueMatrix[pos].B = ref.B;
95 GetReferenceArg( &ref, DC_SIGCHAR_CHAR , pos); ValueMatrix[pos].c = ref.c; 84 GetReferenceArg( &ref, DC_SIGCHAR_CHAR , pos); ValueMatrix[pos].c = ref.c;
96 GetReferenceArg( &ref, DC_SIGCHAR_UCHAR , pos); ValueMatrix[pos].C = ref.C; 85 GetReferenceArg( &ref, DC_SIGCHAR_UCHAR , pos); ValueMatrix[pos].C = ref.C;