// SDB-CGEN V2.6.2
#include <ctype.h>
#include <stdio.h>
#include <string.h>

struct kv { const char *name; const char *value; };
static const struct kv kvs[] = {
// gcc -DMAIN=1 olecli32.c ; ./a.out > olecli32.h
	{"1", "WEP"},
	{"10", "OleQueryCreateFromClip"},
	{"100", "DocWndProc"},
	{"101", "SrvrWndProc"},
	{"102", "MfCallbackFunc"},
	{"11", "OleCreateLinkFromClip"},
	{"110", "DefLoadFromStream"},
	{"111", "DefCreateFromClip"},
	{"112", "DefCreateLinkFromClip"},
	{"113", "DefCreateFromTemplate"},
	{"114", "DefCreate"},
	{"115", "DefCreateFromFile"},
	{"116", "DefCreateLinkFromFile"},
	{"117", "DefCreateInvisible"},
	{"12", "OleCreateFromClip"},
	{"13", "OleCopyToClipboard"},
	{"14", "OleQueryType"},
	{"15", "OleSetHostNames"},
	{"16", "OleSetTargetDevice"},
	{"17", "OleSetBounds"},
	{"18", "OleQueryBounds"},
	{"19", "OleDraw"},
	{"2", "OleDelete"},
	{"20", "OleQueryOpen"},
	{"200", "LeRelease"},
	{"201", "LeShow"},
	{"202", "LeGetData"},
	{"203", "LeSetData"},
	{"204", "LeSetHostNames"},
	{"205", "LeSetTargetDevice"},
	{"206", "LeSetBounds"},
	{"207", "LeSaveToStream"},
	{"208", "LeClone"},
	{"209", "LeCopyFromLink"},
	{"21", "OleActivate"},
	{"210", "LeEqual"},
	{"211", "LeCopy"},
	{"212", "LeQueryType"},
	{"213", "LeQueryBounds"},
	{"214", "LeDraw"},
	{"215", "LeQueryOpen"},
	{"216", "LeActivate"},
	{"218", "LeUpdate"},
	{"219", "LeReconnect"},
	{"22", "OleUpdate"},
	{"220", "LeEnumFormat"},
	{"221", "LeQueryProtocol"},
	{"222", "LeQueryOutOfDate"},
	{"223", "LeObjectConvert"},
	{"224", "LeChangeData"},
	{"225", "LeClose"},
	{"226", "LeGetUpdateOptions"},
	{"227", "LeSetUpdateOptions"},
	{"228", "LeExecute"},
	{"229", "LeObjectLong"},
	{"23", "OleReconnect"},
	{"230", "LeCreateInvisible"},
	{"24", "OleGetLinkUpdateOptions"},
	{"25", "OleSetLinkUpdateOptions"},
	{"26", "OleEnumFormats"},
	{"27", "OleClose"},
	{"28", "OleGetData"},
	{"29", "OleSetData"},
	{"3", "OleSaveToStream"},
	{"30", "OleQueryProtocol"},
	{"300", "MfRelease"},
	{"301", "MfGetData"},
	{"302", "MfSaveToStream"},
	{"303", "MfClone"},
	{"304", "MfEqual"},
	{"305", "MfCopy"},
	{"307", "MfQueryBounds"},
	{"308", "MfDraw"},
	{"309", "MfEnumFormat"},
	{"31", "OleQueryOutOfDate"},
	{"310", "MfChangeData"},
	{"32", "OleObjectConvert"},
	{"33", "OleCreateFromTemplate"},
	{"34", "OleCreate"},
	{"35", "OleQueryReleaseStatus"},
	{"36", "OleQueryReleaseError"},
	{"37", "OleQueryReleaseMethod"},
	{"38", "OleCreateFromFile"},
	{"39", "OleCreateLinkFromFile"},
	{"4", "OleLoadFromStream"},
	{"40", "OleRelease"},
	{"400", "BmRelease"},
	{"401", "BmGetData"},
	{"402", "BmSaveToStream"},
	{"403", "BmClone"},
	{"404", "BmEqual"},
	{"405", "BmCopy"},
	{"407", "BmQueryBounds"},
	{"408", "BmDraw"},
	{"409", "BmEnumFormat"},
	{"41", "OleRegisterClientDoc"},
	{"410", "BmChangeData"},
	{"42", "OleRevokeClientDoc"},
	{"43", "OleRenameClientDoc"},
	{"44", "OleRevertClientDoc"},
	{"45", "OleSavedClientDoc"},
	{"46", "OleRename"},
	{"47", "OleEnumObjects"},
	{"48", "OleQueryName"},
	{"49", "OleSetColorScheme"},
	{"50", "OleRequestData"},
	{"500", "DibRelease"},
	{"501", "DibGetData"},
	{"502", "DibSaveToStream"},
	{"503", "DibClone"},
	{"504", "DibEqual"},
	{"505", "DibCopy"},
	{"507", "DibQueryBounds"},
	{"508", "DibDraw"},
	{"509", "DibEnumFormat"},
	{"510", "DibChangeData"},
	{"54", "OleLockServer"},
	{"55", "OleUnlockServer"},
	{"56", "OleQuerySize"},
	{"57", "OleExecute"},
	{"58", "OleCreateInvisible"},
	{"59", "OleQueryClientVersion"},
	{"6", "OleClone"},
	{"60", "OleIsDcMeta"},
	{"600", "GenRelease"},
	{"601", "GenGetData"},
	{"602", "GenSetData"},
	{"603", "GenSaveToStream"},
	{"604", "GenClone"},
	{"605", "GenEqual"},
	{"606", "GenCopy"},
	{"608", "GenQueryBounds"},
	{"609", "GenDraw"},
	{"610", "GenEnumFormat"},
	{"611", "GenChangeData"},
	{"7", "OleCopyFromLink"},
	{"701", "ErrShow"},
	{"702", "ErrSetData"},
	{"703", "ErrSetHostNames"},
	{"704", "ErrSetTargetDevice"},
	{"705", "ErrSetBounds"},
	{"706", "ErrCopyFromLink"},
	{"707", "ErrQueryOpen"},
	{"708", "ErrActivate"},
	{"709", "ErrClose"},
	{"710", "ErrUpdate"},
	{"711", "ErrReconnect"},
	{"712", "ErrQueryProtocol"},
	{"713", "ErrQueryOutOfDate"},
	{"714", "ErrObjectConvert"},
	{"715", "ErrGetUpdateOptions"},
	{"716", "ErrSetUpdateOptions"},
	{"717", "ErrExecute"},
	{"718", "ErrObjectLong"},
	{"8", "OleEqual"},
	{"800", "PbLoadFromStream"},
	{"801", "PbCreateFromClip"},
	{"802", "PbCreateLinkFromClip"},
	{"803", "PbCreateFromTemplate"},
	{"804", "PbCreate"},
	{"805", "PbDraw"},
	{"806", "PbQueryBounds"},
	{"807", "PbCopyToClipboard"},
	{"808", "PbCreateFromFile"},
	{"809", "PbCreateLinkFromFile"},
	{"810", "PbEnumFormats"},
	{"811", "PbGetData"},
	{"812", "PbCreateInvisible"},
	{"9", "OleQueryLinkFromClip"},
	{"910", "ObjQueryName"},
	{"911", "ObjRename"},
	{"912", "ObjQueryType"},
	{"913", "ObjQuerySize"},
	{"950", "ConnectDlgProc"},
	{"951", "SetNetName"},
	{"952", "CheckNetDrive"},
	{"953", "SetNextNetDrive"},
	{"954", "GetTaskVisibleWindow"},
  {NULL, NULL}
};
typedef int (*GperfForeachCallback)(void *user, const char *k, const char *v);
int gperf_olecli32_foreach(GperfForeachCallback cb, void *user) {
  int i = 0; while (kvs[i].name) {
  cb (user, kvs[i].name, kvs[i].value);
  i++;}
  return 0;
}
const char *gperf_olecli32_get(const char *s) {
  int i = 0; while (kvs[i].name) {
  if (!strcmp (s, kvs[i].name)) return kvs[i].value;
  i++;}
  return NULL;
}
#define sdb_hash_c_olecli32(x,y) gperf_olecli32_hash(x)
const unsigned int gperf_olecli32_hash(const char *s) {
  int sum = strlen (s);
  while (*s) { sum += *s; s++; }
  return sum;
}
struct {const char *name;void *get;void *hash;void *foreach;} gperf_olecli32 = {
  .name = "olecli32",
  .get = &gperf_olecli32_get,
  .hash = &gperf_olecli32_hash,
  .foreach = &gperf_olecli32_foreach
};

#if MAIN
int main () {
	const char *s = ((char*(*)(char*))gperf_olecli32.get)("foo");
	printf ("%s\n", s);
}
#endif
