267 lines
8.1 KiB
C
267 lines
8.1 KiB
C
/*****************************************************************************
|
|
msoem.h
|
|
|
|
Owner: DaleG
|
|
Copyright (c) 1997 Microsoft Corporation
|
|
|
|
Typedef file for Rules Engine of Event Monitor.
|
|
|
|
*****************************************************************************/
|
|
|
|
#ifndef MSOEM_H
|
|
#define MSOEM_H
|
|
|
|
#ifndef MSO_H
|
|
#pragma message ("MsoEM.h file included before Mso.h. Including Mso.h.")
|
|
#include "mso.h"
|
|
#endif
|
|
|
|
MSOEXTERN_C_BEGIN // ***************** Begin extern "C" ********************
|
|
|
|
|
|
#include "msoemtyp.h"
|
|
|
|
|
|
|
|
//---------------------------------------------------------------------------
|
|
// Define useful macros (mostly stolen from Word)
|
|
// REVIEW daleg: these need to be Mso-ized
|
|
//---------------------------------------------------------------------------
|
|
|
|
#if !WORD_BUILD && !STANDALONE_WORD
|
|
|
|
#ifndef DEBUGASSERTSZ
|
|
#define DEBUGASSERTSZ VSZASSERT
|
|
#endif /* !DEBUGASSERTSZ */
|
|
|
|
///#define FNeNcLpxch(lpch1, lpch2, cch) FNeNcRgxch(lpch1, lpch2, cch)
|
|
#define SzFromStz(stz) ((stz)+1)
|
|
#define XszFromXstz(xstz) ((xstz)+1)
|
|
#if !ACCESS_BUILD
|
|
#define CchSz(sz) MsoCchSzLen(sz)
|
|
#ifndef CchWz
|
|
#define CchWz(wz) MsoCchWzLen(wz)
|
|
#endif /* !CchWz */
|
|
#endif /* !ACCESS_BUILD */
|
|
#define XszFromXstz(xstz) ((xstz)+1)
|
|
#define RgxchFromXstz(xstz) ((xstz)+1)
|
|
#define CchXstz(xstz) CchXst(xstz)
|
|
#define CchXst(xst) (*xst)
|
|
#define cbMaxSz 256
|
|
#define cbMaxStz 257
|
|
#define cchMaxSz 255
|
|
#define cbMaxSz 256
|
|
#ifndef WORD_BUILD
|
|
#ifndef fTrue
|
|
#define fTrue 1
|
|
#endif
|
|
#ifndef fFalse
|
|
#define fFalse 0
|
|
#endif
|
|
#define tYes 1 /* much like fTrue */
|
|
#define tNo 0 /* much like fFalse */
|
|
#define tMaybe (-1) /* the "different" state */
|
|
#define iNil (-1)
|
|
#endif /* !WORD_BUILD */
|
|
#undef wValue
|
|
#define STATIC
|
|
|
|
// Return "low" value of a split value
|
|
#define W1OfPsv(psv) ((psv)->wValue1)
|
|
|
|
// Set "low" value of a split value
|
|
#define SetW1OfPsv(psv, w) ((psv)->wValue1 = (w))
|
|
|
|
// Increment "low" value of a split value
|
|
#define IncrW1OfPsv(psv, w) ((psv)->wValue1 += (w))
|
|
|
|
// Return "high" value of a split value
|
|
#define W2OfPsv(psv) ((psv)->wValue2)
|
|
|
|
// Set "high" value of a split value
|
|
#define SetW2OfPsv(psv, w) ((psv)->wValue2 = (w))
|
|
|
|
// Increment "high" value of a split value
|
|
#define IncrW2OfPsv(psv, w) ((psv)->wValue2 += (w))
|
|
|
|
// Merge two shorts into a long, compatible with SVL
|
|
#define SvlFromWW(wValue2, wValue1) \
|
|
(((long) (wValue2) << 16) + ((long) (wValue1)))
|
|
|
|
|
|
#define PbCopyRgb(pbFrom, pbTo, cb) \
|
|
(((unsigned char *) memmove((pbTo), (pbFrom), (cb))) + (cb))
|
|
#define PbCopyRgbNo(pbFrom, pbTo, cb) \
|
|
(memcpy((pbTo), (pbFrom), (cb)), (pbTo) + (cb))
|
|
#define CopyRgb(pbFrom, pbTo, cb) memmove(pbTo, pbFrom, cb)
|
|
#define CopyRgbNo(pbFrom, pbTo, cb) memcpy(pbTo, pbFrom, cb)
|
|
#define CopyRgxch(pxchFrom, pxchTo, cch) \
|
|
CopyRgb(pxchFrom,pxchTo,(cch)*cbXchar)
|
|
|
|
#define ClearLp(lpv, type) \
|
|
MsoMemset((lpv), '\0', sizeof(type))
|
|
|
|
#define ClearLprg(lpv, type, iMax) \
|
|
MsoMemset((lpv), '\0', sizeof(type) * (iMax))
|
|
|
|
#define CopyLprg(lpvFrom, lpvTo, type, iMax) \
|
|
CopyRgb((lpvFrom), (lpvTo), (unsigned int)(sizeof(type) * (iMax)))
|
|
|
|
#define IMaxRg(dcl, type) \
|
|
(sizeof(dcl) / sizeof(type))
|
|
|
|
|
|
#define ClearLprgBlocked(lpv, type, iMax) \
|
|
MsoMemset((lpv), '\0', (sizeof(type) * (iMax) + sizeof(void *)))
|
|
|
|
#define IMaxRgBlocked(dcl, type) \
|
|
((sizeof(dcl) / sizeof(type)) - sizeof(void *))
|
|
|
|
|
|
#endif /* !WORD_BUILD */
|
|
|
|
// Allocate storage for a given type, return pointer
|
|
#define MsoPNewEm(type) \
|
|
((type *) MsoPvAllocEmCb((unsigned int) sizeof(type)))
|
|
|
|
// Zero storage for a type, given pointer
|
|
#define MsoClearPv(pv, type) \
|
|
MsoClearPvCb((pv), sizeof(type))
|
|
|
|
// Zero storage for number bytes given
|
|
#define MsoClearPvCb(pv, cb) \
|
|
MsoMemset((pv), '\0', (cb))
|
|
|
|
// Allocate storage for an array of a given type, return pointer
|
|
#define MsoPNewEmRg(type, iMax) \
|
|
((type *) MsoPvAllocEmCb((unsigned int)(sizeof(type) * (iMax))))
|
|
|
|
// Zero storage for an array of a type, given pointer
|
|
#define MsoClearRg(pv, type, iMax) \
|
|
MsoMemset((pv), '\0', sizeof(type) * (iMax))
|
|
|
|
// Copy storage for an array of a type, given pointers
|
|
#define MsoCopyRg(rgFrom, rgTo, type, iMax) \
|
|
MsoMemmove((rgTo), (rgFrom), sizeof(type) * (iMax))
|
|
|
|
// Copy storage for an array of a type, given pointers, checking for overlaps
|
|
#define MsoCopyRgNo(rgFrom, rgTo, type, iMax) \
|
|
MsoMemcpy((rgTo), (rgFrom), sizeof(type) * (iMax))
|
|
|
|
// Copy an array of Unicode characters
|
|
#define MsoCopyRgwch(rgFrom, rgTo, cch) \
|
|
MsoCopyRg((rgFrom), (rgTo), WCHAR, (cch))
|
|
|
|
// Return maximum number of bytes used by array, given *definition*
|
|
#define MsoIMaxRg(rg) \
|
|
(sizeof(rg) / sizeof(rg[0]))
|
|
|
|
// Allocate storage for a given type, but specifying size, return pointer
|
|
#define MsoPNewEmCb(type, cb) \
|
|
((type *) MsoPvAllocEmCb((unsigned int)(cb)))
|
|
|
|
// Allocate (far) LINKED BLOCK storage for an array of type, return ptr
|
|
// This is a rg of the type, but with a pointer linking it to next alloc
|
|
#define MsoPNewEmRgBlocked(type_blk, type, iMax) \
|
|
((type_blk *) MsoPvAllocEmCb \
|
|
((unsigned int) (sizeof(type) * (iMax) + sizeof(void *))))
|
|
|
|
#define MsoPReallocEm(pv, type, cb) \
|
|
((type *) MsoPvReallocEmPvCb((pv), (unsigned int) (cb)))
|
|
|
|
#define MsoPReallocEmRg(pv, type, iMax) \
|
|
((type *) \
|
|
MsoPvReallocEmPvCb \
|
|
((pv), (unsigned int) (sizeof(type) * (iMax))))
|
|
|
|
#define MsoPvReallocEmPvCb(pv, cb) \
|
|
(void *)MsoPvRealloc(pv, cb)
|
|
|
|
#define MsoPvAllocEmCb(cb) (void *)MsoPvAlloc((cb), msodgMisc )
|
|
#define MsoFreeEmPv(pv) { if (pv) MsoFreePv(pv); }
|
|
#define MsoFreeEmPvClear(pv) MsoFreeEmPpv(&(pv))
|
|
|
|
#define MsoFreeEmPpv(ppv) { \
|
|
MsoFreeEmPv(*(void **) (ppv)); \
|
|
*(void * UNALIGNED *) (ppv) = NULL; \
|
|
}
|
|
|
|
|
|
#define MsoPbCopyRgb(pbFrom, pbTo, cb) \
|
|
(((unsigned char *) MsoMemmove((pbTo), (pbFrom), (cb))) + (cb))
|
|
#define MsoPbCopyRgbNo(pbFrom, pbTo, cb) \
|
|
(MsoMemcpy((pbTo), (pbFrom), (cb)), (pbTo) + (cb))
|
|
|
|
// Return whether x is between lo and hi values, inclusive.
|
|
#define MsoFBetween(x, lo, hi) ((x) >= (lo) && (x) <= (hi))
|
|
// REVIEW: consider the following minutely faster but more dangerous version
|
|
//#define MsoFBetween(x, lo, hi) ((unsigned)((x) - (lo)) <= (hi) - (lo))
|
|
|
|
|
|
#include "msodbglg.h"
|
|
|
|
#ifdef STANDALONE
|
|
|
|
#define MsoPvAlloc(cb, dg) malloc(cb)
|
|
#define MsoFreePv(pv) free(pv)
|
|
#define MsoPvRealloc(pv, cb) realloc((pv), (cb))
|
|
|
|
#endif /* STANDALONE */
|
|
|
|
|
|
#if !defined(WORD_BUILD) && !defined(WORD_H)
|
|
|
|
#ifndef CommSz
|
|
#define CommSz(sz) OutputDebugStringA(sz)
|
|
#endif /* !CommSz */
|
|
|
|
#ifndef ACCESS_BUILD
|
|
typedef void *DOC; // Define object
|
|
#define docNil ((DOC) NULL)
|
|
#else /* ACCESS_BUILD */
|
|
#define pdocNil ((DOC *) NULL)
|
|
#endif /* !ACCESS_BUILD */
|
|
|
|
#define cpNil ((MSOCP) -1)
|
|
#define cp0 ((MSOCP) 0)
|
|
///typedef unsigned short BF;
|
|
|
|
typedef unsigned char uchar;
|
|
typedef unsigned int uint;
|
|
typedef unsigned short ushort;
|
|
typedef unsigned long ulong;
|
|
|
|
#endif /* !WORD_BUILD && !WORD_H */
|
|
|
|
|
|
#ifdef OFFICE_BUILD
|
|
MSOAPI_(BOOL) MsoFInitOfficeEm(struct MSOINST *pinst); // Init MSO Em
|
|
|
|
// Query type in FEmNotifyAction(msoemssAppEm,..)
|
|
#define msonaAppEmUseMso 1 // App needs MSO EM?
|
|
#endif /* !OFFICE_BUILD */
|
|
|
|
MSOAPI_(int) MsoLRuleParsePwch( // Parse string w/rules
|
|
WCHAR *pwch,
|
|
int cch,
|
|
int rulevt,
|
|
int rulg
|
|
);
|
|
|
|
#ifdef DEBUG
|
|
MSOAPI_(int) MsoLRuleParseFile( // Parse file w/rules
|
|
char *rgchPath,
|
|
int rulevt,
|
|
int rulg
|
|
);
|
|
#ifdef OFFICE_BUILD
|
|
BOOL FWriteEmBe(LPARAM lParam, struct MSOINST *pinst); // Mark MSO Em memory
|
|
#endif /* OFFICE_BUILD */
|
|
#endif /* DEBUG */
|
|
|
|
MSOEXTERN_C_END // ****************** End extern "C" *********************
|
|
|
|
#endif /* !MSOEM_H */
|
|
|
|
|