1
0
mirror of https://github.com/vlang/v.git synced 2023-08-10 21:13:21 +03:00

fix maps; use maps for storing functions; verify struct initialization

This commit is contained in:
Alexander Medvednikov
2019-06-30 22:44:15 +02:00
parent 8e6cb1e1c2
commit 5936ab16c8
7 changed files with 222 additions and 199 deletions

View File

@@ -25,7 +25,7 @@ pub:
// next *Entry
}
pub fn new_map(cap, elm_size int) map {
fn new_map(cap, elm_size int) map {
res := map {
// len: len,
element_size: elm_size
@@ -59,15 +59,6 @@ fn (m mut map) _set(key string, val voidptr) {
m.is_sorted = false
}
fn volt_abs(n int) int {
// println('volt_abs($n)')
if n < 0 {
// println('< 0: -($n)')
return -n
}
return n
}
fn (m map) bs(query string, start, end int, out voidptr) {
// println('bs "$query" $start -> $end')
mid := start + ((end - start) / 2)

View File

@@ -1,5 +1,10 @@
struct User {
name string
}
struct A {
m map_int
m map[string]int
users map[string]User
}
fn (a mut A) set(key string, val int) {
@@ -10,10 +15,19 @@ fn test_map() {
mut m := map[string]int{}
m['hi'] = 80
assert m['hi'] == 80
////
mut users := map[string]User{}
users['1'] = User{'Peter'}
peter := users['1']
assert peter.name == 'Peter'
mut a := A{
m: new_map(1, sizeof(int))
m: map[string]int{}
users: map[string]User{}
}
a.users['Bob'] = User{'Bob'}
q := a.users['Bob']
assert q.name == 'Bob'
a.m['one'] = 1
a.set('two', 2)
assert a.m['one'] == 1

View File

@@ -636,7 +636,6 @@ __global g_ustring_runes []int
pub fn (s string) ustring_tmp() ustring {
mut res := ustring {
s: s
runes: 0
}
res.runes = g_ustring_runes
res.runes.len = s.len