Add enum naming, by assinging a given enum's values to a Dict

This commit is contained in:
Bojidar Marinov 2016-08-27 15:56:51 +03:00
parent 4ee82a2c38
commit 88430f0962
No known key found for this signature in database
GPG Key ID: 4D546A8F1E091856
1 changed files with 20 additions and 0 deletions

View File

@ -3161,8 +3161,14 @@ void GDParser::_parse_class(ClassNode *p_class) {
//mutiple constant declarations..
int last_assign = -1; // Incremented by 1 right before the assingment.
String enum_name;
Dictionary enum_dict;
tokenizer->advance();
if (tokenizer->get_token()==GDTokenizer::TK_IDENTIFIER) {
enum_name=tokenizer->get_token_identifier();
tokenizer->advance();
}
if (tokenizer->get_token()!=GDTokenizer::TK_CURLY_BRACKET_OPEN) {
_set_error("Expected '{' in enum declaration");
return;
@ -3231,10 +3237,24 @@ void GDParser::_parse_class(ClassNode *p_class) {
tokenizer->advance();
}
if(enum_name != "") {
const ConstantNode *cn = static_cast<const ConstantNode*>(constant.expression);
enum_dict[constant.identifier] = cn->value;
}
p_class->constant_expressions.push_back(constant);
}
}
if(enum_name != "") {
ClassNode::Constant enum_constant;
enum_constant.identifier=enum_name;
ConstantNode *cn = alloc_node<ConstantNode>();
cn->value = enum_dict;
enum_constant.expression=cn;
p_class->constant_expressions.push_back(enum_constant);
}
if (!_end_statement()) {
_set_error("Expected end of statement (enum)");