00001
00013 #ifndef dkutil_c_Regex__h
00014 #define dkutil_c_Regex__h
00015
00016
00017
00018 #include "dkcStream.h"
00019 #include "dkcOSIndependent.h"
00020
00021 typedef struct dkc_Replace{
00022 DKC_STREAM *mStream;
00023 }DKC_REPLACE;
00024
00025 typedef wchar_t DKC_UNICODE;
00026
00027 DKC_EXTERN DKC_REPLACE *WINAPI dkcAllocReplace();
00028
00029 DKC_EXTERN int WINAPI dkcFreeReplace(DKC_REPLACE **);
00030
00031 DKC_EXTERN int WINAPI dkcReplaceRun( const BYTE *src,size_t srcsize,
00032 const BYTE *target_data,size_t target_data_size,
00033 const BYTE *replace_data,size_t replace_data_size
00034 );
00035
00036
00037
00039 enum edkcRegToken
00040 {
00042 R_Char,
00044 R_Any,
00046 R_Lcl,
00048 R_Rcl,
00050 R_Ncl,
00052 R_Range,
00054 R_Lbr,
00056 R_Rbr,
00058 R_Bar,
00060 R_Star,
00062 R_Plus,
00064 R_Quest,
00066 R_End,
00067 };
00068
00069
00071 enum edkcRegType
00072 {
00073 N_Char,
00074 N_Class,
00075 N_Concat,
00076 N_Or,
00077 N_Closure,
00078 N_Closure1,
00079 N_01,
00080 N_Empty
00081 };
00082
00084 typedef struct dkcRegularExpression{
00085 void *re_;
00086 BOOL caseS_;
00087 BOOL down_;
00088 }DKC_Regular_EXPRESSION,DKC_REX,DKC_REGEX;
00089
00095 DKC_EXTERN DKC_REGEX *WINAPI dkcAllocRegex(const DKC_UNICODE* key, BOOL caseS, BOOL down);
00096
00097 DKC_EXTERN int WINAPI dkcFreeRegex(DKC_REGEX **);
00098
00099 DKC_EXTERN BOOL WINAPI dkcRegexSearch(DKC_REGEX *p,const DKC_UNICODE* str, ULONG len, ULONG stt,ULONG* mbg, ULONG* med);
00100
00101
00116 DKC_EXTERN BOOL WINAPI dkcRegularExpressionSearch( const DKC_UNICODE* key, BOOL caseS, BOOL down,const DKC_UNICODE* str, ULONG len, ULONG stt,ULONG* mbg, ULONG* med );
00127 DKC_EXTERN BOOL WINAPI dkcRegularExpressionMatch( const DKC_UNICODE* pat, const DKC_UNICODE* str, BOOL caseS );
00128
00129
00130 #endif //end of include once