func init // adds using namespace sys.add_use('System.Collections') // initialize instance params = this.props('Constructor').value if(params == 'Constructor') params = '' elseif(params == 'Constructor2') params = '' + d("col") elseif(params == 'Constructor3') params = '' + d("capacity") elseif(params == 'Constructor4') params = '' + d("capacity") + ', ' + d("growFactor") end sys.add_object(this.codename, 'Queue', params) // makes implementation methods for properties sys._prop_init('Count', 1, 0, 1) sys._prop_init('IsSynchronized', 1, 0, 104) sys._prop_init('SyncRoot', 1, 0, 0) // makes implementation of methods as properties sys._mtd_as_prop_init('Clone()') sys._mtd_as_prop_init('Dequeue()') sys._mtd_as_prop_init('GetEnumerator()') sys._mtd_as_prop_init('Peek()') sys._mtd_as_prop_init('ToArray()') sys._mtd_as_prop_init('Queue') // makes implementation of simple methods sys._method_init('Clear') sys._method_init('TrimToSize') if(linked("onEmpty")) this.setfield('ex', 'ex' + this.id) end end func doConstructor() blk.println(this.codename, ' = new Queue();') end func doConstructor2(col) blk.println(this.codename, ' = new Queue(', d("col"), ');') end func doConstructor3(capacity) blk.println(this.codename, ' = new Queue(', d("capacity"), ');') end func doConstructor4(capacity, growFactor) blk.println(this.codename, ' = new Queue(', d("capacity"), ', ', d("growFactor"), ');') end func doContains(obj) if(linked("onContains")) event("onContains", this.codename + '.Contains(' + d("obj") + ')') else blk.println(this.codename, '.Contains(', d("obj"), ');') end end func doCopyTo(array, index) blk.println(this.codename, '.CopyTo(', d("array"), ', ', d("index"), ');') end func doEnqueue(obj) blk.println(this.codename, '.Enqueue(', d("obj"), ');') end func doDequeue() linked("onEmpty") ? blk.println('try {').inc() : '' event("onDequeue", this.codename + '.Dequeue()') if(linked("onEmpty")) blk.dec().println('} catch(InvalidOperationException ', this.ex, ') {').inc() event("onEmpty", this.ex + '.Message') blk.dec().println('}') end end func doSynchronized(queue) if(linked("onSynchronized")) event("onSynchronized", 'Queue.Synchronized(' + d("queue") + ')') else blk.println('Queue.Synchronized(', d("queue"), ');') end end