2014-12-30 01:22:09 -05:00
|
|
|
import io:*;
|
|
|
|
|
import mem:*;
|
|
|
|
|
import vector:*;
|
2015-06-28 21:10:06 -04:00
|
|
|
import vector_literals:*
|
2014-06-30 01:57:50 -07:00
|
|
|
|
2015-06-05 00:34:24 -04:00
|
|
|
obj AbleToBeDestroyed (Object) {
|
|
|
|
|
var data:int
|
|
|
|
|
fun construct(dat:int):void {
|
|
|
|
|
data = dat
|
|
|
|
|
print("Constructed: ")
|
|
|
|
|
println(data)
|
|
|
|
|
}
|
2015-07-04 17:02:51 -04:00
|
|
|
fun copy_construct(other:*AbleToBeDestroyed):void {
|
2015-06-05 00:34:24 -04:00
|
|
|
data = other->data+1
|
|
|
|
|
print("Copied: ")
|
|
|
|
|
print(other->data)
|
|
|
|
|
print(" to ")
|
|
|
|
|
println(data)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
fun operator=(other:AbleToBeDestroyed):void {
|
|
|
|
|
print("Assigned: ")
|
|
|
|
|
print(other.data)
|
|
|
|
|
print(" to ")
|
|
|
|
|
print(data)
|
|
|
|
|
print(" is now ")
|
|
|
|
|
data = other.data+1
|
|
|
|
|
println(data)
|
2015-05-30 04:43:01 -04:00
|
|
|
}
|
|
|
|
|
|
2015-05-09 06:24:56 -04:00
|
|
|
fun destruct(): void {
|
2015-06-05 00:34:24 -04:00
|
|
|
print("Destroyed: ")
|
|
|
|
|
println(data)
|
2014-07-06 23:42:25 -07:00
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
2015-05-09 06:24:56 -04:00
|
|
|
fun main(): int {
|
|
|
|
|
var intVec.construct(): vector<int>;
|
2014-07-23 02:23:21 -07:00
|
|
|
intVec.addEnd(1);
|
|
|
|
|
intVec.addEnd(3);
|
|
|
|
|
intVec.addEnd(3);
|
|
|
|
|
intVec.addEnd(7);
|
2015-03-11 01:58:10 -04:00
|
|
|
println(intVec.size);
|
2015-05-09 06:24:56 -04:00
|
|
|
for (var i: int = 0; i < intVec.size; i++;)
|
2014-06-30 01:57:50 -07:00
|
|
|
print(intVec.at(i));
|
2015-05-27 00:58:33 -04:00
|
|
|
println();
|
2015-06-08 21:47:02 -04:00
|
|
|
for (var i: int = 0; i < intVec.size; i++;)
|
|
|
|
|
print(intVec[i]);
|
|
|
|
|
println();
|
2015-05-27 00:58:33 -04:00
|
|
|
|
|
|
|
|
// in place lambda map
|
|
|
|
|
intVec.in_place(fun(it:int):int { return it*2; })
|
|
|
|
|
for (var i: int = 0; i < intVec.size; i++;)
|
|
|
|
|
print(intVec.at(i));
|
|
|
|
|
println();
|
2015-06-28 20:25:27 -04:00
|
|
|
intVec.for_each(fun(it:int):void print(it+7);)
|
2015-05-30 04:43:01 -04:00
|
|
|
println();
|
2015-05-27 00:58:33 -04:00
|
|
|
|
|
|
|
|
var subd = intVec.map(fun(it:int):int { return it-1; })
|
|
|
|
|
for (var i: int = 0; i < subd.size; i++;)
|
|
|
|
|
print(subd.at(i));
|
|
|
|
|
println();
|
2014-12-30 01:22:09 -05:00
|
|
|
|
2015-05-27 00:58:33 -04:00
|
|
|
var newType = intVec.map(fun(it:int):double { return it+1.7; })
|
|
|
|
|
for (var i: int = 0; i < newType.size; i++;)
|
|
|
|
|
print(newType.at(i));
|
2014-06-30 01:57:50 -07:00
|
|
|
println();
|
2014-12-30 01:22:09 -05:00
|
|
|
|
2015-06-28 21:10:06 -04:00
|
|
|
vector(1,2,3,4,5,6,7,8,9,10,11,12).for_each(fun(i:int) { print(i); })
|
|
|
|
|
println()
|
|
|
|
|
|
2015-07-04 17:02:51 -04:00
|
|
|
var desVec: *vector<AbleToBeDestroyed> = new<vector<AbleToBeDestroyed>>()->construct();
|
2015-06-05 00:34:24 -04:00
|
|
|
var testDestruct.construct(0): AbleToBeDestroyed;
|
2014-07-23 02:23:21 -07:00
|
|
|
desVec->addEnd(testDestruct);
|
2015-06-05 00:34:24 -04:00
|
|
|
println("delete vector")
|
|
|
|
|
delete(desVec);
|
2015-06-14 11:13:30 -04:00
|
|
|
|
|
|
|
|
var newOne = vector("hayyy")
|
|
|
|
|
println(newOne[0])
|
|
|
|
|
var noParam = vector<double>()
|
|
|
|
|
noParam.add(4.7)
|
|
|
|
|
println(noParam[0])
|
|
|
|
|
|
|
|
|
|
var assignTest = vector("first")
|
|
|
|
|
println(assignTest[0])
|
|
|
|
|
var toAssign = vector("first")
|
|
|
|
|
toAssign.add("second")
|
|
|
|
|
assignTest = toAssign
|
|
|
|
|
println(assignTest[0])
|
|
|
|
|
println(assignTest[1])
|
|
|
|
|
|
2015-06-14 18:13:52 -04:00
|
|
|
var sliceTest = vector(1)
|
|
|
|
|
sliceTest.add(2)
|
|
|
|
|
sliceTest.add(3)
|
|
|
|
|
sliceTest.add(4)
|
|
|
|
|
print("full: ")
|
2015-06-28 20:25:27 -04:00
|
|
|
sliceTest.for_each(fun(it:int):void print(it);)
|
2015-06-14 18:13:52 -04:00
|
|
|
println()
|
|
|
|
|
print("middle: ")
|
2015-06-28 20:25:27 -04:00
|
|
|
sliceTest.slice(1,-2).for_each(fun(it:int):void print(it);)
|
2015-06-14 18:13:52 -04:00
|
|
|
println()
|
|
|
|
|
print("all but first: ")
|
2015-06-28 20:25:27 -04:00
|
|
|
sliceTest.slice(1,-1).for_each(fun(it:int):void print(it);)
|
2015-06-14 18:13:52 -04:00
|
|
|
println()
|
|
|
|
|
print("all but last: ")
|
2015-06-28 20:25:27 -04:00
|
|
|
sliceTest.slice(0,-2).for_each(fun(it:int):void print(it);)
|
2015-06-14 18:13:52 -04:00
|
|
|
println()
|
|
|
|
|
print("just some: ")
|
2015-06-28 20:25:27 -04:00
|
|
|
sliceTest.slice(1,2).for_each(fun(it:int):void print(it);)
|
2015-06-14 18:13:52 -04:00
|
|
|
println()
|
|
|
|
|
|
2015-06-27 10:04:09 -04:00
|
|
|
println("find test")
|
|
|
|
|
var multipleFindTest = vector(1,2,3)
|
2015-06-27 18:06:02 -04:00
|
|
|
println(multipleFindTest.find(1))
|
|
|
|
|
println(multipleFindTest.find(2))
|
|
|
|
|
println(multipleFindTest.find(3))
|
2015-06-27 10:04:09 -04:00
|
|
|
|
2015-07-06 13:48:19 -04:00
|
|
|
println("contains test")
|
|
|
|
|
println(multipleFindTest.contains(0))
|
|
|
|
|
println(multipleFindTest.contains(1))
|
|
|
|
|
println(multipleFindTest.contains(2))
|
|
|
|
|
println(multipleFindTest.contains(3))
|
|
|
|
|
println(multipleFindTest.contains(4))
|
|
|
|
|
|
|
|
|
|
println("add_unique test")
|
|
|
|
|
multipleFindTest.add_unique(1)
|
|
|
|
|
multipleFindTest.add_unique(4)
|
|
|
|
|
multipleFindTest.add_unique(4)
|
|
|
|
|
multipleFindTest.for_each( fun(i:int) { print(" "); print(i); } )
|
|
|
|
|
println()
|
|
|
|
|
|
2015-06-27 18:06:02 -04:00
|
|
|
println("set, []=, and delete test")
|
2015-06-27 11:46:31 -04:00
|
|
|
var setTest = vector(4,5,6)
|
|
|
|
|
setTest.add(7)
|
|
|
|
|
setTest.set(1,8)
|
|
|
|
|
setTest[2] = 9
|
2015-06-28 20:25:27 -04:00
|
|
|
setTest.for_each(fun(it: int) println(it);)
|
2015-06-27 18:06:02 -04:00
|
|
|
println("delete")
|
|
|
|
|
setTest.remove(2)
|
2015-06-28 20:25:27 -04:00
|
|
|
setTest.for_each(fun(it: int) println(it);)
|
2015-06-27 18:06:02 -04:00
|
|
|
|
|
|
|
|
println("delete v2")
|
|
|
|
|
var firstRem.construct(100): AbleToBeDestroyed;
|
|
|
|
|
var secondRem.construct(200): AbleToBeDestroyed;
|
|
|
|
|
var thirdRem.construct(300): AbleToBeDestroyed;
|
|
|
|
|
var remTest = vector(firstRem, secondRem, thirdRem);
|
|
|
|
|
remTest.remove(1)
|
2015-06-27 11:46:31 -04:00
|
|
|
|
2015-06-05 00:34:24 -04:00
|
|
|
println("done")
|
2014-07-06 23:42:25 -07:00
|
|
|
|
2014-06-30 01:57:50 -07:00
|
|
|
return 0;
|
|
|
|
|
}
|