summaryrefslogtreecommitdiffstats
path: root/src/serialisation
diff options
context:
space:
mode:
authorDavid Robillard <d@drobilla.net>2009-12-19 21:37:50 +0000
committerDavid Robillard <d@drobilla.net>2009-12-19 21:37:50 +0000
commit19045ab92aa7e996971584a0dc8780d1d58b498b (patch)
tree619c73deb7fd64ce31c5167490d1ae186dbb2695 /src/serialisation
parent4613a2e15f1122ecf6830171de0ab18dc22fefff (diff)
downloadingen-19045ab92aa7e996971584a0dc8780d1d58b498b.tar.gz
ingen-19045ab92aa7e996971584a0dc8780d1d58b498b.tar.bz2
ingen-19045ab92aa7e996971584a0dc8780d1d58b498b.zip
New ingen module (library, not e.g. LV2 plugin) design.
Much cleaner interface and general usage of Ingen as a library. git-svn-id: http://svn.drobilla.net/lad/trunk/ingen@2314 a436a847-0d15-0410-975c-d299462d15a1
Diffstat (limited to 'src/serialisation')
-rw-r--r--src/serialisation/serialisation.cpp36
-rw-r--r--src/serialisation/serialisation.hpp46
2 files changed, 19 insertions, 63 deletions
diff --git a/src/serialisation/serialisation.cpp b/src/serialisation/serialisation.cpp
index 09c4f798..a453f000 100644
--- a/src/serialisation/serialisation.cpp
+++ b/src/serialisation/serialisation.cpp
@@ -16,31 +16,33 @@
*/
#include "raul/Atom.hpp"
+#include "module/Module.hpp"
#include "module/World.hpp"
-#include "serialisation.hpp"
#include "Parser.hpp"
#include "Serialiser.hpp"
-namespace Ingen {
-namespace Serialisation {
+using namespace Ingen;
+struct IngenModule : public Shared::Module {
+ void load(Shared::World* world) {
+ world->parser = SharedPtr<Serialisation::Parser>(
+ new Serialisation::Parser());
+ world->serialiser = SharedPtr<Serialisation::Serialiser>(
+ new Serialisation::Serialiser(*world, world->store));
+ }
+};
-Ingen::Serialisation::Parser*
-new_parser()
-{
- return new Parser();
-}
-
+static IngenModule* module = NULL;
-Ingen::Serialisation::Serialiser*
-new_serialiser(Ingen::Shared::World* world, SharedPtr<Shared::Store> store)
-{
- assert(world->rdf_world);
- return new Serialiser(*world, store);
-}
+extern "C" {
+Shared::Module*
+ingen_module_load() {
+ if (!module)
+ module = new IngenModule();
+ return module;
+}
-} // namespace Serialisation
-} // namespace Ingen
+} // extern "C"
diff --git a/src/serialisation/serialisation.hpp b/src/serialisation/serialisation.hpp
deleted file mode 100644
index d04639a5..00000000
--- a/src/serialisation/serialisation.hpp
+++ /dev/null
@@ -1,46 +0,0 @@
-/* This file is part of Ingen.
- * Copyright (C) 2007-2009 Dave Robillard <http://drobilla.net>
- *
- * Ingen is free software; you can redistribute it and/or modify it under the
- * terms of the GNU General Public License as published by the Free Software
- * Foundation; either version 2 of the License, or (at your option) 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 General Public License for details.
- *
- * You should have received a copy of the GNU General Public License along
- * with this program; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
- */
-
-#ifndef INGEN_SERIALISATION_H
-#define INGEN_SERIALISATION_H
-
-#include <boost/shared_ptr.hpp>
-
-namespace Ingen {
-
-namespace Shared { class World; class Store; }
-
-namespace Serialisation {
-
-class Parser;
-class Serialiser;
-
-
-extern "C" {
-
- extern Parser* new_parser();
- extern Serialiser* new_serialiser(Ingen::Shared::World* world,
- boost::shared_ptr<Shared::Store> store);
-
-}
-
-
-} // namespace Serialisation
-} // namespace Ingen
-
-#endif // INGEN_SERIALISATION_H
-