2017-12-07 04:37:14 +01:00
|
|
|
/// <reference path="../../assembly.d.ts" />
|
|
|
|
|
|
|
|
@global()
|
2017-12-08 04:03:44 +01:00
|
|
|
@struct()
|
2017-12-07 04:37:14 +01:00
|
|
|
class CArray<T> {
|
|
|
|
|
|
|
|
constructor(capacity: usize) {
|
2017-12-08 04:03:44 +01:00
|
|
|
return changetype<usize, this>(Heap.allocate(capacity * sizeof<T>()));
|
2017-12-07 04:37:14 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
@inline()
|
|
|
|
"[]"(index: usize): T {
|
2017-12-08 04:03:44 +01:00
|
|
|
return load<T>(changetype<this, usize>(this) + index * sizeof<T>());
|
2017-12-07 04:37:14 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
@inline()
|
|
|
|
"[]="(index: usize, value: T): T {
|
2017-12-08 04:03:44 +01:00
|
|
|
store<T>(changetype<this, usize>(this) + index * sizeof<T>(), value);
|
2017-12-07 04:37:14 +01:00
|
|
|
return value;
|
|
|
|
}
|
|
|
|
|
|
|
|
dispose(): void {
|
2017-12-08 04:03:44 +01:00
|
|
|
Heap.dispose(changetype<this, usize>(this));
|
2017-12-07 04:37:14 +01:00
|
|
|
}
|
|
|
|
}
|