mirror of
https://github.com/pocoproject/poco.git
synced 2025-10-24 09:12:28 +02:00
add support for typed enums and deleted functions
This commit is contained in:
@@ -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()
|
||||
{
|
||||
}
|
||||
@@ -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";
|
||||
|
||||
@@ -804,6 +804,7 @@ 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();
|
||||
@@ -821,8 +822,15 @@ const Token* Parser::parseEnum(const Token* pNext)
|
||||
name = pNext->tokenString();
|
||||
pNext = next();
|
||||
}
|
||||
|
||||
if (isOperator(pNext, OperatorToken::OP_COLON))
|
||||
{
|
||||
pNext = next();
|
||||
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))
|
||||
|
||||
Reference in New Issue
Block a user