#pragma once
#include "BuildSettings.h"
#include "tuning.h"
#include <vector>
#include <string>
OPENMPT_NAMESPACE_BEGIN
namespace Tuning {
class CTuningCollection
{
public:
static const char s_FileExtension[4];
enum : size_t { s_nMaxTuningCount = 255 + 255 + 2 };
public:
bool AddTuning(CTuning *pT);
bool AddTuning(std::istream& inStrm);
bool Remove(const std::size_t i);
bool Remove(const CTuning *pT);
CTuning& GetTuning(size_t i) {return *m_Tunings.at(i).get();}
const CTuning& GetTuning(size_t i) const {return *m_Tunings.at(i).get();}
CTuning* GetTuning(const std::string& name);
const CTuning* GetTuning(const std::string& name) const;
size_t GetNumTunings() const {return m_Tunings.size();}
Tuning::SerializationResult Serialize(std::ostream&, const std::string &name) const;
Tuning::SerializationResult Deserialize(std::istream&, std::string &name);
private:
std::vector<std::unique_ptr<CTuning> > m_Tunings;
private:
Tuning::SerializationResult DeserializeOLD(std::istream&, std::string &name);
};
#ifdef MODPLUG_TRACKER
bool UnpackTuningCollection(const CTuningCollection &tc, const mpt::PathString &prefix);
#endif
}
typedef Tuning::CTuningCollection CTuningCollection;
OPENMPT_NAMESPACE_END