diff options
author | David Robillard <d@drobilla.net> | 2019-03-09 17:15:10 +0100 |
---|---|---|
committer | David Robillard <d@drobilla.net> | 2019-03-09 17:15:10 +0100 |
commit | 2058c121a6224263368d584c1cdc05c1819b0721 (patch) | |
tree | c1c3e4043e68788c01c17b8aac402e05ef8def4b /src | |
parent | 50b5df8e10ecb32b2691dd3871de92539766d451 (diff) | |
download | ingen-2058c121a6224263368d584c1cdc05c1819b0721.tar.gz ingen-2058c121a6224263368d584c1cdc05c1819b0721.tar.bz2 ingen-2058c121a6224263368d584c1cdc05c1819b0721.zip |
Clean up AtomForge
Diffstat (limited to 'src')
-rw-r--r-- | src/AtomWriter.cpp | 12 | ||||
-rw-r--r-- | src/Parser.cpp | 21 | ||||
-rw-r--r-- | src/SocketReader.cpp | 21 |
3 files changed, 19 insertions, 35 deletions
diff --git a/src/AtomWriter.cpp b/src/AtomWriter.cpp index d7982cb0..27f224fc 100644 --- a/src/AtomWriter.cpp +++ b/src/AtomWriter.cpp @@ -47,10 +47,11 @@ * manipulating data in this model which resemble HTTP methods. */ +#include "ingen/AtomWriter.hpp" + #include "ingen/Atom.hpp" -#include "ingen/AtomForgeSink.hpp" +#include "ingen/AtomForge.hpp" #include "ingen/AtomSink.hpp" -#include "ingen/AtomWriter.hpp" #include "ingen/Message.hpp" #include "ingen/Properties.hpp" #include "ingen/Resource.hpp" @@ -77,17 +78,16 @@ AtomWriter::AtomWriter(URIMap& map, URIs& uris, AtomSink& sink) : _map(map) , _uris(uris) , _sink(sink) + , _forge(map.urid_map_feature()->urid_map) { - lv2_atom_forge_init(&_forge, &map.urid_map_feature()->urid_map); - _out.set_forge_sink(&_forge); } void AtomWriter::finish_msg() { assert(!_forge.stack); - _sink.write(_out.atom()); - _out.clear(); + _sink.write(_forge.atom()); + _forge.clear(); } void diff --git a/src/Parser.cpp b/src/Parser.cpp index cda039eb..ff416106 100644 --- a/src/Parser.cpp +++ b/src/Parser.cpp @@ -17,7 +17,7 @@ #include "ingen/Parser.hpp" #include "ingen/Atom.hpp" -#include "ingen/AtomForgeSink.hpp" +#include "ingen/AtomForge.hpp" #include "ingen/Forge.hpp" #include "ingen/Interface.hpp" #include "ingen/Log.hpp" @@ -38,7 +38,6 @@ #include "serd/serd.h" #include "sord/sord.h" #include "sord/sordmm.hpp" -#include "sratom/sratom.h" #include <cassert> #include <cstdint> @@ -111,22 +110,16 @@ get_properties(ingen::World& world, Resource::Graph ctx, boost::optional<Properties> data = {}) { - LV2_URID_Map* map = &world.uri_map().urid_map_feature()->urid_map; - Sratom* sratom = sratom_new(map); - - LV2_Atom_Forge forge; - lv2_atom_forge_init(&forge, map); - - AtomForgeSink out(&forge); + AtomForge forge(world.uri_map().urid_map_feature()->urid_map); const Sord::Node nil; Properties props; for (Sord::Iter i = model.find(subject, nil, nil); !i.end(); ++i) { if (!skip_property(world.uris(), i.get_predicate())) { - out.clear(); - sratom_read(sratom, &forge, world.rdf_world()->c_obj(), - model.c_obj(), i.get_object().c_obj()); - const LV2_Atom* atom = out.atom(); + forge.clear(); + forge.read( + *world.rdf_world(), model.c_obj(), i.get_object().c_obj()); + const LV2_Atom* atom = forge.atom(); Atom atomm; atomm = world.forge().alloc( atom->size, atom->type, LV2_ATOM_BODY_CONST(atom)); @@ -134,8 +127,6 @@ get_properties(ingen::World& world, } } - sratom_free(sratom); - // Replace any properties given in `data` if (data) { for (const auto& prop : *data) { diff --git a/src/SocketReader.cpp b/src/SocketReader.cpp index 21859339..d2fb3677 100644 --- a/src/SocketReader.cpp +++ b/src/SocketReader.cpp @@ -16,7 +16,7 @@ #include "ingen/SocketReader.hpp" -#include "ingen/AtomForgeSink.hpp" +#include "ingen/AtomForge.hpp" #include "ingen/AtomReader.hpp" #include "ingen/Log.hpp" #include "ingen/URIMap.hpp" @@ -25,7 +25,6 @@ #include "lv2/urid/urid.h" #include "raul/Socket.hpp" #include "sord/sordmm.hpp" -#include "sratom/sratom.h" #include <cerrno> #include <cstdint> @@ -97,7 +96,7 @@ void SocketReader::run() { Sord::World* world = _world.rdf_world(); - LV2_URID_Map* map = &_world.uri_map().urid_map_feature()->urid_map; + LV2_URID_Map& map = _world.uri_map().urid_map_feature()->urid_map; // Open socket as a FILE for reading directly with serd std::unique_ptr<FILE, decltype(&fclose)> f{fdopen(_socket->fd(), "r"), @@ -110,15 +109,10 @@ SocketReader::run() return; } - // Set up sratom and a forge to build LV2 atoms from model - Sratom* sratom = sratom_new(map); - LV2_Atom_Forge forge; - lv2_atom_forge_init(&forge, map); - - AtomForgeSink buffer(&forge); - + // Set up a forge to build LV2 atoms from model SordNode* base_uri = nullptr; SordModel* model = nullptr; + AtomForge forge(map); { // Lock RDF world std::lock_guard<std::mutex> lock(_world.rdf_mutex()); @@ -179,13 +173,13 @@ SocketReader::run() } // Build an LV2_Atom at chunk.buf from the message - sratom_read(sratom, &forge, world->c_obj(), model, _msg_node); + forge.read(*world, model, _msg_node); // Call _iface methods based on atom content - ar.write(buffer.atom()); + ar.write(forge.atom()); // Reset everything for the next iteration - buffer.clear(); + forge.clear(); sord_node_free(world->c_obj(), _msg_node); _msg_node = nullptr; } @@ -197,7 +191,6 @@ SocketReader::run() f.reset(); sord_inserter_free(_inserter); serd_reader_end_stream(reader); - sratom_free(sratom); serd_reader_free(reader); sord_free(model); _socket.reset(); |