spell.h

来自「postgresql8.3.4源码,开源数据库」· C头文件 代码 · 共 170 行

H
170
字号
/*------------------------------------------------------------------------- * * spell.h * * Declarations for ISpell dictionary * * Portions Copyright (c) 1996-2008, PostgreSQL Global Development Group * * $PostgreSQL: pgsql/src/include/tsearch/dicts/spell.h,v 1.6 2008/01/01 19:45:59 momjian Exp $ * *------------------------------------------------------------------------- */#ifndef __SPELL_H__#define __SPELL_H__#include "regex/regex.h"#include "tsearch/dicts/regis.h"#include "tsearch/ts_public.h"/* * Max length of a flag name. Names longer than this will be truncated * to the maximum. */#define MAXFLAGLEN 16struct SPNode;typedef struct{	uint32		val:8,				isword:1,				compoundflag:4,				affix:19;	struct SPNode *node;} SPNodeData;/* * Names of FF_ are correlated with Hunspell options in affix file * http://sourceforge.net/docman/display_doc.php?docid=29374&group_id=143754 */#define FF_COMPOUNDONLY		0x01#define FF_COMPOUNDBEGIN	0x02#define FF_COMPOUNDMIDDLE	0x04#define FF_COMPOUNDLAST		0x08#define FF_COMPOUNDFLAG		( FF_COMPOUNDBEGIN | FF_COMPOUNDMIDDLE | FF_COMPOUNDLAST )#define FF_DICTFLAGMASK		0x0ftypedef struct SPNode{	uint32		length;	SPNodeData	data[1];} SPNode;#define SPNHDRSZ	(offsetof(SPNode,data))typedef struct spell_struct{	union	{		/*		 * flag is filled in by NIImportDictionary. After NISortDictionary, d		 * is valid and flag is invalid.		 */		char		flag[MAXFLAGLEN];		struct		{			int			affix;			int			len;		}			d;	}			p;	char		word[1];		/* variable length, null-terminated */} SPELL;#define SPELLHDRSZ	(offsetof(SPELL, word))typedef struct aff_struct{	uint32		flag:8,				type:1,				flagflags:7,				issimple:1,				isregis:1,				replen:14;	char	   *find;	char	   *repl;	union	{		regex_t		regex;		Regis		regis;	}			reg;} AFFIX;/* * affixes use dictionary flags too */#define FF_COMPOUNDPERMITFLAG	0x10#define FF_COMPOUNDFORBIDFLAG	0x20#define FF_CROSSPRODUCT			0x40/* * Don't change the order of these. Initialization sorts by these, * and expects prefixes to come first after sorting. */#define FF_SUFFIX				1#define FF_PREFIX				0struct AffixNode;typedef struct{	uint32		val:8,				naff:24;	AFFIX	  **aff;	struct AffixNode *node;} AffixNodeData;typedef struct AffixNode{	uint32		isvoid:1,				length:31;	AffixNodeData data[1];} AffixNode;#define ANHRDSZ		   (offsetof(AffixNode, data))typedef struct{	char	   *affix;	int			len;	bool		issuffix;} CMPDAffix;typedef struct{	int			maffixes;	int			naffixes;	AFFIX	   *Affix;	/*	 * Temporary array of all words in the dict file. Only used during	 * initialization	 */	SPELL	  **Spell;	int			nspell;			/* number of valid entries in Spell array */	int			mspell;			/* allocated length of Spell array */	AffixNode  *Suffix;	AffixNode  *Prefix;	SPNode	   *Dictionary;	char	  **AffixData;	int			lenAffixData;	int			nAffixData;	CMPDAffix  *CompoundAffix;	unsigned char flagval[256];	bool		usecompound;} IspellDict;extern TSLexeme *NINormalizeWord(IspellDict *Conf, char *word);extern void NIImportAffixes(IspellDict *Conf, const char *filename);extern void NIImportDictionary(IspellDict *Conf, const char *filename);extern void NISortDictionary(IspellDict *Conf);extern void NISortAffixes(IspellDict *Conf);#endif

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?