// 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 vssapi.c ; ./a.out > vssapi.h
	{"10", "??1CVssJetWriter@@UAE@XZ"},
	{"11", "??1CVssWriter@@UAE@XZ"},
	{"12", "?AreComponentsSelected@CVssJetWriter@@IBG_NXZ"},
	{"13", "?AreComponentsSelected@CVssWriter@@IBG_NXZ"},
	{"14", "?CreateVssBackupComponents@@YGJPAPAVIVssBackupComponents@@@Z"},
	{"15", "?CreateVssExamineWriterMetadata@@YGJPAGPAPAVIVssExamineWriterMetadata@@@Z"},
	{"16", "?CreateVssSnapshotSetDescription@@YGJU_GUID@@JPAPAVIVssSnapshotSetDescription@@@Z"},
	{"17", "?GetBackupType@CVssJetWriter@@IBG?AW4_VSS_BACKUP_TYPE@@XZ"},
	{"18", "?GetBackupType@CVssWriter@@IBG?AW4_VSS_BACKUP_TYPE@@XZ"},
	{"19", "?GetContext@CVssJetWriter@@IBGJXZ"},
	{"20", "?GetContext@CVssWriter@@IBGJXZ"},
	{"21", "?GetCurrentLevel@CVssJetWriter@@IBG?AW4_VSS_APPLICATION_LEVEL@@XZ"},
	{"22", "?GetCurrentLevel@CVssWriter@@IBG?AW4_VSS_APPLICATION_LEVEL@@XZ"},
	{"23", "?GetCurrentSnapshotSetId@CVssJetWriter@@IBG?AU_GUID@@XZ"},
	{"24", "?GetCurrentSnapshotSetId@CVssWriter@@IBG?AU_GUID@@XZ"},
	{"25", "?GetCurrentVolumeArray@CVssJetWriter@@IBGPAPBGXZ"},
	{"26", "?GetCurrentVolumeArray@CVssWriter@@IBGPAPBGXZ"},
	{"27", "?GetCurrentVolumeCount@CVssJetWriter@@IBGIXZ"},
	{"28", "?GetCurrentVolumeCount@CVssWriter@@IBGIXZ"},
	{"29", "?GetRestoreType@CVssJetWriter@@IBG?AW4_VSS_RESTORE_TYPE@@XZ"},
	{"30", "?GetRestoreType@CVssWriter@@IBG?AW4_VSS_RESTORE_TYPE@@XZ"},
	{"31", "?GetSnapshotDeviceName@CVssJetWriter@@IBGJPBGPAPBG@Z"},
	{"32", "?GetSnapshotDeviceName@CVssWriter@@IBGJPBGPAPBG@Z"},
	{"33", "?Initialize@CVssJetWriter@@QAGJU_GUID@@PBG_N211K@Z"},
	{"34", "?Initialize@CVssWriter@@QAGJU_GUID@@PBGW4VSS_USAGE_TYPE@@W4VSS_SOURCE_TYPE@@W4_VSS_APPLICATION_LEVEL@@KW4VSS_ALTERNATE_WRITER_STATE@@_N1@Z"},
	{"35", "?InstallAlternateWriter@CVssWriter@@QAGJU_GUID@@0@Z"},
	{"36", "?IsBootableSystemStateBackedUp@CVssJetWriter@@IBG_NXZ"},
	{"37", "?IsBootableSystemStateBackedUp@CVssWriter@@IBG_NXZ"},
	{"38", "?IsPartialFileSupportEnabled@CVssJetWriter@@IBG_NXZ"},
	{"39", "?IsPartialFileSupportEnabled@CVssWriter@@IBG_NXZ"},
	{"40", "?IsPathAffected@CVssJetWriter@@IBG_NPBG@Z"},
	{"41", "?IsPathAffected@CVssWriter@@IBG_NPBG@Z"},
	{"42", "?LoadVssSnapshotSetDescription@@YGJPBGPAPAVIVssSnapshotSetDescription@@U_GUID@@@Z"},
	{"43", "?OnAbortBegin@CVssJetWriter@@UAGXXZ"},
	{"44", "?OnAbortEnd@CVssJetWriter@@UAGXXZ"},
	{"45", "?OnBackOffIOOnVolume@CVssWriter@@UAG_NPAGU_GUID@@1@Z"},
	{"46", "?OnBackupComplete@CVssWriter@@UAG_NPAVIVssWriterComponents@@@Z"},
	{"47", "?OnBackupCompleteBegin@CVssJetWriter@@UAG_NPAVIVssWriterComponents@@@Z"},
	{"48", "?OnBackupCompleteEnd@CVssJetWriter@@UAG_NPAVIVssWriterComponents@@_N@Z"},
	{"49", "?OnBackupShutdown@CVssWriter@@UAG_NU_GUID@@@Z"},
	{"5", "IsVolumeSnapshotted"},
	{"50", "?OnContinueIOOnVolume@CVssWriter@@UAG_NPAGU_GUID@@1@Z"},
	{"51", "?OnFreezeBegin@CVssJetWriter@@UAG_NXZ"},
	{"52", "?OnFreezeEnd@CVssJetWriter@@UAG_N_N@Z"},
	{"53", "?OnIdentify@CVssJetWriter@@UAG_NPAVIVssCreateWriterMetadata@@@Z"},
	{"54", "?OnIdentify@CVssWriter@@UAG_NPAVIVssCreateWriterMetadata@@@Z"},
	{"55", "?OnPostRestore@CVssWriter@@UAG_NPAVIVssWriterComponents@@@Z"},
	{"56", "?OnPostRestoreBegin@CVssJetWriter@@UAG_NPAVIVssWriterComponents@@@Z"},
	{"57", "?OnPostRestoreEnd@CVssJetWriter@@UAG_NPAVIVssWriterComponents@@_N@Z"},
	{"58", "?OnPostSnapshot@CVssJetWriter@@UAG_NPAVIVssWriterComponents@@@Z"},
	{"59", "?OnPostSnapshot@CVssWriter@@UAG_NPAVIVssWriterComponents@@@Z"},
	{"6", "VssFreeSnapshotProperties"},
	{"60", "?OnPreRestore@CVssWriter@@UAG_NPAVIVssWriterComponents@@@Z"},
	{"61", "?OnPreRestoreBegin@CVssJetWriter@@UAG_NPAVIVssWriterComponents@@@Z"},
	{"62", "?OnPreRestoreEnd@CVssJetWriter@@UAG_NPAVIVssWriterComponents@@_N@Z"},
	{"63", "?OnPrepareBackup@CVssWriter@@UAG_NPAVIVssWriterComponents@@@Z"},
	{"64", "?OnPrepareBackupBegin@CVssJetWriter@@UAG_NPAVIVssWriterComponents@@@Z"},
	{"65", "?OnPrepareBackupEnd@CVssJetWriter@@UAG_NPAVIVssWriterComponents@@_N@Z"},
	{"66", "?OnPrepareSnapshotBegin@CVssJetWriter@@UAG_NXZ"},
	{"67", "?OnPrepareSnapshotEnd@CVssJetWriter@@UAG_N_N@Z"},
	{"68", "?OnThawBegin@CVssJetWriter@@UAG_NXZ"},
	{"69", "?OnThawEnd@CVssJetWriter@@UAG_N_N@Z"},
	{"7", "ShouldBlockRevert"},
	{"70", "?OnVSSApplicationStartup@CVssWriter@@UAG_NXZ"},
	{"71", "?OnVSSShutdown@CVssWriter@@UAG_NXZ"},
	{"72", "?SetWriterFailure@CVssJetWriter@@IAGJJ@Z"},
	{"73", "?SetWriterFailure@CVssWriter@@IAGJJ@Z"},
	{"74", "?Subscribe@CVssWriter@@QAGJK@Z"},
	{"75", "?Uninitialize@CVssJetWriter@@QAGXXZ"},
	{"76", "?Unsubscribe@CVssWriter@@QAGJXZ"},
	{"77", "CreateVssBackupComponentsInternal"},
	{"78", "CreateVssExamineWriterMetadataInternal"},
	{"79", "CreateVssExpressWriterInternal"},
	{"8", "??0CVssJetWriter@@QAE@XZ"},
	{"80", "CreateWriter"},
	{"81", "CreateWriterEx"},
	{"82", "DllCanUnloadNow"},
	{"83", "DllGetClassObject"},
	{"84", "GetProviderMgmtInterface"},
	{"85", "GetProviderMgmtInterfaceInternal"},
	{"86", "IsVolumeSnapshottedInternal"},
	{"87", "ShouldBlockRevertInternal"},
	{"88", "VssFreeSnapshotPropertiesInternal"},
	{"9", "??0CVssWriter@@QAE@XZ"},
  {NULL, NULL}
};
typedef int (*GperfForeachCallback)(void *user, const char *k, const char *v);
int gperf_vssapi_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_vssapi_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_vssapi(x,y) gperf_vssapi_hash(x)
const unsigned int gperf_vssapi_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_vssapi = {
  .name = "vssapi",
  .get = &gperf_vssapi_get,
  .hash = &gperf_vssapi_hash,
  .foreach = &gperf_vssapi_foreach
};

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