// 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 netapi.c ; ./a.out > netapi.h
	{"1", "NETACCESSADD"},
	{"10", "NETAUDITOPEN"},
	{"100", "DO_TRANSACT2"},
	{"1000", "_INIT_STRLIB"},
	{"1001", "_STRRPBRKF"},
	{"1002", "_STRTAILF"},
	{"1003", "_STRCATF"},
	{"1004", "_STRNCATF"},
	{"1005", "_STRCPYF"},
	{"1006", "_STRNCPYF"},
	{"1007", "_STRLENF"},
	{"1008", "_STRCMPF"},
	{"1009", "_STRICMPF"},
	{"101", "MYDOSFREESEG"},
	{"1010", "_STRNCMPF"},
	{"1011", "_STRNICMPF"},
	{"1012", "_STRPBRKF"},
	{"1013", "_STRREVF"},
	{"1014", "_STRCHRF"},
	{"1015", "_STRRCHRF"},
	{"1016", "_STRSPNF"},
	{"1017", "_STRCSPNF"},
	{"1018", "_STRSTRF"},
	{"1019", "_STRISTRF"},
	{"102", "MYDOSALLOCSEG"},
	{"1020", "_STRUPRF"},
	{"1021", "_STRLWRF"},
	{"1022", "_MEMCPYF"},
	{"1023", "_MEMCMPF"},
	{"1024", "_MEMSETF"},
	{"1025", "_MEMMOVEF"},
	{"1026", "_STRTOKF"},
	{"103", "_DOINT"},
	{"104", "LFNREGISTERALIAS"},
	{"105", "NETUSERVALIDATE"},
	{"106", "MYDOSREALLOCSEG"},
	{"107", "MYDOSOPEN"},
	{"108", "MYDOSCHGFILEPTR"},
	{"11", "NETAUDITWRITE"},
	{"116", "NETSERVICEGETINFO"},
	{"117", "NETCHARDEVQPURGESELF"},
	{"12", "NETACCESSCHECK"},
	{"13", "NETBIOSCLOSE"},
	{"14", "NETBIOSENUM"},
	{"148", "I_NETSERVERDISKENUM"},
	{"149", "I_NETSERVERDISKGETINFO"},
	{"15", "NETBIOSGETINFO"},
	{"150", "I_FTVERIFYMIRROR"},
	{"151", "I_FTABORTVERIFY"},
	{"152", "I_FTGETINFO"},
	{"153", "I_FTSETINFO"},
	{"154", "I_FTLOCKDISK"},
	{"155", "I_FTFIXERROR"},
	{"156", "I_FTABORTFIX"},
	{"157", "I_FTDIAGNOSEERROR"},
	{"158", "I_FTGETDRIVESTATS"},
	{"16", "NETBIOSOPEN"},
	{"160", "I_FTERRORGETINFO"},
	{"17", "NETBIOSSUBMIT"},
	{"172", "NETACCESSGETUSERPERMS"},
	{"174", "NETHANDLEGETINFO"},
	{"175", "NETHANDLESETINFO"},
	{"176", "NETGROUPSETUSERS"},
	{"177", "NETGROUPGETINFO"},
	{"178", "NETGROUPSETINFO"},
	{"179", "NETUSERSETGROUPS"},
	{"18", "NETCHARDEVCONTROL"},
	{"180", "I_NETUSERENUM2"},
	{"181", "I_NETWFWAUDITLOCK"},
	{"182", "NETUSERVALIDATE2"},
	{"184", "NETUSERMODALSGET"},
	{"185", "NETUSERMODALSSET"},
	{"186", "NETUSERINIT"},
	{"189", "NETGETDCNAME"},
	{"19", "NETCHARDEVENUM"},
	{"196", "NETCONFIGGET2"},
	{"197", "NETCONFIGGETALL2"},
	{"198", "NETSTATISTICSGET2"},
	{"199", "NETERRORLOGREAD"},
	{"2", "NETACCESSDEL"},
	{"20", "NETCHARDEVGETINFO"},
	{"200", "NETAUDITREAD"},
	{"201", "NETFILEENUM2"},
	{"21", "NETCHARDEVQENUM"},
	{"22", "NETCHARDEVQGETINFO"},
	{"23", "NETCHARDEVQPURGE"},
	{"24", "NETCHARDEVQSETINFO"},
	{"25", "NETCONFIGGET"},
	{"259", "NETUSERRESTRICT"},
	{"26", "NETCONFIGGETALL"},
	{"266", "NETLOGONENUM"},
	{"27", "NETCONNECTIONENUM"},
	{"277", "NETWKSTASETUID2"},
	{"28", "MYDOSCLOSE"},
	{"280", "NETFILEGETINFO2"},
	{"282", "NETFILECLOSE2"},
	{"29", "NETERRORLOGCLEAR"},
	{"299", "I_NETPATHTYPE"},
	{"3", "NETACCESSENUM"},
	{"30", "NETERRORLOGOPEN"},
	{"300", "I_NETPATHCANONICALIZE"},
	{"301", "I_NETPATHCOMPARE"},
	{"302", "I_NETNAMEVALIDATE"},
	{"303", "I_NETNAMECANONICALIZE"},
	{"304", "I_NETNAMECOMPARE"},
	{"305", "I_NETLISTCANONICALIZE"},
	{"306", "I_NETLISTTRAVERSE"},
	{"31", "NETERRORLOGWRITE"},
	{"32", "NETFILECLOSE"},
	{"33", "NETFILEENUM"},
	{"34", "NETFILEGETINFO"},
	{"35", "NETGROUPADD"},
	{"357", "NETCONFIGSET"},
	{"36", "NETGROUPADDUSER"},
	{"37", "NETGROUPDEL"},
	{"38", "NETGROUPDELUSER"},
	{"39", "NETGROUPENUM"},
	{"4", "NETACCESSGETINFO"},
	{"40", "NETGROUPGETUSERS"},
	{"41", "_SETINPROTMODE"},
	{"42", "MYDOSCWAIT"},
	{"43", "NETMESSAGELOGFILEGET"},
	{"44", "NETMESSAGELOGFILESET"},
	{"45", "NETMESSAGENAMEADD"},
	{"46", "NETMESSAGENAMEDEL"},
	{"47", "NETMESSAGENAMEENUM"},
	{"48", "NETMESSAGENAMEFWD"},
	{"49", "NETMESSAGENAMEGETINFO"},
	{"5", "NETACCESSSETINFO"},
	{"50", "NETMESSAGENAMEUNFWD"},
	{"501", "DOSDELETEMAILSLOT"},
	{"502", "DOSMAILSLOTINFO"},
	{"503", "DOSMAKEMAILSLOT"},
	{"504", "DOSPEEKMAILSLOT"},
	{"51", "NETPROFILELOAD"},
	{"52", "NETPROFILESAVE"},
	{"523", "DOSREADMAILSLOT"},
	{"524", "DOSWRITEMAILSLOT"},
	{"525", "NETMESSAGEBUFFERSEND"},
	{"526", "NETMESSAGEFILESEND"},
	{"527", "NETSERVERENUM"},
	{"528", "NETSERVERENUM2"},
	{"529", "NETSPECIALSMB"},
	{"53", "NETSERVERADMINCOMMAND"},
	{"530", "DOSMAKENMPIPE"},
	{"531", "DOSCONNECTNMPIPE"},
	{"532", "DOSDISCONNECTNMPIPE"},
	{"533", "DOSSETNMPHANDSTATE"},
	{"534", "DOSWAITNMPIPE"},
	{"535", "DOSTRANSACTNMPIPE"},
	{"536", "DOSQNMPHANDSTATE"},
	{"537", "DOSQNMPIPEINFO"},
	{"538", "DOSPEEKNMPIPE"},
	{"539", "DOSCALLNMPIPE"},
	{"54", "NETSERVERDISKENUM"},
	{"540", "DOSRAWREADNMPIPE"},
	{"541", "DOSRAWWRITENMPIPE"},
	{"542", "DOSREADASYNCNMPIPE"},
	{"543", "DOSWRITEASYNCNMPIPE"},
	{"544", "DOSREADASYNCNMPIPE2"},
	{"545", "DOSWRITEASYNCNMPIPE2"},
	{"55", "NETSERVERGETINFO"},
	{"56", "NETSERVERSETINFO"},
	{"57", "NETSERVICECONTROL"},
	{"58", "NETSERVICEENUM"},
	{"59", "NETSERVICEINSTALL"},
	{"6", "NETALERTRAISE"},
	{"60", "NETSERVICESTATUS"},
	{"61", "NETSESSIONDEL"},
	{"62", "NETSESSIONENUM"},
	{"63", "NETSESSIONGETINFO"},
	{"64", "NETSHAREADD"},
	{"65", "NETSHARECHECK"},
	{"66", "NETSHAREDEL"},
	{"67", "NETSHAREENUM"},
	{"68", "NETSHAREGETINFO"},
	{"69", "NETSHARESETINFO"},
	{"7", "NETALERTSTART"},
	{"70", "NETSTATISTICSCLEAR"},
	{"71", "NETSTATISTICSGET"},
	{"72", "NETREMOTETOD"},
	{"73", "NETUSEADD"},
	{"74", "NETUSEDEL"},
	{"75", "NETUSEENUM"},
	{"76", "NETUSEGETINFO"},
	{"77", "NETUSERADD"},
	{"78", "NETUSERDEL"},
	{"79", "NETUSERENUM"},
	{"8", "NETALERTSTOP"},
	{"80", "NETUSERGETGROUPS"},
	{"81", "NETUSERGETINFO"},
	{"82", "NETUSERPASSWORDSET"},
	{"83", "NETUSERSETINFO"},
	{"84", "NETWKSTAGETINFO"},
	{"85", "NETWKSTASETINFO"},
	{"86", "NETWKSTASETUID"},
	{"87", "MYDOSDELETE"},
	{"88", "MYDOSEXECPGM"},
	{"89", "MYDOSWRITE"},
	{"9", "NETAUDITCLEAR"},
	{"90", "MYDSQCURDISK"},
	{"91", "NETREMOTEMOVE"},
	{"92", "NETREMOTECOPY"},
	{"93", "NETREMOTEEXEC"},
	{"94", "MYDOSCREATE"},
	{"95", "MYDOSREAD"},
	{"96", "MYDOSMOVE"},
	{"97", "MYDSQCURDIR"},
	{"98", "_DOINTR"},
	{"988", "NETWKSTASETUIDQUICKLY"},
	{"989", "GETNETBIOSINFO"},
	{"99", "_DOINTP"},
	{"998", "SCRIPTDLGPROC"},
	{"999", "WEP"},
  {NULL, NULL}
};
typedef int (*GperfForeachCallback)(void *user, const char *k, const char *v);
int gperf_netapi_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_netapi_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_netapi(x,y) gperf_netapi_hash(x)
const unsigned int gperf_netapi_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_netapi = {
  .name = "netapi",
  .get = &gperf_netapi_get,
  .hash = &gperf_netapi_hash,
  .foreach = &gperf_netapi_foreach
};

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