forked from sakura-editor/sakura
-
Notifications
You must be signed in to change notification settings - Fork 0
/
CRegexKeyword.h
84 lines (67 loc) · 2.4 KB
/
CRegexKeyword.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
/*! @file
@brief CRegexKeyword Library
正規表現キーワードを扱う。
BREGEXP.DLLを利用する。
@author MIK
@date Nov. 17, 2001
*/
/*
Copyright (C) 2001, MIK
This source code is designed for sakura editor.
Please contact the copyright holder to use this code for other purpose.
*/
//@@@ 2001.11.17 add start MIK
#pragma once
#include "_main/global.h"
#include "extmodule/CBregexp.h"
#include "config/maxdata.h" //MAX_REGEX_KEYWORD
struct STypeConfig;
//@@@ 2001.11.17 add start MIK
struct RegexKeywordInfo {
int m_nColorIndex; //色指定番号
};
//@@@ 2001.11.17 add end MIK
//! 正規表現キーワード検索情報構造体
typedef struct RegexInfo_t {
BREGEXP_W *pBregexp; //BREGEXP_W構造体
int nStatus; //状態(EMPTY,CLOSE,OPEN,ACTIVE,ERROR)
int nMatch; //このキーワードのマッチ状態(EMPTY,MATCH,NOMATCH)
int nOffset; //マッチした位置
int nLength; //マッチした長さ
int nHead; //先頭のみチェックするか?
int nFlag; //色指定のチェックが入っているか? YES=RK_EMPTY, NO=RK_NOMATCH
} REGEX_INFO;
//! 正規表現キーワードクラス
/*!
正規表現キーワードを扱う。
*/
class CRegexKeyword : public CBregexp {
public:
CRegexKeyword(LPCWSTR);
~CRegexKeyword();
//! 行検索開始
BOOL RegexKeyLineStart( void );
//! 行検索
BOOL RegexIsKeyword( const CStringRef& cStr, int nPos, int *nMatchLen, int *nMatchColor );
//! タイプ設定
BOOL RegexKeySetTypes( const STypeConfig *pTypesPtr );
//! 書式(囲み)チェック
static BOOL RegexKeyCheckSyntax( const wchar_t *s );
static DWORD GetNewMagicNumber();
protected:
//! コンパイル
BOOL RegexKeyCompile(void);
//! 変数初期化
BOOL RegexKeyInit( void );
public:
int m_nTypeIndex; //!< 現在のタイプ設定番号
bool m_bUseRegexKeyword; //!< 正規表現キーワードを使用する・しない
private:
const STypeConfig* m_pTypes; //!< タイプ設定へのポインタ(呼び出し側が持っているもの)
int m_nTypeId; //!< タイプ設定ID
DWORD m_nCompiledMagicNumber; //!< コンパイル済みか?
int m_nRegexKeyCount; //!< 現在のキーワード数
REGEX_INFO m_sInfo[MAX_REGEX_KEYWORD]; //!< キーワード一覧(BREGEXPコンパイル対象)
wchar_t m_szMsg[256]; //!< BREGEXP_Wからのメッセージを保持する
};
//@@@ 2001.11.17 add end MIK