typedef struct
{
- WordEntry entry; /* must be first! */
+ WordEntry entry; /* must be first, see compareentry */
WordEntryPos *pos;
int poslen; /* number of elements in pos */
} WordEntryIN;
return res + 1 - a;
}
-/* Compare two WordEntryIN values for qsort */
+/*
+ * Compare two WordEntry structs for qsort_arg. This can also be used on
+ * WordEntryIN structs, since those have WordEntry as their first field.
+ */
static int
compareentry(const void *va, const void *vb, void *arg)
{
- const WordEntryIN *a = (const WordEntryIN *) va;
- const WordEntryIN *b = (const WordEntryIN *) vb;
+ const WordEntry *a = (const WordEntry *) va;
+ const WordEntry *b = (const WordEntry *) vb;
char *BufferStr = (char *) arg;
- return tsCompareString(&BufferStr[a->entry.pos], a->entry.len,
- &BufferStr[b->entry.pos], b->entry.len,
+ return tsCompareString(&BufferStr[a->pos], a->len,
+ &BufferStr[b->pos], b->len,
false);
}
return res + 1 - a;
}
-static int
-WordEntryCMP(WordEntry *a, WordEntry *b, char *buf)
-{
- return compareentry(a, b, buf);
-}
-
Datum
tsvectorin(PG_FUNCTION_ARGS)
datalen += lex_len;
- if (i > 0 && WordEntryCMP(&vec->entries[i],
+ if (i > 0 && compareentry(&vec->entries[i],
&vec->entries[i - 1],
STRPTR(vec)) <= 0)
needSort = true;