summaryrefslogtreecommitdiffstats
path: root/src/module/World.hpp
diff options
context:
space:
mode:
authorDavid Robillard <d@drobilla.net>2008-09-30 16:50:21 +0000
committerDavid Robillard <d@drobilla.net>2008-09-30 16:50:21 +0000
commit93850c202de8b073a1ce1dd8bd246d407bce4e2f (patch)
tree6910b135bf4eff12de1af116cef73f6e9c107cd0 /src/module/World.hpp
parenta8bf5272d096de73507d2eab47f282c345f4ca8a (diff)
downloadingen-93850c202de8b073a1ce1dd8bd246d407bce4e2f.tar.gz
ingen-93850c202de8b073a1ce1dd8bd246d407bce4e2f.tar.bz2
ingen-93850c202de8b073a1ce1dd8bd246d407bce4e2f.zip
Flatten ingen source directory heirarchy a bit.
git-svn-id: http://svn.drobilla.net/lad/trunk/ingen@1551 a436a847-0d15-0410-975c-d299462d15a1
Diffstat (limited to 'src/module/World.hpp')
-rw-r--r--src/module/World.hpp78
1 files changed, 78 insertions, 0 deletions
diff --git a/src/module/World.hpp b/src/module/World.hpp
new file mode 100644
index 00000000..dbbac2bd
--- /dev/null
+++ b/src/module/World.hpp
@@ -0,0 +1,78 @@
+/* This file is part of Ingen.
+ * Copyright (C) 2007 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_WORLD_HPP
+#define INGEN_WORLD_HPP
+
+#include CONFIG_H_PATH
+
+#include <string>
+#include <glibmm/module.h>
+#include <raul/SharedPtr.hpp>
+#include "shared/LV2Features.hpp"
+
+#ifdef HAVE_SLV2
+#include <slv2/slv2.h>
+#endif
+
+namespace Redland { class World; }
+
+namespace Ingen {
+class Engine;
+
+namespace Serialisation { class Serialiser; class Parser; }
+using Serialisation::Serialiser;
+using Serialisation::Parser;
+
+namespace Shared {
+class EngineInterface;
+class Store;
+
+
+/** The "world" all Ingen modules may share.
+ *
+ * This is required for shared access to things like Redland, so locking can
+ * take place centrally and the engine/gui using the same library won't
+ * explode horribly.
+ *
+ * Hopefully at some point in the future it can allow some fun things like
+ * scripting bindings that play with all loaded components of
+ * The Ingen System(TM) and whatnot.
+ */
+struct World {
+#ifdef HAVE_SLV2
+ SLV2World slv2_world;
+ LV2Features* lv2_features;
+#endif
+
+ Redland::World* rdf_world;
+
+ SharedPtr<EngineInterface> engine;
+ SharedPtr<Engine> local_engine;
+ SharedPtr<Serialiser> serialiser;
+ SharedPtr<Parser> parser;
+ SharedPtr<Store> store;
+
+ SharedPtr<Glib::Module> serialisation_module;
+};
+
+
+} // namespace Shared
+} // namespace Ingen
+
+#endif // INGEN_WORLD_HPP
+