[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[sc-dev] SF.net SVN: supercollider:[8241] trunk/build
Revision: 8241
http://supercollider.svn.sourceforge.net/supercollider/?rev=8241&view=rev
Author: jrhb
Date: 2008-12-22 14:33:43 +0000 (Mon, 22 Dec 2008)
Log Message:
-----------
minor improvement of Pair.
Modified Paths:
--------------
trunk/build/Help/Collections/Pair.html
trunk/build/SCClassLibrary/Common/Collections/Pair.sc
Modified: trunk/build/Help/Collections/Pair.html
===================================================================
--- trunk/build/Help/Collections/Pair.html 2008-12-22 09:40:51 UTC (rev 8240)
+++ trunk/build/Help/Collections/Pair.html 2008-12-22 14:33:43 UTC (rev 8241)
@@ -9,16 +9,17 @@
<style type="text/css">
p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0021e7}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000; min-height: 12.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000; min-height: 12.0px}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000}
+p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px Helvetica}
+p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #ad140d; min-height: 12.0px}
+p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
+p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000; min-height: 12.0px}
+p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000}
+p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #000000}
-span.s3 {text-decoration: underline}
+span.s2 {text-decoration: underline ; color: #0021e7}
+span.s3 {text-decoration: underline ; color: #002fe0}
span.s4 {color: #0000bf}
+span.s5 {color: #bf0000}
span.Apple-tab-span {white-space:pre}
</style>
</head>
@@ -26,12 +27,20 @@
<p class="p1"><span class="s1"><b>Pair</b></span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><b>LISP-like two element cells</b></p>
<p class="p2"><br></p>
<p class="p1"><b>superclass: Collection</b></p>
-<p class="p2"><b></b><br></p>
-<p class="p3"><span class="s2"><b>(implementation incomplete! Use </b><a href="../Language/J_concepts_in_SC.html"><span class="s3">J Concepts In SC</span></a></span><span class="s3"> </span>for similar functionality<span class="s2">)</span></p>
<p class="p2"><br></p>
+<p class="p1">(implementation incomplete. See<b> </b><a href="../Language/J_concepts_in_SC.html"><span class="s2">J Concepts In SC</span></a><span class="s3"> </span>for similar functionality)</p>
<p class="p2"><br></p>
-<p class="p4"><b>Instance Methods</b></p>
+<p class="p3"><b>Class Methods</b></p>
<p class="p2"><br></p>
+<p class="p2"><br></p>
+<p class="p1"><b>*new(linkDown, linkAcross) <span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span></b>return new instance</p>
+<p class="p2"><br></p>
+<p class="p1"><b>*newFrom(collection)</b><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>convert collection (e.g. arrays of arrays) to pairs.</p>
+<p class="p2"><br></p>
+<p class="p2"><br></p>
+<p class="p2"><br></p>
+<p class="p3"><b>Instance Methods</b></p>
+<p class="p2"><br></p>
<p class="p1">Most methods are inherited from the superclasses.</p>
<p class="p2"><br></p>
<p class="p1"><b>size</b></p>
@@ -46,14 +55,22 @@
<p class="p2"><br></p>
<p class="p1"><b>depthFirstPostOrderTraversal(function)</b></p>
<p class="p2"><br></p>
-<p class="p5"><br></p>
-<p class="p6">// example</p>
-<p class="p7"><br></p>
-<p class="p8">a = <span class="s4">Pair</span>(<span class="s4">Pair</span>(<span class="s4">Pair</span>(1, 2), 4), <span class="s4">Pair</span>(5, 6));</p>
-<p class="p7"><br></p>
-<p class="p8">a.size;</p>
-<p class="p8">a.depth;</p>
-<p class="p8">a.do { <span class="s4">|x|</span> x.postln };</p>
-<p class="p8">a.traverse { <span class="s4">|x|</span> x.postln };</p>
+<p class="p4"><br></p>
+<p class="p5">// example</p>
+<p class="p6"><br></p>
+<p class="p7">a = <span class="s4">Pair</span>(<span class="s4">Pair</span>(<span class="s4">Pair</span>(1, 2), 4), <span class="s4">Pair</span>(5, 6));</p>
+<p class="p6"><br></p>
+<p class="p7">a.size;</p>
+<p class="p7">a.depth;</p>
+<p class="p7">a.do { <span class="s4">|x|</span> x.postln };</p>
+<p class="p7">a.traverse { <span class="s4">|x|</span> x.postln };</p>
+<p class="p6"><br></p>
+<p class="p7"><span class="s4">Pair</span>.newFrom([1, [2, [[4, 5], 6]]]);</p>
+<p class="p6"><br></p>
+<p class="p7">[1, [2, [[4, 5], 6]]].as(<span class="s4">Pair</span>); <span class="s5">// equivalent.</span></p>
+<p class="p6"><br></p>
+<p class="p6"><br></p>
+<p class="p8"><br></p>
+<p class="p8"><br></p>
</body>
</html>
Modified: trunk/build/SCClassLibrary/Common/Collections/Pair.sc
===================================================================
--- trunk/build/SCClassLibrary/Common/Collections/Pair.sc 2008-12-22 09:40:51 UTC (rev 8240)
+++ trunk/build/SCClassLibrary/Common/Collections/Pair.sc 2008-12-22 14:33:43 UTC (rev 8241)
@@ -8,7 +8,16 @@
^super.newCopyArgs(linkDown, linkAcross)
}
+ // create from nested array
+ *newFrom { arg collection;
+ var linkDown = collection.at(0);
+ var linkAcross = collection.at(1);
+ if(linkDown.isKindOf(Collection)) { linkDown = this.newFrom(linkDown) };
+ if(linkAcross.isKindOf(Collection)) { linkAcross = this.newFrom(linkAcross) };
+ ^this.new(linkDown, linkAcross)
+ }
+
size { var i = 0, link;
link = linkAcross;
while ({ link.respondsTo('linkAcross') },{
@@ -50,10 +59,13 @@
link = linkAcross;
while ({ link.notNil },{
function.value(link);
- if ( link.linkDown.respondsTo('depthFirstPreOrderTraversal'), {
- link.linkDown.depthFirstPreOrderTraversal(function);
+ if (link.respondsTo(\linkDown) and:
+ { link.linkDown.respondsTo('depthFirstPreOrderTraversal') }, {
+ link.linkDown.depthFirstPreOrderTraversal(function);
});
- link = link.linkAcross;
+ if(link.respondsTo('linkAcross')) {
+ link = link.linkAcross;
+ } { link = nil };
});
}
depthFirstPostOrderTraversal { arg function;
@@ -65,13 +77,26 @@
// iterate linkAcross to conserve stack depth
link = linkAcross;
while ({ link.notNil },{
- if ( link.linkDown.respondsTo('depthFirstPostOrderTraversal'), {
+ if (link.respondsTo(\linkDown) and:
+ { link.linkDown.respondsTo('depthFirstPostOrderTraversal') }, {
link.linkDown.depthFirstPostOrderTraversal(function);
});
function.value(link);
- link = link.linkAcross;
+ if(link.respondsTo('linkAcross')) {
+ link = link.linkAcross;
+ } { link = nil };
});
}
+ storeArgs { arg stream;
+ ^[linkDown, linkAcross]
+ }
+
+ printOn { arg stream;
+ stream << this.class.name << "(" <<* this.storeArgs << ")"
+ }
+ storeOn { arg stream;
+ stream << this.class.name << "(" <<<* this.storeArgs << ")"
+ }
}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
_______________________________________________
sc-dev mailing list
info (subscription, etc.): http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml
archive: https://listarc.bham.ac.uk/marchives/sc-dev/
search: https://listarc.bham.ac.uk/lists/sc-dev/search/