aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorDavid Robillard <d@drobilla.net>2019-03-09 17:15:10 +0100
committerDavid Robillard <d@drobilla.net>2019-03-09 17:15:10 +0100
commit2058c121a6224263368d584c1cdc05c1819b0721 (patch)
treec1c3e4043e68788c01c17b8aac402e05ef8def4b /src
parent50b5df8e10ecb32b2691dd3871de92539766d451 (diff)
downloadingen-2058c121a6224263368d584c1cdc05c1819b0721.tar.gz
ingen-2058c121a6224263368d584c1cdc05c1819b0721.tar.bz2
ingen-2058c121a6224263368d584c1cdc05c1819b0721.zip
Clean up AtomForge
Diffstat (limited to 'src')
-rw-r--r--src/AtomWriter.cpp12
-rw-r--r--src/Parser.cpp21
-rw-r--r--src/SocketReader.cpp21
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();