diff options
Diffstat (limited to 'contrib/tsearch2/tsvector.h')
-rw-r--r-- | contrib/tsearch2/tsvector.h | 37 |
1 files changed, 21 insertions, 16 deletions
diff --git a/contrib/tsearch2/tsvector.h b/contrib/tsearch2/tsvector.h index af06e3cf52f..bb695247463 100644 --- a/contrib/tsearch2/tsvector.h +++ b/contrib/tsearch2/tsvector.h @@ -12,23 +12,27 @@ #include "utils/builtins.h" #include "storage/bufpage.h" -typedef struct { +typedef struct +{ uint32 - haspos:1, - len:11, /* MAX 2Kb */ - pos:20; /* MAX 1Mb */ + haspos:1, + len:11, /* MAX 2Kb */ + pos:20; /* MAX 1Mb */ } WordEntry; + #define MAXSTRLEN ( 1<<11 ) #define MAXSTRPOS ( 1<<20 ) -typedef struct { +typedef struct +{ uint16 - weight:2, - pos:14; -} WordEntryPos; -#define MAXENTRYPOS (1<<14) + weight:2, + pos:14; +} WordEntryPos; + +#define MAXENTRYPOS (1<<14) #define MAXNUMPOS 256 -#define LIMITPOS(x) ( ( (x) >= MAXENTRYPOS ) ? (MAXENTRYPOS-1) : (x) ) +#define LIMITPOS(x) ( ( (x) >= MAXENTRYPOS ) ? (MAXENTRYPOS-1) : (x) ) typedef struct { @@ -43,13 +47,14 @@ typedef struct #define STRPTR(x) ( (char*)x + DATAHDRSIZE + ( sizeof(WordEntry) * ((tsvector*)x)->size ) ) #define STRSIZE(x) ( ((tsvector*)x)->len - DATAHDRSIZE - ( sizeof(WordEntry) * ((tsvector*)x)->size ) ) #define _POSDATAPTR(x,e) (STRPTR(x)+((WordEntry*)(e))->pos+SHORTALIGN(((WordEntry*)(e))->len)) -#define POSDATALEN(x,e) ( ( ((WordEntry*)(e))->haspos ) ? (*(uint16*)_POSDATAPTR(x,e)) : 0 ) -#define POSDATAPTR(x,e) ( (WordEntryPos*)( _POSDATAPTR(x,e)+sizeof(uint16) ) ) +#define POSDATALEN(x,e) ( ( ((WordEntry*)(e))->haspos ) ? (*(uint16*)_POSDATAPTR(x,e)) : 0 ) +#define POSDATAPTR(x,e) ( (WordEntryPos*)( _POSDATAPTR(x,e)+sizeof(uint16) ) ) -typedef struct { - WordEntry entry; - WordEntryPos *pos; +typedef struct +{ + WordEntry entry; + WordEntryPos *pos; } WordEntryIN; typedef struct @@ -60,7 +65,7 @@ typedef struct int4 len; int4 state; int4 alen; - WordEntryPos *pos; + WordEntryPos *pos; bool oprisdelim; } TI_IN_STATE; |