From a854ac939a20b12932384c3074c9ce85df0b39bd Mon Sep 17 00:00:00 2001 From: David Robillard Date: Tue, 22 Dec 2009 16:34:14 +0000 Subject: Fix compilation. Consistent naming of module source files. git-svn-id: http://svn.drobilla.net/lad/trunk/ingen@2315 a436a847-0d15-0410-975c-d299462d15a1 --- src/client/client.cpp | 72 --------------------------------------------- src/client/ingen_client.cpp | 72 +++++++++++++++++++++++++++++++++++++++++++++ src/client/wscript | 2 +- src/gui/App.cpp | 1 - src/gui/gui.cpp | 41 -------------------------- src/gui/ingen_gui.cpp | 41 ++++++++++++++++++++++++++ src/gui/wscript | 2 +- src/module/World.cpp | 7 +++++ src/module/World.hpp | 17 ++++++----- 9 files changed, 131 insertions(+), 124 deletions(-) delete mode 100644 src/client/client.cpp create mode 100644 src/client/ingen_client.cpp delete mode 100644 src/gui/gui.cpp create mode 100644 src/gui/ingen_gui.cpp diff --git a/src/client/client.cpp b/src/client/client.cpp deleted file mode 100644 index 9512ba44..00000000 --- a/src/client/client.cpp +++ /dev/null @@ -1,72 +0,0 @@ -/* This file is part of Ingen. - * Copyright (C) 2007-2009 Dave Robillard - * - * 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 HAVEOUT 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 - */ - -#include "ingen-config.h" -#include "raul/SharedPtr.hpp" -#include "module/Module.hpp" -#include "module/World.hpp" -#ifdef HAVE_LIBLO -#include "OSCEngineSender.hpp" -#endif -#ifdef HAVE_SOUP -#include "HTTPEngineSender.hpp" -#endif - -using namespace Ingen; - -#ifdef HAVE_LIBLO -SharedPtr -new_osc_interface(Ingen::Shared::World* world, const std::string& url) -{ - Client::OSCEngineSender* oes = Client::OSCEngineSender::create(url); - oes->attach(rand(), true); - return SharedPtr(oes); -} -#endif - -#ifdef HAVE_SOUP -SharedPtr -new_http_interface(Ingen::Shared::World* world, const std::string& url) -{ - Client::HTTPEngineSender* hes = new Client::HTTPEngineSender(world, url); - hes->attach(rand(), true); - return SharedPtr(hes); -} -#endif - -struct IngenClientModule : public Ingen::Shared::Module { - void load(Ingen::Shared::World* world) { - world->interface_factories.insert(make_pair("osc.udp", &new_osc_interface)); - world->interface_factories.insert(make_pair("osc.tcp", &new_osc_interface)); - world->interface_factories.insert(make_pair("http", &new_http_interface)); - } -}; - -static IngenClientModule* module = NULL; - -extern "C" { - -Ingen::Shared::Module* -ingen_module_load() { - if (!module) - module = new IngenClientModule(); - - return module; -} - -} // extern "C" - diff --git a/src/client/ingen_client.cpp b/src/client/ingen_client.cpp new file mode 100644 index 00000000..9f644e4d --- /dev/null +++ b/src/client/ingen_client.cpp @@ -0,0 +1,72 @@ +/* This file is part of Ingen. + * Copyright (C) 2007-2009 Dave Robillard + * + * 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 HAVEOUT 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 + */ + +#include "ingen-config.h" +#include "raul/SharedPtr.hpp" +#include "module/Module.hpp" +#include "module/World.hpp" +#ifdef HAVE_LIBLO +#include "OSCEngineSender.hpp" +#endif +#ifdef HAVE_SOUP +#include "HTTPEngineSender.hpp" +#endif + +using namespace Ingen; + +#ifdef HAVE_LIBLO +SharedPtr +new_osc_interface(Ingen::Shared::World* world, const std::string& url) +{ + Client::OSCEngineSender* oes = Client::OSCEngineSender::create(url); + oes->attach(rand(), true); + return SharedPtr(oes); +} +#endif + +#ifdef HAVE_SOUP +SharedPtr +new_http_interface(Ingen::Shared::World* world, const std::string& url) +{ + Client::HTTPEngineSender* hes = new Client::HTTPEngineSender(world, url); + hes->attach(rand(), true); + return SharedPtr(hes); +} +#endif + +struct IngenClientModule : public Ingen::Shared::Module { + void load(Ingen::Shared::World* world) { + world->add_interface_factory("osc.udp", &new_osc_interface); + world->add_interface_factory("osc.tcp", &new_osc_interface); + world->add_interface_factory("http", &new_http_interface); + } +}; + +static IngenClientModule* module = NULL; + +extern "C" { + +Ingen::Shared::Module* +ingen_module_load() { + if (!module) + module = new IngenClientModule(); + + return module; +} + +} // extern "C" + diff --git a/src/client/wscript b/src/client/wscript index ea0eef85..749d9ec7 100644 --- a/src/client/wscript +++ b/src/client/wscript @@ -15,7 +15,7 @@ def build(bld): PluginUI.cpp PortModel.cpp ThreadedSigClientInterface.cpp - client.cpp + ingen_client.cpp ''' if bld.env['HAVE_SOUP'] == 1: diff --git a/src/gui/App.cpp b/src/gui/App.cpp index f42ddcb4..0f34de2f 100644 --- a/src/gui/App.cpp +++ b/src/gui/App.cpp @@ -26,7 +26,6 @@ #include #include "raul/Path.hpp" #include "flowcanvas/Connection.hpp" -#include "module/Module.hpp" #include "module/World.hpp" #include "engine/Engine.hpp" #include "interface/EngineInterface.hpp" diff --git a/src/gui/gui.cpp b/src/gui/gui.cpp deleted file mode 100644 index d1ad6c99..00000000 --- a/src/gui/gui.cpp +++ /dev/null @@ -1,41 +0,0 @@ -/* This file is part of Ingen. - * Copyright (C) 2007-2009 Dave Robillard - * - * 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 - */ - -#include "module/Module.hpp" -#include "App.hpp" - -struct IngenGUIModule : public Ingen::Shared::Module { - void load(Ingen::Shared::World* world) { - Ingen::GUI::App::init(world); - Ingen::GUI::App::run(); - } -}; - -static IngenGUIModule* module = NULL; - -extern "C" { - -Ingen::Shared::Module* -ingen_module_load() { - if (!module) - module = new IngenGUIModule(); - - return module; -} - -} // extern "C" - diff --git a/src/gui/ingen_gui.cpp b/src/gui/ingen_gui.cpp new file mode 100644 index 00000000..d1ad6c99 --- /dev/null +++ b/src/gui/ingen_gui.cpp @@ -0,0 +1,41 @@ +/* This file is part of Ingen. + * Copyright (C) 2007-2009 Dave Robillard + * + * 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 + */ + +#include "module/Module.hpp" +#include "App.hpp" + +struct IngenGUIModule : public Ingen::Shared::Module { + void load(Ingen::Shared::World* world) { + Ingen::GUI::App::init(world); + Ingen::GUI::App::run(); + } +}; + +static IngenGUIModule* module = NULL; + +extern "C" { + +Ingen::Shared::Module* +ingen_module_load() { + if (!module) + module = new IngenGUIModule(); + + return module; +} + +} // extern "C" + diff --git a/src/gui/wscript b/src/gui/wscript index 93084654..7d7e61fc 100644 --- a/src/gui/wscript +++ b/src/gui/wscript @@ -40,7 +40,7 @@ def build(bld): ThreadedLoader.cpp Window.cpp WindowFactory.cpp - gui.cpp + ingen_gui.cpp ''' if bld.env['HAVE_CURL'] != 0: diff --git a/src/module/World.cpp b/src/module/World.cpp index 0bc87459..c4b1a88e 100644 --- a/src/module/World.cpp +++ b/src/module/World.cpp @@ -141,6 +141,13 @@ World::run(const std::string& mime_type, const std::string& filename) return i->second(this, filename.c_str()); } +void +World::add_interface_factory(const std::string& scheme, InterfaceFactory factory) +{ + interface_factories.insert(make_pair(scheme, factory)); +} + + } // namespace Shared } // namespace Ingen diff --git a/src/module/World.hpp b/src/module/World.hpp index e12ce5b2..59500c3e 100644 --- a/src/module/World.hpp +++ b/src/module/World.hpp @@ -44,13 +44,12 @@ class LV2Features; /** 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. + * All loaded components of Ingen, as well as things requiring shared access + * and/or locking (e.g. Redland, SLV2). * - * 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. + * Ingen modules are shared libraries which modify the World when loaded + * using World::load, e.g. loading the "ingen_serialisation" module will + * set World::serialiser and World::parser to valid objects. */ struct World { World() : conf(0) {} @@ -58,6 +57,10 @@ struct World { bool load(const char* name); void unload_all(); + typedef SharedPtr (*InterfaceFactory)( + World* world, const std::string& engine_url); + + void add_interface_factory(const std::string& scheme, InterfaceFactory factory); SharedPtr interface(const std::string& engine_url); bool run(const std::string& mime_type, const std::string& filename); @@ -80,8 +83,6 @@ private: typedef std::map< const std::string, boost::shared_ptr > Modules; Modules modules; - typedef SharedPtr (*InterfaceFactory)( - World* world, const std::string& url); typedef std::map InterfaceFactories; InterfaceFactories interface_factories; -- cgit v1.2.1