---@meta
---@class cc.Properties
local Properties={ }
cc.Properties=Properties
---* Returns the value of a variable that is set in this Properties object.
---* Variables take on the format ${name} and are inherited from parent Property objects.
---* param name Name of the variable to get.
---* param defaultValue Value to return if the variable is not found.
---* return The value of the specified variable, or defaultValue if not found.
---@param name char
---@param defaultValue char
---@return char
function Properties:getVariable (name,defaultValue) end
---* Get the value of the given property as a string. This can always be retrieved,
---* whatever the intended type of the property.
---* param name The name of the property to interpret, or NULL to return the current property's value.
---* param defaultValue The default value to return if the specified property does not exist.
---* return The value of the given property as a string, or the empty string if no property with that name exists.
---@return char
function Properties:getString () end
---* Interpret the value of the given property as a long integer.
---* If the property does not exist, zero will be returned.
---* If the property exists but could not be scanned, an error will be logged and zero will be returned.
---* param name The name of the property to interpret, or NULL to return the current property's value.
---* return The value of the given property interpreted as a long.
---* Zero if the property does not exist or could not be scanned.
---@return long
function Properties:getLong () end
---@overload fun():self
---@overload fun(char:char,boolean:boolean,boolean:boolean):self
---@param id char
---@param searchNames boolean
---@param recurse boolean
---@return self
function Properties:getNamespace (id,searchNames,recurse) end
---* Gets the file path for the given property if the file exists.
---* This method will first search for the file relative to the working directory.
---* If the file is not found then it will search relative to the directory the bundle file is in.
---* param name The name of the property.
---* param path The string to copy the path to if the file exists.
---* return True if the property exists and the file exists, false otherwise.
---* script{ignore}
---@param name char
---@param path string
---@return boolean
function Properties:getPath (name,path) end
---* Interpret the value of the given property as a Matrix.
---* If the property does not exist, out will be set to the identity matrix.
---* If the property exists but could not be scanned, an error will be logged and out will be set
---* to the identity matrix.
---* param name The name of the property to interpret, or NULL to return the current property's value.
---* param out The matrix to set to this property's interpreted value.
---* return True on success, false if the property does not exist or could not be scanned.
---@param name char
---@param out mat4_table
---@return boolean
function Properties:getMat4 (name,out) end
---* Check if a property with the given name is specified in this Properties object.
---* param name The name of the property to query.
---* return True if the property exists, false otherwise.
---@param name char
---@return boolean
function Properties:exists (name) end
---* Sets the value of the property with the specified name.
---* If there is no property in this namespace with the current name,
---* one is added. Otherwise, the value of the first property with the
---* specified name is updated.
---* If name is NULL, the value current property (see getNextProperty) is
---* set, unless there is no current property, in which case false
---* is returned.
---* param name The name of the property to set.
---* param value The property value.
---* return True if the property was set, false otherwise.
---@param name char
---@param value char
---@return boolean
function Properties:setString (name,value) end
---* Get the ID of this Property's namespace. The ID should be a unique identifier,
---* but its uniqueness is not enforced.
---* return The ID of this Property's namespace.
---@return char
function Properties:getId () end
---* Rewind the getNextProperty() and getNextNamespace() iterators
---* to the beginning of the file.
---@return self
function Properties:rewind () end
---* Sets the value of the specified variable.
---* param name Name of the variable to set.
---* param value The value to set.
---@param name char
---@param value char
---@return self
function Properties:setVariable (name,value) end
---* Interpret the value of the given property as a boolean.
---* param name The name of the property to interpret, or NULL to return the current property's value.
---* param defaultValue the default value to return if the specified property does not exist within the properties file.
---* return true if the property exists and its value is "true", otherwise false.
---@return boolean
function Properties:getBool () end
---@overload fun(char:char,vec3_table1:vec4_table):self
---@overload fun(char:char,vec3_table:vec3_table):self
---@param name char
---@param out vec3_table
---@return boolean
function Properties:getColor (name,out) end
---* Returns the type of a property.
---* param name The name of the property to interpret, or NULL to return the current property's type.
---* return The type of the property.
---@return int
function Properties:getType () end
---* Get the next namespace.
---@return self
function Properties:getNextNamespace () end
---* Interpret the value of the given property as an integer.
---* If the property does not exist, zero will be returned.
---* If the property exists but could not be scanned, an error will be logged and zero will be returned.
---* param name The name of the property to interpret, or NULL to return the current property's value.
---* return The value of the given property interpreted as an integer.
---* Zero if the property does not exist or could not be scanned.
---@return int
function Properties:getInt () end
---* Interpret the value of the given property as a Vector3.
---* If the property does not exist, out will be set to Vector3(0.0f, 0.0f, 0.0f).
---* If the property exists but could not be scanned, an error will be logged and out will be set
---* to Vector3(0.0f, 0.0f, 0.0f).
---* param name The name of the property to interpret, or NULL to return the current property's value.
---* param out The vector to set to this property's interpreted value.
---* return True on success, false if the property does not exist or could not be scanned.
---@param name char
---@param out vec3_table
---@return boolean
function Properties:getVec3 (name,out) end
---* Interpret the value of the given property as a Vector2.
---* If the property does not exist, out will be set to Vector2(0.0f, 0.0f).
---* If the property exists but could not be scanned, an error will be logged and out will be set
---* to Vector2(0.0f, 0.0f).
---* param name The name of the property to interpret, or NULL to return the current property's value.
---* param out The vector to set to this property's interpreted value.
---* return True on success, false if the property does not exist or could not be scanned.
---@param name char
---@param out vec2_table
---@return boolean
function Properties:getVec2 (name,out) end
---* Interpret the value of the given property as a Vector4.
---* If the property does not exist, out will be set to Vector4(0.0f, 0.0f, 0.0f, 0.0f).
---* If the property exists but could not be scanned, an error will be logged and out will be set
---* to Vector4(0.0f, 0.0f, 0.0f, 0.0f).
---* param name The name of the property to interpret, or NULL to return the current property's value.
---* param out The vector to set to this property's interpreted value.
---* return True on success, false if the property does not exist or could not be scanned.
---@param name char
---@param out vec4_table
---@return boolean
function Properties:getVec4 (name,out) end
---* Get the name of the next property.
---* If a valid next property is returned, the value of the property can be
---* retrieved using any of the get methods in this class, passing NULL for the property name.
---* return The name of the next property, or NULL if there are no properties remaining.
---@return char
function Properties:getNextProperty () end
---* Interpret the value of the given property as a floating-point number.
---* If the property does not exist, zero will be returned.
---* If the property exists but could not be scanned, an error will be logged and zero will be returned.
---* param name The name of the property to interpret, or NULL to return the current property's value.
---* return The value of the given property interpreted as a float.
---* Zero if the property does not exist or could not be scanned.
---@return float
function Properties:getFloat () end
---* Interpret the value of the given property as a Quaternion specified as an axis angle.
---* If the property does not exist, out will be set to Quaternion().
---* If the property exists but could not be scanned, an error will be logged and out will be set
---* to Quaternion().
---* param name The name of the property to interpret, or NULL to return the current property's value.
---* param out The quaternion to set to this property's interpreted value.
---* return True on success, false if the property does not exist or could not be scanned.
---@param name char
---@param out cc.Quaternion
---@return boolean
function Properties:getQuaternionFromAxisAngle (name,out) end
---@overload fun(char:char,vec3_table1:vec4_table):self
---@overload fun(char:char,vec3_table:vec3_table):self
---@param str char
---@param out vec3_table
---@return boolean
function Properties:parseColor (str,out) end
---* Attempts to parse the specified string as a Vector3 value.
---* On error, false is returned and the output is set to all zero values.
---* param str The string to parse.
---* param out The value to populate if successful.
---* return True if a valid Vector3 was parsed, false otherwise.
---@param str char
---@param out vec3_table
---@return boolean
function Properties:parseVec3 (str,out) end
---* Attempts to parse the specified string as an axis-angle value.
---* The specified string is expected to contain four comma-separated
---* values, where the first three values represents the axis and the
---* fourth value represents the angle, in degrees.
---* On error, false is returned and the output is set to all zero values.
---* param str The string to parse.
---* param out A Quaternion populated with the orientation of the axis-angle, if successful.
---* return True if a valid axis-angle was parsed, false otherwise.
---@param str char
---@param out cc.Quaternion
---@return boolean
function Properties:parseAxisAngle (str,out) end
---* Attempts to parse the specified string as a Vector2 value.
---* On error, false is returned and the output is set to all zero values.
---* param str The string to parse.
---* param out The value to populate if successful.
---* return True if a valid Vector2 was parsed, false otherwise.
---@param str char
---@param out vec2_table
---@return boolean
function Properties:parseVec2 (str,out) end
---* Attempts to parse the specified string as a Vector4 value.
---* On error, false is returned and the output is set to all zero values.
---* param str The string to parse.
---* param out The value to populate if successful.
---* return True if a valid Vector4 was parsed, false otherwise.
---@param str char
---@param out vec4_table
---@return boolean
function Properties:parseVec4 (str,out) end