/*
This file is part of Ingen.
Copyright 2007-2012 David Robillard
Ingen is free software: you can redistribute it and/or modify it under the
terms of the GNU Affero General Public License as published by the Free
Software Foundation, either version 3 of the License, or any later version.
Ingen is distributed in the hope that it will be useful, but WITHOUT ANY
WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
A PARTICULAR PURPOSE. See the GNU Affero General Public License for details.
You should have received a copy of the GNU Affero General Public License
along with Ingen. If not, see .
*/
#ifndef INGEN_ENGINE_LV2INFO_HPP
#define INGEN_ENGINE_LV2INFO_HPP
#include "ingen/World.hpp"
#include "lilv/lilv.h"
#include "raul/Noncopyable.hpp"
namespace Ingen {
namespace Server {
/** Stuff that may need to be passed to an LV2 plugin (i.e. LV2 features).
*/
class LV2Info : public Raul::Noncopyable {
public:
explicit LV2Info(Ingen::World* world);
~LV2Info();
LilvNode* const atom_AtomPort;
LilvNode* const atom_bufferType;
LilvNode* const atom_supports;
LilvNode* const lv2_AudioPort;
LilvNode* const lv2_CVPort;
LilvNode* const lv2_ControlPort;
LilvNode* const lv2_InputPort;
LilvNode* const lv2_OutputPort;
LilvNode* const lv2_default;
LilvNode* const lv2_portProperty;
LilvNode* const lv2_sampleRate;
LilvNode* const morph_AutoMorphPort;
LilvNode* const morph_MorphPort;
LilvNode* const morph_supportsType;
LilvNode* const rsz_minimumSize;
LilvNode* const work_schedule;
Ingen::World& world() { return *_world; }
LilvWorld* lv2_world() { return _world->lilv_world(); }
private:
Ingen::World* _world;
};
} // namespace Server
} // namespace Ingen
#endif // INGEN_ENGINE_LV2INFO_HPP