You've already forked godot
mirror of
https://github.com/godotengine/godot.git
synced 2025-11-19 14:31:59 +00:00
Style: clang-format: Disable KeepEmptyLinesAtTheStartOfBlocks
Which means that reduz' beloved style which we all became used to will now be changed automatically to remove the first empty line. This makes us lean closer to 1TBS (the one true brace style) instead of hybridating it with some Allman-inspired spacing. There's still the case of braces around single-statement blocks that needs to be addressed (but clang-format can't help with that, but clang-tidy may if we agree about it). Part of #33027.
This commit is contained in:
@@ -36,21 +36,17 @@
|
||||
#include "core/string_buffer.h"
|
||||
|
||||
CharType VariantParser::StreamFile::get_char() {
|
||||
|
||||
return f->get_8();
|
||||
}
|
||||
|
||||
bool VariantParser::StreamFile::is_utf8() const {
|
||||
|
||||
return true;
|
||||
}
|
||||
bool VariantParser::StreamFile::is_eof() const {
|
||||
|
||||
return f->eof_reached();
|
||||
}
|
||||
|
||||
CharType VariantParser::StreamString::get_char() {
|
||||
|
||||
if (pos > s.length()) {
|
||||
return 0;
|
||||
} else if (pos == s.length()) {
|
||||
@@ -93,11 +89,9 @@ const char *VariantParser::tk_name[TK_MAX] = {
|
||||
};
|
||||
|
||||
Error VariantParser::get_token(Stream *p_stream, Token &r_token, int &line, String &r_err_str) {
|
||||
|
||||
bool string_name = false;
|
||||
|
||||
while (true) {
|
||||
|
||||
CharType cchar;
|
||||
if (p_stream->saved) {
|
||||
cchar = p_stream->saved;
|
||||
@@ -111,9 +105,7 @@ Error VariantParser::get_token(Stream *p_stream, Token &r_token, int &line, Stri
|
||||
}
|
||||
|
||||
switch (cchar) {
|
||||
|
||||
case '\n': {
|
||||
|
||||
line++;
|
||||
break;
|
||||
};
|
||||
@@ -122,42 +114,34 @@ Error VariantParser::get_token(Stream *p_stream, Token &r_token, int &line, Stri
|
||||
return OK;
|
||||
} break;
|
||||
case '{': {
|
||||
|
||||
r_token.type = TK_CURLY_BRACKET_OPEN;
|
||||
return OK;
|
||||
};
|
||||
case '}': {
|
||||
|
||||
r_token.type = TK_CURLY_BRACKET_CLOSE;
|
||||
return OK;
|
||||
};
|
||||
case '[': {
|
||||
|
||||
r_token.type = TK_BRACKET_OPEN;
|
||||
return OK;
|
||||
};
|
||||
case ']': {
|
||||
|
||||
r_token.type = TK_BRACKET_CLOSE;
|
||||
return OK;
|
||||
};
|
||||
case '(': {
|
||||
|
||||
r_token.type = TK_PARENTHESIS_OPEN;
|
||||
return OK;
|
||||
};
|
||||
case ')': {
|
||||
|
||||
r_token.type = TK_PARENTHESIS_CLOSE;
|
||||
return OK;
|
||||
};
|
||||
case ':': {
|
||||
|
||||
r_token.type = TK_COLON;
|
||||
return OK;
|
||||
};
|
||||
case ';': {
|
||||
|
||||
while (true) {
|
||||
CharType ch = p_stream->get_char();
|
||||
if (p_stream->is_eof()) {
|
||||
@@ -171,22 +155,18 @@ Error VariantParser::get_token(Stream *p_stream, Token &r_token, int &line, Stri
|
||||
break;
|
||||
};
|
||||
case ',': {
|
||||
|
||||
r_token.type = TK_COMMA;
|
||||
return OK;
|
||||
};
|
||||
case '.': {
|
||||
|
||||
r_token.type = TK_PERIOD;
|
||||
return OK;
|
||||
};
|
||||
case '=': {
|
||||
|
||||
r_token.type = TK_EQUAL;
|
||||
return OK;
|
||||
};
|
||||
case '#': {
|
||||
|
||||
StringBuffer<> color_str;
|
||||
color_str += '#';
|
||||
while (true) {
|
||||
@@ -219,10 +199,8 @@ Error VariantParser::get_token(Stream *p_stream, Token &r_token, int &line, Stri
|
||||
[[fallthrough]];
|
||||
}
|
||||
case '"': {
|
||||
|
||||
String str;
|
||||
while (true) {
|
||||
|
||||
CharType ch = p_stream->get_char();
|
||||
|
||||
if (ch == 0) {
|
||||
@@ -242,7 +220,6 @@ Error VariantParser::get_token(Stream *p_stream, Token &r_token, int &line, Stri
|
||||
CharType res = 0;
|
||||
|
||||
switch (next) {
|
||||
|
||||
case 'b':
|
||||
res = 8;
|
||||
break;
|
||||
@@ -268,7 +245,6 @@ Error VariantParser::get_token(Stream *p_stream, Token &r_token, int &line, Stri
|
||||
return ERR_PARSE_ERROR;
|
||||
}
|
||||
if (!((c >= '0' && c <= '9') || (c >= 'a' && c <= 'f') || (c >= 'A' && c <= 'F'))) {
|
||||
|
||||
r_err_str = "Malformed hex constant in string";
|
||||
r_token.type = TK_ERROR;
|
||||
return ERR_PARSE_ERROR;
|
||||
@@ -321,7 +297,6 @@ Error VariantParser::get_token(Stream *p_stream, Token &r_token, int &line, Stri
|
||||
|
||||
} break;
|
||||
default: {
|
||||
|
||||
if (cchar <= 32) {
|
||||
break;
|
||||
}
|
||||
@@ -348,10 +323,8 @@ Error VariantParser::get_token(Stream *p_stream, Token &r_token, int &line, Stri
|
||||
bool is_float = false;
|
||||
|
||||
while (true) {
|
||||
|
||||
switch (reading) {
|
||||
case READING_INT: {
|
||||
|
||||
if (c >= '0' && c <= '9') {
|
||||
//pass
|
||||
} else if (c == '.') {
|
||||
@@ -366,9 +339,7 @@ Error VariantParser::get_token(Stream *p_stream, Token &r_token, int &line, Stri
|
||||
|
||||
} break;
|
||||
case READING_DEC: {
|
||||
|
||||
if (c >= '0' && c <= '9') {
|
||||
|
||||
} else if (c == 'e') {
|
||||
reading = READING_EXP;
|
||||
} else {
|
||||
@@ -377,7 +348,6 @@ Error VariantParser::get_token(Stream *p_stream, Token &r_token, int &line, Stri
|
||||
|
||||
} break;
|
||||
case READING_EXP: {
|
||||
|
||||
if (c >= '0' && c <= '9') {
|
||||
exp_beg = true;
|
||||
|
||||
@@ -407,12 +377,10 @@ Error VariantParser::get_token(Stream *p_stream, Token &r_token, int &line, Stri
|
||||
return OK;
|
||||
|
||||
} else if ((cchar >= 'A' && cchar <= 'Z') || (cchar >= 'a' && cchar <= 'z') || cchar == '_') {
|
||||
|
||||
StringBuffer<> id;
|
||||
bool first = true;
|
||||
|
||||
while ((cchar >= 'A' && cchar <= 'Z') || (cchar >= 'a' && cchar <= 'z') || cchar == '_' || (!first && cchar >= '0' && cchar <= '9')) {
|
||||
|
||||
id += cchar;
|
||||
cchar = p_stream->get_char();
|
||||
first = false;
|
||||
@@ -437,7 +405,6 @@ Error VariantParser::get_token(Stream *p_stream, Token &r_token, int &line, Stri
|
||||
}
|
||||
|
||||
Error VariantParser::_parse_enginecfg(Stream *p_stream, Vector<String> &strings, int &line, String &r_err_str) {
|
||||
|
||||
Token token;
|
||||
get_token(p_stream, token, line, r_err_str);
|
||||
if (token.type != TK_PARENTHESIS_OPEN) {
|
||||
@@ -448,7 +415,6 @@ Error VariantParser::_parse_enginecfg(Stream *p_stream, Vector<String> &strings,
|
||||
String accum;
|
||||
|
||||
while (true) {
|
||||
|
||||
CharType c = p_stream->get_char();
|
||||
|
||||
if (p_stream->is_eof()) {
|
||||
@@ -470,7 +436,6 @@ Error VariantParser::_parse_enginecfg(Stream *p_stream, Vector<String> &strings,
|
||||
|
||||
template <class T>
|
||||
Error VariantParser::_parse_construct(Stream *p_stream, Vector<T> &r_construct, int &line, String &r_err_str) {
|
||||
|
||||
Token token;
|
||||
get_token(p_stream, token, line, r_err_str);
|
||||
if (token.type != TK_PARENTHESIS_OPEN) {
|
||||
@@ -480,7 +445,6 @@ Error VariantParser::_parse_construct(Stream *p_stream, Vector<T> &r_construct,
|
||||
|
||||
bool first = true;
|
||||
while (true) {
|
||||
|
||||
if (!first) {
|
||||
get_token(p_stream, token, line, r_err_str);
|
||||
if (token.type == TK_COMMA) {
|
||||
@@ -509,7 +473,6 @@ Error VariantParser::_parse_construct(Stream *p_stream, Vector<T> &r_construct,
|
||||
}
|
||||
|
||||
Error VariantParser::parse_value(Token &token, Variant &value, Stream *p_stream, int &line, String &r_err_str, ResourceParser *p_res_parser) {
|
||||
|
||||
/* {
|
||||
Error err = get_token(p_stream,token,line,r_err_str);
|
||||
if (err)
|
||||
@@ -517,7 +480,6 @@ Error VariantParser::parse_value(Token &token, Variant &value, Stream *p_stream,
|
||||
}*/
|
||||
|
||||
if (token.type == TK_CURLY_BRACKET_OPEN) {
|
||||
|
||||
Dictionary d;
|
||||
Error err = _parse_dictionary(d, p_stream, line, r_err_str, p_res_parser);
|
||||
if (err)
|
||||
@@ -525,7 +487,6 @@ Error VariantParser::parse_value(Token &token, Variant &value, Stream *p_stream,
|
||||
value = d;
|
||||
return OK;
|
||||
} else if (token.type == TK_BRACKET_OPEN) {
|
||||
|
||||
Array a;
|
||||
Error err = _parse_array(a, p_stream, line, r_err_str, p_res_parser);
|
||||
if (err)
|
||||
@@ -534,7 +495,6 @@ Error VariantParser::parse_value(Token &token, Variant &value, Stream *p_stream,
|
||||
return OK;
|
||||
|
||||
} else if (token.type == TK_IDENTIFIER) {
|
||||
|
||||
String id = token.value;
|
||||
if (id == "true")
|
||||
value = true;
|
||||
@@ -547,7 +507,6 @@ Error VariantParser::parse_value(Token &token, Variant &value, Stream *p_stream,
|
||||
else if (id == "nan")
|
||||
value = Math_NAN;
|
||||
else if (id == "Vector2") {
|
||||
|
||||
Vector<float> args;
|
||||
Error err = _parse_construct<float>(p_stream, args, line, r_err_str);
|
||||
if (err)
|
||||
@@ -560,7 +519,6 @@ Error VariantParser::parse_value(Token &token, Variant &value, Stream *p_stream,
|
||||
value = Vector2(args[0], args[1]);
|
||||
return OK;
|
||||
} else if (id == "Vector2i") {
|
||||
|
||||
Vector<int32_t> args;
|
||||
Error err = _parse_construct<int32_t>(p_stream, args, line, r_err_str);
|
||||
if (err)
|
||||
@@ -573,7 +531,6 @@ Error VariantParser::parse_value(Token &token, Variant &value, Stream *p_stream,
|
||||
value = Vector2i(args[0], args[1]);
|
||||
return OK;
|
||||
} else if (id == "Rect2") {
|
||||
|
||||
Vector<float> args;
|
||||
Error err = _parse_construct<float>(p_stream, args, line, r_err_str);
|
||||
if (err)
|
||||
@@ -586,7 +543,6 @@ Error VariantParser::parse_value(Token &token, Variant &value, Stream *p_stream,
|
||||
value = Rect2(args[0], args[1], args[2], args[3]);
|
||||
return OK;
|
||||
} else if (id == "Rect2i") {
|
||||
|
||||
Vector<int32_t> args;
|
||||
Error err = _parse_construct<int32_t>(p_stream, args, line, r_err_str);
|
||||
if (err)
|
||||
@@ -599,7 +555,6 @@ Error VariantParser::parse_value(Token &token, Variant &value, Stream *p_stream,
|
||||
value = Rect2i(args[0], args[1], args[2], args[3]);
|
||||
return OK;
|
||||
} else if (id == "Vector3") {
|
||||
|
||||
Vector<float> args;
|
||||
Error err = _parse_construct<float>(p_stream, args, line, r_err_str);
|
||||
if (err)
|
||||
@@ -612,7 +567,6 @@ Error VariantParser::parse_value(Token &token, Variant &value, Stream *p_stream,
|
||||
value = Vector3(args[0], args[1], args[2]);
|
||||
return OK;
|
||||
} else if (id == "Vector3i") {
|
||||
|
||||
Vector<int32_t> args;
|
||||
Error err = _parse_construct<int32_t>(p_stream, args, line, r_err_str);
|
||||
if (err)
|
||||
@@ -641,7 +595,6 @@ Error VariantParser::parse_value(Token &token, Variant &value, Stream *p_stream,
|
||||
value = m;
|
||||
return OK;
|
||||
} else if (id == "Plane") {
|
||||
|
||||
Vector<float> args;
|
||||
Error err = _parse_construct<float>(p_stream, args, line, r_err_str);
|
||||
if (err)
|
||||
@@ -654,7 +607,6 @@ Error VariantParser::parse_value(Token &token, Variant &value, Stream *p_stream,
|
||||
value = Plane(args[0], args[1], args[2], args[3]);
|
||||
return OK;
|
||||
} else if (id == "Quat") {
|
||||
|
||||
Vector<float> args;
|
||||
Error err = _parse_construct<float>(p_stream, args, line, r_err_str);
|
||||
if (err)
|
||||
@@ -668,7 +620,6 @@ Error VariantParser::parse_value(Token &token, Variant &value, Stream *p_stream,
|
||||
return OK;
|
||||
|
||||
} else if (id == "AABB" || id == "Rect3") {
|
||||
|
||||
Vector<float> args;
|
||||
Error err = _parse_construct<float>(p_stream, args, line, r_err_str);
|
||||
if (err)
|
||||
@@ -695,7 +646,6 @@ Error VariantParser::parse_value(Token &token, Variant &value, Stream *p_stream,
|
||||
value = Basis(args[0], args[1], args[2], args[3], args[4], args[5], args[6], args[7], args[8]);
|
||||
return OK;
|
||||
} else if (id == "Transform") {
|
||||
|
||||
Vector<float> args;
|
||||
Error err = _parse_construct<float>(p_stream, args, line, r_err_str);
|
||||
if (err)
|
||||
@@ -709,7 +659,6 @@ Error VariantParser::parse_value(Token &token, Variant &value, Stream *p_stream,
|
||||
return OK;
|
||||
|
||||
} else if (id == "Color") {
|
||||
|
||||
Vector<float> args;
|
||||
Error err = _parse_construct<float>(p_stream, args, line, r_err_str);
|
||||
if (err)
|
||||
@@ -723,7 +672,6 @@ Error VariantParser::parse_value(Token &token, Variant &value, Stream *p_stream,
|
||||
return OK;
|
||||
|
||||
} else if (id == "NodePath") {
|
||||
|
||||
get_token(p_stream, token, line, r_err_str);
|
||||
if (token.type != TK_PARENTHESIS_OPEN) {
|
||||
r_err_str = "Expected '('";
|
||||
@@ -745,7 +693,6 @@ Error VariantParser::parse_value(Token &token, Variant &value, Stream *p_stream,
|
||||
}
|
||||
|
||||
} else if (id == "RID") {
|
||||
|
||||
get_token(p_stream, token, line, r_err_str);
|
||||
if (token.type != TK_PARENTHESIS_OPEN) {
|
||||
r_err_str = "Expected '('";
|
||||
@@ -768,7 +715,6 @@ Error VariantParser::parse_value(Token &token, Variant &value, Stream *p_stream,
|
||||
|
||||
return OK;
|
||||
} else if (id == "Object") {
|
||||
|
||||
get_token(p_stream, token, line, r_err_str);
|
||||
if (token.type != TK_PARENTHESIS_OPEN) {
|
||||
r_err_str = "Expected '('";
|
||||
@@ -803,14 +749,12 @@ Error VariantParser::parse_value(Token &token, Variant &value, Stream *p_stream,
|
||||
bool need_comma = false;
|
||||
|
||||
while (true) {
|
||||
|
||||
if (p_stream->is_eof()) {
|
||||
r_err_str = "Unexpected End of File while parsing Object()";
|
||||
return ERR_FILE_CORRUPT;
|
||||
}
|
||||
|
||||
if (at_key) {
|
||||
|
||||
Error err = get_token(p_stream, token2, line, r_err_str);
|
||||
if (err != OK)
|
||||
return err;
|
||||
@@ -826,9 +770,7 @@ Error VariantParser::parse_value(Token &token, Variant &value, Stream *p_stream,
|
||||
}
|
||||
|
||||
if (need_comma) {
|
||||
|
||||
if (token2.type != TK_COMMA) {
|
||||
|
||||
r_err_str = "Expected '}' or ','";
|
||||
return ERR_PARSE_ERROR;
|
||||
} else {
|
||||
@@ -849,13 +791,11 @@ Error VariantParser::parse_value(Token &token, Variant &value, Stream *p_stream,
|
||||
if (err != OK)
|
||||
return err;
|
||||
if (token2.type != TK_COLON) {
|
||||
|
||||
r_err_str = "Expected ':'";
|
||||
return ERR_PARSE_ERROR;
|
||||
}
|
||||
at_key = false;
|
||||
} else {
|
||||
|
||||
Error err = get_token(p_stream, token2, line, r_err_str);
|
||||
if (err != OK)
|
||||
return err;
|
||||
@@ -871,7 +811,6 @@ Error VariantParser::parse_value(Token &token, Variant &value, Stream *p_stream,
|
||||
}
|
||||
|
||||
} else if (id == "Resource" || id == "SubResource" || id == "ExtResource") {
|
||||
|
||||
get_token(p_stream, token, line, r_err_str);
|
||||
if (token.type != TK_PARENTHESIS_OPEN) {
|
||||
r_err_str = "Expected '('";
|
||||
@@ -879,7 +818,6 @@ Error VariantParser::parse_value(Token &token, Variant &value, Stream *p_stream,
|
||||
}
|
||||
|
||||
if (p_res_parser && id == "Resource" && p_res_parser->func) {
|
||||
|
||||
RES res;
|
||||
Error err = p_res_parser->func(p_res_parser->userdata, p_stream, res, line, r_err_str);
|
||||
if (err)
|
||||
@@ -889,7 +827,6 @@ Error VariantParser::parse_value(Token &token, Variant &value, Stream *p_stream,
|
||||
|
||||
return OK;
|
||||
} else if (p_res_parser && id == "ExtResource" && p_res_parser->ext_func) {
|
||||
|
||||
RES res;
|
||||
Error err = p_res_parser->ext_func(p_res_parser->userdata, p_stream, res, line, r_err_str);
|
||||
if (err)
|
||||
@@ -899,7 +836,6 @@ Error VariantParser::parse_value(Token &token, Variant &value, Stream *p_stream,
|
||||
|
||||
return OK;
|
||||
} else if (p_res_parser && id == "SubResource" && p_res_parser->sub_func) {
|
||||
|
||||
RES res;
|
||||
Error err = p_res_parser->sub_func(p_res_parser->userdata, p_stream, res, line, r_err_str);
|
||||
if (err)
|
||||
@@ -909,7 +845,6 @@ Error VariantParser::parse_value(Token &token, Variant &value, Stream *p_stream,
|
||||
|
||||
return OK;
|
||||
} else {
|
||||
|
||||
get_token(p_stream, token, line, r_err_str);
|
||||
if (token.type == TK_STRING) {
|
||||
String path = token.value;
|
||||
@@ -935,7 +870,6 @@ Error VariantParser::parse_value(Token &token, Variant &value, Stream *p_stream,
|
||||
}
|
||||
|
||||
} else if (id == "PackedByteArray" || id == "PoolByteArray" || id == "ByteArray") {
|
||||
|
||||
Vector<uint8_t> args;
|
||||
Error err = _parse_construct<uint8_t>(p_stream, args, line, r_err_str);
|
||||
if (err)
|
||||
@@ -956,7 +890,6 @@ Error VariantParser::parse_value(Token &token, Variant &value, Stream *p_stream,
|
||||
return OK;
|
||||
|
||||
} else if (id == "PackedInt32Array" || id == "PackedIntArray" || id == "PoolIntArray" || id == "IntArray") {
|
||||
|
||||
Vector<int32_t> args;
|
||||
Error err = _parse_construct<int32_t>(p_stream, args, line, r_err_str);
|
||||
if (err)
|
||||
@@ -977,7 +910,6 @@ Error VariantParser::parse_value(Token &token, Variant &value, Stream *p_stream,
|
||||
return OK;
|
||||
|
||||
} else if (id == "PackedInt64Array") {
|
||||
|
||||
Vector<int64_t> args;
|
||||
Error err = _parse_construct<int64_t>(p_stream, args, line, r_err_str);
|
||||
if (err)
|
||||
@@ -998,7 +930,6 @@ Error VariantParser::parse_value(Token &token, Variant &value, Stream *p_stream,
|
||||
return OK;
|
||||
|
||||
} else if (id == "PackedFloat32Array" || id == "PackedRealArray" || id == "PoolRealArray" || id == "FloatArray") {
|
||||
|
||||
Vector<float> args;
|
||||
Error err = _parse_construct<float>(p_stream, args, line, r_err_str);
|
||||
if (err)
|
||||
@@ -1018,7 +949,6 @@ Error VariantParser::parse_value(Token &token, Variant &value, Stream *p_stream,
|
||||
|
||||
return OK;
|
||||
} else if (id == "PackedFloat64Array") {
|
||||
|
||||
Vector<double> args;
|
||||
Error err = _parse_construct<double>(p_stream, args, line, r_err_str);
|
||||
if (err)
|
||||
@@ -1038,7 +968,6 @@ Error VariantParser::parse_value(Token &token, Variant &value, Stream *p_stream,
|
||||
|
||||
return OK;
|
||||
} else if (id == "PackedStringArray" || id == "PoolStringArray" || id == "StringArray") {
|
||||
|
||||
get_token(p_stream, token, line, r_err_str);
|
||||
if (token.type != TK_PARENTHESIS_OPEN) {
|
||||
r_err_str = "Expected '('";
|
||||
@@ -1049,7 +978,6 @@ Error VariantParser::parse_value(Token &token, Variant &value, Stream *p_stream,
|
||||
|
||||
bool first = true;
|
||||
while (true) {
|
||||
|
||||
if (!first) {
|
||||
get_token(p_stream, token, line, r_err_str);
|
||||
if (token.type == TK_COMMA) {
|
||||
@@ -1089,7 +1017,6 @@ Error VariantParser::parse_value(Token &token, Variant &value, Stream *p_stream,
|
||||
return OK;
|
||||
|
||||
} else if (id == "PackedVector2Array" || id == "PoolVector2Array" || id == "Vector2Array") {
|
||||
|
||||
Vector<float> args;
|
||||
Error err = _parse_construct<float>(p_stream, args, line, r_err_str);
|
||||
if (err)
|
||||
@@ -1110,7 +1037,6 @@ Error VariantParser::parse_value(Token &token, Variant &value, Stream *p_stream,
|
||||
return OK;
|
||||
|
||||
} else if (id == "PackedVector3Array" || id == "PoolVector3Array" || id == "Vector3Array") {
|
||||
|
||||
Vector<float> args;
|
||||
Error err = _parse_construct<float>(p_stream, args, line, r_err_str);
|
||||
if (err)
|
||||
@@ -1131,7 +1057,6 @@ Error VariantParser::parse_value(Token &token, Variant &value, Stream *p_stream,
|
||||
return OK;
|
||||
|
||||
} else if (id == "PackedColorArray" || id == "PoolColorArray" || id == "ColorArray") {
|
||||
|
||||
Vector<float> args;
|
||||
Error err = _parse_construct<float>(p_stream, args, line, r_err_str);
|
||||
if (err)
|
||||
@@ -1158,19 +1083,15 @@ Error VariantParser::parse_value(Token &token, Variant &value, Stream *p_stream,
|
||||
return OK;
|
||||
|
||||
} else if (token.type == TK_NUMBER) {
|
||||
|
||||
value = token.value;
|
||||
return OK;
|
||||
} else if (token.type == TK_STRING) {
|
||||
|
||||
value = token.value;
|
||||
return OK;
|
||||
} else if (token.type == TK_STRING_NAME) {
|
||||
|
||||
value = token.value;
|
||||
return OK;
|
||||
} else if (token.type == TK_COLOR) {
|
||||
|
||||
value = token.value;
|
||||
return OK;
|
||||
} else {
|
||||
@@ -1180,12 +1101,10 @@ Error VariantParser::parse_value(Token &token, Variant &value, Stream *p_stream,
|
||||
}
|
||||
|
||||
Error VariantParser::_parse_array(Array &array, Stream *p_stream, int &line, String &r_err_str, ResourceParser *p_res_parser) {
|
||||
|
||||
Token token;
|
||||
bool need_comma = false;
|
||||
|
||||
while (true) {
|
||||
|
||||
if (p_stream->is_eof()) {
|
||||
r_err_str = "Unexpected End of File while parsing array";
|
||||
return ERR_FILE_CORRUPT;
|
||||
@@ -1196,14 +1115,11 @@ Error VariantParser::_parse_array(Array &array, Stream *p_stream, int &line, Str
|
||||
return err;
|
||||
|
||||
if (token.type == TK_BRACKET_CLOSE) {
|
||||
|
||||
return OK;
|
||||
}
|
||||
|
||||
if (need_comma) {
|
||||
|
||||
if (token.type != TK_COMMA) {
|
||||
|
||||
r_err_str = "Expected ','";
|
||||
return ERR_PARSE_ERROR;
|
||||
} else {
|
||||
@@ -1223,34 +1139,28 @@ Error VariantParser::_parse_array(Array &array, Stream *p_stream, int &line, Str
|
||||
}
|
||||
|
||||
Error VariantParser::_parse_dictionary(Dictionary &object, Stream *p_stream, int &line, String &r_err_str, ResourceParser *p_res_parser) {
|
||||
|
||||
bool at_key = true;
|
||||
Variant key;
|
||||
Token token;
|
||||
bool need_comma = false;
|
||||
|
||||
while (true) {
|
||||
|
||||
if (p_stream->is_eof()) {
|
||||
r_err_str = "Unexpected End of File while parsing dictionary";
|
||||
return ERR_FILE_CORRUPT;
|
||||
}
|
||||
|
||||
if (at_key) {
|
||||
|
||||
Error err = get_token(p_stream, token, line, r_err_str);
|
||||
if (err != OK)
|
||||
return err;
|
||||
|
||||
if (token.type == TK_CURLY_BRACKET_CLOSE) {
|
||||
|
||||
return OK;
|
||||
}
|
||||
|
||||
if (need_comma) {
|
||||
|
||||
if (token.type != TK_COMMA) {
|
||||
|
||||
r_err_str = "Expected '}' or ','";
|
||||
return ERR_PARSE_ERROR;
|
||||
} else {
|
||||
@@ -1269,13 +1179,11 @@ Error VariantParser::_parse_dictionary(Dictionary &object, Stream *p_stream, int
|
||||
if (err != OK)
|
||||
return err;
|
||||
if (token.type != TK_COLON) {
|
||||
|
||||
r_err_str = "Expected ':'";
|
||||
return ERR_PARSE_ERROR;
|
||||
}
|
||||
at_key = false;
|
||||
} else {
|
||||
|
||||
Error err = get_token(p_stream, token, line, r_err_str);
|
||||
if (err != OK)
|
||||
return err;
|
||||
@@ -1292,7 +1200,6 @@ Error VariantParser::_parse_dictionary(Dictionary &object, Stream *p_stream, int
|
||||
}
|
||||
|
||||
Error VariantParser::_parse_tag(Token &token, Stream *p_stream, int &line, String &r_err_str, Tag &r_tag, ResourceParser *p_res_parser, bool p_simple_tag) {
|
||||
|
||||
r_tag.fields.clear();
|
||||
|
||||
if (token.type != TK_BRACKET_OPEN) {
|
||||
@@ -1301,12 +1208,10 @@ Error VariantParser::_parse_tag(Token &token, Stream *p_stream, int &line, Strin
|
||||
}
|
||||
|
||||
if (p_simple_tag) {
|
||||
|
||||
r_tag.name = "";
|
||||
r_tag.fields.clear();
|
||||
|
||||
while (true) {
|
||||
|
||||
CharType c = p_stream->get_char();
|
||||
if (p_stream->is_eof()) {
|
||||
r_err_str = "Unexpected EOF while parsing simple tag";
|
||||
@@ -1333,7 +1238,6 @@ Error VariantParser::_parse_tag(Token &token, Stream *p_stream, int &line, Strin
|
||||
bool parsing_tag = true;
|
||||
|
||||
while (true) {
|
||||
|
||||
if (p_stream->is_eof()) {
|
||||
r_err_str = "Unexpected End of File while parsing tag: " + r_tag.name;
|
||||
return ERR_FILE_CORRUPT;
|
||||
@@ -1383,7 +1287,6 @@ Error VariantParser::_parse_tag(Token &token, Stream *p_stream, int &line, Strin
|
||||
}
|
||||
|
||||
Error VariantParser::parse_tag(Stream *p_stream, int &line, String &r_err_str, Tag &r_tag, ResourceParser *p_res_parser, bool p_simple_tag) {
|
||||
|
||||
Token token;
|
||||
get_token(p_stream, token, line, r_err_str);
|
||||
|
||||
@@ -1400,13 +1303,11 @@ Error VariantParser::parse_tag(Stream *p_stream, int &line, String &r_err_str, T
|
||||
}
|
||||
|
||||
Error VariantParser::parse_tag_assign_eof(Stream *p_stream, int &line, String &r_err_str, Tag &r_tag, String &r_assign, Variant &r_value, ResourceParser *p_res_parser, bool p_simple_tag) {
|
||||
|
||||
//assign..
|
||||
r_assign = "";
|
||||
String what;
|
||||
|
||||
while (true) {
|
||||
|
||||
CharType c;
|
||||
if (p_stream->saved) {
|
||||
c = p_stream->saved;
|
||||
@@ -1470,7 +1371,6 @@ Error VariantParser::parse_tag_assign_eof(Stream *p_stream, int &line, String &r
|
||||
}
|
||||
|
||||
Error VariantParser::parse(Stream *p_stream, Variant &r_ret, String &r_err_str, int &r_err_line, ResourceParser *p_res_parser) {
|
||||
|
||||
Token token;
|
||||
Error err = get_token(p_stream, token, r_err_line, r_err_str);
|
||||
if (err)
|
||||
@@ -1488,7 +1388,6 @@ Error VariantParser::parse(Stream *p_stream, Variant &r_ret, String &r_err_str,
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
static String rtosfix(double p_value) {
|
||||
|
||||
if (p_value == 0.0)
|
||||
return "0"; //avoid negative zero (-0) being written, which may annoy git, svn, etc. for changes when they don't exist.
|
||||
else
|
||||
@@ -1496,22 +1395,17 @@ static String rtosfix(double p_value) {
|
||||
}
|
||||
|
||||
Error VariantWriter::write(const Variant &p_variant, StoreStringFunc p_store_string_func, void *p_store_string_ud, EncodeResourceFunc p_encode_res_func, void *p_encode_res_ud) {
|
||||
|
||||
switch (p_variant.get_type()) {
|
||||
|
||||
case Variant::NIL: {
|
||||
p_store_string_func(p_store_string_ud, "null");
|
||||
} break;
|
||||
case Variant::BOOL: {
|
||||
|
||||
p_store_string_func(p_store_string_ud, p_variant.operator bool() ? "true" : "false");
|
||||
} break;
|
||||
case Variant::INT: {
|
||||
|
||||
p_store_string_func(p_store_string_ud, itos(p_variant.operator int64_t()));
|
||||
} break;
|
||||
case Variant::FLOAT: {
|
||||
|
||||
String s = rtosfix(p_variant.operator real_t());
|
||||
if (s != "inf" && s != "nan") {
|
||||
if (s.find(".") == -1 && s.find("e") == -1)
|
||||
@@ -1520,69 +1414,57 @@ Error VariantWriter::write(const Variant &p_variant, StoreStringFunc p_store_str
|
||||
p_store_string_func(p_store_string_ud, s);
|
||||
} break;
|
||||
case Variant::STRING: {
|
||||
|
||||
String str = p_variant;
|
||||
|
||||
str = "\"" + str.c_escape_multiline() + "\"";
|
||||
p_store_string_func(p_store_string_ud, str);
|
||||
} break;
|
||||
case Variant::VECTOR2: {
|
||||
|
||||
Vector2 v = p_variant;
|
||||
p_store_string_func(p_store_string_ud, "Vector2( " + rtosfix(v.x) + ", " + rtosfix(v.y) + " )");
|
||||
} break;
|
||||
case Variant::VECTOR2I: {
|
||||
|
||||
Vector2i v = p_variant;
|
||||
p_store_string_func(p_store_string_ud, "Vector2i( " + itos(v.x) + ", " + itos(v.y) + " )");
|
||||
} break;
|
||||
case Variant::RECT2: {
|
||||
|
||||
Rect2 aabb = p_variant;
|
||||
p_store_string_func(p_store_string_ud, "Rect2( " + rtosfix(aabb.position.x) + ", " + rtosfix(aabb.position.y) + ", " + rtosfix(aabb.size.x) + ", " + rtosfix(aabb.size.y) + " )");
|
||||
|
||||
} break;
|
||||
case Variant::RECT2I: {
|
||||
|
||||
Rect2i aabb = p_variant;
|
||||
p_store_string_func(p_store_string_ud, "Rect2i( " + itos(aabb.position.x) + ", " + itos(aabb.position.y) + ", " + itos(aabb.size.x) + ", " + itos(aabb.size.y) + " )");
|
||||
|
||||
} break;
|
||||
case Variant::VECTOR3: {
|
||||
|
||||
Vector3 v = p_variant;
|
||||
p_store_string_func(p_store_string_ud, "Vector3( " + rtosfix(v.x) + ", " + rtosfix(v.y) + ", " + rtosfix(v.z) + " )");
|
||||
} break;
|
||||
case Variant::VECTOR3I: {
|
||||
|
||||
Vector3i v = p_variant;
|
||||
p_store_string_func(p_store_string_ud, "Vector3i( " + itos(v.x) + ", " + itos(v.y) + ", " + itos(v.z) + " )");
|
||||
} break;
|
||||
case Variant::PLANE: {
|
||||
|
||||
Plane p = p_variant;
|
||||
p_store_string_func(p_store_string_ud, "Plane( " + rtosfix(p.normal.x) + ", " + rtosfix(p.normal.y) + ", " + rtosfix(p.normal.z) + ", " + rtosfix(p.d) + " )");
|
||||
|
||||
} break;
|
||||
case Variant::AABB: {
|
||||
|
||||
AABB aabb = p_variant;
|
||||
p_store_string_func(p_store_string_ud, "AABB( " + rtosfix(aabb.position.x) + ", " + rtosfix(aabb.position.y) + ", " + rtosfix(aabb.position.z) + ", " + rtosfix(aabb.size.x) + ", " + rtosfix(aabb.size.y) + ", " + rtosfix(aabb.size.z) + " )");
|
||||
|
||||
} break;
|
||||
case Variant::QUAT: {
|
||||
|
||||
Quat quat = p_variant;
|
||||
p_store_string_func(p_store_string_ud, "Quat( " + rtosfix(quat.x) + ", " + rtosfix(quat.y) + ", " + rtosfix(quat.z) + ", " + rtosfix(quat.w) + " )");
|
||||
|
||||
} break;
|
||||
case Variant::TRANSFORM2D: {
|
||||
|
||||
String s = "Transform2D( ";
|
||||
Transform2D m3 = p_variant;
|
||||
for (int i = 0; i < 3; i++) {
|
||||
for (int j = 0; j < 2; j++) {
|
||||
|
||||
if (i != 0 || j != 0)
|
||||
s += ", ";
|
||||
s += rtosfix(m3.elements[i][j]);
|
||||
@@ -1593,12 +1475,10 @@ Error VariantWriter::write(const Variant &p_variant, StoreStringFunc p_store_str
|
||||
|
||||
} break;
|
||||
case Variant::BASIS: {
|
||||
|
||||
String s = "Basis( ";
|
||||
Basis m3 = p_variant;
|
||||
for (int i = 0; i < 3; i++) {
|
||||
for (int j = 0; j < 3; j++) {
|
||||
|
||||
if (i != 0 || j != 0)
|
||||
s += ", ";
|
||||
s += rtosfix(m3.elements[i][j]);
|
||||
@@ -1609,13 +1489,11 @@ Error VariantWriter::write(const Variant &p_variant, StoreStringFunc p_store_str
|
||||
|
||||
} break;
|
||||
case Variant::TRANSFORM: {
|
||||
|
||||
String s = "Transform( ";
|
||||
Transform t = p_variant;
|
||||
Basis &m3 = t.basis;
|
||||
for (int i = 0; i < 3; i++) {
|
||||
for (int j = 0; j < 3; j++) {
|
||||
|
||||
if (i != 0 || j != 0)
|
||||
s += ", ";
|
||||
s += rtosfix(m3.elements[i][j]);
|
||||
@@ -1629,13 +1507,11 @@ Error VariantWriter::write(const Variant &p_variant, StoreStringFunc p_store_str
|
||||
|
||||
// misc types
|
||||
case Variant::COLOR: {
|
||||
|
||||
Color c = p_variant;
|
||||
p_store_string_func(p_store_string_ud, "Color( " + rtosfix(c.r) + ", " + rtosfix(c.g) + ", " + rtosfix(c.b) + ", " + rtosfix(c.a) + " )");
|
||||
|
||||
} break;
|
||||
case Variant::STRING_NAME: {
|
||||
|
||||
String str = p_variant;
|
||||
|
||||
str = "@\"" + str.c_escape() + "\"";
|
||||
@@ -1643,7 +1519,6 @@ Error VariantWriter::write(const Variant &p_variant, StoreStringFunc p_store_str
|
||||
|
||||
} break;
|
||||
case Variant::NODE_PATH: {
|
||||
|
||||
String str = p_variant;
|
||||
|
||||
str = "NodePath(\"" + str.c_escape() + "\")";
|
||||
@@ -1652,7 +1527,6 @@ Error VariantWriter::write(const Variant &p_variant, StoreStringFunc p_store_str
|
||||
} break;
|
||||
|
||||
case Variant::OBJECT: {
|
||||
|
||||
Object *obj = p_variant;
|
||||
|
||||
if (!obj) {
|
||||
@@ -1667,13 +1541,11 @@ Error VariantWriter::write(const Variant &p_variant, StoreStringFunc p_store_str
|
||||
|
||||
//try external function
|
||||
if (p_encode_res_func) {
|
||||
|
||||
res_text = p_encode_res_func(p_encode_res_ud, res);
|
||||
}
|
||||
|
||||
//try path because it's a file
|
||||
if (res_text == String() && res->get_path().is_resource_file()) {
|
||||
|
||||
//external resource
|
||||
String path = res->get_path();
|
||||
res_text = "Resource( \"" + path + "\")";
|
||||
@@ -1694,7 +1566,6 @@ Error VariantWriter::write(const Variant &p_variant, StoreStringFunc p_store_str
|
||||
obj->get_property_list(&props);
|
||||
bool first = true;
|
||||
for (List<PropertyInfo>::Element *E = props.front(); E; E = E->next()) {
|
||||
|
||||
if (E->get().usage & PROPERTY_USAGE_STORAGE || E->get().usage & PROPERTY_USAGE_SCRIPT_VARIABLE) {
|
||||
//must be serialized
|
||||
|
||||
@@ -1714,7 +1585,6 @@ Error VariantWriter::write(const Variant &p_variant, StoreStringFunc p_store_str
|
||||
} break;
|
||||
|
||||
case Variant::DICTIONARY: {
|
||||
|
||||
Dictionary dict = p_variant;
|
||||
|
||||
List<Variant> keys;
|
||||
@@ -1723,7 +1593,6 @@ Error VariantWriter::write(const Variant &p_variant, StoreStringFunc p_store_str
|
||||
|
||||
p_store_string_func(p_store_string_ud, "{\n");
|
||||
for (List<Variant>::Element *E = keys.front(); E; E = E->next()) {
|
||||
|
||||
/*
|
||||
if (!_check_type(dict[E->get()]))
|
||||
continue;
|
||||
@@ -1739,12 +1608,10 @@ Error VariantWriter::write(const Variant &p_variant, StoreStringFunc p_store_str
|
||||
|
||||
} break;
|
||||
case Variant::ARRAY: {
|
||||
|
||||
p_store_string_func(p_store_string_ud, "[ ");
|
||||
Array array = p_variant;
|
||||
int len = array.size();
|
||||
for (int i = 0; i < len; i++) {
|
||||
|
||||
if (i > 0)
|
||||
p_store_string_func(p_store_string_ud, ", ");
|
||||
write(array[i], p_store_string_func, p_store_string_ud, p_encode_res_func, p_encode_res_ud);
|
||||
@@ -1754,7 +1621,6 @@ Error VariantWriter::write(const Variant &p_variant, StoreStringFunc p_store_str
|
||||
} break;
|
||||
|
||||
case Variant::PACKED_BYTE_ARRAY: {
|
||||
|
||||
p_store_string_func(p_store_string_ud, "PackedByteArray( ");
|
||||
String s;
|
||||
Vector<uint8_t> data = p_variant;
|
||||
@@ -1762,7 +1628,6 @@ Error VariantWriter::write(const Variant &p_variant, StoreStringFunc p_store_str
|
||||
const uint8_t *ptr = data.ptr();
|
||||
|
||||
for (int i = 0; i < len; i++) {
|
||||
|
||||
if (i > 0)
|
||||
p_store_string_func(p_store_string_ud, ", ");
|
||||
|
||||
@@ -1773,14 +1638,12 @@ Error VariantWriter::write(const Variant &p_variant, StoreStringFunc p_store_str
|
||||
|
||||
} break;
|
||||
case Variant::PACKED_INT32_ARRAY: {
|
||||
|
||||
p_store_string_func(p_store_string_ud, "PackedInt32Array( ");
|
||||
Vector<int32_t> data = p_variant;
|
||||
int32_t len = data.size();
|
||||
const int32_t *ptr = data.ptr();
|
||||
|
||||
for (int32_t i = 0; i < len; i++) {
|
||||
|
||||
if (i > 0)
|
||||
p_store_string_func(p_store_string_ud, ", ");
|
||||
|
||||
@@ -1791,14 +1654,12 @@ Error VariantWriter::write(const Variant &p_variant, StoreStringFunc p_store_str
|
||||
|
||||
} break;
|
||||
case Variant::PACKED_INT64_ARRAY: {
|
||||
|
||||
p_store_string_func(p_store_string_ud, "PackedInt64Array( ");
|
||||
Vector<int64_t> data = p_variant;
|
||||
int64_t len = data.size();
|
||||
const int64_t *ptr = data.ptr();
|
||||
|
||||
for (int64_t i = 0; i < len; i++) {
|
||||
|
||||
if (i > 0)
|
||||
p_store_string_func(p_store_string_ud, ", ");
|
||||
|
||||
@@ -1809,14 +1670,12 @@ Error VariantWriter::write(const Variant &p_variant, StoreStringFunc p_store_str
|
||||
|
||||
} break;
|
||||
case Variant::PACKED_FLOAT32_ARRAY: {
|
||||
|
||||
p_store_string_func(p_store_string_ud, "PackedFloat32Array( ");
|
||||
Vector<float> data = p_variant;
|
||||
int len = data.size();
|
||||
const float *ptr = data.ptr();
|
||||
|
||||
for (int i = 0; i < len; i++) {
|
||||
|
||||
if (i > 0)
|
||||
p_store_string_func(p_store_string_ud, ", ");
|
||||
p_store_string_func(p_store_string_ud, rtosfix(ptr[i]));
|
||||
@@ -1826,14 +1685,12 @@ Error VariantWriter::write(const Variant &p_variant, StoreStringFunc p_store_str
|
||||
|
||||
} break;
|
||||
case Variant::PACKED_FLOAT64_ARRAY: {
|
||||
|
||||
p_store_string_func(p_store_string_ud, "PackedFloat64Array( ");
|
||||
Vector<double> data = p_variant;
|
||||
int len = data.size();
|
||||
const double *ptr = data.ptr();
|
||||
|
||||
for (int i = 0; i < len; i++) {
|
||||
|
||||
if (i > 0)
|
||||
p_store_string_func(p_store_string_ud, ", ");
|
||||
p_store_string_func(p_store_string_ud, rtosfix(ptr[i]));
|
||||
@@ -1843,7 +1700,6 @@ Error VariantWriter::write(const Variant &p_variant, StoreStringFunc p_store_str
|
||||
|
||||
} break;
|
||||
case Variant::PACKED_STRING_ARRAY: {
|
||||
|
||||
p_store_string_func(p_store_string_ud, "PackedStringArray( ");
|
||||
Vector<String> data = p_variant;
|
||||
int len = data.size();
|
||||
@@ -1853,7 +1709,6 @@ Error VariantWriter::write(const Variant &p_variant, StoreStringFunc p_store_str
|
||||
//write_string("\n");
|
||||
|
||||
for (int i = 0; i < len; i++) {
|
||||
|
||||
if (i > 0)
|
||||
p_store_string_func(p_store_string_ud, ", ");
|
||||
String str = ptr[i];
|
||||
@@ -1864,14 +1719,12 @@ Error VariantWriter::write(const Variant &p_variant, StoreStringFunc p_store_str
|
||||
|
||||
} break;
|
||||
case Variant::PACKED_VECTOR2_ARRAY: {
|
||||
|
||||
p_store_string_func(p_store_string_ud, "PackedVector2Array( ");
|
||||
Vector<Vector2> data = p_variant;
|
||||
int len = data.size();
|
||||
const Vector2 *ptr = data.ptr();
|
||||
|
||||
for (int i = 0; i < len; i++) {
|
||||
|
||||
if (i > 0)
|
||||
p_store_string_func(p_store_string_ud, ", ");
|
||||
p_store_string_func(p_store_string_ud, rtosfix(ptr[i].x) + ", " + rtosfix(ptr[i].y));
|
||||
@@ -1881,14 +1734,12 @@ Error VariantWriter::write(const Variant &p_variant, StoreStringFunc p_store_str
|
||||
|
||||
} break;
|
||||
case Variant::PACKED_VECTOR3_ARRAY: {
|
||||
|
||||
p_store_string_func(p_store_string_ud, "PackedVector3Array( ");
|
||||
Vector<Vector3> data = p_variant;
|
||||
int len = data.size();
|
||||
const Vector3 *ptr = data.ptr();
|
||||
|
||||
for (int i = 0; i < len; i++) {
|
||||
|
||||
if (i > 0)
|
||||
p_store_string_func(p_store_string_ud, ", ");
|
||||
p_store_string_func(p_store_string_ud, rtosfix(ptr[i].x) + ", " + rtosfix(ptr[i].y) + ", " + rtosfix(ptr[i].z));
|
||||
@@ -1898,7 +1749,6 @@ Error VariantWriter::write(const Variant &p_variant, StoreStringFunc p_store_str
|
||||
|
||||
} break;
|
||||
case Variant::PACKED_COLOR_ARRAY: {
|
||||
|
||||
p_store_string_func(p_store_string_ud, "PackedColorArray( ");
|
||||
|
||||
Vector<Color> data = p_variant;
|
||||
@@ -1906,7 +1756,6 @@ Error VariantWriter::write(const Variant &p_variant, StoreStringFunc p_store_str
|
||||
const Color *ptr = data.ptr();
|
||||
|
||||
for (int i = 0; i < len; i++) {
|
||||
|
||||
if (i > 0)
|
||||
p_store_string_func(p_store_string_ud, ", ");
|
||||
|
||||
@@ -1923,14 +1772,12 @@ Error VariantWriter::write(const Variant &p_variant, StoreStringFunc p_store_str
|
||||
}
|
||||
|
||||
static Error _write_to_str(void *ud, const String &p_string) {
|
||||
|
||||
String *str = (String *)ud;
|
||||
(*str) += p_string;
|
||||
return OK;
|
||||
}
|
||||
|
||||
Error VariantWriter::write_to_string(const Variant &p_variant, String &r_string, EncodeResourceFunc p_encode_res_func, void *p_encode_res_ud) {
|
||||
|
||||
r_string = String();
|
||||
|
||||
return write(p_variant, _write_to_str, &r_string, p_encode_res_func, p_encode_res_ud);
|
||||
|
||||
Reference in New Issue
Block a user