Merge pull request #53588 from mashumafi/stringify

This commit is contained in:
Rémi Verschelde 2021-10-09 11:00:16 +02:00 committed by GitHub
commit e8c89b2b91
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 103 additions and 79 deletions

View file

@ -1624,6 +1624,19 @@ Variant::operator String() const {
return stringify(stack);
}
template <class T>
String stringify_vector(const T &vec, List<const void *> &stack) {
String str("[");
for (int i = 0; i < vec.size(); i++) {
if (i > 0) {
str += ", ";
}
str = str + Variant(vec[i]).stringify(stack);
}
str += "]";
return str;
}
String Variant::stringify(List<const void *> &stack) const {
switch (type) {
case NIL:
@ -1703,88 +1716,31 @@ String Variant::stringify(List<const void *> &stack) const {
return str;
} break;
case PACKED_VECTOR2_ARRAY: {
Vector<Vector2> vec = operator Vector<Vector2>();
String str("[");
for (int i = 0; i < vec.size(); i++) {
if (i > 0) {
str += ", ";
}
str = str + Variant(vec[i]);
}
str += "]";
return str;
return stringify_vector(operator Vector<Vector2>(), stack);
} break;
case PACKED_VECTOR3_ARRAY: {
Vector<Vector3> vec = operator Vector<Vector3>();
String str("[");
for (int i = 0; i < vec.size(); i++) {
if (i > 0) {
str += ", ";
}
str = str + Variant(vec[i]);
}
str += "]";
return str;
return stringify_vector(operator Vector<Vector3>(), stack);
} break;
case PACKED_COLOR_ARRAY: {
return stringify_vector(operator Vector<Color>(), stack);
} break;
case PACKED_STRING_ARRAY: {
Vector<String> vec = operator Vector<String>();
String str("[");
for (int i = 0; i < vec.size(); i++) {
if (i > 0) {
str += ", ";
}
str = str + vec[i];
}
str += "]";
return str;
return stringify_vector(operator Vector<String>(), stack);
} break;
case PACKED_BYTE_ARRAY: {
return stringify_vector(operator Vector<uint8_t>(), stack);
} break;
case PACKED_INT32_ARRAY: {
Vector<int32_t> vec = operator Vector<int32_t>();
String str("[");
for (int i = 0; i < vec.size(); i++) {
if (i > 0) {
str += ", ";
}
str = str + itos(vec[i]);
}
str += "]";
return str;
return stringify_vector(operator Vector<int32_t>(), stack);
} break;
case PACKED_INT64_ARRAY: {
Vector<int64_t> vec = operator Vector<int64_t>();
String str("[");
for (int i = 0; i < vec.size(); i++) {
if (i > 0) {
str += ", ";
}
str = str + itos(vec[i]);
}
str += "]";
return str;
return stringify_vector(operator Vector<int64_t>(), stack);
} break;
case PACKED_FLOAT32_ARRAY: {
Vector<float> vec = operator Vector<float>();
String str("[");
for (int i = 0; i < vec.size(); i++) {
if (i > 0) {
str += ", ";
}
str = str + rtos(vec[i]);
}
str += "]";
return str;
return stringify_vector(operator Vector<float>(), stack);
} break;
case PACKED_FLOAT64_ARRAY: {
Vector<double> vec = operator Vector<double>();
String str("[");
for (int i = 0; i < vec.size(); i++) {
if (i > 0) {
str += ", ";
}
str = str + rtos(vec[i]);
}
str += "]";
return str;
return stringify_vector(operator Vector<double>(), stack);
} break;
case ARRAY: {
Array arr = operator Array();
@ -1793,16 +1749,8 @@ String Variant::stringify(List<const void *> &stack) const {
}
stack.push_back(arr.id());
String str("[");
for (int i = 0; i < arr.size(); i++) {
if (i) {
str += ", ";
}
String str = stringify_vector(arr, stack);
str += arr[i].stringify(stack);
}
str += "]";
stack.erase(arr.id());
return str;

View file

@ -0,0 +1,42 @@
func test():
print(true, false)
print(-1, 0, 1)
print(-1.25, 0.25, 1.25)
print("hello world")
print(Vector2(0.25, 0.25))
print(Vector2i(0, 0))
print(Rect2(0.25, 0.25, 0.5, 0.5))
print(Rect2i(0, 0, 0, 0))
print(Vector3(0.25, 0.25, 0.25))
print(Vector3i(0, 0, 0))
print(Transform2D.IDENTITY)
print(Plane(1, 2, 3, 4))
print(Quaternion(1, 2, 3, 4))
print(AABB(Vector3.ZERO, Vector3.ONE))
print(Basis(Vector3(0, 0, 0)))
print(Transform3D.IDENTITY)
print(Color(1, 2, 3, 4))
print(StringName("hello"))
print(NodePath("hello/world"))
var node := Node.new()
print(RID(node))
print(node.get_name)
print(node.property_list_changed)
node.free()
print({"hello":123})
print(["hello", 123])
print(PackedByteArray([-1, 0, 1]))
print(PackedInt32Array([-1, 0, 1]))
print(PackedInt64Array([-1, 0, 1]))
print(PackedFloat32Array([-1, 0, 1]))
print(PackedFloat64Array([-1, 0, 1]))
print(PackedStringArray(["hello", "world"]))
print(PackedVector2Array([Vector2.ONE, Vector2.ZERO]))
print(PackedVector3Array([Vector3.ONE, Vector3.ZERO]))
print(PackedColorArray([Color.RED, Color.BLUE, Color.GREEN]))

View file

@ -0,0 +1,34 @@
GDTEST_OK
truefalse
-101
-1.250.251.25
hello world
(0.25, 0.25)
(0, 0)
[P: (0.25, 0.25), S: (0.5, 0.5)]
[P: (0, 0), S: (0, 0)]
(0.25, 0.25, 0.25)
(0, 0, 0)
[X: (1, 0), Y: (0, 1), O: (0, 0)]
[N: (1, 2, 3), D: 4]
(1, 2, 3, 4)
[P: (0, 0, 0), S: (1, 1, 1)]
[X: (1, 0, 0), Y: (0, 1, 0), Z: (0, 0, 1)]
[X: (1, 0, 0), Y: (0, 1, 0), Z: (0, 0, 1), O: (0, 0, 0)]
(1, 2, 3, 4)
hello
hello/world
RID(0)
Node::get_name
Node::[signal]property_list_changed
{hello:123}
[hello, 123]
[255, 0, 1]
[-1, 0, 1]
[-1, 0, 1]
[-1, 0, 1]
[-1, 0, 1]
[hello, world]
[(1, 1), (0, 0)]
[(1, 1, 1), (0, 0, 0)]
[(1, 0, 0, 1), (0, 0, 1, 1), (0, 1, 0, 1)]