
native enum KeyValues3Type_t;


native class KeyValues3
{
	void DeleteThis(); [delete]
	static KeyValues3 Create(); [new]

	bool IsArray();
	bool IsTable();

	KeyValues3Type_t GetType();

	bool GetValueBool();
	int GetValueInt();
	long GetValueInt64();
	ulong GetValueUint64();
	float GetValueFloat();
	double GetValueDouble();
	string GetValueString();
	Vector3 GetValueVector();
	Color GetValueColor();

	void SetValueBool( bool o );
	void SetValueString( string o );
	void SetValueResourceString( string o );
	void SetValueInt( int o );
	void SetValueFloat( float o );

	void SetMemberString( CastTo[CKV3MemberName] string key, string value );
	void SetMemberInt( CastTo[CKV3MemberName] string key, int value );
	void SetMemberFloat( CastTo[CKV3MemberName] string key, float value );

	string GetMemberString( CastTo[CKV3MemberName] string key );
	int GetMemberInt( CastTo[CKV3MemberName] string key, int defaultValue );
	float GetMemberFloat( CastTo[CKV3MemberName] string key, float defaultValue );
	Vector3 GetMemberVector( CastTo[CKV3MemberName] string key, Vector3 defaultValue );

	void SetToEmptyArray();
	int GetArrayLength();
	KeyValues3 ArrayAddToTail();
	KeyValues3 GetArrayElement( int i );

	KeyValues3 FindOrCreateMember( CastTo[CKV3MemberName] string name );

	void SetToEmptyTable();

	int GetMemberCount();
	KeyValues3 GetMember( int idx );
	string GetMemberName( int idx );
}
