本文整理汇总了C++中StyleContext::More方法的典型用法代码示例。如果您正苦于以下问题:C++ StyleContext::More方法的具体用法?C++ StyleContext::More怎么用?C++ StyleContext::More使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类StyleContext
的用法示例。
在下文中一共展示了StyleContext::More方法的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: while
static void ColouriseTADS3Number(StyleContext &sc) {
int endState = sc.state;
bool inHexNumber = false;
bool seenE = false;
bool seenDot = sc.ch == '.';
sc.SetState(SCE_T3_NUMBER);
if (sc.More()) {
sc.Forward();
}
if (sc.chPrev == '0' && tolower(sc.ch) == 'x') {
inHexNumber = true;
sc.Forward();
}
while (sc.More()) {
if (inHexNumber) {
if (!IsAHexDigit(sc.ch)) {
break;
}
} else if (!isdigit(sc.ch)) {
if (!seenE && tolower(sc.ch) == 'e') {
seenE = true;
seenDot = true;
if (sc.chNext == '+' || sc.chNext == '-') {
sc.Forward();
}
} else if (!seenDot && sc.ch == '.') {
seenDot = true;
} else {
break;
}
}
sc.Forward();
}
sc.SetState(endState);
}
示例2: ColouriseTADSHTMLString
static void ColouriseTADSHTMLString(StyleContext &sc, int &lineState) {
int endState = sc.state;
int chQuote = sc.ch;
int chString = (lineState & T3_SINGLE_QUOTE) ? '\'' : '"';
if (endState == SCE_T3_HTML_STRING) {
if (lineState&T3_SINGLE_QUOTE) {
endState = SCE_T3_S_STRING;
chString = '\'';
} else if (lineState&T3_INT_EXPRESSION) {
endState = SCE_T3_X_STRING;
chString = '"';
} else {
endState = SCE_T3_HTML_DEFAULT;
chString = '"';
}
chQuote = (lineState & T3_HTML_SQUOTE) ? '\'' : '"';
} else {
sc.SetState(SCE_T3_HTML_STRING);
sc.Forward();
}
if (chQuote == '"')
lineState &= ~T3_HTML_SQUOTE;
else
lineState |= T3_HTML_SQUOTE;
while (sc.More()) {
if (IsEOL(sc.ch, sc.chNext)) {
return;
}
if (sc.ch == chQuote) {
sc.ForwardSetState(endState);
return;
}
if (sc.Match('\\', static_cast<char>(chQuote))) {
sc.Forward(2);
sc.SetState(endState);
return;
}
if (sc.ch == chString) {
sc.SetState(SCE_T3_DEFAULT);
return;
}
if (sc.Match('<', '<')) {
lineState |= T3_INT_EXPRESSION | T3_INT_EXPRESSION_IN_TAG;
sc.SetState(SCE_T3_X_DEFAULT);
sc.Forward(2);
return;
}
if (sc.Match('\\', static_cast<char>(chQuote))
|| sc.Match('\\', static_cast<char>(chString))
|| sc.Match('\\', '\\')) {
sc.Forward(2);
} else {
sc.Forward();
}
}
}
示例3: switch
static void ColouriseTADS3LibDirective(StyleContext &sc, int &lineState) {
int initState = sc.state;
int chQuote = '"';
switch (initState) {
case SCE_T3_S_STRING:
sc.SetState(SCE_T3_LIB_DIRECTIVE);
sc.Forward(2);
chQuote = '\'';
break;
case SCE_T3_D_STRING:
sc.SetState(SCE_T3_LIB_DIRECTIVE);
sc.Forward(2);
break;
case SCE_T3_LIB_DIRECTIVE:
if (lineState&T3_SINGLE_QUOTE) {
initState = SCE_T3_S_STRING;
chQuote = '\'';
} else {
initState = SCE_T3_D_STRING;
}
break;
}
while (sc.More() && IsADirectiveChar(sc.ch)) {
if (IsEOL(sc.ch, sc.chNext)) {
return;
}
sc.Forward();
};
if (sc.ch == '>' || !sc.More()) {
sc.ForwardSetState(initState);
} else if (sc.ch == chQuote) {
sc.SetState(initState);
} else {
sc.ChangeState(initState);
sc.Forward();
}
}
示例4: ColouriseToEndOfLine
static void ColouriseToEndOfLine(StyleContext &sc, int initState, int endState) {
sc.SetState(initState);
while (sc.More()) {
if (sc.ch == '\\') {
sc.Forward();
if (IsEOLSkip(sc)) {
return;
}
}
if (IsEOL(sc.ch, sc.chNext)) {
sc.SetState(endState);
return;
}
sc.Forward();
}
}
示例5: SetStateAndZoom
// Set the state on text section from current to length characters,
// then set the rest until the newline to default, except for any characters matching token
static void SetStateAndZoom(const int state, const int length, const int token, StyleContext &sc) {
sc.SetState(state);
sc.Forward(length);
sc.SetState(SCE_MARKDOWN_DEFAULT);
sc.Forward();
bool started = false;
while (sc.More() && !IsNewline(sc.ch)) {
if (sc.ch == token && !started) {
sc.SetState(state);
started = true;
}
else if (sc.ch != token) {
sc.SetState(SCE_MARKDOWN_DEFAULT);
started = false;
}
sc.Forward();
}
sc.SetState(SCE_MARKDOWN_LINE_BEGIN);
}