// 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 mmsystem.c ; ./a.out > mmsystem.h
	{"1", "WEP"},
	{"101", "JOYGETNUMDEVS"},
	{"102", "JOYGETDEVCAPS"},
	{"103", "JOYGETPOS"},
	{"104", "JOYGETTHRESHOLD"},
	{"105", "JOYRELEASECAPTURE"},
	{"106", "JOYSETCAPTURE"},
	{"107", "JOYSETTHRESHOLD"},
	{"110", "JOYGETPOSEX"},
	{"1100", "DRVOPEN"},
	{"1101", "DRVCLOSE"},
	{"1102", "DRVSENDMESSAGE"},
	{"1103", "DRVGETMODULEHANDLE"},
	{"1104", "DRVDEFDRIVERPROC"},
	{"111", "JOYCONFIGCHANGED"},
	{"1120", "MMTHREADCREATE"},
	{"1121", "MMTHREADSIGNAL"},
	{"1122", "MMTHREADBLOCK"},
	{"1123", "MMTHREADISCURRENT"},
	{"1124", "MMTHREADISVALID"},
	{"1125", "MMTHREADGETTASK"},
	{"1150", "MMSHOWMMCPLPROPERTYSHEET"},
	{"1210", "MMIOOPEN"},
	{"1211", "MMIOCLOSE"},
	{"1212", "MMIOREAD"},
	{"1213", "MMIOWRITE"},
	{"1214", "MMIOSEEK"},
	{"1215", "MMIOGETINFO"},
	{"1216", "MMIOSETINFO"},
	{"1217", "MMIOSETBUFFER"},
	{"1218", "MMIOFLUSH"},
	{"1219", "MMIOADVANCE"},
	{"1220", "MMIOSTRINGTOFOURCC"},
	{"1221", "MMIOINSTALLIOPROC"},
	{"1222", "MMIOSENDMESSAGE"},
	{"1223", "MMIODESCEND"},
	{"1224", "MMIOASCEND"},
	{"1225", "MMIOCREATECHUNK"},
	{"1226", "MMIORENAME"},
	{"2", "SNDPLAYSOUND"},
	{"2000", "WINMMF_THUNKDATA16"},
	{"2001", "RING3_DEVLOADER"},
	{"2002", "WINMMTILEBUFFER"},
	{"2003", "WINMMUNTILEBUFFER"},
	{"2005", "MCIGETTHUNKTABLE"},
	{"2006", "WINMMSL_THUNKDATA16"},
	{"201", "MIDIOUTGETNUMDEVS"},
	{"202", "MIDIOUTGETDEVCAPS"},
	{"203", "MIDIOUTGETERRORTEXT"},
	{"204", "MIDIOUTOPEN"},
	{"205", "MIDIOUTCLOSE"},
	{"206", "MIDIOUTPREPAREHEADER"},
	{"207", "MIDIOUTUNPREPAREHEADER"},
	{"208", "MIDIOUTSHORTMSG"},
	{"209", "MIDIOUTLONGMSG"},
	{"210", "MIDIOUTRESET"},
	{"211", "MIDIOUTGETVOLUME"},
	{"212", "MIDIOUTSETVOLUME"},
	{"213", "MIDIOUTCACHEPATCHES"},
	{"214", "MIDIOUTCACHEDRUMPATCHES"},
	{"215", "MIDIOUTGETID"},
	{"216", "MIDIOUTMESSAGE"},
	{"250", "MIDISTREAMPROPERTY"},
	{"251", "MIDISTREAMOPEN"},
	{"252", "MIDISTREAMCLOSE"},
	{"253", "MIDISTREAMPOSITION"},
	{"254", "MIDISTREAMOUT"},
	{"255", "MIDISTREAMPAUSE"},
	{"256", "MIDISTREAMRESTART"},
	{"257", "MIDISTREAMSTOP"},
	{"3", "PLAYSOUND"},
	{"30", "OUTPUTDEBUGSTR"},
	{"301", "MIDIINGETNUMDEVS"},
	{"302", "MIDIINGETDEVCAPS"},
	{"303", "MIDIINGETERRORTEXT"},
	{"304", "MIDIINOPEN"},
	{"305", "MIDIINCLOSE"},
	{"306", "MIDIINPREPAREHEADER"},
	{"307", "MIDIINUNPREPAREHEADER"},
	{"308", "MIDIINADDBUFFER"},
	{"309", "MIDIINSTART"},
	{"31", "DRIVERCALLBACK"},
	{"310", "MIDIINSTOP"},
	{"311", "MIDIINRESET"},
	{"312", "MIDIINGETID"},
	{"313", "MIDIINMESSAGE"},
	{"32", "STACKENTER"},
	{"33", "STACKLEAVE"},
	{"350", "AUXGETNUMDEVS"},
	{"351", "AUXGETDEVCAPS"},
	{"352", "AUXGETVOLUME"},
	{"353", "AUXSETVOLUME"},
	{"354", "AUXOUTMESSAGE"},
	{"4", "DLLENTRYPOINT"},
	{"401", "WAVEOUTGETNUMDEVS"},
	{"402", "WAVEOUTGETDEVCAPS"},
	{"403", "WAVEOUTGETERRORTEXT"},
	{"404", "WAVEOUTOPEN"},
	{"405", "WAVEOUTCLOSE"},
	{"406", "WAVEOUTPREPAREHEADER"},
	{"407", "WAVEOUTUNPREPAREHEADER"},
	{"408", "WAVEOUTWRITE"},
	{"409", "WAVEOUTPAUSE"},
	{"410", "WAVEOUTRESTART"},
	{"411", "WAVEOUTRESET"},
	{"412", "WAVEOUTGETPOSITION"},
	{"413", "WAVEOUTGETPITCH"},
	{"414", "WAVEOUTSETPITCH"},
	{"415", "WAVEOUTGETVOLUME"},
	{"416", "WAVEOUTSETVOLUME"},
	{"417", "WAVEOUTGETPLAYBACKRATE"},
	{"418", "WAVEOUTSETPLAYBACKRATE"},
	{"419", "WAVEOUTBREAKLOOP"},
	{"420", "WAVEOUTGETID"},
	{"421", "WAVEOUTMESSAGE"},
	{"5", "MMSYSTEMGETVERSION"},
	{"501", "WAVEINGETNUMDEVS"},
	{"502", "WAVEINGETDEVCAPS"},
	{"503", "WAVEINGETERRORTEXT"},
	{"504", "WAVEINOPEN"},
	{"505", "WAVEINCLOSE"},
	{"506", "WAVEINPREPAREHEADER"},
	{"507", "WAVEINUNPREPAREHEADER"},
	{"508", "WAVEINADDBUFFER"},
	{"509", "WAVEINSTART"},
	{"510", "WAVEINSTOP"},
	{"511", "WAVEINRESET"},
	{"512", "WAVEINGETPOSITION"},
	{"513", "WAVEINGETID"},
	{"514", "WAVEINMESSAGE"},
	{"6", "DRIVERPROC"},
	{"601", "TIMEGETSYSTEMTIME"},
	{"602", "TIMESETEVENT"},
	{"603", "TIMEKILLEVENT"},
	{"604", "TIMEGETDEVCAPS"},
	{"605", "TIMEBEGINPERIOD"},
	{"606", "TIMEENDPERIOD"},
	{"607", "TIMEGETTIME"},
	{"701", "MCISENDCOMMAND"},
	{"702", "MCISENDSTRING"},
	{"703", "MCIGETDEVICEID"},
	{"705", "MCILOADCOMMANDRESOURCE"},
	{"706", "MCIGETERRORSTRING"},
	{"707", "MCISETDRIVERDATA"},
	{"708", "MCIGETDRIVERDATA"},
	{"710", "MCIDRIVERYIELD"},
	{"711", "MCIDRIVERNOTIFY"},
	{"712", "MCIEXECUTE"},
	{"713", "MCIFREECOMMANDRESOURCE"},
	{"714", "MCISETYIELDPROC"},
	{"715", "MCIGETDEVICEIDFROMELEMENTID"},
	{"716", "MCIGETYIELDPROC"},
	{"717", "MCIGETCREATORTASK"},
	{"8", "WMMMIDIRUNONCE"},
	{"800", "MIXERGETNUMDEVS"},
	{"801", "MIXERGETDEVCAPS"},
	{"802", "MIXEROPEN"},
	{"803", "MIXERCLOSE"},
	{"804", "MIXERMESSAGE"},
	{"805", "MIXERGETLINEINFO"},
	{"806", "MIXERGETID"},
	{"807", "MIXERGETLINECONTROLS"},
	{"808", "MIXERGETCONTROLDETAILS"},
	{"809", "MIXERSETCONTROLDETAILS"},
	{"900", "MMTASKCREATE"},
	{"902", "MMTASKBLOCK"},
	{"903", "MMTASKSIGNAL"},
	{"904", "MMGETCURRENTTASK"},
	{"905", "MMTASKYIELD"},
  {NULL, NULL}
};
typedef int (*GperfForeachCallback)(void *user, const char *k, const char *v);
int gperf_mmsystem_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_mmsystem_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_mmsystem(x,y) gperf_mmsystem_hash(x)
const unsigned int gperf_mmsystem_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_mmsystem = {
  .name = "mmsystem",
  .get = &gperf_mmsystem_get,
  .hash = &gperf_mmsystem_hash,
  .foreach = &gperf_mmsystem_foreach
};

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