mirror of
https://github.com/VCMP-SqMod/SqMod.git
synced 2025-09-13 02:27:10 +02:00
Update POCO to 1.11.0
This commit is contained in:
18
vendor/POCO/CppParser/src/Enum.cpp
vendored
18
vendor/POCO/CppParser/src/Enum.cpp
vendored
@@ -35,6 +35,14 @@ Enum::Enum(const std::string& name, NameSpace* pNameSpace, int flags):
|
||||
}
|
||||
|
||||
|
||||
Enum::Enum(const std::string& name, NameSpace* pNameSpace, const std::string& baseType, int flags):
|
||||
Symbol(processName(name), pNameSpace),
|
||||
_baseType(baseType),
|
||||
_flags(flags)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
Enum::~Enum()
|
||||
{
|
||||
}
|
||||
@@ -43,11 +51,11 @@ Enum::~Enum()
|
||||
void Enum::addValue(EnumValue* pValue)
|
||||
{
|
||||
poco_check_ptr (pValue);
|
||||
|
||||
|
||||
_values.push_back(pValue);
|
||||
}
|
||||
|
||||
|
||||
|
||||
Enum::Iterator Enum::begin() const
|
||||
{
|
||||
return _values.begin();
|
||||
@@ -81,7 +89,11 @@ Symbol::Kind Enum::kind() const
|
||||
std::string Enum::toString() const
|
||||
{
|
||||
std::ostringstream ostr;
|
||||
ostr << "enum " << name() << "\n{\n";
|
||||
ostr << "enum ";
|
||||
if (_flags & ENUM_IS_CLASS) ostr << "class ";
|
||||
ostr << name();
|
||||
if (!_baseType.empty()) ostr << ": " << _baseType;
|
||||
ostr << "\n{\n";
|
||||
for (Iterator it = begin(); it != end(); ++it)
|
||||
{
|
||||
ostr << "\t" << (*it)->toString() << "\n";
|
||||
|
70
vendor/POCO/CppParser/src/Parser.cpp
vendored
70
vendor/POCO/CppParser/src/Parser.cpp
vendored
@@ -58,7 +58,7 @@ Parser::Parser(NameSpace::SymbolTable& gst, const std::string& file, std::istrea
|
||||
p.makeAbsolute();
|
||||
_path = p.toString();
|
||||
_currentPath = _path;
|
||||
|
||||
|
||||
_nsStack.push_back(NameSpace::root());
|
||||
}
|
||||
|
||||
@@ -205,7 +205,7 @@ const Token* Parser::parseFile(const Token* pNext)
|
||||
const Token* Parser::parseNameSpace(const Token* pNext)
|
||||
{
|
||||
poco_assert (isKeyword(pNext, IdentifierToken::KW_NAMESPACE));
|
||||
|
||||
|
||||
pNext = next();
|
||||
if (pNext->is(Token::IDENTIFIER_TOKEN))
|
||||
{
|
||||
@@ -213,11 +213,11 @@ const Token* Parser::parseNameSpace(const Token* pNext)
|
||||
std::string name = pNext->tokenString();
|
||||
pNext = next();
|
||||
expectOperator(pNext, OperatorToken::OP_OPENBRACE, "{");
|
||||
|
||||
|
||||
std::string fullName = currentNameSpace()->fullName();
|
||||
if (!fullName.empty()) fullName += "::";
|
||||
fullName += name;
|
||||
|
||||
|
||||
NameSpace* pNS = dynamic_cast<NameSpace*>(currentNameSpace()->lookup(fullName));
|
||||
bool undefined = (pNS == 0);
|
||||
if (undefined) pNS = new NameSpace(name, currentNameSpace());
|
||||
@@ -273,7 +273,7 @@ const Token* Parser::parseClass(const Token* pNext, std::string& decl)
|
||||
|
||||
_pCurrentSymbol = 0;
|
||||
bool isClass = isKeyword(pNext, IdentifierToken::KW_CLASS);
|
||||
int line = _istr.getCurrentLineNumber();
|
||||
int line = static_cast<int>(_istr.getCurrentLineNumber());
|
||||
Symbol::Access prevAccess = _access;
|
||||
append(decl, pNext);
|
||||
Symbol::Access access;
|
||||
@@ -377,7 +377,7 @@ const Token* Parser::parseBaseClassList(const Token* pNext, Struct* pClass)
|
||||
const Token* Parser::parseClassMembers(const Token* pNext, Struct* /*pClass*/)
|
||||
{
|
||||
poco_assert (isOperator(pNext, OperatorToken::OP_OPENBRACE));
|
||||
|
||||
|
||||
pNext = next();
|
||||
while (pNext->is(Token::IDENTIFIER_TOKEN) || pNext->is(Token::KEYWORD_TOKEN) || isOperator(pNext, OperatorToken::OP_COMPL))
|
||||
{
|
||||
@@ -456,7 +456,7 @@ const Token* Parser::parseTemplate(const Token* pNext)
|
||||
const Token* Parser::parseTemplateArgs(const Token* pNext, std::string& decl)
|
||||
{
|
||||
poco_assert (isOperator(pNext, OperatorToken::OP_LT));
|
||||
|
||||
|
||||
append(decl, pNext);
|
||||
int depth = 1;
|
||||
pNext = next();
|
||||
@@ -480,7 +480,7 @@ const Token* Parser::parseTypeDef(const Token* pNext)
|
||||
poco_assert (isKeyword(pNext, IdentifierToken::KW_TYPEDEF));
|
||||
|
||||
_pCurrentSymbol = 0;
|
||||
int line = _istr.getCurrentLineNumber();
|
||||
int line = static_cast<int>(_istr.getCurrentLineNumber());
|
||||
std::string decl;
|
||||
while (!isOperator(pNext, OperatorToken::OP_SEMICOLON) && !isEOF(pNext))
|
||||
{
|
||||
@@ -499,9 +499,9 @@ const Token* Parser::parseTypeDef(const Token* pNext)
|
||||
const Token* Parser::parseUsing(const Token* pNext)
|
||||
{
|
||||
poco_assert (isKeyword(pNext, IdentifierToken::KW_USING));
|
||||
|
||||
|
||||
_pCurrentSymbol = 0;
|
||||
int line = _istr.getCurrentLineNumber();
|
||||
int line = static_cast<int>(_istr.getCurrentLineNumber());
|
||||
pNext = next();
|
||||
if (isKeyword(pNext, IdentifierToken::KW_NAMESPACE))
|
||||
{
|
||||
@@ -538,7 +538,7 @@ const Token* Parser::parseUsing(const Token* pNext)
|
||||
{
|
||||
currentNameSpace()->importSymbol(id);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (!isOperator(pNext, OperatorToken::OP_SEMICOLON))
|
||||
@@ -552,7 +552,7 @@ const Token* Parser::parseUsing(const Token* pNext)
|
||||
const Token* Parser::parseFriend(const Token* pNext)
|
||||
{
|
||||
poco_assert (isKeyword(pNext, IdentifierToken::KW_FRIEND));
|
||||
|
||||
|
||||
pNext = next();
|
||||
|
||||
while (!isOperator(pNext, OperatorToken::OP_SEMICOLON) && !isEOF(pNext))
|
||||
@@ -595,7 +595,7 @@ const Token* Parser::parseVarFunc(const Token* pNext, std::string& decl)
|
||||
if (!currentNameSpace()->lookup(name))
|
||||
{
|
||||
Variable* pVar = new Variable(decl, currentNameSpace());
|
||||
addSymbol(pVar, _istr.getCurrentLineNumber());
|
||||
addSymbol(pVar, static_cast<int>(_istr.getCurrentLineNumber()));
|
||||
}
|
||||
pNext = next();
|
||||
}
|
||||
@@ -621,7 +621,7 @@ const Token* Parser::parseVarFunc(const Token* pNext, std::string& decl)
|
||||
const Token* Parser::parseExtern(const Token* pNext)
|
||||
{
|
||||
poco_assert (isKeyword(pNext, IdentifierToken::KW_EXTERN));
|
||||
|
||||
|
||||
pNext = next();
|
||||
if (pNext->is(Token::STRING_LITERAL_TOKEN))
|
||||
pNext = next();
|
||||
@@ -644,7 +644,7 @@ const Token* Parser::parseFunc(const Token* pNext, std::string& decl)
|
||||
{
|
||||
poco_assert (isOperator(pNext, OperatorToken::OP_OPENPARENT));
|
||||
|
||||
int line = _istr.getCurrentLineNumber();
|
||||
int line = static_cast<int>(_istr.getCurrentLineNumber());
|
||||
Function* pFunc = 0;
|
||||
std::string name = Symbol::extractName(decl);
|
||||
if (name.find(':') == std::string::npos)
|
||||
@@ -656,7 +656,7 @@ const Token* Parser::parseFunc(const Token* pNext, std::string& decl)
|
||||
expectOperator(pNext, OperatorToken::OP_CLOSPARENT, ")");
|
||||
pNext = next();
|
||||
while (pNext->is(Poco::Token::IDENTIFIER_TOKEN) || pNext->is(Poco::Token::KEYWORD_TOKEN))
|
||||
{
|
||||
{
|
||||
if (isKeyword(pNext, IdentifierToken::KW_CONST))
|
||||
{
|
||||
if (pFunc) pFunc->makeConst();
|
||||
@@ -664,7 +664,7 @@ const Token* Parser::parseFunc(const Token* pNext, std::string& decl)
|
||||
}
|
||||
if (isKeyword(pNext, IdentifierToken::KW_THROW))
|
||||
{
|
||||
while (!isOperator(pNext, OperatorToken::OP_ASSIGN) && !isOperator(pNext, OperatorToken::OP_SEMICOLON) &&
|
||||
while (!isOperator(pNext, OperatorToken::OP_ASSIGN) && !isOperator(pNext, OperatorToken::OP_SEMICOLON) &&
|
||||
!isOperator(pNext, OperatorToken::OP_OPENBRACE) && !isEOF(pNext))
|
||||
pNext = next();
|
||||
}
|
||||
@@ -721,16 +721,16 @@ const Token* Parser::parseFunc(const Token* pNext, std::string& decl)
|
||||
pNext = next();
|
||||
|
||||
pNext = parseBlock(pNext);
|
||||
|
||||
|
||||
if (isKeyword(pNext, IdentifierToken::KW_CATCH))
|
||||
{
|
||||
while (!isOperator(pNext, OperatorToken::OP_OPENBRACE) && !isEOF(pNext))
|
||||
pNext = next();
|
||||
|
||||
|
||||
pNext = parseBlock(pNext);
|
||||
}
|
||||
else syntaxError("expected catch block");
|
||||
|
||||
|
||||
if (!pFunc)
|
||||
pFunc = dynamic_cast<Function*>(currentNameSpace()->lookup(name));
|
||||
if (pFunc)
|
||||
@@ -785,7 +785,7 @@ const Token* Parser::parseParameters(const Token* pNext, Function* pFunc)
|
||||
const Token* Parser::parseBlock(const Token* pNext)
|
||||
{
|
||||
poco_assert (isOperator(pNext, OperatorToken::OP_OPENBRACE));
|
||||
|
||||
|
||||
pNext = next();
|
||||
int depth = 1;
|
||||
while (depth > 0 && !isEOF(pNext))
|
||||
@@ -804,12 +804,13 @@ const Token* Parser::parseEnum(const Token* pNext)
|
||||
{
|
||||
poco_assert (isKeyword(pNext, IdentifierToken::KW_ENUM));
|
||||
|
||||
std::string baseType;
|
||||
int flags = 0;
|
||||
_pCurrentSymbol = 0;
|
||||
int line = _istr.getCurrentLineNumber();
|
||||
int line = static_cast<int>(_istr.getCurrentLineNumber());
|
||||
pNext = next();
|
||||
|
||||
if (isKeyword(pNext, IdentifierToken::KW_CLASS))
|
||||
if (isKeyword(pNext, IdentifierToken::KW_CLASS) || isKeyword(pNext, IdentifierToken::KW_STRUCT))
|
||||
{
|
||||
flags = Enum::ENUM_IS_CLASS;
|
||||
pNext = next();
|
||||
@@ -821,8 +822,27 @@ const Token* Parser::parseEnum(const Token* pNext)
|
||||
name = pNext->tokenString();
|
||||
pNext = next();
|
||||
}
|
||||
|
||||
if (isOperator(pNext, OperatorToken::OP_COLON))
|
||||
{
|
||||
pNext = next();
|
||||
if (pNext->is(Token::KEYWORD_TOKEN))
|
||||
{
|
||||
while (pNext->is(Token::KEYWORD_TOKEN)) // int, unsigned int, etc.
|
||||
{
|
||||
if (!baseType.empty()) baseType += ' ';
|
||||
baseType += pNext->tokenString();
|
||||
pNext = next();
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
pNext = parseIdentifier(pNext, baseType);
|
||||
}
|
||||
}
|
||||
|
||||
expectOperator(pNext, OperatorToken::OP_OPENBRACE, "{");
|
||||
Enum* pEnum = new Enum(name, currentNameSpace(), flags);
|
||||
Enum* pEnum = new Enum(name, currentNameSpace(), baseType, flags);
|
||||
addSymbol(pEnum, line);
|
||||
pNext = next();
|
||||
while (pNext->is(Token::IDENTIFIER_TOKEN))
|
||||
@@ -842,7 +862,7 @@ const Token* Parser::parseEnumValue(const Token* pNext, Enum* pEnum)
|
||||
{
|
||||
_pCurrentSymbol = 0;
|
||||
_doc.clear();
|
||||
int line = _istr.getCurrentLineNumber();
|
||||
int line = static_cast<int>(_istr.getCurrentLineNumber());
|
||||
std::string name = pNext->tokenString();
|
||||
std::string value;
|
||||
pNext = next();
|
||||
|
Reference in New Issue
Block a user