Source code of Windows XP (NT5)
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
/*****************************************************************************
emrultk.h
Owner: DaleG Copyright (c) 1992-1997 Microsoft Corporation
Rule and Lexer-token history recording header file.
*****************************************************************************/
#ifndef EMRULTK_H
#define EMRULTK_H
MSOEXTERN_C_BEGIN // ***************** Begin extern "C" ********************
#ifndef MSOCP_DEFINED
typedef long MSOCP; // Character position
#define msocpNil ((MSOCP) -1)
#define msocp0 ((MSOCP) 0)
#define msocpMax ((MSOCP) 0x7FFFFFFF)
#define MSOCP_DEFINED
#endif /* !MSOCP_DEFINED */
/*************************************************************************
Types:
rultk Rule/lexer-token history record. rultkh Rule/lexer-token history cache.
*************************************************************************/
/* M S O R U L T K */ /*----------------------------------------------------------------------------
%%Structure: MSORULTK %%Contact: daleg
Rule/lexer-token history record. ----------------------------------------------------------------------------*/
typedef struct _MSORULTK { void *pObject; // Object, e.g. doc
MSOCP cpFirst; // First CP of token
MSOCP dcp; // CP len of token
int ich; // Char offset of tk
long dich; // Num of chars of tk
long wInterval; // Num intervals
int tk; // Token number
long lValue; // Token value
} MSORULTK;
#define irultkNil (-2)
/* M S O R U L T K H */ /*----------------------------------------------------------------------------
%%Structure: MSORULTKH %%Contact: daleg
Rule/lexer-token history cache structure. ----------------------------------------------------------------------------*/
typedef struct _MSORULTKH { MSORULTK *rgrultkCache; // History record list
int irultkMac; // Lim of allocated
int irultkMin; // User-defined marker
int irultkLim; // Next cache index
int irultkAbsBase; // Absolute irultk base
} MSORULTKH;
/* M S O C A */ /*----------------------------------------------------------------------------
%%Structure: MSOCA %%Contact: daleg
Rule/lexer text range ----------------------------------------------------------------------------*/
typedef struct _MSOCA { void *pObject; // Object, e.g. doc
long cpFirst; // First char pos
long cpLim; // Lim char pos
} MSOCA;
// Define (D)elta of a (T)o(K)en cache index
typedef int DTK;
// Define (D)elta of a (T)o(K)en cache (I)nterval
typedef int DTKI;
// Token-history cache access
#define PrultkFromIrultk(irultk, prultk) \
(&prultk[irultk])
// Move to next cache record, wrapping around if necessary
#define IncrPrultk(pprultk, pirultk, prultkHist, irultkMax) \
if (++(*pirultk) >= (irultkMax)) \ { \ (*pirultk) = 0; \ (*pprultk) = PrultkFromIrultk(0, prultkHist); \ } \ else \ (*pprultk)++;
// Move to next cache record, wrapping around if necessary
#define DecrPrultk(pprultk, pirultk, prultkHist, irultkMax) \
if (--(*pirultk) < 0) \ { \ (*pirultk) += (irultkMax); \ (*pprultk) += (irultkMax) - 1; \ } \ else \ (*pprultk)--;
// Move index to next cache record, wrapping around if necessary
#define IncrPirultk(pirultk, dirultk, irultkMax) \
if (((*pirultk) += dirultk) >= (irultkMax)) \ (*pirultk) -= (irultkMax);
// Move index to prev cache record, wrapping around if necessary
#define DecrPirultk(pirultk, dirultk, irultkMax) \
if (((*pirultk) -= dirultk) < 0) \ (*pirultk) += (irultkMax);
MSORULTK *PrultkExpand( // Expand cache
MSORULTK **pprultkCache, int *pirultkMax, int irultkMax, int irultkSplit );
// defines
#define msodtkNotFound 30000 // arbitrarily lg. flag
MSOEXTERN_C_END // ****************** End extern "C" *********************
#endif /* EMRULTK_H */
|