Mercurial > games > semicongine
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
