HelpBrowser: path box becomes a more conventional search box
[supercollider.git] / SCClassLibrary / Common / Core / Nil.sc
blobfb8094e4f94175be41f1610fc6639422beaec175
1 Nil {
2         *new { ^this.shouldNotImplement(thisMethod) }
4         isNil { ^true }
5         notNil { ^false }
6         ? { arg obj; ^obj }
7         ?? { arg obj; ^obj.value }
8         !? {}
9         asBoolean    { ^false }
10         booleanValue { ^false } // TODO in the long-run, deprecate for asBoolean
12         // support a nil Environment
13         push { arg function; ^function.value }
14         appendStream { arg stream; ^stream }
15         pop {}
17         // support a nil Plug
18         source {}
19         source_ {}
21         // rate access support
22         rate { ^nil }
23         numChannels { ^nil }
24         isPlaying { ^false }
26         do {}
27         reverseDo {}
28         pairsDo {}
29         collect {}
30         select {}
31         reject {}
32         detect {}
33         collectAs {}
34         selectAs {}
35         rejectAs {}
37         // dependancy operators are no-ops
38         dependants {
39                 ^IdentitySet.new
40         }
41         changed {}
42         addDependant {}
43         removeDependant {}
44         release {}
45         update {}
47         // nil Event support
48         transformEvent { arg event;
49                 ^event
50         }
51         awake { arg inBeats, inSeconds, inClock;
52                 var temp;
53                 temp = inBeats; // prevent optimization
54                 ^nil
55         }
56         play {}
58         nextTimeOnGrid { arg clock; ^clock !? { clock.nextTimeOnGrid } }
59         asQuant { ^Quant.default }  //  { ^Quant.new }
61         swapThisGroup {}
63         performMsg {}
65         printOn { arg stream;
66                 stream.putAll("nil");
67         }
68         storeOn { arg stream;
69                 stream.putAll("nil");
70         }
72         matchItem { ^true } // nil matches anything
74         // Array support
75         add { arg value;
76                 // This makes it unecessary to check for array.isNil when doing:
77                 // array = array.add(thing);     Instead, it just works.
78                 ^[value]
79         }
80         addAll { arg array; ^array.asArray }
81         ++ { arg array; ^array }
82         asCollection { ^[] }
83         remove {}
85         // ControlView support
86         set {}
87         get { arg prevVal; ^prevVal }
89         // FunctionList support
90         addFunc { arg ... functions;
91                 ^if(functions.size <= 1) {functions[0] } { FunctionList(functions) }
92         }
93         removeFunc { ^this }
94         
95         replaceFunc { }
97         // if Main-startup fails then AppClock scheduler may be nil. If that happens an
98         // endless cascade of doesNotUnderstand messages gets printed in response to each clock tick
99         // unless we do this.
100         seconds_ {}
102         // throwing Nil
103         throw {}
105         handleError { arg error;
106                 Error.handling = true;
107                 if (Error.debug) {
108                         { error.inspect }.defer;
109                 } {
110                         error.reportError
111                 };
112                 Error.handling = false;
113                 this.halt;
114         }
116         archiveAsCompileString { ^true }
118         asSpec {
119                 ^ControlSpec.new;
120         }
122         superclassesDo {}