/*
 * This file defines the atc::DataType enum as well as the related utility function get_data-type.
 */

#pragma once

namespace atc {
	/// Represents the data type of the original or decompressed data. The data is always assumed to be stored using the local native byte order (little/big endian).
	enum class DataType {
		uint8, ///< 8-bit unsigned integer
		uint16, ///< 16-bit unsigned integer
		uint32, ///< 32-bit unsigned integer
		uint64, ///< 64-bit unsigned integer
		int8, ///< 8-bit signed integer
		int16, ///< 16-bit signed integer
		int32, ///< 32-bit signed integer
		int64, ///< 64-bit signed integer
		float32, ///< 32-bit float (also known as `float`)
		float64 ///< 64-bit float (also known as `double`)
	};
	/// Returns the corresponding `atc::DataType` value depending on the template type.
	template<typename dtype>
	DataType get_data_type();
}
