v4k-git-backup/tools/tcc-winapi/winapi/schemadef.h

78 lines
2.4 KiB
C

/**
* 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