x
Yes
No
Do you want to visit DriveHQ English website?
首页
产品服务
价格
免费试用
下载客户端
关于我们
云文件服务
|
云备份服务
|
FTP服务
|
企业邮箱服务
|
网站托管
|
客户端软件
云文件服务
云备份服务
FTP服务
企业级邮箱服务
网站托管
客户端软件
StyleContext.h - Hosted on DriveHQ Cloud IT Platform
返回上层目录
上传
下载
共享
发布
新建文件夹
新建文件
复制
剪切
删除
粘贴
评论
升级服务
路径: \\game3dprogramming\materials\GameFactory\GameFactoryDemo\references\scintilla\src\StyleContext.h
旋转
特效
属性
历史版本
// Scintilla source code edit control /** @file StyleContext.cxx ** Lexer infrastructure. **/ // Copyright 1998-2004 by Neil Hodgson
// This file is in the public domain. #ifdef SCI_NAMESPACE namespace Scintilla { #endif // All languages handled so far can treat all characters >= 0x80 as one class // which just continues the current token or starts an identifier if in default. // DBCS treated specially as the second character can be < 0x80 and hence // syntactically significant. UTF-8 avoids this as all trail bytes are >= 0x80 class StyleContext { Accessor &styler; unsigned int endPos; StyleContext& operator=(const StyleContext&) { return *this; } void GetNextChar(unsigned int pos) { chNext = static_cast
(styler.SafeGetCharAt(pos+1)); if (styler.IsLeadByte(static_cast
(chNext))) { chNext = chNext << 8; chNext |= static_cast
(styler.SafeGetCharAt(pos+2)); } // End of line? // Trigger on CR only (Mac style) or either on LF from CR+LF (Dos/Win) // or on LF alone (Unix). Avoid triggering two times on Dos/Win. atLineEnd = (ch == '\r' && chNext != '\n') || (ch == '\n') || (currentPos >= endPos); } public: unsigned int currentPos; bool atLineStart; bool atLineEnd; int state; int chPrev; int ch; int chNext; StyleContext(unsigned int startPos, unsigned int length, int initStyle, Accessor &styler_, char chMask=31) : styler(styler_), endPos(startPos + length), currentPos(startPos), atLineStart(true), atLineEnd(false), state(initStyle & chMask), // Mask off all bits which aren't in the chMask. chPrev(0), ch(0), chNext(0) { styler.StartAt(startPos, chMask); styler.StartSegment(startPos); unsigned int pos = currentPos; ch = static_cast
(styler.SafeGetCharAt(pos)); if (styler.IsLeadByte(static_cast
(ch))) { pos++; ch = ch << 8; ch |= static_cast
(styler.SafeGetCharAt(pos)); } GetNextChar(pos); } void Complete() { styler.ColourTo(currentPos - 1, state); } bool More() { return currentPos < endPos; } void Forward() { if (currentPos < endPos) { atLineStart = atLineEnd; chPrev = ch; currentPos++; if (ch >= 0x100) currentPos++; ch = chNext; GetNextChar(currentPos + ((ch >= 0x100) ? 1 : 0)); } else { atLineStart = false; chPrev = ' '; ch = ' '; chNext = ' '; atLineEnd = true; } } void Forward(int nb) { for (int i = 0; i < nb; i++) { Forward(); } } void ChangeState(int state_) { state = state_; } void SetState(int state_) { styler.ColourTo(currentPos - 1, state); state = state_; } void ForwardSetState(int state_) { Forward(); styler.ColourTo(currentPos - 1, state); state = state_; } int LengthCurrent() { return currentPos - styler.GetStartSegment(); } int GetRelative(int n) { return static_cast
(styler.SafeGetCharAt(currentPos+n)); } bool Match(char ch0) { return ch == static_cast
(ch0); } bool Match(char ch0, char ch1) { return (ch == static_cast
(ch0)) && (chNext == static_cast
(ch1)); } bool Match(const char *s) { if (ch != static_cast
(*s)) return false; s++; if (!*s) return true; if (chNext != static_cast
(*s)) return false; s++; for (int n=2; *s; n++) { if (*s != styler.SafeGetCharAt(currentPos+n)) return false; s++; } return true; } bool MatchIgnoreCase(const char *s) { if (tolower(ch) != static_cast
(*s)) return false; s++; if (tolower(chNext) != static_cast
(*s)) return false; s++; for (int n=2; *s; n++) { if (static_cast
(*s) != tolower(static_cast
(styler.SafeGetCharAt(currentPos+n)))) return false; s++; } return true; } // Non-inline void GetCurrent(char *s, unsigned int len); void GetCurrentLowered(char *s, unsigned int len); }; #ifdef SCI_NAMESPACE } #endif inline bool IsASpace(unsigned int ch) { return (ch == ' ') || ((ch >= 0x09) && (ch <= 0x0d)); } inline bool IsASpaceOrTab(unsigned int ch) { return (ch == ' ') || (ch == '\t'); } inline bool IsADigit(unsigned int ch) { return (ch >= '0') && (ch <= '9'); } inline bool IsADigit(unsigned int ch, unsigned int base) { if (base <= 10) { return (ch >= '0') && (ch < '0' + base); } else { return ((ch >= '0') && (ch <= '9')) || ((ch >= 'A') && (ch < 'A' + base - 10)) || ((ch >= 'a') && (ch < 'a' + base - 10)); } }
StyleContext.h
网页地址
文件地址
上一页
114/122
下一页
下载
( 4 KB )
Comments
Total ratings:
0
Average rating:
无评论
of 10
Would you like to comment?
Join now
, or
Logon
if you are already a member.