// 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 mapi.c ; ./a.out > mapi.h
	{"1", "WEP"},
	{"10", "MAPILOGONEX"},
	{"100", "MOVEFILE"},
	{"101", "GETFULLPATHNAME"},
	{"102", "SLEEP"},
	{"103", "GETCURRENTPROCESSID"},
	{"104", "MULDIV32"},
	{"105", "FBADREADPTR"},
	{"106", "FILETIMETOSYSTEMTIME"},
	{"107", "SYSTEMTIMETOFILETIME"},
	{"108", "FILETIMETODOSDATETIME"},
	{"109", "DOSDATETIMETOFILETIME"},
	{"11", "_MAPILOGONEX"},
	{"110", "COMPAREFILETIME"},
	{"111", "FILETIMETOLOCALFILETIME"},
	{"112", "LOCALFILETIMETOFILETIME"},
	{"113", "GETSYSTEMTIME"},
	{"114", "GETLOCALTIME"},
	{"115", "GETTIMEZONEINFORMATION"},
	{"116", "SETTIMEZONEINFORMATION"},
	{"117", "FINDFIRSTFILE"},
	{"118", "FINDNEXTFILE"},
	{"119", "FINDCLOSE"},
	{"12", "MAPIALLOCATEBUFFER"},
	{"120", "GETFILETIME"},
	{"121", "FTADDFT"},
	{"122", "FTADCFT"},
	{"123", "FTSUBFT"},
	{"124", "FTMULDW"},
	{"125", "FTMULDWDW"},
	{"126", "FTNEGFT"},
	{"127", "FTDIVFTBOGUS"},
	{"128", "ULADDREF"},
	{"129", "ULRELEASE"},
	{"13", "_MAPIALLOCATEBUFFER"},
	{"130", "SZFINDCH"},
	{"131", "SZFINDLASTCH"},
	{"132", "SZFINDSZ"},
	{"133", "UFROMSZ"},
	{"135", "HRGETONEPROP"},
	{"136", "HRSETONEPROP"},
	{"137", "FPROPEXISTS"},
	{"138", "PPROPFINDPROP"},
	{"139", "FREEPADRLIST"},
	{"14", "MAPIALLOCATEMORE"},
	{"140", "FREEPROWS"},
	{"141", "HRSZFROMENTRYID"},
	{"142", "HRENTRYIDFROMSZ"},
	{"143", "HRCOMPOSEEID"},
	{"144", "HRDECOMPOSEEID"},
	{"145", "HRCOMPOSEMSGID"},
	{"146", "HRDECOMPOSEMSGID"},
	{"147", "_OPENSTREAMONFILE"},
	{"148", "OPENSTREAMONFILE"},
	{"149", "_OPENTNEFSTREAM"},
	{"15", "_MAPIALLOCATEMORE"},
	{"150", "OPENTNEFSTREAM"},
	{"151", "_OPENTNEFSTREAMEX"},
	{"152", "OPENTNEFSTREAMEX"},
	{"153", "_GETTNEFSTREAMCODEPAGE"},
	{"154", "GETTNEFSTREAMCODEPAGE"},
	{"155", "ULFROMSZHEX"},
	{"156", "UNKOBJ_SCALLOCATE"},
	{"157", "UNKOBJ_SCALLOCATEMORE"},
	{"158", "UNKOBJ_FREE"},
	{"159", "UNKOBJ_FREEROWS"},
	{"160", "UNKOBJ_SCCOALLOCATE"},
	{"161", "UNKOBJ_SCCOREALLOCATE"},
	{"162", "UNKOBJ_COFREE"},
	{"163", "UNKOBJ_SCSZFROMIDSALLOC"},
	{"164", "SCCOUNTNOTIFICATIONS"},
	{"165", "SCCOPYNOTIFICATIONS"},
	{"166", "SCRELOCNOTIFICATIONS"},
	{"17", "MAPIFREEBUFFER"},
	{"170", "SCCOUNTPROPS"},
	{"171", "SCCOPYPROPS"},
	{"172", "SCRELOCPROPS"},
	{"173", "LPVALFINDPROP"},
	{"174", "SCDUPPROPSET"},
	{"175", "FBADRGLPSZA"},
	{"176", "FBADRGLPSZW"},
	{"177", "FBADROWSET"},
	{"178", "FBADRGLPNAMEID"},
	{"179", "FBADPROPTAG"},
	{"18", "MAPIADMINPROFILES"},
	{"180", "FBADROW"},
	{"181", "FBADPROP"},
	{"182", "FBADCOLUMNSET"},
	{"183", "RTFSYNC"},
	{"185", "WRAPCOMPRESSEDRTFSTREAM"},
	{"187", "__VALIDATEPARAMETERS"},
	{"188", "__CPPVALIDATEPARAMETERS"},
	{"189", "FBADSORTORDERSET"},
	{"19", "_MAPIADMINPROFILES"},
	{"190", "FBADENTRYLIST"},
	{"191", "FBADRESTRICTION"},
	{"192", "SCUNCFROMLOCALPATH"},
	{"193", "SCLOCALPATHFROMUNC"},
	{"194", "HRISTORAGEFROMSTREAM"},
	{"195", "HRVALIDATEIPMSUBTREE"},
	{"196", "OPENIMSGSESSION"},
	{"197", "CLOSEIMSGSESSION"},
	{"198", "OPENIMSGONISTG"},
	{"199", "SETATTRIBIMSGONISTG"},
	{"2", "___EXPORTEDSTUB"},
	{"200", "GETATTRIBIMSGONISTG"},
	{"201", "MAPSTORAGESCODE"},
	{"202", "SCMAPIXFROMCMC"},
	{"203", "SCMAPIXFROMSMAPI"},
	{"204", "ENCODEID"},
	{"205", "FDECODEID"},
	{"206", "CCHOFENCODING"},
	{"207", "CBOFENCODED"},
	{"208", "MAPISENDDOCUMENTS"},
	{"209", "MAPILOGON"},
	{"21", "MAPIINITIALIZE"},
	{"210", "MAPILOGOFF"},
	{"211", "MAPISENDMAIL"},
	{"212", "MAPISAVEMAIL"},
	{"213", "MAPIREADMAIL"},
	{"214", "MAPIFINDNEXT"},
	{"215", "MAPIDELETEMAIL"},
	{"217", "MAPIADDRESS"},
	{"218", "MAPIDETAILS"},
	{"219", "MAPIRESOLVENAME"},
	{"220", "BMAPISENDMAIL"},
	{"221", "BMAPISAVEMAIL"},
	{"222", "BMAPIREADMAIL"},
	{"223", "BMAPIGETREADMAIL"},
	{"224", "BMAPIFINDNEXT"},
	{"225", "BMAPIADDRESS"},
	{"226", "BMAPIGETADDRESS"},
	{"227", "BMAPIDETAILS"},
	{"228", "BMAPIRESOLVENAME"},
	{"229", "CMC_ACT_ON"},
	{"23", "MAPIUNINITIALIZE"},
	{"230", "CMC_FREE"},
	{"231", "CMC_LIST"},
	{"232", "CMC_LOGOFF"},
	{"233", "CMC_LOGON"},
	{"234", "CMC_LOOK_UP"},
	{"235", "CMC_QUERY_CONFIGURATION"},
	{"236", "CMC_READ"},
	{"237", "CMC_SEND"},
	{"238", "CMC_SEND_DOCUMENTS"},
	{"27", "DLLGETCLASSOBJECT"},
	{"28", "DLLCANUNLOADNOW"},
	{"30", "MAPIOPENFORMMGR"},
	{"32", "MAPIOPENLOCALFORMCONTAINER"},
	{"33", "SCINITMAPIUTIL"},
	{"34", "DEINITMAPIUTIL"},
	{"35", "SCGENERATEMUID"},
	{"36", "HRALLOCADVISESINK"},
	{"41", "WRAPPROGRESS"},
	{"42", "HRTHISTHREADADVISESINK"},
	{"43", "SCBINFROMHEXBOUNDED"},
	{"44", "FBINFROMHEX"},
	{"45", "HEXFROMBIN"},
	{"46", "BUILDDISPLAYTABLE"},
	{"47", "SWAPPLONG"},
	{"48", "SWAPPWORD"},
	{"49", "MAPIINITIDLE"},
	{"50", "MAPIDEINITIDLE"},
	{"51", "INSTALLFILTERHOOK"},
	{"52", "FTGREGISTERIDLEROUTINE"},
	{"53", "ENABLEIDLEROUTINE"},
	{"54", "DEREGISTERIDLEROUTINE"},
	{"55", "CHANGEIDLEROUTINE"},
	{"58", "IDLEWNDPROC"},
	{"59", "MAPIGETDEFAULTMALLOC"},
	{"60", "CREATEIPROP"},
	{"61", "CREATETABLE"},
	{"62", "MNLS_LSTRLENW"},
	{"63", "MNLS_LSTRCMPW"},
	{"64", "MNLS_LSTRCPYW"},
	{"65", "MNLS_COMPARESTRINGW"},
	{"66", "MNLS_MULTIBYTETOWIDECHAR"},
	{"67", "MNLS_WIDECHARTOMULTIBYTE"},
	{"68", "MNLS_ISBADSTRINGPTRW"},
	{"69", "MNLS_GETUSERDEFAULTLCID"},
	{"70", "MNLS_GETACP"},
	{"71", "MNLS_COMPARESTRINGA"},
	{"72", "FEQUALNAMES"},
	{"73", "WRAPSTOREENTRYID"},
	{"74", "ISBADBOUNDEDSTRINGPTR"},
	{"75", "HRQUERYALLROWS"},
	{"76", "PROPCOPYMORE"},
	{"77", "ULPROPSIZE"},
	{"78", "FPROPCONTAINSPROP"},
	{"79", "FPROPCOMPAREPROP"},
	{"80", "LPROPCOMPAREPROP"},
	{"81", "HRADDCOLUMNS"},
	{"82", "HRADDCOLUMNSEX"},
	{"85", "GETLASTERROR"},
	{"86", "GETFILEATTRIBUTES"},
	{"87", "GETFILESIZE"},
	{"88", "CREATEFILE"},
	{"89", "READFILE"},
	{"90", "WRITEFILE"},
	{"91", "SETFILEPOINTER"},
	{"92", "SETENDOFFILE"},
	{"93", "CLOSEHANDLE"},
	{"94", "GETTEMPPATH"},
	{"95", "GETTEMPFILENAME32"},
	{"96", "DELETEFILE"},
	{"97", "CREATEDIRECTORY"},
	{"98", "REMOVEDIRECTORY"},
	{"99", "COPYFILE"},
  {NULL, NULL}
};
typedef int (*GperfForeachCallback)(void *user, const char *k, const char *v);
int gperf_mapi_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_mapi_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_mapi(x,y) gperf_mapi_hash(x)
const unsigned int gperf_mapi_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_mapi = {
  .name = "mapi",
  .get = &gperf_mapi_get,
  .hash = &gperf_mapi_hash,
  .foreach = &gperf_mapi_foreach
};

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