/* * Constants and lookup tables for Daitch-Mokotoff Soundex * * Copyright (c) 2023, PostgreSQL Global Development Group * * This file is generated by daitch_mokotoff_header.pl */ /* Coding chart table: Soundex codes */ typedef char dm_code[2 + 1]; /* One or two sequential code digits + NUL */ typedef dm_code dm_codes[3]; /* Start of name, before a vowel, any other */ /* Coding chart table: Letter in input sequence */ struct dm_letter { char letter; /* Present letter in sequence */ const struct dm_letter *letters; /* List of possible successive letters */ const dm_codes *codes; /* Code sequence(s) for complete sequence */ }; typedef struct dm_letter dm_letter; /* Codes for letter sequence at start of name, before a vowel, and any other. */ static const dm_codes codes_0_1_X[2] = { { "0", "1", "X" } }; static const dm_codes codes_0_7_X[2] = { { "0", "7", "X" } }; static const dm_codes codes_0_X_X[2] = { { "0", "X", "X" } }; static const dm_codes codes_1_1_X[2] = { { "1", "1", "X" } }; static const dm_codes codes_1_X_X[2] = { { "1", "X", "X" } }; static const dm_codes codes_1_X_X_or_4_4_4[2] = { { "1", "X", "X" }, { "4", "4", "4" } }; static const dm_codes codes_2_43_43[2] = { { "2", "43", "43" } }; static const dm_codes codes_2_4_4[2] = { { "2", "4", "4" } }; static const dm_codes codes_3_3_3[2] = { { "3", "3", "3" } }; static const dm_codes codes_3_3_3_or_4_4_4[2] = { { "3", "3", "3" }, { "4", "4", "4" } }; static const dm_codes codes_4_4_4[2] = { { "4", "4", "4" } }; static const dm_codes codes_5_54_54[2] = { { "5", "54", "54" } }; static const dm_codes codes_5_5_5[2] = { { "5", "5", "5" } }; static const dm_codes codes_5_5_5_or_45_45_45[2] = { { "5", "5", "5" }, { "45", "45", "45" } }; static const dm_codes codes_5_5_5_or_4_4_4[2] = { { "5", "5", "5" }, { "4", "4", "4" } }; static const dm_codes codes_5_5_X[2] = { { "5", "5", "X" } }; static const dm_codes codes_66_66_66[2] = { { "66", "66", "66" } }; static const dm_codes codes_6_6_6[2] = { { "6", "6", "6" } }; static const dm_codes codes_7_7_7[2] = { { "7", "7", "7" } }; static const dm_codes codes_8_8_8[2] = { { "8", "8", "8" } }; static const dm_codes codes_94_94_94_or_4_4_4[2] = { { "94", "94", "94" }, { "4", "4", "4" } }; static const dm_codes codes_9_9_9[2] = { { "9", "9", "9" } }; static const dm_codes codes_X_X_6_or_X_X_X[2] = { { "X", "X", "6" }, { "X", "X", "X" } }; /* Coding for alternative following letters in sequence. */ static const dm_letter letter_A[] = { { 'I', NULL, codes_0_1_X }, { 'J', NULL, codes_0_1_X }, { 'U', NULL, codes_0_7_X }, { 'Y', NULL, codes_0_1_X }, { '\0' } }; static const dm_letter letter_CH[] = { { 'S', NULL, codes_5_54_54 }, { '\0' } }; static const dm_letter letter_CS[] = { { 'Z', NULL, codes_4_4_4 }, { '\0' } }; static const dm_letter letter_CZ[] = { { 'S', NULL, codes_4_4_4 }, { '\0' } }; static const dm_letter letter_C[] = { { 'H', letter_CH, codes_5_5_5_or_4_4_4 }, { 'K', NULL, codes_5_5_5_or_45_45_45 }, { 'S', letter_CS, codes_4_4_4 }, { 'Z', letter_CZ, codes_4_4_4 }, { '\0' } }; static const dm_letter letter_DR[] = { { 'S', NULL, codes_4_4_4 }, { 'Z', NULL, codes_4_4_4 }, { '\0' } }; static const dm_letter letter_DS[] = { { 'H', NULL, codes_4_4_4 }, { 'Z', NULL, codes_4_4_4 }, { '\0' } }; static const dm_letter letter_DZ[] = { { 'H', NULL, codes_4_4_4 }, { 'S', NULL, codes_4_4_4 }, { '\0' } }; static const dm_letter letter_D[] = { { 'R', letter_DR, NULL }, { 'S', letter_DS, codes_4_4_4 }, { 'T', NULL, codes_3_3_3 }, { 'Z', letter_DZ, codes_4_4_4 }, { '\0' } }; static const dm_letter letter_E[] = { { 'I', NULL, codes_0_1_X }, { 'J', NULL, codes_0_1_X }, { 'U', NULL, codes_1_1_X }, { 'Y', NULL, codes_0_1_X }, { '\0' } }; static const dm_letter letter_F[] = { { 'B', NULL, codes_7_7_7 }, { '\0' } }; static const dm_letter letter_I[] = { { 'A', NULL, codes_1_X_X }, { 'E', NULL, codes_1_X_X }, { 'O', NULL, codes_1_X_X }, { 'U', NULL, codes_1_X_X }, { '\0' } }; static const dm_letter letter_K[] = { { 'H', NULL, codes_5_5_5 }, { 'S', NULL, codes_5_54_54 }, { '\0' } }; static const dm_letter letter_M[] = { { 'N', NULL, codes_66_66_66 }, { '\0' } }; static const dm_letter letter_N[] = { { 'M', NULL, codes_66_66_66 }, { '\0' } }; static const dm_letter letter_O[] = { { 'I', NULL, codes_0_1_X }, { 'J', NULL, codes_0_1_X }, { 'Y', NULL, codes_0_1_X }, { '\0' } }; static const dm_letter letter_P[] = { { 'F', NULL, codes_7_7_7 }, { 'H', NULL, codes_7_7_7 }, { '\0' } }; static const dm_letter letter_R[] = { { 'S', NULL, codes_94_94_94_or_4_4_4 }, { 'Z', NULL, codes_94_94_94_or_4_4_4 }, { '\0' } }; static const dm_letter letter_SCHTC[] = { { 'H', NULL, codes_2_4_4 }, { '\0' } }; static const dm_letter letter_SCHTSC[] = { { 'H', NULL, codes_2_4_4 }, { '\0' } }; static const dm_letter letter_SCHTS[] = { { 'C', letter_SCHTSC, NULL }, { 'H', NULL, codes_2_4_4 }, { '\0' } }; static const dm_letter letter_SCHT[] = { { 'C', letter_SCHTC, NULL }, { 'S', letter_SCHTS, NULL }, { '\0' } }; static const dm_letter letter_SCH[] = { { 'D', NULL, codes_2_43_43 }, { 'T', letter_SCHT, codes_2_43_43 }, { '\0' } }; static const dm_letter letter_SC[] = { { 'H', letter_SCH, codes_4_4_4 }, { '\0' } }; static const dm_letter letter_SHC[] = { { 'H', NULL, codes_2_4_4 }, { '\0' } }; static const dm_letter letter_SHTC[] = { { 'H', NULL, codes_2_4_4 }, { '\0' } }; static const dm_letter letter_SHTS[] = { { 'H', NULL, codes_2_4_4 }, { '\0' } }; static const dm_letter letter_SHT[] = { { 'C', letter_SHTC, NULL }, { 'S', letter_SHTS, NULL }, { '\0' } }; static const dm_letter letter_SH[] = { { 'C', letter_SHC, NULL }, { 'D', NULL, codes_2_43_43 }, { 'T', letter_SHT, codes_2_43_43 }, { '\0' } }; static const dm_letter letter_STC[] = { { 'H', NULL, codes_2_4_4 }, { '\0' } }; static const dm_letter letter_STR[] = { { 'S', NULL, codes_2_4_4 }, { 'Z', NULL, codes_2_4_4 }, { '\0' } }; static const dm_letter letter_STSC[] = { { 'H', NULL, codes_2_4_4 }, { '\0' } }; static const dm_letter letter_STS[] = { { 'C', letter_STSC, NULL }, { 'H', NULL, codes_2_4_4 }, { '\0' } }; static const dm_letter letter_ST[] = { { 'C', letter_STC, NULL }, { 'R', letter_STR, NULL }, { 'S', letter_STS, NULL }, { '\0' } }; static const dm_letter letter_SZC[] = { { 'S', NULL, codes_2_4_4 }, { 'Z', NULL, codes_2_4_4 }, { '\0' } }; static const dm_letter letter_SZ[] = { { 'C', letter_SZC, NULL }, { 'D', NULL, codes_2_43_43 }, { 'T', NULL, codes_2_43_43 }, { '\0' } }; static const dm_letter letter_S[] = { { 'C', letter_SC, codes_2_4_4 }, { 'D', NULL, codes_2_43_43 }, { 'H', letter_SH, codes_4_4_4 }, { 'T', letter_ST, codes_2_43_43 }, { 'Z', letter_SZ, codes_4_4_4 }, { '\0' } }; static const dm_letter letter_TC[] = { { 'H', NULL, codes_4_4_4 }, { '\0' } }; static const dm_letter letter_TR[] = { { 'S', NULL, codes_4_4_4 }, { 'Z', NULL, codes_4_4_4 }, { '\0' } }; static const dm_letter letter_TSC[] = { { 'H', NULL, codes_4_4_4 }, { '\0' } }; static const dm_letter letter_TS[] = { { 'C', letter_TSC, NULL }, { 'H', NULL, codes_4_4_4 }, { 'Z', NULL, codes_4_4_4 }, { '\0' } }; static const dm_letter letter_TTC[] = { { 'H', NULL, codes_4_4_4 }, { '\0' } }; static const dm_letter letter_TTSC[] = { { 'H', NULL, codes_4_4_4 }, { '\0' } }; static const dm_letter letter_TTS[] = { { 'C', letter_TTSC, NULL }, { 'Z', NULL, codes_4_4_4 }, { '\0' } }; static const dm_letter letter_TT[] = { { 'C', letter_TTC, NULL }, { 'S', letter_TTS, codes_4_4_4 }, { 'Z', NULL, codes_4_4_4 }, { '\0' } }; static const dm_letter letter_TZ[] = { { 'S', NULL, codes_4_4_4 }, { '\0' } }; static const dm_letter letter_T[] = { { 'C', letter_TC, codes_4_4_4 }, { 'H', NULL, codes_3_3_3 }, { 'R', letter_TR, NULL }, { 'S', letter_TS, codes_4_4_4 }, { 'T', letter_TT, NULL }, { 'Z', letter_TZ, codes_4_4_4 }, { '\0' } }; static const dm_letter letter_U[] = { { 'E', NULL, codes_0_1_X }, { 'I', NULL, codes_0_1_X }, { 'J', NULL, codes_0_1_X }, { 'Y', NULL, codes_0_1_X }, { '\0' } }; static const dm_letter letter_ZDZ[] = { { 'H', NULL, codes_2_4_4 }, { '\0' } }; static const dm_letter letter_ZD[] = { { 'Z', letter_ZDZ, codes_2_4_4 }, { '\0' } }; static const dm_letter letter_ZHDZ[] = { { 'H', NULL, codes_2_4_4 }, { '\0' } }; static const dm_letter letter_ZHD[] = { { 'Z', letter_ZHDZ, NULL }, { '\0' } }; static const dm_letter letter_ZH[] = { { 'D', letter_ZHD, codes_2_43_43 }, { '\0' } }; static const dm_letter letter_ZSC[] = { { 'H', NULL, codes_4_4_4 }, { '\0' } }; static const dm_letter letter_ZS[] = { { 'C', letter_ZSC, NULL }, { 'H', NULL, codes_4_4_4 }, { '\0' } }; static const dm_letter letter_Z[] = { { 'D', letter_ZD, codes_2_43_43 }, { 'H', letter_ZH, codes_4_4_4 }, { 'S', letter_ZS, codes_4_4_4 }, { '\0' } }; static const dm_letter letter_[] = { { 'A', letter_A, codes_0_X_X }, { 'B', NULL, codes_7_7_7 }, { 'C', letter_C, codes_5_5_5_or_4_4_4 }, { 'D', letter_D, codes_3_3_3 }, { 'E', letter_E, codes_0_X_X }, { 'F', letter_F, codes_7_7_7 }, { 'G', NULL, codes_5_5_5 }, { 'H', NULL, codes_5_5_X }, { 'I', letter_I, codes_0_X_X }, { 'J', NULL, codes_1_X_X_or_4_4_4 }, { 'K', letter_K, codes_5_5_5 }, { 'L', NULL, codes_8_8_8 }, { 'M', letter_M, codes_6_6_6 }, { 'N', letter_N, codes_6_6_6 }, { 'O', letter_O, codes_0_X_X }, { 'P', letter_P, codes_7_7_7 }, { 'Q', NULL, codes_5_5_5 }, { 'R', letter_R, codes_9_9_9 }, { 'S', letter_S, codes_4_4_4 }, { 'T', letter_T, codes_3_3_3 }, { 'U', letter_U, codes_0_X_X }, { 'V', NULL, codes_7_7_7 }, { 'W', NULL, codes_7_7_7 }, { 'X', NULL, codes_5_54_54 }, { 'Y', NULL, codes_1_X_X }, { 'Z', letter_Z, codes_4_4_4 }, { 'a', NULL, codes_X_X_6_or_X_X_X }, { 'e', NULL, codes_X_X_6_or_X_X_X }, { 't', NULL, codes_3_3_3_or_4_4_4 }, { '\0' } };