// 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 olecli.c ; ./a.out > olecli.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_olecli_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_olecli_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_olecli(x,y) gperf_olecli_hash(x)
const unsigned int gperf_olecli_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_olecli = {
  .name = "olecli",
  .get = &gperf_olecli_get,
  .hash = &gperf_olecli_hash,
  .foreach = &gperf_olecli_foreach
};

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