File: static-init.ck

package info (click to toggle)
chuck 1.5.5.5-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 41,056 kB
  • sloc: cpp: 123,473; ansic: 35,893; javascript: 2,111; yacc: 609; makefile: 457; python: 174; perl: 86
file content (56 lines) | stat: -rw-r--r-- 1,785 bytes parent folder | download | duplicates (2)
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
// static variables & initialization example
// requires: chuck-1.5.4.3 or higher
//
//-----------------------------------------
// STATIC VARAIBLE INITIALIZATION SEMANTICS
//-----------------------------------------
// static variable can only be DECLARED:
// a) within a class definition
// b) outside of any class function defintion
// c) at the outer-most class scope (cannot be in nested { })
//-----------------------------------------
// COMPILE-TIME checks:
// 1) a statement containing a static variable declaration
//    CANNOT access member data/functions
// 2) otherwise, a statement can access both static and member data.
// 3) a statement containing a static variable declaration
//    CANNOT access local (i.e., outside of class def) vars or funcs
//    even in non-public classes
//-----------------------------------------
// RUNTIME checks:
// 4) static initialization statements are run in immediate mode
//    meaning no time advances; this is enforced at runtime; any
//    time advances, including waiting on events, will result in
//    a runtime exception
//-----------------------------------------

// a class
public class Foo
{
    // int
    1 => static int S_INT;
    // float
    2 => static float S_FLOAT;
    // dur
    3::second => static dur S_DUR;
    // time
    now + 4::second => static time S_TIME;
    // vec3
    @(5,6,7) => static vec3 S_VEC3;
    // array
    [8,9,10,11] @=> static int S_INT_ARRAY[];
    // string
    static string S_STRING("12");
    // ugen
    static SinOsc S_SINOSC(440);
}

// print static variables
<<< Foo.S_INT >>>;
<<< Foo.S_FLOAT >>>;
<<< Foo.S_DUR / second >>>;
<<< (Foo.S_TIME-now) / second >>>;
<<< Foo.S_VEC3 >>>;
for( auto i : Foo.S_INT_ARRAY ) <<< i >>>;
<<< Foo.S_STRING >>>;
<<< Foo.S_SINOSC.freq() >>>;