#pragma once #include "ehs/EHS.h" #include "ehs/Str.h" #include "ehs/io/File.h" namespace ehs { class Audio; class EHS_LIB_IO AudioCodec { private: Str_8 id; UInt_64 hashExt; Str_8 ext; Endianness endianness; bool (*encodeCb)(const AudioCodec* const, Serializer&, const Audio*); bool (*decodeCb)(const AudioCodec* const, Serializer&, Audio*); public: AudioCodec(); AudioCodec(Str_8 id, Str_8 ext, const Endianness end, bool (*encodeCb)(const AudioCodec* const, Serializer&, const Audio*), bool (*decodeCb)(const AudioCodec* const, Serializer&, Audio*)); AudioCodec(AudioCodec&& codec) noexcept; AudioCodec(const AudioCodec& codec); AudioCodec& operator=(AudioCodec&& codec) noexcept; AudioCodec& operator=(const AudioCodec& codec); Str_8 GetId() const; UInt_64 GetHashExt() const; Str_8 GetExt() const; Endianness GetEndianness() const; bool Encode(Serializer& out, const Audio* in) const; bool Decode(Serializer& in, Audio* out) const; }; }