void AtomWriter::forge_uri(const Raul::URI& uri) { if (serd_uri_string_has_scheme((const uint8_t*)uri.c_str())) { lv2_atom_forge_urid(&_forge, _map.map_uri(uri.c_str())); } else { lv2_atom_forge_uri(&_forge, uri.c_str(), uri.length()); } }
/** generate a file path message, * send current state to GUI */ static void inform_ui (MidiMap* self) { if (!self->cfg_file_path) { return; } const MidiMapURIs* uris = &self->uris; lv2_atom_forge_frame_time (&self->forge, 0); LV2_Atom_Forge_Frame frame; lv2_atom_forge_object (&self->forge, &frame, 1, uris->patch_Set); lv2_atom_forge_property_head (&self->forge, uris->patch_property, 0); lv2_atom_forge_urid (&self->forge, uris->mem_cfgfile); lv2_atom_forge_property_head (&self->forge, uris->patch_value, 0); lv2_atom_forge_path (&self->forge, self->cfg_file_path, strlen (self->cfg_file_path)); lv2_atom_forge_pop (&self->forge, &frame); }
void AtomWriter::set_property(const Raul::URI& subject, const Raul::URI& predicate, const Atom& value) { LV2_Atom_Forge_Frame msg; forge_request(&msg, _uris.patch_Set); lv2_atom_forge_key(&_forge, _uris.patch_subject); forge_uri(subject); lv2_atom_forge_key(&_forge, _uris.patch_property); lv2_atom_forge_urid(&_forge, _map.map_uri(predicate.c_str())); lv2_atom_forge_key(&_forge, _uris.patch_value); lv2_atom_forge_atom(&_forge, value.size(), value.type()); lv2_atom_forge_write(&_forge, value.get_body(), value.size()); lv2_atom_forge_pop(&_forge, &msg); finish_msg(); }
/** Forge a URID value @param id The URID to write */ inline ForgeRef write_urid (LV2_URID id) { return lv2_atom_forge_urid (this, id); }