]> granicus.if.org Git - postgresql/blobdiff - contrib/tsearch2/ispell/spell.h
pgindent run for 8.2.
[postgresql] / contrib / tsearch2 / ispell / spell.h
index fd5ab7141d48f68fc6c74d27f649d20c0227ecf0..50a5947680e7cda064c08a659e7b5b23909c9179 100644 (file)
 #ifndef __SPELL_H__
 #define __SPELL_H__
 
-#include <sys/types.h>
-#include <regex.h>
 #include "c.h"
 
-struct SPNode;
+#include <sys/types.h>
 
+#include "regex/regex.h"
 
-typedef struct {
-       uint32 
-               val:8,
-               isword:1,
-               compoundallow:1,
-               affix:22;
-       struct SPNode *node; 
-} SPNodeData;
+#include "regis.h"
+#include "dict.h"
+
+struct SPNode;
 
-typedef struct SPNode {
-       uint32  length;
-       SPNodeData      data[1];        
-} SPNode;
+
+typedef struct
+{
+       uint32
+                               val:8,
+                               isword:1,
+                               compoundallow:1,
+                               affix:22;
+       struct SPNode *node;
+}      SPNodeData;
+
+typedef struct SPNode
+{
+       uint32          length;
+       SPNodeData      data[1];
+}      SPNode;
 
 #define SPNHRDSZ       (sizeof(uint32))
 
 
 typedef struct spell_struct
 {
-       char       *word;
-       union {
+       union
+       {
                char            flag[16];
-               struct {
-                       int             affix;
-                       int             len;
-               } d;
-       } p;
+               struct
+               {
+                       int                     affix;
+                       int                     len;
+               }                       d;
+       }                       p;
+       char            word[1];
 }      SPELL;
 
+#define SPELLHDRSZ     (offsetof(SPELL, word))
+
 typedef struct aff_struct
 {
-       char            flag;
-       char            flagflags;
-       char            type;
-       char            mask[33];
-       char            find[16];
-       char            repl[16];
-       regex_t         reg;
-       size_t          replen;
-       char            compile;
+       uint32
+                               flag:8,
+                               type:2,
+                               compile:1,
+                               flagflags:3,
+                               issimple:1,
+                               isregis:1,
+                               unused:1,
+                               replen:16;
+       char       *mask;
+       char       *find;
+       char       *repl;
+       union
+       {
+               regex_t         regex;
+               Regis           regis;
+       }                       reg;
 }      AFFIX;
 
-#define FF_CROSSPRODUCT        0x01
-#define FF_COMPOUNDWORD        0x02
-#define FF_COMPOUNDONLYAFX      0x04
+#define FF_CROSSPRODUCT                0x01
+#define FF_COMPOUNDWORD                0x02
+#define FF_COMPOUNDONLYAFX             0x04
+#define FF_SUFFIX                              2
+#define FF_PREFIX                              1
 
 struct AffixNode;
 
-typedef struct {
+typedef struct
+{
        uint32
-               val:8,
-               naff:24;
-       AFFIX   **aff;
+                               val:8,
+                               naff:24;
+       AFFIX     **aff;
        struct AffixNode *node;
-} AffixNodeData;
+}      AffixNodeData;
 
-typedef struct AffixNode {
-       uint32 length;
-       AffixNodeData   data[1];
-} AffixNode;
+typedef struct AffixNode
+{
+       uint32          isvoid:1,
+                               length:31;
+       AffixNodeData data[1];
+}      AffixNode;
 
-#define ANHRDSZ        (sizeof(uint32))
+#define ANHRDSZ                   (sizeof(uint32))
 
-typedef struct Tree_struct
+typedef struct
 {
-       int                     Left[256],
-                               Right[256];
-}      Tree_struct;
-
-typedef struct {
-       char *affix;
-       int len;
-} CMPDAffix;
+       char       *affix;
+       int                     len;
+}      CMPDAffix;
 
 typedef struct
 {
        int                     maffixes;
        int                     naffixes;
        AFFIX      *Affix;
-       char                    compoundcontrol;
+       char            compoundcontrol;
 
        int                     nspell;
        int                     mspell;
-       SPELL      *Spell;
+       SPELL     **Spell;
 
-       AffixNode       *Suffix;
-       AffixNode       *Prefix;
+       AffixNode  *Suffix;
+       AffixNode  *Prefix;
 
-       SPNode  *Dictionary;
-       char    **AffixData;
-       CMPDAffix    *CompoundAffix;
+       SPNode     *Dictionary;
+       char      **AffixData;
+       CMPDAffix  *CompoundAffix;
 
 }      IspellDict;
 
-char     **NINormalizeWord(IspellDict * Conf, char *word);
+TSLexeme   *NINormalizeWord(IspellDict * Conf, char *word);
 int                    NIImportAffixes(IspellDict * Conf, const char *filename);
+int                    NIImportOOAffixes(IspellDict * Conf, const char *filename);
 int                    NIImportDictionary(IspellDict * Conf, const char *filename);
 
 int                    NIAddSpell(IspellDict * Conf, const char *word, const char *flag);