diff test/callback_suite_aggrs/cases.c @ 523:cd46e111bc4c

- new test/callback_suite_aggrs (currently ahead of checked-in dyncall code and won't compile, though, as with call_suite_aggrs; dc code will be checked in, soon)
author Tassilo Philipp
date Wed, 13 Apr 2022 14:59:57 +0200
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/callback_suite_aggrs/cases.c	Wed Apr 13 14:59:57 2022 +0200
@@ -0,0 +1,66 @@
+/*
+
+ Package: dyncall
+ Library: test
+ File: test/callback_suite_aggrs/cases.c
+ Description:
+ License:
+
+   Copyright (c) 2022 Tassilo Philipp <tphilipp@potion-studios.com>
+
+   Permission to use, copy, modify, and distribute this software for any
+   purpose with or without fee is hereby granted, provided that the above
+   copyright notice and this permission notice appear in all copies.
+
+   THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+   WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+   MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+   ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+   WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+   ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+   OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+
+*/
+
+#include "globals.h"
+
+#define write_V_v(X, v)    (         v);
+#define write_V_B(X, v)    (V_B[X] = v);
+#define write_V_c(X, v)    (V_c[X] = v);
+#define write_V_s(X, v)    (V_s[X] = v);
+#define write_V_i(X, v)    (V_i[X] = v);
+#define write_V_j(X, v)    (V_j[X] = v);
+#define write_V_l(X, v)    (V_l[X] = v);
+#define write_V_C(X, v)    (V_C[X] = v);
+#define write_V_S(X, v)    (V_S[X] = v);
+#define write_V_I(X, v)    (V_I[X] = v);
+#define write_V_J(X, v)    (V_J[X] = v);
+#define write_V_L(X, v)    (V_L[X] = v);
+#define write_V_p(X, v)    (V_p[X] = v);
+#define write_V_f(X, v)    (V_f[X] = v);
+#define write_V_d(X, v)    (V_d[X] = v);
+#define write_V_a(X, v, t) (*(t*)V_a[X] = v);
+
+#define v void
+#define X(CH,T) typedef T CH;
+DEF_TYPES
+#undef X
+
+
+#define AF(c,t,i,n)   dcAggrField(a,c,offsetof(t,i),n);
+#define AFa(t,i,n,f)  dcAggrField(a,DC_SIGCHAR_AGGREGATE,offsetof(t,i),n,f_touch##f());
+
+#include "dyncall.h"
+#include <string.h>
+
+
+/* Plan9 pcc and MSVC (when using C) do not allow empty structs */
+#if defined(DC__C_MSVC) || defined(DC__OS_Plan9)
+#  include "nonemptyaggrs.h"
+#else
+#  include "cases.h"
+#endif
+
+int G_ncases = sizeof(G_sigtab)/sizeof(G_sigtab[0]);
+int G_naggs  = sizeof(G_agg_sigs)/sizeof(G_agg_sigs[0]);
+