aboutsummaryrefslogtreecommitdiffstats
path: root/ext/reference.lv2/reference.ttl
blob: fae31d3a0ba0564af84d82597509e4fde744c7aa (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
# 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 <a
href="#Reference">Reference</a>, which is a special case of Atom 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 a <a href="#Blob">Blob</a>.  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 """
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.
""" .

reference:Blob a rdfs:Class ;
	rdfs:label      "Blob" ;
	lv2:documentation """
<p>Base class for all dynamically allocated blobs.  An <a 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>
""" .