59#include "daitch_mokotoff.h"
61#define DM_CODE_DIGITS 6
96 .prev_code_digits = {
'\0',
'\0'},
97 .next_code_digits = {
'\0',
'\0'},
114"`ABCDEFGHIJKLMNOPQRSTUVWXYZ{|}~ ! ?AAAAAAECEEEEIIIIDNOOOOO*OUUUUYDSAAAAAAECEEEEIIIIDNOOOOO/OUUUUYDY";
134 "daitch_mokotoff temporary context",
353 for (
i = 0;
i < 2 && (code =
codes[
i]) && code[0][0];
i++)
399 const char na =
'\x1a';
411 if (
c >= (
unsigned char)
'[' &&
c <= (
unsigned char)
']')
457 if (
c >=
'A' &&
c <=
']')
ArrayBuildState * accumArrayResult(ArrayBuildState *astate, Datum dvalue, bool disnull, Oid element_type, MemoryContext rcontext)
ArrayBuildState * initArrayResult(Oid element_type, MemoryContext rcontext, bool subcontext)
Datum makeArrayResult(ArrayBuildState *astate, MemoryContext rcontext)
static bool daitch_mokotoff_coding(const char *word, ArrayBuildState *soundex)
static dm_node * find_or_create_child_node(dm_node *parent, char code_digit, ArrayBuildState *soundex)
static const char iso8859_1_to_ascii_upper[]
static void update_node(dm_node *first_node[2], dm_node *last_node[2], dm_node *node, int ix_node, int letter_no, int prev_code_index, int next_code_index, const char *next_code_digits, int digit_no, ArrayBuildState *soundex)
static const dm_node start_node
Datum daitch_mokotoff(PG_FUNCTION_ARGS)
static const dm_codes end_codes[2]
static const dm_codes * read_letter(const char *str, int *ix)
static char read_char(const unsigned char *str, int *ix)
static void update_leaves(dm_node *first_node[2], int *ix_node, int letter_no, const dm_codes *codes, const dm_codes *next_codes, ArrayBuildState *soundex)
static void add_next_code_digit(dm_node *node, int code_index, char code_digit)
static char read_valid_char(const char *str, int *ix)
static void set_leaf(dm_node *first_node[2], dm_node *last_node[2], dm_node *node, int ix_node)
static void initialize_node(dm_node *node, int last_update)
#define palloc_object(type)
#define PG_GETARG_TEXT_PP(n)
#define PG_FUNCTION_INFO_V1(funcname)
#define PG_RETURN_DATUM(x)
Datum soundex(PG_FUNCTION_ARGS)
static char32_t utf8_to_unicode(const unsigned char *c)
char * pg_server_to_any(const char *s, int len, int encoding)
MemoryContext CurrentMemoryContext
void MemoryContextDelete(MemoryContext context)
#define AllocSetContextCreate
#define ALLOCSET_DEFAULT_SIZES
static MemoryContext MemoryContextSwitchTo(MemoryContext context)
static Datum PointerGetDatum(const void *X)
static int cmp(const chr *x, const chr *y, size_t len)
static void word(struct vars *v, int dir, struct state *lp, struct state *rp)
struct dm_node * children[10]
char soundex[DM_CODE_DIGITS]
static Size VARSIZE_ANY_EXHDR(const void *PTR)
text * cstring_to_text_with_len(const char *s, int len)
char * text_to_cstring(const text *t)