builtin: remove methods that can be autogenerated (#11109)
parent
1a555ab898
commit
506c30a291
|
@ -592,44 +592,6 @@ pub fn copy(dst []byte, src []byte) int {
|
||||||
return min
|
return min
|
||||||
}
|
}
|
||||||
|
|
||||||
// Private function. Comparator for int type.
|
|
||||||
fn compare_ints(a &int, b &int) int {
|
|
||||||
if *a < *b {
|
|
||||||
return -1
|
|
||||||
}
|
|
||||||
if *a > *b {
|
|
||||||
return 1
|
|
||||||
}
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
|
|
||||||
fn compare_ints_reverse(a &int, b &int) int {
|
|
||||||
if *a > *b {
|
|
||||||
return -1
|
|
||||||
}
|
|
||||||
if *a < *b {
|
|
||||||
return 1
|
|
||||||
}
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
|
|
||||||
// sort sorts an array of int in place in ascending order.
|
|
||||||
pub fn (mut a []int) sort() {
|
|
||||||
a.sort_with_compare(compare_ints)
|
|
||||||
}
|
|
||||||
|
|
||||||
// index returns the first index at which a given element can be found in the array
|
|
||||||
// or -1 if the value is not found.
|
|
||||||
[direct_array_access]
|
|
||||||
pub fn (a []string) index(v string) int {
|
|
||||||
for i in 0 .. a.len {
|
|
||||||
if a[i] == v {
|
|
||||||
return i
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return -1
|
|
||||||
}
|
|
||||||
|
|
||||||
// reduce executes a given reducer function on each element of the array,
|
// reduce executes a given reducer function on each element of the array,
|
||||||
// resulting in a single output value.
|
// resulting in a single output value.
|
||||||
pub fn (a []int) reduce(iter fn (int, int) int, accum_start int) int {
|
pub fn (a []int) reduce(iter fn (int, int) int, accum_start int) int {
|
||||||
|
@ -652,25 +614,6 @@ pub fn (mut a array) grow_len(amount int) {
|
||||||
a.len += amount
|
a.len += amount
|
||||||
}
|
}
|
||||||
|
|
||||||
// eq checks if the arrays have the same elements or not.
|
|
||||||
// TODO: make it work with all types.
|
|
||||||
pub fn (a1 []string) eq(a2 []string) bool {
|
|
||||||
// return array_eq(a, a2)
|
|
||||||
if a1.len != a2.len {
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
size_of_string := int(sizeof(string))
|
|
||||||
for i in 0 .. a1.len {
|
|
||||||
offset := i * size_of_string
|
|
||||||
s1 := unsafe { &string(&byte(a1.data) + offset) }
|
|
||||||
s2 := unsafe { &string(&byte(a2.data) + offset) }
|
|
||||||
if *s1 != *s2 {
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return true
|
|
||||||
}
|
|
||||||
|
|
||||||
// pointers returns a new array, where each element
|
// pointers returns a new array, where each element
|
||||||
// is the address of the corresponding element in the array.
|
// is the address of the corresponding element in the array.
|
||||||
[unsafe]
|
[unsafe]
|
||||||
|
|
|
@ -340,22 +340,6 @@ struct RepIndex {
|
||||||
val_idx int
|
val_idx int
|
||||||
}
|
}
|
||||||
|
|
||||||
// compare_rep_index returns the result of comparing RepIndex `a` and `b`.
|
|
||||||
fn compare_rep_index(a &RepIndex, b &RepIndex) int {
|
|
||||||
if a.idx < b.idx {
|
|
||||||
return -1
|
|
||||||
}
|
|
||||||
if a.idx > b.idx {
|
|
||||||
return 1
|
|
||||||
}
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
|
|
||||||
// sort2 sorts the RepIndex array using `compare_rep_index`.
|
|
||||||
fn (mut a []RepIndex) sort2() {
|
|
||||||
a.sort_with_compare(compare_rep_index)
|
|
||||||
}
|
|
||||||
|
|
||||||
// replace_each replaces all occurences of the string pairs given in `vals`.
|
// replace_each replaces all occurences of the string pairs given in `vals`.
|
||||||
// Example: assert 'ABCD'.replace_each(['B','C/','C','D','D','C']) == 'AC/DC'
|
// Example: assert 'ABCD'.replace_each(['B','C/','C','D','D','C']) == 'AC/DC'
|
||||||
[direct_array_access]
|
[direct_array_access]
|
||||||
|
@ -404,7 +388,7 @@ pub fn (s string) replace_each(vals []string) string {
|
||||||
if idxs.len == 0 {
|
if idxs.len == 0 {
|
||||||
return s.clone()
|
return s.clone()
|
||||||
}
|
}
|
||||||
idxs.sort2()
|
idxs.sort(a.idx < b.idx)
|
||||||
mut b := unsafe { malloc_noscan(new_len + 1) } // add space for 0 terminator
|
mut b := unsafe { malloc_noscan(new_len + 1) } // add space for 0 terminator
|
||||||
// Fill the new string
|
// Fill the new string
|
||||||
mut idx_pos := 0
|
mut idx_pos := 0
|
||||||
|
@ -1192,17 +1176,6 @@ pub fn compare_strings(a &string, b &string) int {
|
||||||
return 0
|
return 0
|
||||||
}
|
}
|
||||||
|
|
||||||
// compare_strings_reverse returns `1` if `a < b`, `-1` if `a > b` else `0`.
|
|
||||||
fn compare_strings_reverse(a &string, b &string) int {
|
|
||||||
if a < b {
|
|
||||||
return 1
|
|
||||||
}
|
|
||||||
if a > b {
|
|
||||||
return -1
|
|
||||||
}
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
|
|
||||||
// compare_strings_by_len returns `-1` if `a.len < b.len`, `1` if `a.len > b.len` else `0`.
|
// compare_strings_by_len returns `-1` if `a.len < b.len`, `1` if `a.len > b.len` else `0`.
|
||||||
fn compare_strings_by_len(a &string, b &string) int {
|
fn compare_strings_by_len(a &string, b &string) int {
|
||||||
if a.len < b.len {
|
if a.len < b.len {
|
||||||
|
@ -1221,11 +1194,6 @@ fn compare_lower_strings(a &string, b &string) int {
|
||||||
return compare_strings(&aa, &bb)
|
return compare_strings(&aa, &bb)
|
||||||
}
|
}
|
||||||
|
|
||||||
// sort sorts the string array.
|
|
||||||
pub fn (mut s []string) sort() {
|
|
||||||
s.sort_with_compare(compare_strings)
|
|
||||||
}
|
|
||||||
|
|
||||||
// sort_ignore_case sorts the string array using case insesitive comparing.
|
// sort_ignore_case sorts the string array using case insesitive comparing.
|
||||||
pub fn (mut s []string) sort_ignore_case() {
|
pub fn (mut s []string) sort_ignore_case() {
|
||||||
s.sort_with_compare(compare_lower_strings)
|
s.sort_with_compare(compare_lower_strings)
|
||||||
|
|
|
@ -3,7 +3,7 @@ import os.cmdline
|
||||||
fn test_options() {
|
fn test_options() {
|
||||||
args := ['v', '-d', 'aa', '-d', 'bb', '-d', 'cc']
|
args := ['v', '-d', 'aa', '-d', 'bb', '-d', 'cc']
|
||||||
ret := cmdline.options(args, '-d')
|
ret := cmdline.options(args, '-d')
|
||||||
assert ret.eq(['aa', 'bb', 'cc'])
|
assert ret == ['aa', 'bb', 'cc']
|
||||||
}
|
}
|
||||||
|
|
||||||
fn test_option() {
|
fn test_option() {
|
||||||
|
@ -15,23 +15,23 @@ fn test_option() {
|
||||||
fn test_options_before() {
|
fn test_options_before() {
|
||||||
args := ['-stat', 'test', 'aaa.v']
|
args := ['-stat', 'test', 'aaa.v']
|
||||||
ret := cmdline.options_before(args, ['test'])
|
ret := cmdline.options_before(args, ['test'])
|
||||||
assert ret.eq(['-stat'])
|
assert ret == ['-stat']
|
||||||
}
|
}
|
||||||
|
|
||||||
fn test_options_after() {
|
fn test_options_after() {
|
||||||
args := ['-stat', 'test', 'aaa.v']
|
args := ['-stat', 'test', 'aaa.v']
|
||||||
ret := cmdline.options_after(args, ['test'])
|
ret := cmdline.options_after(args, ['test'])
|
||||||
assert ret.eq(['aaa.v'])
|
assert ret == ['aaa.v']
|
||||||
}
|
}
|
||||||
|
|
||||||
fn test_only_non_options() {
|
fn test_only_non_options() {
|
||||||
args := ['-d', 'aa', '--help', 'bb']
|
args := ['-d', 'aa', '--help', 'bb']
|
||||||
ret := cmdline.only_non_options(args)
|
ret := cmdline.only_non_options(args)
|
||||||
assert ret.eq(['aa', 'bb'])
|
assert ret == ['aa', 'bb']
|
||||||
}
|
}
|
||||||
|
|
||||||
fn test_only_options() {
|
fn test_only_options() {
|
||||||
args := ['-d', 'aa', '--help', 'bb']
|
args := ['-d', 'aa', '--help', 'bb']
|
||||||
ret := cmdline.only_options(args)
|
ret := cmdline.only_options(args)
|
||||||
assert ret.eq(['-d', '--help'])
|
assert ret == ['-d', '--help']
|
||||||
}
|
}
|
||||||
|
|
|
@ -221,6 +221,10 @@ fn (mut g Gen) gen_array_sort(node ast.CallExpr) {
|
||||||
// println(rec_sym.kind)
|
// println(rec_sym.kind)
|
||||||
verror('.sort() is an array method')
|
verror('.sort() is an array method')
|
||||||
}
|
}
|
||||||
|
if g.pref.is_bare {
|
||||||
|
g.writeln('bare_panic(_SLIT("sort does not work with -freestanding"))')
|
||||||
|
return
|
||||||
|
}
|
||||||
info := rec_sym.info as ast.Array
|
info := rec_sym.info as ast.Array
|
||||||
// `users.sort(a.age > b.age)`
|
// `users.sort(a.age > b.age)`
|
||||||
// Generate a comparison function for a custom type
|
// Generate a comparison function for a custom type
|
||||||
|
|
Loading…
Reference in New Issue