Bugfixes, range(start,end,step), and beginning work on lexer and symbol
This commit is contained in:
@@ -1,4 +1,5 @@
|
||||
import vector
|
||||
import util
|
||||
import mem
|
||||
|
||||
fun string(in:char*):string {
|
||||
@@ -25,6 +26,9 @@ obj string (Object) {
|
||||
data.copy_construct(&vec);
|
||||
return this;
|
||||
}
|
||||
fun construct(str: string): string* {
|
||||
return construct(str.data);
|
||||
}
|
||||
|
||||
fun copy_construct(old: string*): void {
|
||||
data.copy_construct(&old->data)
|
||||
@@ -61,17 +65,32 @@ obj string (Object) {
|
||||
}
|
||||
fun length():int { return data.size; }
|
||||
|
||||
fun operator==(other: string): bool {
|
||||
return length() == other.length() && !util::range(length()).any_true(fun(i: int):bool { return data[i] != other[i]; } )
|
||||
}
|
||||
|
||||
fun operator+(str: char*): string {
|
||||
var newStr.construct(str):string
|
||||
var ret.construct(data + newStr.data):string
|
||||
return ret
|
||||
}
|
||||
|
||||
fun operator+(str: string): string {
|
||||
var newStr.construct(str):string
|
||||
var ret.construct(data + newStr.data):string
|
||||
return ret
|
||||
}
|
||||
|
||||
fun operator+=(str: char*): void {
|
||||
var newStr.construct(str):string
|
||||
data += newStr.data
|
||||
}
|
||||
|
||||
fun operator+=(str: string): void {
|
||||
var newStr.construct(str):string
|
||||
data += newStr.data
|
||||
}
|
||||
|
||||
fun toCharArray(): char* {
|
||||
var out: char* = mem::new<char>(data.size+1);
|
||||
for (var i: int = 0; i < data.size; i++;)
|
||||
|
||||
Reference in New Issue
Block a user