From 62a094a802a06a6606849daadf57244d6bd1f0bf Mon Sep 17 00:00:00 2001
From: David Robillard <d@drobilla.net>
Date: Sun, 25 Mar 2012 01:51:32 +0000
Subject: Remove atom:MessagePort and atom:ValuePort.

---
 lv2/lv2plug.in/ns/ext/atom/atom.h   |  2 --
 lv2/lv2plug.in/ns/ext/atom/atom.ttl | 71 +++++++------------------------------
 plugins/eg-sampler.lv2/sampler.ttl  |  4 +--
 3 files changed, 14 insertions(+), 63 deletions(-)

diff --git a/lv2/lv2plug.in/ns/ext/atom/atom.h b/lv2/lv2plug.in/ns/ext/atom/atom.h
index 0716228..3c7bee8 100644
--- a/lv2/lv2plug.in/ns/ext/atom/atom.h
+++ b/lv2/lv2plug.in/ns/ext/atom/atom.h
@@ -41,7 +41,6 @@
 #define LV2_ATOM__Int           LV2_ATOM_PREFIX "Int"
 #define LV2_ATOM__Long          LV2_ATOM_PREFIX "Long"
 #define LV2_ATOM__Literal       LV2_ATOM_PREFIX "Literal"
-#define LV2_ATOM__MessagePort   LV2_ATOM_PREFIX "MessagePort"
 #define LV2_ATOM__Number        LV2_ATOM_PREFIX "Number"
 #define LV2_ATOM__Object        LV2_ATOM_PREFIX "Object"
 #define LV2_ATOM__Path          LV2_ATOM_PREFIX "Path"
@@ -54,7 +53,6 @@
 #define LV2_ATOM__Tuple         LV2_ATOM_PREFIX "Tuple"
 #define LV2_ATOM__URI           LV2_ATOM_PREFIX "URI"
 #define LV2_ATOM__URID          LV2_ATOM_PREFIX "URID"
-#define LV2_ATOM__ValuePort     LV2_ATOM_PREFIX "ValuePort"
 #define LV2_ATOM__Vector        LV2_ATOM_PREFIX "Vector"
 #define LV2_ATOM__beatTime      LV2_ATOM_PREFIX "beatTime"
 #define LV2_ATOM__bufferType    LV2_ATOM_PREFIX "bufferType"
diff --git a/lv2/lv2plug.in/ns/ext/atom/atom.ttl b/lv2/lv2plug.in/ns/ext/atom/atom.ttl
index 762c6b0..2cd0f59 100644
--- a/lv2/lv2plug.in/ns/ext/atom/atom.ttl
+++ b/lv2/lv2plug.in/ns/ext/atom/atom.ttl
@@ -53,10 +53,10 @@ that type.  Similarly, plugins (such as routers, delays, or data stores) can
 meaningfully process atoms of a type unknown to them.</p>
 
 <p>Atoms can and should be used anywhere values of various types must be stored
-or transmitted.  This extension defines port types, atom:ValuePort and
-atom:MessagePort, which contain Atoms.  The atom:Sequence type in conjunction
-with atom:MessagePort is intended to replace the <a
-href="http://lv2plug.in/ns/ext/event">LV2 event</a> extension.</p>
+or transmitted.  This extension defines a port type, atom:AtomPort, for
+transmitting atoms via ports.  The atom:Sequence type in an atom:AtomPort
+replaces the <a href="http://lv2plug.in/ns/ext/event">LV2 event</a>
+extension.</p>
 
 <p>The types defined in this extension should be powerful enough to express
 almost any structure.  Implementations SHOULD build structures out of the types
@@ -431,59 +431,12 @@ atom:AtomPort
 <p>A port which contains an lv2:Atom.  Ports of this type are connected to an
 LV2_Atom with a type specified by atom:bufferType.</p>
 
