# LV2 Reference Extension # Copyright 2007-2011 David Robillard <d@drobilla.net> # # Permission to use, copy, modify, and/or distribute this software for any # purpose with or without fee is hereby granted, provided that the above # copyright notice and this permission notice appear in all copies. # # THIS SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. @prefix atom: <http://lv2plug.in/ns/ext/atom#> . @prefix doap: <http://usefulinc.com/ns/doap#> . @prefix foaf: <http://xmlns.com/foaf/0.1/> . @prefix lv2: <http://lv2plug.in/ns/lv2core#> . @prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> . @prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> . @prefix reference: <http://lv2plug.in/ns/ext/reference#> . <http://lv2plug.in/ns/ext/reference> a lv2:Specification ; doap:name "LV2 Reference" ; doap:shortdesc "A reference data type for using non-POD data." ; doap:release [ doap:revision "0.1" ; doap:created "2011-07-22" ] ; doap:maintainer [ a foaf:Person ; foaf:name "David Robillard" ; foaf:homepage <http://drobilla.net/> ; rdfs:seeAlso <http://drobilla.net/drobilla.rdf> ] ; lv2:documentation """ <p>This extension defines a mechanism for working with generic/opaque dynamically allocated memory, called a <a href="#Blob">"Blob"</a>, which is (unlike an Atom) not necessarily POD. Blobs are accessed via a reference:Reference, which is a special case of <a href="http://lv2plug.in/ns/ext#Atom">Atom</a> that always has <code>type = 0</code>, is not POD, and can only be copied using host provided functions. This allows plugins and hosts to work with data of any type at all.</p> """ . reference:Reference a rdfs:Class ; rdfs:subClassOf atom:Atom ; rdfs:label "Reference" ; lv2:documentation """ <p>Reference to an lv2:Blob. The actual contents of a Reference are opaque and host specific, and must not be copied, serialized, or otherwise interpreted by a plugin, except via functions provided by the host in LV2_Blob_Support.</p> <p>A Reference is a special case of Atom with <code>type = 0</code>. "Null" is the unique Atom with <code>type = 0</code> and <code>size = 0</code>.</p> """ . reference:blobSupport a lv2:Feature ; rdfs:label "Blob support" ; lv2:documentation """ <p>Support for dynamically allocated blobs. If a host supports this feature, it MUST pass a LV2_Feature with <code>URI</code> http://lv2plug.in/ns/ext/atom#blobSupport and <code>data</code> pointing to a LV2_Blob_Support.</p> """ . reference:Blob a rdfs:Class ; rdfs:label "Blob" ; lv2:documentation """ <p>Base class for all dynamically allocated blobs. An LV2_Blob is an opaque pointer to host data. The type and data of a blob can be accessed via host-provided functions in LV2_Blob_Support. The type of a blob can be any URI that describes a data format. Blobs are always allocated by the host, and unlike atoms are not necessarily POD.</p> <p>Blob data MUST NOT be used in any way by an implementation that does not understand that blob type (unlike Atoms, meaningful type-oblivious use of a Blob is impossible).</p> """ .