#pragma debug // This turns on debugging, same as the command line argument -d /* Script must have 'int main()' or 'void main()' as the entry point. Some functions that are available: void print(const string &in str); array @getCommandLineArgs(); void createCoRoutine(coroutine @func, dictionary @args); void yield(); Some objects that are available: funcdef void coroutine(dictionary@) string array dictionary file filesystem */ string g_str = getDefaultString(); enum E { VALUE1 = 20, VALUE2 = 30 } class Test { int a; int b; string c; void method() { print("In Test::method()\n"); } } int main() { E val = E(100); array @args = getCommandLineArgs(); print("Received the following args : " + join(args, "|") + "\n"); Test t; Test @ht = t; t.method(); array a; array @ha; function(); // Garbage collection is automatic // Set up a circular reference to prove this { Link @link = Link(); @link.next = link; } // Use a co-routine to fill an array with objects array links; createCoRoutine(fillArray, dictionary = {{'my array', @links}}); for( int n = 0; n < 10; n++ ) { print("The size of the array is currently " + links.length() + "\n"); yield(); } print("Press enter to exit\n"); getInput(); return 0; } void function() { print("Currently in a different function\n"); int n = 0; { int n = 1; // This will warn that it is hiding the above variable of the same name string s = "hello"; print(s + "\n"); } { int n = 2; } } // A co-routine void fillArray(dictionary @dict) { array @links = cast>(dict['my array']); for( int n = 0; n < 50; n++ ) { links.insertLast(Link()); if( n % 10 == 9 ) yield(); } } string getDefaultString() { return "default"; } class Link { Link @next; } class PrintOnDestruct { ~PrintOnDestruct() { print("I'm being destroyed now\n"); } } // This object will only be destroyed after the // script has finished execution. PrintOnDestruct pod;