-<p>This is an abstract port type with incomplete semantics which can not be
-used directly as a port type.  Atom ports should be either a atom:ValuePort or
-a atom:MessagePort.</p>
-
-<p>Output ports with a variably sized type should be initialised by the host
-before every run to an atom:Chunk with size set to the available space.  The
-plugin must set the size and type of this atom appropriately when writing
-output.</p>
-""" .
-
-atom:ValuePort
-	a rdfs:Class ;
-	rdfs:subClassOf atom:AtomPort ;
-	rdfs:label "Value Port" ;
-	lv2:documentation """
-<p>An AtomPort that contains a persistent <em>value</em>.  A <q>value</q> is
-time-independent and may be used numerous times.  A ValuePort is <q>pure</q> in
-the sense that it may affect output but MUST NOT affect persistent plugin state
-in any externally visible way.</p>
-
-<ul>
-<li>If a plugin has fixed values for all inputs, all ValuePort outputs are also
-fixed regardless of the number of times the plugin is run.</li>
-
-<li>If a plugin has fixed input values for all ports except a ValuePort, each
-value of that port corresponds to a single set of values for all
-ValuePort outputs.</li>
-
-<li>If the plugin saves state other than port values (e.g. using the <a
-href="http://lv2plug.in/ns/ext/state">LV2 State</a> extension), changing only
-the value of a ValuePort input MUST NOT change that state.  In other words,
-value port changes MUST NOT trigger a state change that requires a save.</li>
-</ul>
-
-<p>Value ports are essentially purely functional ports: if a plugin has only
-value ports, that plugin is purely functional.  Hosts may elect to cache output
-and avoid calling run() if the output is already known according to these
-rules.</p>
-""" .
-
-atom:MessagePort
-	a rdfs:Class ;
-	rdfs:subClassOf atom:AtomPort ;
-	rdfs:label "Message Port" ;
-	lv2:documentation """
-<p>An AtomPort that contains transient data which is <em>consumed</em> or
-<em>sent</em>.  The Atom contained in a MessagePort is time-dependent and only
-valid for a single run invocation.  Unlike a ValuePort, a MessagePort may be
-used to manipulate internal plugin state.</p>
-
-<p>Intuitively, a MessagePort contains a <q>message</q> or <q>event</q> which
-is reacted to <em>once</em> (not a <q>value</q> which is computed with any
-number of times).</p>
+<p>Output ports with a variably sized type MUST be initialised by the host
+before every run() to an atom:Chunk with size set to the available space.  The
+plugin reads this size to know how much space is available for writing.  In all
+cases, the plugin MUST write a complete atom (including header) to outputs.
+However, to be robust, hosts SHOULD initialise output ports to a safe sentinel
+(e.g. the null Atom) before calling run().</p>
 """ .
 
 atom:bufferType
@@ -500,7 +453,7 @@ connected directly to an LV2_Atom_Double value is described like so:</p>
 <pre class="turtle-code">
 &lt;plugin&gt;
     lv2:port [
-        a lv2:InputPort , atom:ValuePort ;
+        a lv2:InputPort , atom:AtomPort ;
         atom:bufferType atom:Double ;
     ] .
 </pre>
@@ -532,7 +485,7 @@ MIDI events is described like so:</p>
 <pre class="turtle-code">
 &lt;plugin&gt;
     lv2:port [
-        a lv2:InputPort , atom:MessagePort ;
+        a lv2:InputPort , atom:AtomPort ;
         atom:bufferType atom:Sequence ;
         atom:supports midi:MidiEvent ;
     ] .
diff --git a/plugins/eg-sampler.lv2/sampler.ttl b/plugins/eg-sampler.lv2/sampler.ttl
index a70be7b..e6bd816 100644
--- a/plugins/eg-sampler.lv2/sampler.ttl
+++ b/plugins/eg-sampler.lv2/sampler.ttl
@@ -34,7 +34,7 @@
 	ui:ui <http://lv2plug.in/plugins/eg-sampler#ui> ;
 	lv2:port [
 		a lv2:InputPort ,
-			atom:MessagePort ;
+			atom:AtomPort ;
 		atom:bufferType atom:Sequence ;
 		atom:supports <http://lv2plug.in/ns/ext/midi#MidiEvent> ,
 			<http://lv2plug.in/ns/ext/patch#Message> ;
@@ -43,7 +43,7 @@
 		lv2:name "Control" ;
 	] , [
 		a lv2:OutputPort ,
-			atom:MessagePort ;
+			atom:AtomPort ;
 		atom:bufferType atom:Sequence ;
 		atom:supports <http://lv2plug.in/ns/ext/patch#Message> ;
 		lv2:index 1 ;
-- 
cgit v1.2.1