156 lines
4.1 KiB
C

/***********************************************************************
*
* Copyright (C) 2005-2006 Novell, Inc. All Rights Reserved.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; version 2.1
* of the License.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Library Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, Novell, Inc.
*
* To contact Novell about this file by physical or electronic mail,
* you may find current contact information at www.novell.com.
*
***********************************************************************/
#if ! defined ( NWDSFILT_H )
#define NWDSFILT_H
#if ! defined ( NTYPES_H )
#include "ntypes.h"
#endif
#if ! defined ( NWDSTYPE_H )
#include "nwdstype.h"
#endif
#if ! defined ( NWDSDC_H ) /* Need to defined NWDSContextHandle */
#include "nwdsdc.h"
#endif
#if ! defined ( NWDSBUFT_H ) /* Needed to defined pBuf_T */
#include "nwdsbuft.h"
#endif
#include "npackon.h"
typedef struct _filter_node
{
struct _filter_node N_FAR *parent;
struct _filter_node N_FAR *left;
struct _filter_node N_FAR *right;
nptr value;
nuint32 syntax;
nuint16 token;
} Filter_Node_T, N_FAR *pFilter_Node_T;
#define FTOK_END 0
#define FTOK_OR 1
#define FTOK_AND 2
#define FTOK_NOT 3
#define FTOK_LPAREN 4
#define FTOK_RPAREN 5
#define FTOK_AVAL 6
#define FTOK_EQ 7
#define FTOK_GE 8
#define FTOK_LE 9
#define FTOK_APPROX 10
#define FTOK_ANAME 14
#define FTOK_PRESENT 15
#define FTOK_RDN 16
#define FTOK_BASECLS 17
#define FTOK_MODTIME 18
#define FTOK_VALTIME 19
#define FBIT_END (1L << FTOK_END)
#define FBIT_OR (1L << FTOK_OR)
#define FBIT_AND (1L << FTOK_AND)
#define FBIT_NOT (1L << FTOK_NOT)
#define FBIT_LPAREN (1L << FTOK_LPAREN)
#define FBIT_RPAREN (1L << FTOK_RPAREN)
#define FBIT_AVAL (1L << FTOK_AVAL)
#define FBIT_EQ (1L << FTOK_EQ)
#define FBIT_GE (1L << FTOK_GE)
#define FBIT_LE (1L << FTOK_LE)
#define FBIT_APPROX (1L << FTOK_APPROX)
#define FBIT_ANAME (1L << FTOK_ANAME)
#define FBIT_PRESENT (1L << FTOK_PRESENT)
#define FBIT_RDN (1L << FTOK_RDN)
#define FBIT_BASECLS (1L << FTOK_BASECLS)
#define FBIT_MODTIME (1L << FTOK_MODTIME)
#define FBIT_VALTIME (1L << FTOK_VALTIME)
#define FBIT_OPERAND (FBIT_LPAREN | FBIT_NOT | FBIT_PRESENT | FBIT_RDN \
| FBIT_BASECLS | FBIT_ANAME | FBIT_MODTIME | FBIT_VALTIME)
#define FBIT_RELOP (FBIT_EQ | FBIT_GE | FBIT_LE | FBIT_APPROX)
#define FBIT_BOOLOP (FBIT_AND | FBIT_OR)
typedef struct
{
pFilter_Node_T fn;
nuint16 level;
nuint32 expect;
} Filter_Cursor_T, N_FAR *pFilter_Cursor_T, N_FAR * N_FAR *ppFilter_Cursor_T;
#define FTAG_ITEM 0
#define FTAG_OR 1
#define FTAG_AND 2
#define FTAG_NOT 3
#ifdef __cplusplus
extern "C" {
#endif
N_EXTERN_LIBRARY (NWDSCCODE)
NWDSAddFilterToken
(
pFilter_Cursor_T cur,
nuint16 tok,
nptr val,
nuint32 syntax
);
N_EXTERN_LIBRARY (NWDSCCODE)
NWDSAllocFilter
(
ppFilter_Cursor_T cur
);
N_EXTERN_LIBRARY (void)
NWDSFreeFilter
(
pFilter_Cursor_T cur,
void (N_FAR N_CDECL *freeVal)(nuint32 syntax, nptr val)
);
N_EXTERN_LIBRARY (NWDSCCODE)
NWDSPutFilter
(
NWDSContextHandle context,
pBuf_T buf,
pFilter_Cursor_T cur,
void (N_FAR N_CDECL *freeVal)(nuint32 syntax, nptr val)
);
N_EXTERN_LIBRARY (NWDSCCODE)
NWDSDelFilterToken
(
pFilter_Cursor_T cur,
void (N_FAR N_CDECL *freeVal)(nuint32 syntax, nptr val)
);
#ifdef __cplusplus
}
#endif
#include "npackoff.h"
#endif /* NWDSFILT_H */