// 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 msi.c ; ./a.out > msi.h
	{"1", "MsiAdvertiseProductA"},
	{"10", "MsiConfigureFeatureW"},
	{"100", "MsiProvideComponentA"},
	{"101", "MsiProvideComponentFromDescriptorA"},
	{"102", "MsiProvideComponentFromDescriptorW"},
	{"103", "MsiProvideComponentW"},
	{"104", "MsiProvideQualifiedComponentA"},
	{"105", "MsiProvideQualifiedComponentW"},
	{"106", "MsiQueryFeatureStateA"},
	{"107", "MsiQueryFeatureStateW"},
	{"108", "MsiQueryProductStateA"},
	{"109", "MsiQueryProductStateW"},
	{"11", "MsiConfigureProductA"},
	{"110", "MsiRecordDataSize"},
	{"111", "MsiRecordGetFieldCount"},
	{"112", "MsiRecordGetInteger"},
	{"113", "MsiRecordGetStringA"},
	{"114", "MsiRecordGetStringW"},
	{"115", "MsiRecordIsNull"},
	{"116", "MsiRecordReadStream"},
	{"117", "MsiRecordSetInteger"},
	{"118", "MsiRecordSetStreamA"},
	{"119", "MsiRecordSetStreamW"},
	{"12", "MsiConfigureProductW"},
	{"120", "MsiRecordSetStringA"},
	{"121", "MsiRecordSetStringW"},
	{"122", "MsiReinstallFeatureA"},
	{"123", "MsiReinstallFeatureFromDescriptorA"},
	{"124", "MsiReinstallFeatureFromDescriptorW"},
	{"125", "MsiReinstallFeatureW"},
	{"126", "MsiReinstallProductA"},
	{"127", "MsiReinstallProductW"},
	{"128", "MsiSequenceA"},
	{"129", "MsiSequenceW"},
	{"13", "MsiCreateRecord"},
	{"130", "MsiSetComponentStateA"},
	{"131", "MsiSetComponentStateW"},
	{"132", "MsiSetExternalUIA"},
	{"133", "MsiSetExternalUIW"},
	{"134", "MsiSetFeatureStateA"},
	{"135", "MsiSetFeatureStateW"},
	{"136", "MsiSetInstallLevel"},
	{"137", "MsiSetInternalUI"},
	{"138", "MsiVerifyDiskSpace"},
	{"139", "MsiSetMode"},
	{"14", "MsiDatabaseApplyTransformA"},
	{"140", "MsiSetPropertyA"},
	{"141", "MsiSetPropertyW"},
	{"142", "MsiSetTargetPathA"},
	{"143", "MsiSetTargetPathW"},
	{"144", "MsiSummaryInfoGetPropertyA"},
	{"145", "MsiSummaryInfoGetPropertyCount"},
	{"146", "MsiSummaryInfoGetPropertyW"},
	{"147", "MsiSummaryInfoPersist"},
	{"148", "MsiSummaryInfoSetPropertyA"},
	{"149", "MsiSummaryInfoSetPropertyW"},
	{"15", "MsiDatabaseApplyTransformW"},
	{"150", "MsiUseFeatureA"},
	{"151", "MsiUseFeatureW"},
	{"152", "MsiVerifyPackageA"},
	{"153", "MsiVerifyPackageW"},
	{"154", "MsiViewClose"},
	{"155", "MsiViewExecute"},
	{"156", "MsiViewFetch"},
	{"157", "MsiViewGetErrorA"},
	{"158", "MsiViewGetErrorW"},
	{"159", "MsiViewModify"},
	{"16", "MsiDatabaseCommit"},
	{"160", "MsiDatabaseIsTablePersistentA"},
	{"161", "MsiDatabaseIsTablePersistentW"},
	{"162", "MsiViewGetColumnInfo"},
	{"163", "MsiRecordClearData"},
	{"164", "MsiEnableLogA"},
	{"165", "MsiEnableLogW"},
	{"166", "MsiFormatRecordA"},
	{"167", "MsiFormatRecordW"},
	{"168", "MsiGetComponentPathA"},
	{"169", "MsiGetComponentPathW"},
	{"17", "MsiDatabaseExportA"},
	{"170", "MsiApplyPatchA"},
	{"171", "MsiApplyPatchW"},
	{"172", "MsiAdvertiseScriptA"},
	{"173", "MsiAdvertiseScriptW"},
	{"174", "MsiGetPatchInfoA"},
	{"175", "MsiGetPatchInfoW"},
	{"176", "MsiEnumPatchesA"},
	{"177", "MsiEnumPatchesW"},
	{"178", "DllGetVersion"},
	{"179", "MsiGetProductCodeFromPackageCodeA"},
	{"18", "MsiDatabaseExportW"},
	{"180", "MsiGetProductCodeFromPackageCodeW"},
	{"181", "MsiCreateTransformSummaryInfoA"},
	{"182", "MsiCreateTransformSummaryInfoW"},
	{"183", "MsiQueryFeatureStateFromDescriptorA"},
	{"184", "MsiQueryFeatureStateFromDescriptorW"},
	{"185", "MsiConfigureProductExA"},
	{"186", "MsiConfigureProductExW"},
	{"187", "MsiInvalidateFeatureCache"},
	{"188", "MsiUseFeatureExA"},
	{"189", "MsiUseFeatureExW"},
	{"19", "MsiDatabaseGenerateTransformA"},
	{"190", "MsiGetFileVersionA"},
	{"191", "MsiGetFileVersionW"},
	{"192", "MsiLoadStringA"},
	{"193", "MsiLoadStringW"},
	{"194", "MsiMessageBoxA"},
	{"195", "MsiMessageBoxW"},
	{"196", "MsiDecomposeDescriptorA"},
	{"197", "MsiDecomposeDescriptorW"},
	{"198", "MsiProvideQualifiedComponentExA"},
	{"199", "MsiProvideQualifiedComponentExW"},
	{"2", "MsiAdvertiseProductW"},
	{"20", "MsiDatabaseGenerateTransformW"},
	{"200", "MsiEnumRelatedProductsA"},
	{"201", "MsiEnumRelatedProductsW"},
	{"202", "MsiSetFeatureAttributesA"},
	{"203", "MsiSetFeatureAttributesW"},
	{"204", "MsiSourceListClearAllA"},
	{"205", "MsiSourceListClearAllW"},
	{"206", "MsiSourceListAddSourceA"},
	{"207", "MsiSourceListAddSourceW"},
	{"208", "MsiSourceListForceResolutionA"},
	{"209", "MsiSourceListForceResolutionW"},
	{"21", "MsiDatabaseGetPrimaryKeysA"},
	{"210", "MsiIsProductElevatedA"},
	{"211", "MsiIsProductElevatedW"},
	{"212", "MsiGetShortcutTargetA"},
	{"213", "MsiGetShortcutTargetW"},
	{"214", "MsiGetFileHashA"},
	{"215", "MsiGetFileHashW"},
	{"216", "MsiEnumComponentCostsA"},
	{"217", "MsiEnumComponentCostsW"},
	{"218", "MsiCreateAndVerifyInstallerDirectory"},
	{"219", "MsiGetFileSignatureInformationA"},
	{"22", "MsiDatabaseGetPrimaryKeysW"},
	{"220", "MsiGetFileSignatureInformationW"},
	{"221", "MsiProvideAssemblyA"},
	{"222", "MsiProvideAssemblyW"},
	{"223", "MsiAdvertiseProductExA"},
	{"224", "MsiAdvertiseProductExW"},
	{"225", "MsiNotifySidChangeA"},
	{"226", "MsiNotifySidChangeW"},
	{"227", "MsiOpenPackageExA"},
	{"228", "MsiOpenPackageExW"},
	{"229", "MsiDeleteUserDataA"},
	{"23", "MsiDatabaseImportA"},
	{"230", "MsiDeleteUserDataW"},
	{"231", "Migrate10CachedPackagesA"},
	{"232", "Migrate10CachedPackagesW"},
	{"233", "MsiRemovePatchesA"},
	{"234", "MsiRemovePatchesW"},
	{"235", "MsiApplyMultiplePatchesA"},
	{"236", "MsiApplyMultiplePatchesW"},
	{"237", "MsiExtractPatchXMLDataA"},
	{"238", "MsiExtractPatchXMLDataW"},
	{"239", "MsiGetPatchInfoExA"},
	{"24", "MsiDatabaseImportW"},
	{"240", "MsiGetPatchInfoExW"},
	{"241", "MsiEnumProductsExA"},
	{"242", "MsiEnumProductsExW"},
	{"243", "MsiGetProductInfoExA"},
	{"244", "MsiGetProductInfoExW"},
	{"245", "MsiQueryComponentStateA"},
	{"246", "MsiQueryComponentStateW"},
	{"247", "MsiQueryFeatureStateExA"},
	{"248", "MsiQueryFeatureStateExW"},
	{"249", "MsiDeterminePatchSequenceA"},
	{"25", "MsiDatabaseMergeA"},
	{"250", "MsiDeterminePatchSequenceW"},
	{"251", "MsiSourceListAddSourceExA"},
	{"252", "MsiSourceListAddSourceExW"},
	{"253", "MsiSourceListClearSourceA"},
	{"254", "MsiSourceListClearSourceW"},
	{"255", "MsiSourceListClearAllExA"},
	{"256", "MsiSourceListClearAllExW"},
	{"257", "MsiSourceListForceResolutionExA"},
	{"258", "MsiSourceListForceResolutionExW"},
	{"259", "MsiSourceListEnumSourcesA"},
	{"26", "MsiDatabaseMergeW"},
	{"260", "MsiSourceListEnumSourcesW"},
	{"261", "MsiSourceListGetInfoA"},
	{"262", "MsiSourceListGetInfoW"},
	{"263", "MsiSourceListSetInfoA"},
	{"264", "MsiSourceListSetInfoW"},
	{"265", "MsiEnumPatchesExA"},
	{"266", "MsiEnumPatchesExW"},
	{"267", "MsiSourceListEnumMediaDisksA"},
	{"268", "MsiSourceListEnumMediaDisksW"},
	{"269", "MsiSourceListAddMediaDiskA"},
	{"27", "MsiDatabaseOpenViewA"},
	{"270", "MsiSourceListAddMediaDiskW"},
	{"271", "MsiSourceListClearMediaDiskA"},
	{"272", "MsiSourceListClearMediaDiskW"},
	{"273", "MsiDetermineApplicablePatchesA"},
	{"274", "MsiDetermineApplicablePatchesW"},
	{"275", "MsiMessageBoxExA"},
	{"276", "MsiMessageBoxExW"},
	{"277", "MsiSetExternalUIRecord"},
	{"278", "MsiGetPatchFileListA"},
	{"279", "MsiGetPatchFileListW"},
	{"28", "MsiDatabaseOpenViewW"},
	{"280", "MsiBeginTransactionA"},
	{"281", "MsiBeginTransactionW"},
	{"282", "MsiEndTransaction"},
	{"283", "MsiJoinTransaction"},
	{"284", "MsiSetOfflineContextW"},
	{"285", "MsiEnumComponentsExA"},
	{"286", "MsiEnumComponentsExW"},
	{"287", "MsiEnumClientsExA"},
	{"288", "MsiEnumClientsExW"},
	{"289", "MsiGetComponentPathExA"},
	{"29", "MsiDoActionA"},
	{"290", "MsiGetComponentPathExW"},
	{"291", "QueryInstanceCount"},
	{"292", "DllCanUnloadNow"},
	{"293", "DllGetClassObject"},
	{"294", "DllRegisterServer"},
	{"295", "DllUnregisterServer"},
	{"3", "MsiCloseAllHandles"},
	{"30", "MsiDoActionW"},
	{"31", "MsiEnableUIPreview"},
	{"32", "MsiEnumClientsA"},
	{"33", "MsiEnumClientsW"},
	{"34", "MsiEnumComponentQualifiersA"},
	{"35", "MsiEnumComponentQualifiersW"},
	{"36", "MsiEnumComponentsA"},
	{"37", "MsiEnumComponentsW"},
	{"38", "MsiEnumFeaturesA"},
	{"39", "MsiEnumFeaturesW"},
	{"4", "MsiCloseHandle"},
	{"40", "MsiEnumProductsA"},
	{"41", "MsiEnumProductsW"},
	{"42", "MsiEvaluateConditionA"},
	{"43", "MsiEvaluateConditionW"},
	{"44", "MsiGetLastErrorRecord"},
	{"45", "MsiGetActiveDatabase"},
	{"46", "MsiGetComponentStateA"},
	{"47", "MsiGetComponentStateW"},
	{"48", "MsiGetDatabaseState"},
	{"49", "MsiGetFeatureCostA"},
	{"5", "MsiCollectUserInfoA"},
	{"50", "MsiGetFeatureCostW"},
	{"51", "MsiGetFeatureInfoA"},
	{"52", "MsiGetFeatureInfoW"},
	{"53", "MsiGetFeatureStateA"},
	{"54", "MsiGetFeatureStateW"},
	{"55", "MsiGetFeatureUsageA"},
	{"56", "MsiGetFeatureUsageW"},
	{"57", "MsiGetFeatureValidStatesA"},
	{"58", "MsiGetFeatureValidStatesW"},
	{"59", "MsiGetLanguage"},
	{"6", "MsiCollectUserInfoW"},
	{"60", "MsiGetMode"},
	{"61", "MsiGetProductCodeA"},
	{"62", "MsiGetProductCodeW"},
	{"63", "MsiGetProductInfoA"},
	{"64", "MsiGetProductInfoFromScriptA"},
	{"65", "MsiGetProductInfoFromScriptW"},
	{"66", "MsiGetProductInfoW"},
	{"67", "MsiGetProductPropertyA"},
	{"68", "MsiGetProductPropertyW"},
	{"69", "MsiGetPropertyA"},
	{"7", "MsiConfigureFeatureA"},
	{"70", "MsiGetPropertyW"},
	{"71", "MsiGetSourcePathA"},
	{"72", "MsiGetSourcePathW"},
	{"73", "MsiGetSummaryInformationA"},
	{"74", "MsiGetSummaryInformationW"},
	{"75", "MsiGetTargetPathA"},
	{"76", "MsiGetTargetPathW"},
	{"77", "MsiGetUserInfoA"},
	{"78", "MsiGetUserInfoW"},
	{"79", "MsiInstallMissingComponentA"},
	{"8", "MsiConfigureFeatureFromDescriptorA"},
	{"80", "MsiInstallMissingComponentW"},
	{"81", "MsiInstallMissingFileA"},
	{"82", "MsiInstallMissingFileW"},
	{"83", "MsiInstallProductA"},
	{"84", "MsiInstallProductW"},
	{"85", "MsiLocateComponentA"},
	{"86", "MsiLocateComponentW"},
	{"87", "MsiOpenDatabaseA"},
	{"88", "MsiOpenDatabaseW"},
	{"89", "MsiOpenPackageA"},
	{"9", "MsiConfigureFeatureFromDescriptorW"},
	{"90", "MsiOpenPackageW"},
	{"91", "MsiOpenProductA"},
	{"92", "MsiOpenProductW"},
	{"93", "MsiPreviewBillboardA"},
	{"94", "MsiPreviewBillboardW"},
	{"95", "MsiPreviewDialogA"},
	{"96", "MsiPreviewDialogW"},
	{"97", "MsiProcessAdvertiseScriptA"},
	{"98", "MsiProcessAdvertiseScriptW"},
	{"99", "MsiProcessMessage"},
  {NULL, NULL}
};
typedef int (*GperfForeachCallback)(void *user, const char *k, const char *v);
int gperf_msi_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_msi_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_msi(x,y) gperf_msi_hash(x)
const unsigned int gperf_msi_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_msi = {
  .name = "msi",
  .get = &gperf_msi_get,
  .hash = &gperf_msi_hash,
  .foreach = &gperf_msi_foreach
};

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