<?xml version="1.0" encoding="UTF-8" ?>
<class name="int" version="4.0">
	<brief_description>
		Integer built-in type.
	</brief_description>
	<description>
		Signed 64-bit integer type.
		It can take values in the interval [code][-2^63, 2^63 - 1][/code], i.e. [code][-9223372036854775808, 9223372036854775807][/code]. Exceeding those bounds will wrap around.
		[int] is a [Variant] type, and will thus be used when assigning an integer value to a [Variant]. It can also be enforced with the [code]: int[/code] type hint.
		[codeblocks]
		[gdscript]
		var my_variant = 0 # int, value 0.
		my_variant += 4.2 # float, value 4.2.
		var my_int: int = 1 # int, value 1.
		my_int = 4.2 # int, value 4, the right value is implicitly cast to int.
		my_int = int("6.7") # int, value 6, the String is explicitly cast with int.
		var max_int = 9223372036854775807
		print(max_int) # 9223372036854775807, OK.
		max_int += 1
		print(max_int) # -9223372036854775808, we overflowed and wrapped around.
		[/gdscript]
		[csharp]
		int myInt = (int)"6.7".ToFloat(); // int, value 6, the String is explicitly cast with int.
		// We have to use `long` here, because GDSript's `int`
		// is 64 bits long while C#'s `int` is only 32 bits.
		long maxInt = 9223372036854775807;
		GD.Print(maxInt); // 9223372036854775807, OK.
		maxInt++;
		GD.Print(maxInt); // -9223372036854775808, we overflowed and wrapped around.

		// Alternatively, if we used C#'s 32-bit `int` type, the maximum value is much smaller:
		int halfInt = 2147483647;
		GD.Print(halfInt); // 2147483647, OK.
		halfInt++;
		GD.Print(halfInt); // -2147483648, we overflowed and wrapped around.
		[/csharp]
		[/codeblocks]
	</description>
	<tutorials>
	</tutorials>
	<methods>
		<method name="int" qualifiers="constructor">
			<return type="int">
			</return>
			<description>
				Constructs a default-initialized [int] set to [code]0[/code].
			</description>
		</method>
		<method name="int" qualifiers="constructor">
			<return type="int">
			</return>
			<argument index="0" name="from" type="int">
			</argument>
			<description>
				Constructs an [int] as a copy of the given [int].
			</description>
		</method>
		<method name="int" qualifiers="constructor">
			<return type="int">
			</return>
			<argument index="0" name="from" type="bool">
			</argument>
			<description>
				Cast a [bool] value to an integer value, [code]int(true)[/code] will be equals to 1 and [code]int(false)[/code] will be equals to 0.
			</description>
		</method>
		<method name="int" qualifiers="constructor">
			<return type="int">
			</return>
			<argument index="0" name="from" type="float">
			</argument>
			<description>
				Cast a float value to an integer value, this method simply removes the number fractions (i.e. rounds [code]from[/code] towards zero), so for example [code]int(2.7)[/code] will be equals to 2, [code]int(0.1)[/code] will be equals to 0 and [code]int(-2.7)[/code] will be equals to -2. This operation is also called truncation.
			</description>
		</method>
		<method name="operator !=" qualifiers="operator">
			<return type="bool">
			</return>
			<argument index="0" name="right" type="float">
			</argument>
			<description>
			</description>
		</method>
		<method name="operator !=" qualifiers="operator">
			<return type="bool">
			</return>
			<argument index="0" name="right" type="int">
			</argument>
			<description>
			</description>
		</method>
		<method name="operator %" qualifiers="operator">
			<return type="int">
			</return>
			<argument index="0" name="right" type="int">
			</argument>
			<description>
			</description>
		</method>
		<method name="operator &amp;" qualifiers="operator">
			<return type="int">
			</return>
			<argument index="0" name="right" type="int">
			</argument>
			<description>
			</description>
		</method>
		<method name="operator *" qualifiers="operator">
			<return type="float">
			</return>
			<argument index="0" name="right" type="float">
			</argument>
			<description>
			</description>
		</method>
		<method name="operator *" qualifiers="operator">
			<return type="int">
			</return>
			<argument index="0" name="right" type="int">
			</argument>
			<description>
			</description>
		</method>
		<method name="operator *" qualifiers="operator">
			<return type="Vector2">
			</return>
			<argument index="0" name="right" type="Vector2">
			</argument>
			<description>
			</description>
		</method>
		<method name="operator *" qualifiers="operator">
			<return type="Vector2i">
			</return>
			<argument index="0" name="right" type="Vector2i">
			</argument>
			<description>
			</description>
		</method>
		<method name="operator *" qualifiers="operator">
			<return type="Vector3">
			</return>
			<argument index="0" name="right" type="Vector3">
			</argument>
			<description>
			</description>
		</method>
		<method name="operator *" qualifiers="operator">
			<return type="Vector3i">
			</return>
			<argument index="0" name="right" type="Vector3i">
			</argument>
			<description>
			</description>
		</method>
		<method name="operator *" qualifiers="operator">
			<return type="Quat">
			</return>
			<argument index="0" name="right" type="Quat">
			</argument>
			<description>
			</description>
		</method>
		<method name="operator *" qualifiers="operator">
			<return type="Color">
			</return>
			<argument index="0" name="right" type="Color">
			</argument>
			<description>
			</description>
		</method>
		<method name="operator +" qualifiers="operator">
			<return type="int">
			</return>
			<description>
			</description>
		</method>
		<method name="operator +" qualifiers="operator">
			<return type="float">
			</return>
			<argument index="0" name="right" type="float">
			</argument>
			<description>
			</description>
		</method>
		<method name="operator +" qualifiers="operator">
			<return type="int">
			</return>
			<argument index="0" name="right" type="int">
			</argument>
			<description>
			</description>
		</method>
		<method name="operator -" qualifiers="operator">
			<return type="int">
			</return>
			<description>
			</description>
		</method>
		<method name="operator -" qualifiers="operator">
			<return type="float">
			</return>
			<argument index="0" name="right" type="float">
			</argument>
			<description>
			</description>
		</method>
		<method name="operator -" qualifiers="operator">
			<return type="int">
			</return>
			<argument index="0" name="right" type="int">
			</argument>
			<description>
			</description>
		</method>
		<method name="operator /" qualifiers="operator">
			<return type="float">
			</return>
			<argument index="0" name="right" type="float">
			</argument>
			<description>
			</description>
		</method>
		<method name="operator /" qualifiers="operator">
			<return type="int">
			</return>
			<argument index="0" name="right" type="int">
			</argument>
			<description>
			</description>
		</method>
		<method name="operator &lt;" qualifiers="operator">
			<return type="bool">
			</return>
			<argument index="0" name="right" type="float">
			</argument>
			<description>
			</description>
		</method>
		<method name="operator &lt;" qualifiers="operator">
			<return type="bool">
			</return>
			<argument index="0" name="right" type="int">
			</argument>
			<description>
			</description>
		</method>
		<method name="operator &lt;&lt;" qualifiers="operator">
			<return type="int">
			</return>
			<argument index="0" name="right" type="int">
			</argument>
			<description>
			</description>
		</method>
		<method name="operator &lt;=" qualifiers="operator">
			<return type="bool">
			</return>
			<argument index="0" name="right" type="float">
			</argument>
			<description>
			</description>
		</method>
		<method name="operator &lt;=" qualifiers="operator">
			<return type="bool">
			</return>
			<argument index="0" name="right" type="int">
			</argument>
			<description>
			</description>
		</method>
		<method name="operator ==" qualifiers="operator">
			<return type="bool">
			</return>
			<argument index="0" name="right" type="float">
			</argument>
			<description>
			</description>
		</method>
		<method name="operator ==" qualifiers="operator">
			<return type="bool">
			</return>
			<argument index="0" name="right" type="int">
			</argument>
			<description>
			</description>
		</method>
		<method name="operator &gt;" qualifiers="operator">
			<return type="bool">
			</return>
			<argument index="0" name="right" type="float">
			</argument>
			<description>
			</description>
		</method>
		<method name="operator &gt;" qualifiers="operator">
			<return type="bool">
			</return>
			<argument index="0" name="right" type="int">
			</argument>
			<description>
			</description>
		</method>
		<method name="operator &gt;=" qualifiers="operator">
			<return type="bool">
			</return>
			<argument index="0" name="right" type="float">
			</argument>
			<description>
			</description>
		</method>
		<method name="operator &gt;=" qualifiers="operator">
			<return type="bool">
			</return>
			<argument index="0" name="right" type="int">
			</argument>
			<description>
			</description>
		</method>
		<method name="operator &gt;&gt;" qualifiers="operator">
			<return type="int">
			</return>
			<argument index="0" name="right" type="int">
			</argument>
			<description>
			</description>
		</method>
		<method name="operator ^" qualifiers="operator">
			<return type="int">
			</return>
			<argument index="0" name="right" type="int">
			</argument>
			<description>
			</description>
		</method>
		<method name="operator |" qualifiers="operator">
			<return type="int">
			</return>
			<argument index="0" name="right" type="int">
			</argument>
			<description>
			</description>
		</method>
		<method name="operator ~" qualifiers="operator">
			<return type="int">
			</return>
			<description>
			</description>
		</method>
	</methods>
	<constants>
	</constants>
</class>