From baddfc8f54b34585b19323516d2e48d4d8f33759 Mon Sep 17 00:00:00 2001 From: David Robillard Date: Tue, 4 May 2010 04:37:32 +0000 Subject: LV2Object => LV2Atom. git-svn-id: http://svn.drobilla.net/lad/trunk/ingen@2563 a436a847-0d15-0410-975c-d299462d15a1 --- src/client/PluginUI.cpp | 4 +- src/engine/PortImpl.cpp | 4 +- src/engine/events/RequestMetadata.cpp | 4 +- src/engine/events/SetPortValue.cpp | 4 +- src/shared/LV2Atom.cpp | 96 +++++++++++++++++++++++++++++++++++ src/shared/LV2Atom.hpp | 40 +++++++++++++++ src/shared/LV2Object.cpp | 96 ----------------------------------- src/shared/LV2Object.hpp | 40 --------------- src/shared/wscript | 2 +- 9 files changed, 145 insertions(+), 145 deletions(-) create mode 100644 src/shared/LV2Atom.cpp create mode 100644 src/shared/LV2Atom.hpp delete mode 100644 src/shared/LV2Object.cpp delete mode 100644 src/shared/LV2Object.hpp (limited to 'src') diff --git a/src/client/PluginUI.cpp b/src/client/PluginUI.cpp index 42e864b1..d7ff6218 100644 --- a/src/client/PluginUI.cpp +++ b/src/client/PluginUI.cpp @@ -20,7 +20,7 @@ #include "atom.lv2/atom.h" #include "shared/LV2Features.hpp" #include "shared/LV2URIMap.hpp" -#include "shared/LV2Object.hpp" +#include "shared/LV2Atom.hpp" #include "PluginUI.hpp" #include "NodeModel.hpp" #include "PortModel.hpp" @@ -87,7 +87,7 @@ lv2_ui_write(LV2UI_Controller controller, } else if (format == uris.object_transfer.id) { LV2_Atom* buf = (LV2_Atom*)buffer; Raul::Atom val; - Shared::LV2Object::to_atom(uris, buf, val); + Shared::LV2Atom::to_atom(uris, buf, val); ui->world()->engine()->set_property(port->path(), uris.ingen_value, val); } else { diff --git a/src/engine/PortImpl.cpp b/src/engine/PortImpl.cpp index ebb358e5..af17c2aa 100644 --- a/src/engine/PortImpl.cpp +++ b/src/engine/PortImpl.cpp @@ -26,7 +26,7 @@ #include "BufferFactory.hpp" #include "Engine.hpp" #include "EventBuffer.hpp" -#include "LV2Object.hpp" +#include "LV2Atom.hpp" #include "NodeImpl.hpp" #include "ObjectBuffer.hpp" #include "PortImpl.hpp" @@ -227,7 +227,7 @@ PortImpl::broadcast_value(Context& context, bool force) break; case PortType::VALUE: case PortType::MESSAGE: - LV2Object::to_atom(_bufs.uris(), ((ObjectBuffer*)buffer(0).get())->atom(), val); + LV2Atom::to_atom(_bufs.uris(), ((ObjectBuffer*)buffer(0).get())->atom(), val); break; } diff --git a/src/engine/events/RequestMetadata.cpp b/src/engine/events/RequestMetadata.cpp index 850ecc3d..0a705612 100644 --- a/src/engine/events/RequestMetadata.cpp +++ b/src/engine/events/RequestMetadata.cpp @@ -18,7 +18,7 @@ #include "raul/IntrusivePtr.hpp" #include "interface/ClientInterface.hpp" #include "events/RequestMetadata.hpp" -#include "shared/LV2Object.hpp" +#include "shared/LV2Atom.hpp" #include "shared/LV2URIMap.hpp" #include "AudioBuffer.hpp" #include "ClientBroadcaster.hpp" @@ -101,7 +101,7 @@ RequestMetadata::execute(ProcessContext& context) } else { IntrusivePtr obuf = PtrCast(port->buffer(0)); if (obuf) { - LV2Object::to_atom(*_engine.world()->uris().get(), obuf->atom(), _value); + LV2Atom::to_atom(*_engine.world()->uris().get(), obuf->atom(), _value); } } } else { diff --git a/src/engine/events/SetPortValue.cpp b/src/engine/events/SetPortValue.cpp index 6488fd6c..67c2a31b 100644 --- a/src/engine/events/SetPortValue.cpp +++ b/src/engine/events/SetPortValue.cpp @@ -20,7 +20,7 @@ #include "event.lv2/event.h" #include "shared/LV2URIMap.hpp" #include "shared/LV2Features.hpp" -#include "shared/LV2Object.hpp" +#include "shared/LV2Atom.hpp" #include "module/World.hpp" #include "AudioBuffer.hpp" #include "ClientBroadcaster.hpp" @@ -176,7 +176,7 @@ SetPortValue::apply(Context& context) ObjectBuffer* const obuf = dynamic_cast(buf); if (obuf) { obuf->atom()->size = obuf->size() - sizeof(LV2_Atom); - if (LV2Object::from_atom(uris, _value, obuf->atom())) { + if (LV2Atom::from_atom(uris, _value, obuf->atom())) { debug << "Converted atom " << _value << " :: " << obuf->atom()->type << " * " << obuf->atom()->size << " @ " << obuf->atom() << endl; return; diff --git a/src/shared/LV2Atom.cpp b/src/shared/LV2Atom.cpp new file mode 100644 index 00000000..9ae97761 --- /dev/null +++ b/src/shared/LV2Atom.cpp @@ -0,0 +1,96 @@ +/* This file is part of Ingen. + * Copyright (C) 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 "raul/log.hpp" +#include "raul/Atom.hpp" +#include "uri-map.lv2/uri-map.h" +#include "atom.lv2/atom.h" +#include "LV2Features.hpp" +#include "LV2Atom.hpp" +#include "LV2URIMap.hpp" + +using namespace std; +using namespace Raul; + +namespace Ingen { +namespace Shared { +namespace LV2Atom { + + +bool +to_atom(const Shared::LV2URIMap& uris, const LV2_Atom* object, Raul::Atom& atom) +{ + if (object->type == uris.object_class_string.id) { + atom = Raul::Atom((char*)(object + 1)); + return true; + } else if (object->type == uris.object_class_bool.id) { + atom = Raul::Atom((bool)(int32_t*)(object + 1)); + return true; + } else if (object->type == uris.object_class_int32.id) { + atom = Raul::Atom((int32_t*)(object + 1)); + return true; + } else if (object->type == uris.object_class_float32.id) { + atom = Raul::Atom((float*)(object + 1)); + return true; + } + return false; +} + + +/** Convert an atom to an LV2 object, if possible. + * object->size should be the capacity of the object (not including header) + */ +bool +from_atom(const Shared::LV2URIMap& uris, const Raul::Atom& atom, LV2_Atom* object) +{ + char* str; + switch (atom.type()) { + case Raul::Atom::FLOAT: + object->type = uris.object_class_float32.id; + object->size = sizeof(float); + *(float*)(object + 1) = atom.get_float(); + break; + case Raul::Atom::INT: + object->type = uris.object_class_int32.id; + object->size = sizeof(int32_t); + *(int32_t*)(object + 1) = atom.get_int32(); + break; + case Raul::Atom::STRING: + object->type = uris.object_class_string.id; + object->size = std::min((uint16_t)object->size, (uint16_t)(strlen(atom.get_string()) + 1)); + str = ((char*)(object + 1)); + str[object->size - 1] = '\0'; + strncpy(str, atom.get_string(), object->size); + break; + case Raul::Atom::BLOB: + error << "TODO: Blob support" << endl; + /*object->type = uris.object_class_string; + *(uint16_t*)(object + 1) = uris.uri_to_id(NULL, atom.get_blob_type()); + memcpy(((char*)(object + 1) + sizeof(uint32_t)), atom.get_blob(), + std::min(atom.data_size(), (size_t)object->size));*/ + default: + error << "Unsupported value type for toggle control" << endl; + return false; + } + return true; +} + + +} // namespace LV2Atom + +} // namespace Shared +} // namespace Ingen diff --git a/src/shared/LV2Atom.hpp b/src/shared/LV2Atom.hpp new file mode 100644 index 00000000..511cb4ff --- /dev/null +++ b/src/shared/LV2Atom.hpp @@ -0,0 +1,40 @@ +/* This file is part of Ingen. + * Copyright (C) 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 + */ + +#ifndef INGEN_SHARED_LV2OBJECT_HPP +#define INGEN_SHARED_LV2OBJECT_HPP + +namespace Raul { class Atom; } +typedef struct _LV2_Atom LV2_Atom; + +namespace Ingen { +namespace Shared { + +class World; +class LV2URIMap; + +namespace LV2Atom { + + bool to_atom(const Shared::LV2URIMap& uris, const LV2_Atom* object, Raul::Atom& atom); + bool from_atom(const Shared::LV2URIMap& uris, const Raul::Atom& atom, LV2_Atom* object); + +} // namespace LV2Atom + +} // namespace Shared +} // namespace Ingen + +#endif // INGEN_SHARED_LV2OBJECT_HPP diff --git a/src/shared/LV2Object.cpp b/src/shared/LV2Object.cpp deleted file mode 100644 index 9000320f..00000000 --- a/src/shared/LV2Object.cpp +++ /dev/null @@ -1,96 +0,0 @@ -/* This file is part of Ingen. - * Copyright (C) 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 "raul/log.hpp" -#include "raul/Atom.hpp" -#include "uri-map.lv2/uri-map.h" -#include "atom.lv2/atom.h" -#include "LV2Features.hpp" -#include "LV2Object.hpp" -#include "LV2URIMap.hpp" - -using namespace std; -using namespace Raul; - -namespace Ingen { -namespace Shared { -namespace LV2Object { - - -bool -to_atom(const Shared::LV2URIMap& uris, const LV2_Atom* object, Raul::Atom& atom) -{ - if (object->type == uris.object_class_string.id) { - atom = Raul::Atom((char*)(object + 1)); - return true; - } else if (object->type == uris.object_class_bool.id) { - atom = Raul::Atom((bool)(int32_t*)(object + 1)); - return true; - } else if (object->type == uris.object_class_int32.id) { - atom = Raul::Atom((int32_t*)(object + 1)); - return true; - } else if (object->type == uris.object_class_float32.id) { - atom = Raul::Atom((float*)(object + 1)); - return true; - } - return false; -} - - -/** Convert an atom to an LV2 object, if possible. - * object->size should be the capacity of the object (not including header) - */ -bool -from_atom(const Shared::LV2URIMap& uris, const Raul::Atom& atom, LV2_Atom* object) -{ - char* str; - switch (atom.type()) { - case Raul::Atom::FLOAT: - object->type = uris.object_class_float32.id; - object->size = sizeof(float); - *(float*)(object + 1) = atom.get_float(); - break; - case Raul::Atom::INT: - object->type = uris.object_class_int32.id; - object->size = sizeof(int32_t); - *(int32_t*)(object + 1) = atom.get_int32(); - break; - case Raul::Atom::STRING: - object->type = uris.object_class_string.id; - object->size = std::min((uint16_t)object->size, (uint16_t)(strlen(atom.get_string()) + 1)); - str = ((char*)(object + 1)); - str[object->size - 1] = '\0'; - strncpy(str, atom.get_string(), object->size); - break; - case Raul::Atom::BLOB: - error << "TODO: Blob support" << endl; - /*object->type = uris.object_class_string; - *(uint16_t*)(object + 1) = uris.uri_to_id(NULL, atom.get_blob_type()); - memcpy(((char*)(object + 1) + sizeof(uint32_t)), atom.get_blob(), - std::min(atom.data_size(), (size_t)object->size));*/ - default: - error << "Unsupported value type for toggle control" << endl; - return false; - } - return true; -} - - -} // namespace LV2Object - -} // namespace Shared -} // namespace Ingen diff --git a/src/shared/LV2Object.hpp b/src/shared/LV2Object.hpp deleted file mode 100644 index 5b50d726..00000000 --- a/src/shared/LV2Object.hpp +++ /dev/null @@ -1,40 +0,0 @@ -/* This file is part of Ingen. - * Copyright (C) 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 - */ - -#ifndef INGEN_SHARED_LV2OBJECT_HPP -#define INGEN_SHARED_LV2OBJECT_HPP - -namespace Raul { class Atom; } -typedef struct _LV2_Atom LV2_Atom; - -namespace Ingen { -namespace Shared { - -class World; -class LV2URIMap; - -namespace LV2Object { - - bool to_atom(const Shared::LV2URIMap& uris, const LV2_Atom* object, Raul::Atom& atom); - bool from_atom(const Shared::LV2URIMap& uris, const Raul::Atom& atom, LV2_Atom* object); - -} // namespace LV2Object - -} // namespace Shared -} // namespace Ingen - -#endif // INGEN_SHARED_LV2OBJECT_HPP diff --git a/src/shared/wscript b/src/shared/wscript index 6626f55a..ebef1119 100644 --- a/src/shared/wscript +++ b/src/shared/wscript @@ -10,8 +10,8 @@ def build(bld): Builder.cpp ClashAvoider.cpp Configuration.cpp + LV2Atom.cpp LV2Features.cpp - LV2Object.cpp LV2URIMap.cpp ResourceImpl.cpp Store.cpp -- cgit v1.2.1