class TestCase::GenericList<T> {
has values : object[];
has length : int;
has capacity : int;
static method new : TestCase::List ($capacity : int) {
my $self = new TestCase::List;
$self->{capacity} = $capacity;
$self->{values} = new object[$capacity];
return $self;
}
method add : void ($object : T) {
my $length = $self->{length};
my $capacity = $self->{capacity};
if ($length >= $capacity) {
my $new_capacity = $capacity * 2;
$self->{values} = new object[$new_capacity];
$self->{capacity} = $new_capacity;
}
$self->{values}[$length] = $object;
$self->{length} = $self->{length} + 1;
}
method get_values : T[] () {
my $values : T[];
for (my $i = 0; $i < $self->length; $i++) {
$values->[$i] = $self->values->[$i];
}
return $values;
}
method get : T ($index : int) {
return $self->{values}[$index];
}
}