Enhance and cleanup stringify for Vector

This commit is contained in:
mashumafi 2021-10-09 03:47:18 +00:00
parent 6f72d9d19f
commit 575d4e00b6
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)]