Alien-SmokeQt
view release on metacpan or search on metacpan
generator/parser/rpp/pp-engine.cpp view on Meta::CPAN
skip_blanks(input, devnull());
Anchor inputPosition = input.inputPosition();
SimpleCursor originalInputPosition = input.originalInputPosition();
PreprocessedContents skipped;
{
Stream ss(&skipped);
skip (input, ss);
}
Stream ss(&skipped, inputPosition);
ss.setOriginalInputPosition(originalInputPosition);
handle_directive(directive, ss, output);
} else if (input == '\n') {
output << input;
++input;
} else if (skipping ()) {
skip (input, devnull());
} else {
output.mark(input.inputPosition());
if(checkGuardEnd) {
expand.startSignificantContentSearch();
}
expand (input, output);
if(checkGuardEnd) {
if(expand.foundSignificantContent() || !input.atEnd()) {
guardCandidate = IndexedString();
}
checkGuardEnd = false;
}
}
}
if(!guardCandidate.isEmpty())
preprocessor()->foundHeaderGuard(input, guardCandidate);
if (iflevel != previousIfLevel && !input.skippedToEnd())
createProblem(input, "Unterminated #if statement");
}
void pp::createProblem(Stream& input, const QString& description) {
Problem* problem = new Problem;
problem->file = currentFileNameString();
problem->position = input.originalInputPosition();
problem->description = description;
problemEncountered(problem);
}
void pp::handle_define (Stream& input)
{
pp_macro* macro = new pp_macro;
macro->file = currentFileName();
macro->sourceLine = input.originalInputPosition().line;
skip_blanks (input, devnull());
macro->name = IndexedString::fromIndex(skip_identifier(input)); //@todo make macros utf8 too
if (!input.atEnd() && input == '(')
{
macro->function_like = true;
skip_blanks (++input, devnull()); // skip '('
uint formal = skip_identifier(input);
if (formal)
macro->formals.append( IndexedString::fromIndex(formal) );
skip_blanks(input, devnull());
if (input == '.') {
macro->variadics = true;
do {
++input;
} while (input == '.');
}
while (!input.atEnd() && input == ',')
{
skip_blanks(++input, devnull());
uint formal = skip_identifier(input);
if (formal)
macro->formals.append( IndexedString::fromIndex(formal) );
skip_blanks (input, devnull());
if (input == '.') {
macro->variadics = true;
do {
++input;
} while (input == '.');
}
}
RETURN_ON_FAIL(input == ')');
++input;
}
skip_blanks (input, devnull());
while (!input.atEnd() && input != '\n')
{
if(input == '/' && (input.peekNextCharacter() == '/' || input.peekNextCharacter() == '*')) {
skip_comment_or_divop(input, devnull());
if(!input.atEnd() && input != '\n')
skip_blanks (input, devnull());
continue;
}
if (input == '\\')
{
int pos = input.offset();
skip_blanks (++input, devnull());
( run in 0.460 second using v1.01-cache-2.11-cpan-e93a5daba3e )