test/kwbench.c, etc.: Tidy up and publish the keyword benchmark I used.
[sod] / test / kwbench-back.c
diff --git a/test/kwbench-back.c b/test/kwbench-back.c
new file mode 100644 (file)
index 0000000..a6d5009
--- /dev/null
@@ -0,0 +1,47 @@
+/* -*-c-*-
+ *
+ * Keyword benchmark, backend
+ *
+ * (c) 2019 Straylight/Edgeware
+ */
+
+/*----- Licensing notice --------------------------------------------------*
+ *
+ * This file is part of the Sensible Object Design, an object system for C.
+ *
+ * SOD is free software: you can redistribute it and/or modify it under
+ * the terms of the GNU General Public License as published by the Free
+ * Software Foundation; either version 2 of the License, or (at your
+ * option) any later version.
+ *
+ * SOD is distributed in the hope that it will be useful, but WITHOUT ANY
+ * WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with SOD.  If not, write to the Free Software Foundation, Inc.,
+ * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ */
+
+#include <stdarg.h>
+
+#include "keyword.h"
+#include "kwbench.h"
+
+void kwbench_trivial(struct myobject *obj, int x, int y, int z)
+  { obj->x = x; obj->y = y; obj->z = z; }
+
+#define kwbench_KWSET(_)                                               \
+  _(int, x, 0)                                                         \
+  _(int, y, 0)                                                         \
+  _(int, z, 0)
+KWSET_STRUCT(kwbench);
+static KWSET_PARSEFN(kwbench)
+KWCALL void kwbench_keywords(struct myobject *obj, KWTAIL)
+{
+  KWPARSE(kwbench);
+  obj->x = kw.x; obj->y = kw.y; obj->z = kw.z;
+}
+
+/*----- That's all, folks -------------------------------------------------*/