namespace mgaia.Utils.Persistence
{
	/// <summary>
	/// Interface para acesso a um arquivo de persistência
	/// </summary>
	/// <owner>Victor</owner>
	public interface IPersistenceFileInterface
	{
		/// <summary>
		/// Testa se há uma chave cadastrada no arquivo
		/// </summary>
		bool HasKey(string key);

		/// <summary>
		/// Retorna um float armazenado na chave, caso não haja nenhum registro, retorna o valor padrão enviado
		/// </summary>
		float GetFloat(string key, float defaultValue);

		/// <summary>
		/// Retorna um int32 armazenado na chave, caso não haja nenhum registro, retorna o valor padrão enviado
		/// </summary>
		int GetInt32(string key, int defaultValue);

		/// <summary>
		/// Retorna uma string armazenada na chave, caso não haja nenhum registro, retorna o valor padrão enviado
		/// </summary>
		string GetString(string key, string defaultValue);

		/// <summary>
		/// Registra um float na chave
		/// </summary>
		void SetFloat(string key, float value);

		/// <summary>
		/// Registra um int32 na chave
		/// </summary>
		void SetInt32(string key, int value);

		/// <summary>
		/// Registra uma string na chave
		/// </summary>
		void SetString(string key, string value);

		/// <summary>
		/// Deleta todas as chaves cadastradas no arquivo
		/// </summary>
		void DeleteAll();
		
		/// <summary>
		/// Deleta a chave enviada do arquivo
		/// </summary>
		void DeleteKey(string key);

		/// <summary>
		/// Salva as alterações
		/// </summary>
		void Save();
	}
}