+long VCEnumCounter = 0;
+
+typedef enum _VCStrEnum {
+ FlatString,
+ StringCluster,
+ PhoneNumber,
+ EmailAddr,
+ Street,
+ Number,
+ AliasFor,
+ Base64BinaryAttachment,
+ TerminateList
+}VCStrEnum;
+typedef struct vcField vcField;
+struct vcField {
+ ConstStr STR;
+ VCStrEnum Type;
+ vcField *Sub;
+ long cval;
+ const char *Str;
+};
+
+vcField VCStr_Ns [] = {
+ {{HKEY("last")}, FlatString, NULL, 0, "Last Name"},
+ {{HKEY("first")}, FlatString, NULL, 0, "First Name"},
+ {{HKEY("middle")}, FlatString, NULL, 0, "Middle Name"},
+ {{HKEY("prefix")}, FlatString, NULL, 0, "Prefix"},
+ {{HKEY("suffix")}, FlatString, NULL, 0, "Suffix"},
+ {{HKEY("")}, TerminateList, NULL, 0, ""}
+};
+
+vcField VCStr_Addrs [] = {
+ {{HKEY("POBox")}, FlatString, NULL, 0, "PO box"},
+ {{HKEY("address")}, FlatString, NULL, 0, "Address"},
+ {{HKEY("address2")}, FlatString, NULL, 0, ""},
+ {{HKEY("city")}, FlatString, NULL, 0, "City"},
+ {{HKEY("state")}, FlatString, NULL, 0, "State"},
+ {{HKEY("zip")}, FlatString, NULL, 0, "ZIP code"},
+ {{HKEY("country")}, FlatString, NULL, 0, "Country"},
+ {{HKEY("")}, TerminateList, NULL, 0, ""}
+};
+
+vcField VCStrE [] = {
+ {{HKEY("version")}, Number, NULL, 0, ""},
+ {{HKEY("rev")}, Number, NULL, 0, ""},
+ {{HKEY("label")}, FlatString, NULL, 0, ""},
+ {{HKEY("uid")}, FlatString, NULL, 0, ""},
+ {{HKEY("n")}, StringCluster, VCStr_Ns, 0, ""}, /* N is name, but only if there's no FN already there */
+ {{HKEY("fn")}, FlatString, NULL, 0, ""}, /* FN (full name) is a true 'display name' field */
+ {{HKEY("title")}, FlatString, NULL, 0, "Title:"},
+ {{HKEY("org")}, FlatString, NULL, 0, "Organization:"},/* organization */
+ {{HKEY("email")}, EmailAddr, NULL, 0, "E-mail:"},
+ {{HKEY("tel")}, PhoneNumber, NULL, 0, "Telephone:"},
+ {{HKEY("adr")}, StringCluster, VCStr_Addrs, 0, "Address:"},
+ {{HKEY("photo")}, Base64BinaryAttachment, NULL, 0, "Photo:"},
+ {{HKEY("tel;home")}, PhoneNumber, NULL, 0, " (home)"},
+ {{HKEY("tel;work")}, PhoneNumber, NULL, 0, " (work)"},
+ {{HKEY("tel;fax")}, PhoneNumber, NULL, 0, " (fax)"},
+ {{HKEY("tel;cell")}, PhoneNumber, NULL, 0, " (cell)"},
+ {{HKEY("email;internet")}, EmailAddr, NULL, 0, "E-mail:"},
+ {{HKEY("")}, TerminateList, NULL, 0, ""}
+};