diff fuhtark_test/include/winapi/schemadef.h @ 1500:91c8c3b7cbf0

add: futhark tests for generating vulkan api
author sam <sam@basx.dev>
date Wed, 26 Nov 2025 21:36:48 +0700
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/fuhtark_test/include/winapi/schemadef.h	Wed Nov 26 21:36:48 2025 +0700
@@ -0,0 +1,77 @@
+/**
+ * This file has no copyright assigned and is placed in the Public Domain.
+ * This file is part of the w64 mingw-runtime package.
+ * No warranty is given; refer to the file DISCLAIMER within this package.
+ */
+#ifndef SCHEMA_STRINGS
+
+#ifndef SCHEMADEF_H
+#define SCHEMADEF_H
+
+#define SCHEMADEF_VERSION 1
+
+struct TMPROPINFO {
+  LPCWSTR pszName;
+  SHORT sEnumVal;
+  BYTE bPrimVal;
+};
+
+struct TMSCHEMAINFO {
+  DWORD dwSize;
+  int iSchemaDefVersion;
+  int iThemeMgrVersion;
+  int iPropCount;
+  const struct TMPROPINFO *pPropTable;
+};
+
+#define BEGIN_TM_SCHEMA(name)
+#define BEGIN_TM_PROPS() enum PropValues { DummyProp = 49,
+#define BEGIN_TM_ENUM(name) enum name {
+#define BEGIN_TM_CLASS_PARTS(name) enum name##PARTS { name##PartFiller0,
+#define BEGIN_TM_PART_STATES(name) enum name##STATES { name##StateFiller0,
+
+#define TM_PROP(val,prefix,name,primval) prefix##_##name = val,
+#define TM_ENUM(val,prefix,name) prefix##_##name = val,
+#define TM_PART(val,prefix,name) prefix##_##name = val,
+#define TM_STATE(val,prefix,name) prefix##_##name = val,
+
+#define END_TM_CLASS_PARTS() };
+#define END_TM_PART_STATES() };
+#define END_TM_PROPS() };
+#define END_TM_ENUM() };
+#define END_TM_SCHEMA(name)
+#endif
+#else
+
+#undef BEGIN_TM_SCHEMA
+#undef BEGIN_TM_PROPS
+#undef BEGIN_TM_ENUM
+#undef BEGIN_TM_CLASS_PARTS
+#undef BEGIN_TM_PART_STATES
+#undef TM_PROP
+#undef TM_PART
+#undef TM_STATE
+#undef TM_ENUM
+#undef END_TM_CLASS_PARTS
+#undef END_TM_PART_STATES
+#undef END_TM_PROPS
+#undef END_TM_ENUM
+#undef END_TM_SCHEMA
+
+#define BEGIN_TM_SCHEMA(name) static const TMPROPINFO name[] = {
+#define BEGIN_TM_PROPS()
+#define BEGIN_TM_ENUM(name) {L#name,TMT_ENUMDEF,TMT_ENUMDEF},
+#define BEGIN_TM_CLASS_PARTS(name) {L#name L"PARTS",TMT_ENUMDEF,TMT_ENUMDEF},
+#define BEGIN_TM_PART_STATES(name) {L#name L"STATES",TMT_ENUMDEF,TMT_ENUMDEF},
+
+#define TM_PROP(val,prefix,name,primval) {L#name,prefix##_##name,TMT_##primval},
+#define TM_PART(val,prefix,name) {L#name,prefix##_##name,TMT_ENUMVAL},
+#define TM_STATE(val,prefix,name) {L#name,prefix##_##name,TMT_ENUMVAL},
+#define TM_ENUM(val,prefix,name) {L#name,prefix##_##name,TMT_ENUMVAL},
+
+#define END_TM_CLASS_PARTS()
+#define END_TM_PART_STATES()
+#define END_TM_PROPS()
+#define END_TM_ENUM()
+#define END_TM_SCHEMA(name) }; static const TMSCHEMAINFO *GetSchemaInfo() { static TMSCHEMAINFO si = {sizeof(si)}; si.iSchemaDefVersion = SCHEMADEF_VERSION; si.iThemeMgrVersion = THEMEMGR_VERSION; si.iPropCount = sizeof(name)/sizeof(name[0]); si.pPropTable = name; return &si; }
+#endif