/** * This file has no copyright assigned and is placed in the Public Domain. * This file is part of the mingw-w64 runtime package. * No warranty is given; refer to the file DISCLAIMER.PD 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