本文整理汇总了C++中StyleContext::GetRelative方法的典型用法代码示例。如果您正苦于以下问题:C++ StyleContext::GetRelative方法的具体用法?C++ StyleContext::GetRelative怎么用?C++ StyleContext::GetRelative使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类StyleContext
的用法示例。
在下文中一共展示了StyleContext::GetRelative方法的6个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: while
static void ColouriseTADS3Keyword(StyleContext &sc,
WordList *keywordlists[], unsigned int endPos) {
char s[250];
WordList &keywords = *keywordlists[0];
WordList &userwords1 = *keywordlists[1];
WordList &userwords2 = *keywordlists[2];
WordList &userwords3 = *keywordlists[3];
int initState = sc.state;
sc.SetState(SCE_T3_IDENTIFIER);
while (sc.More() && (IsAWordChar(sc.ch))) {
sc.Forward();
}
sc.GetCurrent(s, sizeof(s));
if ( strcmp(s, "is") == 0 || strcmp(s, "not") == 0) {
// have to find if "in" is next
int n = 1;
while (n + sc.currentPos < endPos && IsASpaceOrTab(sc.GetRelative(n)))
n++;
if (sc.GetRelative(n) == 'i' && sc.GetRelative(n+1) == 'n') {
sc.Forward(n+2);
sc.ChangeState(SCE_T3_KEYWORD);
}
} else if (keywords.InList(s)) {
sc.ChangeState(SCE_T3_KEYWORD);
} else if (userwords3.InList(s)) {
sc.ChangeState(SCE_T3_USER3);
} else if (userwords2.InList(s)) {
sc.ChangeState(SCE_T3_USER2);
} else if (userwords1.InList(s)) {
sc.ChangeState(SCE_T3_USER1);
}
sc.SetState(initState);
}
示例2: LongDelimCheck
// Test for [=[ ... ]=] delimiters, returns 0 if it's only a [ or ],
// return 1 for [[ or ]], returns >=2 for [=[ or ]=] and so on.
// The maximum number of '=' characters allowed is 254.
static int LongDelimCheck(StyleContext &sc) {
int sep = 1;
while (sc.GetRelative(sep) == '=' && sep < 0xFF)
sep++;
if (sc.GetRelative(sep) == sc.ch)
return sep;
return 0;
}
示例3: HasPrevLineContent
// Does the previous line have more than spaces and tabs?
static bool HasPrevLineContent(StyleContext &sc) {
int i = 0;
// Go back to the previous newline
while ((--i + sc.currentPos) && !IsNewline(sc.GetRelative(i)))
;
while (--i + sc.currentPos) {
if (IsNewline(sc.GetRelative(i)))
break;
if (!IsASpaceOrTab(sc.GetRelative(i)))
return true;
}
return false;
}
示例4: FollowToLineEnd
// True if can follow ch down to the end with possibly trailing whitespace
static bool FollowToLineEnd(const int ch, const int state, const unsigned int endPos, StyleContext &sc) {
unsigned int i = 0;
while (sc.GetRelative(++i) == ch)
;
// Skip over whitespace
while (IsASpaceOrTab(sc.GetRelative(i)) && sc.currentPos + i < endPos)
++i;
if (IsNewline(sc.GetRelative(i)) || sc.currentPos + i == endPos) {
sc.Forward(i);
sc.ChangeState(state);
sc.SetState(SCE_TXT2TAGS_LINE_BEGIN);
return true;
}
else return false;
}
示例5: IsValidHrule
// Separator line
static bool IsValidHrule(const unsigned int endPos, StyleContext &sc) {
int c, count = 1;
unsigned int i = 0;
while (++i) {
c = sc.GetRelative(i);
if (c == sc.ch)
++count;
// hit a terminating character
else if (!IsASpaceOrTab(c) || sc.currentPos + i == endPos) {
// Are we a valid HRULE
if ((IsNewline(c) || sc.currentPos + i == endPos) &&
count >= 20 && !HasPrevLineContent(sc)) {
sc.SetState(SCE_TXT2TAGS_HRULE);
sc.Forward(i);
sc.SetState(SCE_TXT2TAGS_LINE_BEGIN);
return true;
}
else {
sc.SetState(SCE_TXT2TAGS_DEFAULT);
return false;
}
}
}
return false;
}
示例6: ClassifyPascalWord
static void ClassifyPascalWord(WordList *keywordlists[], StyleContext &sc, int &curLineState, bool bSmartHighlighting) {
WordList& keywords = *keywordlists[0];
char s[100];
sc.GetCurrentLowered(s, sizeof(s));
if (keywords.InList(s)) {
if (curLineState & stateInAsm) {
if (strcmp(s, "end") == 0 && sc.GetRelative(-4) != '@') {
curLineState &= ~stateInAsm;
sc.ChangeState(SCE_PAS_WORD);
} else {
sc.ChangeState(SCE_PAS_ASM);
}
} else {
bool ignoreKeyword = false;
if (strcmp(s, "asm") == 0) {
curLineState |= stateInAsm;
} else if (bSmartHighlighting) {
if (strcmp(s, "property") == 0) {
curLineState |= stateInProperty;
} else if (strcmp(s, "exports") == 0) {
curLineState |= stateInExport;
} else if (!(curLineState & (stateInProperty | stateInExport)) && strcmp(s, "index") == 0) {
ignoreKeyword = true;
} else if (!(curLineState & stateInExport) && strcmp(s, "name") == 0) {
ignoreKeyword = true;
} else if (!(curLineState & stateInProperty) &&
(strcmp(s, "read") == 0 || strcmp(s, "write") == 0 ||
strcmp(s, "default") == 0 || strcmp(s, "nodefault") == 0 ||
strcmp(s, "stored") == 0 || strcmp(s, "implements") == 0 ||
strcmp(s, "readonly") == 0 || strcmp(s, "writeonly") == 0 ||
strcmp(s, "add") == 0 || strcmp(s, "remove") == 0)) {
ignoreKeyword = true;
}
}
if (!ignoreKeyword) {
sc.ChangeState(SCE_PAS_WORD);
}
}
} else if (curLineState & stateInAsm) {
sc.ChangeState(SCE_PAS_ASM);
}
sc.SetState(SCE_PAS_DEFAULT);
}