Parcourir la source

Enable sorting of operator methods in class documentation.

Marcel Admiraal il y a 3 ans
Parent
commit
272b3c3728

+ 21 - 10
core/doc_data.h

@@ -70,18 +70,29 @@ public:
 		Vector<int> errors_returned;
 		bool operator<(const MethodDoc &p_method) const {
 			if (name == p_method.name) {
-				// Must be a constructor since there is no overloading.
-				// We want this arbitrary order for a class "Foo":
-				// - 1. Default constructor: Foo()
-				// - 2. Copy constructor: Foo(Foo)
-				// - 3+. Other constructors Foo(Bar, ...) based on first argument's name
-				if (arguments.size() == 0 || p_method.arguments.size() == 0) { // 1.
+				// Must be an operator or a constructor since there is no other overloading
+				if (name.left(8) == "operator") {
+					if (arguments.size() == p_method.arguments.size()) {
+						if (arguments.size() == 0) {
+							return false;
+						}
+						return arguments[0].type < p_method.arguments[0].type;
+					}
 					return arguments.size() < p_method.arguments.size();
+				} else {
+					// Must be a constructor
+					// We want this arbitrary order for a class "Foo":
+					// - 1. Default constructor: Foo()
+					// - 2. Copy constructor: Foo(Foo)
+					// - 3+. Other constructors Foo(Bar, ...) based on first argument's name
+					if (arguments.size() == 0 || p_method.arguments.size() == 0) { // 1.
+						return arguments.size() < p_method.arguments.size();
+					}
+					if (arguments[0].type == return_type || p_method.arguments[0].type == p_method.return_type) { // 2.
+						return (arguments[0].type == return_type) || (p_method.arguments[0].type != p_method.return_type);
+					}
+					return arguments[0] < p_method.arguments[0];
 				}
-				if (arguments[0].type == return_type || p_method.arguments[0].type == p_method.return_type) { // 2.
-					return (arguments[0].type == return_type) || (p_method.arguments[0].type != p_method.return_type);
-				}
-				return arguments[0] < p_method.arguments[0];
 			}
 			return name < p_method.name;
 		}

+ 6 - 6
doc/classes/Transform2D.xml

@@ -225,17 +225,17 @@
 			</description>
 		</operator>
 		<operator name="operator *">
-			<return type="Transform2D" />
-			<argument index="0" name="right" type="Transform2D" />
+			<return type="Rect2" />
+			<argument index="0" name="right" type="Rect2" />
 			<description>
-				Composes these two transformation matrices by multiplying them together. This has the effect of transforming the second transform (the child) by the first transform (the parent).
+				Transforms (multiplies) the [Rect2] by the given [Transform2D] matrix.
 			</description>
 		</operator>
 		<operator name="operator *">
-			<return type="Rect2" />
-			<argument index="0" name="right" type="Rect2" />
+			<return type="Transform2D" />
+			<argument index="0" name="right" type="Transform2D" />
 			<description>
-				Transforms (multiplies) the [Rect2] by the given [Transform2D] matrix.
+				Composes these two transformation matrices by multiplying them together. This has the effect of transforming the second transform (the child) by the first transform (the parent).
 			</description>
 		</operator>
 		<operator name="operator *">

+ 7 - 7
doc/classes/Transform3D.xml

@@ -151,6 +151,13 @@
 				[b]Note:[/b] Due to floating-point precision errors, consider using [method is_equal_approx] instead, which is more reliable.
 			</description>
 		</operator>
+		<operator name="operator *">
+			<return type="AABB" />
+			<argument index="0" name="right" type="AABB" />
+			<description>
+				Transforms (multiplies) the [AABB] by the given [Transform3D] matrix.
+			</description>
+		</operator>
 		<operator name="operator *">
 			<return type="PackedVector3Array" />
 			<argument index="0" name="right" type="PackedVector3Array" />
@@ -165,13 +172,6 @@
 				Composes these two transformation matrices by multiplying them together. This has the effect of transforming the second transform (the child) by the first transform (the parent).
 			</description>
 		</operator>
-		<operator name="operator *">
-			<return type="AABB" />
-			<argument index="0" name="right" type="AABB" />
-			<description>
-				Transforms (multiplies) the [AABB] by the given [Transform3D] matrix.
-			</description>
-		</operator>
 		<operator name="operator *">
 			<return type="Vector3" />
 			<argument index="0" name="right" type="Vector3" />

+ 7 - 7
doc/classes/Vector2.xml

@@ -358,19 +358,19 @@
 		</operator>
 		<operator name="operator *">
 			<return type="Vector2" />
-			<argument index="0" name="right" type="Vector2" />
+			<argument index="0" name="right" type="Transform2D" />
 			<description>
-				Multiplies each component of the [Vector2] by the components of the given [Vector2].
-				[codeblock]
-				print(Vector2(10, 20) * Vector2(3, 4)) # Prints "(30, 80)"
-				[/codeblock]
+				Inversely transforms (multiplies) the [Vector2] by the given [Transform2D] transformation matrix.
 			</description>
 		</operator>
 		<operator name="operator *">
 			<return type="Vector2" />
-			<argument index="0" name="right" type="Transform2D" />
+			<argument index="0" name="right" type="Vector2" />
 			<description>
-				Inversely transforms (multiplies) the [Vector2] by the given [Transform2D] transformation matrix.
+				Multiplies each component of the [Vector2] by the components of the given [Vector2].
+				[codeblock]
+				print(Vector2(10, 20) * Vector2(3, 4)) # Prints "(30, 80)"
+				[/codeblock]
 			</description>
 		</operator>
 		<operator name="operator *">

+ 10 - 10
doc/classes/Vector3.xml

@@ -371,16 +371,6 @@
 				[b]Note:[/b] Due to floating-point precision errors, consider using [method is_equal_approx] instead, which is more reliable.
 			</description>
 		</operator>
-		<operator name="operator *">
-			<return type="Vector3" />
-			<argument index="0" name="right" type="Vector3" />
-			<description>
-				Multiplies each component of the [Vector3] by the components of the given [Vector3].
-				[codeblock]
-				print(Vector3(10, 20, 30) * Vector3(3, 4, 5)) # Prints "(30, 80, 150)"
-				[/codeblock]
-			</description>
-		</operator>
 		<operator name="operator *">
 			<return type="Vector3" />
 			<argument index="0" name="right" type="Basis" />
@@ -402,6 +392,16 @@
 				Inversely transforms (multiplies) the [Vector3] by the given [Transform3D] transformation matrix.
 			</description>
 		</operator>
+		<operator name="operator *">
+			<return type="Vector3" />
+			<argument index="0" name="right" type="Vector3" />
+			<description>
+				Multiplies each component of the [Vector3] by the components of the given [Vector3].
+				[codeblock]
+				print(Vector3(10, 20, 30) * Vector3(3, 4, 5)) # Prints "(30, 80, 150)"
+				[/codeblock]
+			</description>
+		</operator>
 		<operator name="operator *">
 			<return type="Vector3" />
 			<argument index="0" name="right" type="float" />

+ 9 - 9
doc/classes/float.xml

@@ -62,10 +62,13 @@
 			</description>
 		</operator>
 		<operator name="operator *">
-			<return type="float" />
-			<argument index="0" name="right" type="float" />
+			<return type="Color" />
+			<argument index="0" name="right" type="Color" />
 			<description>
-				Multiplies two [float]s.
+				Multiplies each component of the [Color] by the given [float].
+				[codeblock]
+				print(1.5 * Color(0.5, 0.5, 0.5)) # Color(0.75, 0.75, 0.75)
+				[/codeblock]
 			</description>
 		</operator>
 		<operator name="operator *">
@@ -113,13 +116,10 @@
 			</description>
 		</operator>
 		<operator name="operator *">
-			<return type="Color" />
-			<argument index="0" name="right" type="Color" />
+			<return type="float" />
+			<argument index="0" name="right" type="float" />
 			<description>
-				Multiplies each component of the [Color] by the given [float].
-				[codeblock]
-				print(1.5 * Color(0.5, 0.5, 0.5)) # Color(0.75, 0.75, 0.75)
-				[/codeblock]
+				Multiplies two [float]s.
 			</description>
 		</operator>
 		<operator name="operator *">

+ 14 - 14
doc/classes/int.xml

@@ -131,20 +131,6 @@
 				Multiplies each component of the [Quaternion] by the given [int]. This operation is not meaningful on its own, but it can be used as a part of a larger expression.
 			</description>
 		</operator>
-		<operator name="operator *">
-			<return type="int" />
-			<argument index="0" name="right" type="int" />
-			<description>
-				Multiplies two [int]s.
-			</description>
-		</operator>
-		<operator name="operator *">
-			<return type="float" />
-			<argument index="0" name="right" type="float" />
-			<description>
-				Multiplies an [int] and a [float]. The result is a [float].
-			</description>
-		</operator>
 		<operator name="operator *">
 			<return type="Vector2" />
 			<argument index="0" name="right" type="Vector2" />
@@ -176,6 +162,20 @@
 				Multiplies each component of the [Vector3i] by the given [int].
 			</description>
 		</operator>
+		<operator name="operator *">
+			<return type="float" />
+			<argument index="0" name="right" type="float" />
+			<description>
+				Multiplies an [int] and a [float]. The result is a [float].
+			</description>
+		</operator>
+		<operator name="operator *">
+			<return type="int" />
+			<argument index="0" name="right" type="int" />
+			<description>
+				Multiplies two [int]s.
+			</description>
+		</operator>
 		<operator name="operator +">
 			<return type="float" />
 			<argument index="0" name="right" type="float" />