This repository has been archived on 2022-05-21. You can view files and clone it, but cannot push or open issues or pull requests.
glyphs-juke/src/MusicElementFactory.h

38 lines
903 B
C
Raw Normal View History

2021-08-27 04:12:26 +00:00
#pragma once
#include "common.h"
#include "iAllocator.h"
#include "iAudioDevice.h"
#include "iElementFactory.h"
#include "MusicElement.h"
namespace gj {
class MusicElementFactory : public iElementFactory {
public:
MusicElementFactory(MusicElementFactory&&) = delete;
MusicElementFactory(const MusicElementFactory&) = delete;
MusicElementFactory& operator=(MusicElementFactory&&) = delete;
MusicElementFactory& operator=(const MusicElementFactory&) = delete;
MusicElementFactory(iAllocator* alloc, iAudioDevice* audio) :
alloc_(alloc), audio_(audio) {
}
UniqPtr<iElement> Create(Param&& param) override {
if (param.custom.size() != 1) return nullptr;
const std::string name = std::get<std::string>(param.custom[0]);
return alloc_->MakeUniq<iElement, MusicElement>(param.period, audio_, name);
}
private:
iAllocator* alloc_;
iAudioDevice* audio_;
};
}