File: ScopeBuffer.sc

package info (click to toggle)
supercollider 1%3A3.6.6~repack-2-1
  • links: PTS, VCS
  • area: main
  • in suites: jessie, jessie-kfreebsd
  • size: 23,792 kB
  • ctags: 25,269
  • sloc: cpp: 177,129; lisp: 63,421; ansic: 11,297; python: 1,787; perl: 766; yacc: 311; sh: 286; lex: 181; ruby: 173; makefile: 168; xml: 13
file content (54 lines) | stat: -rw-r--r-- 1,130 bytes parent folder | download | duplicates (7)
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
ScopeBuffer {
	var <index, <numChannels, <server;

	*alloc { arg server, numChannels=1;
		var alloc;
		server = server ? Server.default;
		alloc = server.scopeBufferAllocator.alloc(numChannels);
		if (alloc.isNil) {
			error("Meta_ScopeBuffer:alloc: failed to get a scope buffer allocated."
				+ "numChannels:" + numChannels + "server:" + server.name);
			^nil
		};
		^this.new(alloc, numChannels, server)
	}

	*new { arg index=0, numChannels=1, server;
		^super.newCopyArgs(index, numChannels, server ? Server.default)
	}

	// compatibility method
	bufnum {
		^index;
	}

	free {
		if (index.isNil) {
			(this.asString + " has already been freed").warn;
			^this
		};

		server.scopeBufferAllocator.free(index);
		index = nil;
		numChannels = nil;
	}

	printOn { arg stream;
		stream << this.class.name << "(" <<*
			[index, numChannels, server]  <<")"
	}

	storeOn { arg stream;
		stream << this.class.name << "(" <<*
			[index, numChannels, server.asCompileString]  <<")"
	}

	== { arg that;
		^this.compareObject(that, #[\index, \numChannels, \server])
	}

	hash {
		^this.instVarHash(#[\index, \numChannels, \server])
	}

}