Program Listing for File SerializationState.cpp

Return to documentation for file (src/rdf4cpp/writer/SerializationState.cpp)

#include "SerializationState.hpp"
#include <rdf4cpp/writer/Prefixes.hpp>
#include <rdf4cpp/writer/TryWrite.hpp>

namespace rdf4cpp::writer {

bool SerializationState::begin(BufWriterParts const writer) noexcept {
    for (auto const &p : iri_prefixes) {
        RDF4CPP_DETAIL_TRY_WRITE_STR("@prefix ");
        RDF4CPP_DETAIL_TRY_WRITE_STR(p.shorthand);
        RDF4CPP_DETAIL_TRY_WRITE_STR(": <");
        RDF4CPP_DETAIL_TRY_WRITE_STR(p.prefix);
        RDF4CPP_DETAIL_TRY_WRITE_STR("> .\n");
    }

    return true;
}

bool SerializationState::flush(BufWriterParts const writer) noexcept {
    if (!active_predicate.null() || !active_subject.null()) {
        RDF4CPP_DETAIL_TRY_WRITE_STR(" .\n");
    }

    if (!active_graph.null()) {
        RDF4CPP_DETAIL_TRY_WRITE_STR("}\n");
    }

    active_predicate = Node::make_null();
    active_subject = Node::make_null();
    active_graph = Node::make_null();
    return true;
}

} // namespace rdf4cpp::writer