cleanup: replace C for loops with range

pull/3831/head
spaceface777 2020-02-24 17:55:16 +01:00 committed by GitHub
parent 5918946feb
commit ef8c1203b4
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
50 changed files with 168 additions and 170 deletions

View File

@ -170,7 +170,7 @@ https://github.com/vlang/ui
```v ```v
fn main() { fn main() {
for i := 0; i < 3; i++ { for i in 0..3 {
println('Hello from V.js') println('Hello from V.js')
} }
} }

View File

@ -641,7 +641,7 @@ so `register()` can change the user object. The same works with non-receiver arg
```v ```v
fn multiply_by_2(arr mut []int) { fn multiply_by_2(arr mut []int) {
for i := 0; i < arr.len; i++ { for i in 0..arr.len {
arr[i] *= 2 arr[i] *= 2
} }
} }

View File

@ -41,7 +41,7 @@ fn greet_func(cmd cli.Command) {
language := cmd.flags.get_string('language') or { panic('failed to get \'language\' flag: $err') } language := cmd.flags.get_string('language') or { panic('failed to get \'language\' flag: $err') }
times := cmd.flags.get_int('times') or { panic('failed to get \'times\' flag: $err') } times := cmd.flags.get_int('times') or { panic('failed to get \'times\' flag: $err') }
for i := 0; i < times; i++ { for i in 0..times {
match language { match language {
'english' { println('Hello World') } 'english' { println('Hello World') }
'german' { println('Hallo Welt') } 'german' { println('Hallo Welt') }

View File

@ -25,7 +25,7 @@ fn main() {
mut b := u64(0) mut b := u64(0)
mut c := u64(1) mut c := u64(1)
for i := 0; i < stop; i++ { for i in 0..stop {
// Set a and b to the next term // Set a and b to the next term
a = b a = b
b = c b = c

View File

@ -48,8 +48,8 @@ fn new_automaton(f [][]int) Automaton {
} }
field := &A2D{ maxx: maxx maxy: maxy data: &int( calloc( sizeof(int) * maxy * maxx ) ) } field := &A2D{ maxx: maxx maxy: maxy data: &int( calloc( sizeof(int) * maxy * maxx ) ) }
new_field := &A2D{ maxx: maxx maxy: maxy data: &int( calloc( sizeof(int) * maxy * maxx ) ) } new_field := &A2D{ maxx: maxx maxy: maxy data: &int( calloc( sizeof(int) * maxy * maxx ) ) }
for y := 0; y < field.maxy; y++ { for y in 0..field.maxy {
for x := 0; x < field.maxx; x++ { for x in 0..field.maxx {
field.set( x, y, f[y][x] ) field.set( x, y, f[y][x] )
} }
} }

View File

@ -1,5 +1,5 @@
fn main() { fn main() {
for i := 0; i < 3; i++ { for i in 0..3 {
println('Hello from V.js') println('Hello from V.js')
} }
} }

View File

@ -33,7 +33,7 @@ pub mut:
} }
fn advance(sys mut System, dt f64) { fn advance(sys mut System, dt f64) {
for i := 0; i < N - 1; i++ { for i in 0..N - 1 {
mut _vx := sys.v[i].x mut _vx := sys.v[i].x
mut _vy := sys.v[i].y mut _vy := sys.v[i].y
mut _vz := sys.v[i].z mut _vz := sys.v[i].z
@ -61,7 +61,7 @@ fn advance(sys mut System, dt f64) {
sys.v[i].z = _vz sys.v[i].z = _vz
} }
for i := 0; i < N; i++ { for i in 0..N {
sys.s[i].x += dt * sys.v[i].x sys.s[i].x += dt * sys.v[i].x
sys.s[i].y += dt * sys.v[i].y sys.s[i].y += dt * sys.v[i].y
sys.s[i].z += dt * sys.v[i].z sys.s[i].z += dt * sys.v[i].z
@ -73,7 +73,7 @@ fn offsetmomentum(sys mut System) {
mut py := f64(0) mut py := f64(0)
mut pz := f64(0) mut pz := f64(0)
for i := 0; i < N; i++ { for i in 0..N {
px += sys.v[i].x * sys.v[i].m px += sys.v[i].x * sys.v[i].m
py += sys.v[i].y * sys.v[i].m py += sys.v[i].y * sys.v[i].m
pz += sys.v[i].z * sys.v[i].m pz += sys.v[i].z * sys.v[i].m
@ -85,7 +85,7 @@ fn offsetmomentum(sys mut System) {
fn energy(sys System) f64 { fn energy(sys System) f64 {
mut e := f64(0) mut e := f64(0)
for i := 0; i < N; i++ { for i in 0..N {
e += 0.5 * sys.v[i].m * (sys.v[i].x * sys.v[i].x + sys.v[i].y * sys.v[i].y + sys.v[i].z * sys.v[i].z) e += 0.5 * sys.v[i].m * (sys.v[i].x * sys.v[i].x + sys.v[i].y * sys.v[i].y + sys.v[i].z * sys.v[i].z)
for j := i + 1; j < N; j++ { for j := i + 1; j < N; j++ {
dx := sys.s[i].x - sys.s[j].x dx := sys.s[i].x - sys.s[j].x
@ -124,7 +124,7 @@ sys := &System {arr_momentum(), arr_position()}
offsetmomentum(mut sys) offsetmomentum(mut sys)
println('${energy(sys):.9f}') //-0.169075164 println('${energy(sys):.9f}') //-0.169075164
for i := 0; i < 50000000; i++ { for i in 0..50000000 {
advance(mut sys, 0.01) advance(mut sys, 0.01)
} }
println('${energy(sys):.9f}') //-0.169059907 println('${energy(sys):.9f}') //-0.169059907

View File

@ -58,7 +58,7 @@ fn main() {
if ids.len > 10 { if ids.len > 10 {
// ids = ids[:10] // ids = ids[:10]
mut tmp := [0].repeat(10) mut tmp := [0].repeat(10)
for i := 0; i < 10; i++ { for i in 0..10 {
tmp[i] = ids[i] tmp[i] = ids[i]
} }
ids = tmp ids = tmp
@ -69,7 +69,7 @@ fn main() {
wg: sync.new_waitgroup() wg: sync.new_waitgroup()
} }
fetcher.wg.add(ids.len) fetcher.wg.add(ids.len)
for i := 0; i < nr_threads; i++ { for i in 0..nr_threads {
go fetcher.fetch() go fetcher.fetch()
} }
fetcher.wg.wait() fetcher.wg.wait()

View File

@ -409,7 +409,7 @@ fn ray_trace(w int, h int, samps int, file_name string, scene_id int) Image {
// OpenMP injection point! #pragma omp parallel for schedule(dynamic, 1) shared(c) // OpenMP injection point! #pragma omp parallel for schedule(dynamic, 1) shared(c)
for y:=0; y < h; y++ { for y:=0; y < h; y++ {
eprint("\rRendering (${samps * 4} spp) ${(100.0 * f64(y)) / (f64(h) - 1.0):5.2f}%") eprint("\rRendering (${samps * 4} spp) ${(100.0 * f64(y)) / (f64(h) - 1.0):5.2f}%")
for x := 0; x < w; x++ { for x in 0..w {
i := (h - y - 1) * w + x i := (h - y - 1) * w + x
mut ivec := &image.data[i] mut ivec := &image.data[i]
@ -417,7 +417,7 @@ fn ray_trace(w int, h int, samps int, file_name string, scene_id int) Image {
for sy := 0; sy < 2; sy ++ { for sy := 0; sy < 2; sy ++ {
for sx := 0; sx < 2; sx ++ { for sx := 0; sx < 2; sx ++ {
r = Vec{0,0,0} r = Vec{0,0,0}
for s := 0; s < samps; s++ { for s in 0..samps {
r1 := v_2 * rand_f64() r1 := v_2 * rand_f64()
dx := if r1 < v_1 { math.sqrt(r1) - v_1 } else { v_1 - math.sqrt(v_2 - r1) } dx := if r1 < v_1 { math.sqrt(r1) - v_1 } else { v_1 - math.sqrt(v_2 - r1) }

View File

@ -18,9 +18,9 @@ fn evala(i, j int) int {
} }
fn times(v mut []f64, u []f64) { fn times(v mut []f64, u []f64) {
for i := 0; i < v.len; i++ { for i in 0..v.len {
mut a := f64(0) mut a := f64(0)
for j := 0; j < u.len; j++ { for j in 0..u.len {
a += u[j] / f64(evala(i, j)) a += u[j] / f64(evala(i, j))
} }
v[i] = a v[i] = a
@ -28,9 +28,9 @@ fn times(v mut []f64, u []f64) {
} }
fn times_trans(v mut []f64, u []f64) { fn times_trans(v mut []f64, u []f64) {
for i := 0; i < v.len; i++ { for i in 0..v.len {
mut a := f64(0) mut a := f64(0)
for j := 0; j < u.len; j++ { for j in 0..u.len {
a += u[j] / f64(evala(j, i)) a += u[j] / f64(evala(j, i))
} }
v[i] = a v[i] = a
@ -54,13 +54,13 @@ fn main() {
} }
mut u := [f64(1.0)].repeat(n) mut u := [f64(1.0)].repeat(n)
mut v := [f64(1.0)].repeat(n) mut v := [f64(1.0)].repeat(n)
for i := 0; i < 10; i++ { for i in 0..10 {
a_times_transp(mut v, u) a_times_transp(mut v, u)
a_times_transp(mut u, v) a_times_transp(mut u, v)
} }
mut vbv := f64(0) mut vbv := f64(0)
mut vv := f64(0) mut vv := f64(0)
for i := 0; i < n; i++ { for i in 0..n {
vbv += u[i] * v[i] vbv += u[i] * v[i]
vv += v[i] * v[i] vv += v[i] * v[i]
} }

View File

@ -175,7 +175,7 @@ fn (g mut Game) init_game() {
g.generate_tetro() g.generate_tetro()
g.field = [] // TODO: g.field = [][]int g.field = [] // TODO: g.field = [][]int
// Generate the field, fill it with 0's, add -1's on each edge // Generate the field, fill it with 0's, add -1's on each edge
for i := 0; i < FieldHeight + 2; i++ { for i in 0..FieldHeight + 2 {
mut row := [0].repeat(FieldWidth + 2) mut row := [0].repeat(FieldWidth + 2)
row[0] = - 1 row[0] = - 1
row[FieldWidth + 1] = - 1 row[FieldWidth + 1] = - 1
@ -183,7 +183,7 @@ fn (g mut Game) init_game() {
} }
mut first_row := g.field[0] mut first_row := g.field[0]
mut last_row := g.field[FieldHeight + 1] mut last_row := g.field[FieldHeight + 1]
for j := 0; j < FieldWidth + 2; j++ { for j in 0..FieldWidth + 2 {
first_row[j] = - 1 first_row[j] = - 1
last_row[j] = - 1 last_row[j] = - 1
} }
@ -238,7 +238,7 @@ fn (g mut Game) move_tetro() {
fn (g mut Game) move_right(dx int) bool { fn (g mut Game) move_right(dx int) bool {
// Reached left/right edge or another tetro? // Reached left/right edge or another tetro?
for i := 0; i < TetroSize; i++ { for i in 0..TetroSize {
tetro := g.tetro[i] tetro := g.tetro[i]
y := tetro.y + g.pos_y y := tetro.y + g.pos_y
x := tetro.x + g.pos_x + dx x := tetro.x + g.pos_x + dx
@ -293,7 +293,7 @@ fn (g mut Game) get_tetro() {
// TODO mut // TODO mut
fn (g &Game) drop_tetro() { fn (g &Game) drop_tetro() {
for i := 0; i < TetroSize; i++ { for i in 0..TetroSize {
tetro := g.tetro[i] tetro := g.tetro[i]
x := tetro.x + g.pos_x x := tetro.x + g.pos_x
y := tetro.y + g.pos_y y := tetro.y + g.pos_y
@ -305,7 +305,7 @@ fn (g &Game) drop_tetro() {
} }
fn (g &Game) draw_tetro() { fn (g &Game) draw_tetro() {
for i := 0; i < TetroSize; i++ { for i in 0..TetroSize {
tetro := g.tetro[i] tetro := g.tetro[i]
g.draw_block(g.pos_y + tetro.y, g.pos_x + tetro.x, g.tetro_idx + 1) g.draw_block(g.pos_y + tetro.y, g.pos_x + tetro.x, g.tetro_idx + 1)
} }

View File

@ -21,7 +21,7 @@ fn display_help() {
fn option_parser() bool { fn option_parser() bool {
help := Options{'--help', '-h'} help := Options{'--help', '-h'}
for i := 0; i < os.args.len; i++ { for i in 0..os.args.len {
if os.args[i]== help.long_opt || os.args[i]== help.short_opt { if os.args[i]== help.long_opt || os.args[i]== help.short_opt {
display_help() display_help()
return true return true
@ -31,7 +31,7 @@ fn option_parser() bool {
} }
fn str_is_nbr(s string) bool { fn str_is_nbr(s string) bool {
for i := 0; i < s.len; i++ { for i in 0..s.len {
if !s[i].is_digit() { if !s[i].is_digit() {
return false return false
} }

View File

@ -91,7 +91,7 @@ pub fn from_bytes(input []byte) BitField {
pub fn from_string(input string) BitField { pub fn from_string(input string) BitField {
mut output := new(input.len) mut output := new(input.len)
for i := 0; i < input.len; i++ { for i in 0..input.len {
if input[i] != 48 { if input[i] != 48 {
output.setbit(i) output.setbit(i)
} }
@ -104,7 +104,7 @@ pub fn from_string(input string) BitField {
pub fn (input BitField) string() string { pub fn (input BitField) string() string {
mut output := '' mut output := ''
for i := 0; i < input.size; i++ { for i in 0..input.size {
if input.getbit(i) == 1 { if input.getbit(i) == 1 {
output = output + '1' output = output + '1'
} }
@ -157,7 +157,7 @@ pub fn (instance mut BitField) clearbit(bitnr int) {
// setall() sets all bits in the array to 1 // setall() sets all bits in the array to 1
pub fn (instance mut BitField) setall() { pub fn (instance mut BitField) setall() {
for i := 0; i < bitnslots(instance.size); i++ { for i in 0..bitnslots(instance.size) {
instance.field[i] = u32(-1) instance.field[i] = u32(-1)
} }
cleartail(mut instance) cleartail(mut instance)
@ -166,7 +166,7 @@ pub fn (instance mut BitField) setall() {
// clearall() clears (sets to zero) all bits in the array // clearall() clears (sets to zero) all bits in the array
pub fn (instance mut BitField) clearall() { pub fn (instance mut BitField) clearall() {
for i := 0; i < bitnslots(instance.size); i++ { for i in 0..bitnslots(instance.size) {
instance.field[i] = u32(0) instance.field[i] = u32(0)
} }
} }
@ -251,7 +251,7 @@ pub fn join(input1 BitField, input2 BitField) BitField {
output_size := input1.size + input2.size output_size := input1.size + input2.size
mut output := new(output_size) mut output := new(output_size)
// copy the first input to output as is // copy the first input to output as is
for i := 0; i < bitnslots(input1.size); i++ { for i in 0..bitnslots(input1.size) {
output.field[i] = input1.field[i] output.field[i] = input1.field[i]
} }
@ -259,7 +259,7 @@ pub fn join(input1 BitField, input2 BitField) BitField {
offset_bit := input1.size % SLOT_SIZE offset_bit := input1.size % SLOT_SIZE
offset_slot := input1.size / SLOT_SIZE offset_slot := input1.size / SLOT_SIZE
for i := 0; i < bitnslots(input2.size); i++ { for i in 0..bitnslots(input2.size) {
output.field[i + offset_slot] |= output.field[i + offset_slot] |=
u32(input2.field[i] << u32(offset_bit)) u32(input2.field[i] << u32(offset_bit))
} }
@ -278,12 +278,12 @@ pub fn join(input1 BitField, input2 BitField) BitField {
* If offset_bit is zero, no additional copies needed. * If offset_bit is zero, no additional copies needed.
*/ */
if (output_size - 1) % SLOT_SIZE < (input2.size - 1) % SLOT_SIZE { if (output_size - 1) % SLOT_SIZE < (input2.size - 1) % SLOT_SIZE {
for i := 0; i < bitnslots(input2.size); i++ { for i in 0..bitnslots(input2.size) {
output.field[i + offset_slot + 1] |= output.field[i + offset_slot + 1] |=
u32(input2.field[i] >> u32(SLOT_SIZE - offset_bit)) u32(input2.field[i] >> u32(SLOT_SIZE - offset_bit))
} }
} else if (output_size - 1) % SLOT_SIZE > (input2.size - 1) % SLOT_SIZE { } else if (output_size - 1) % SLOT_SIZE > (input2.size - 1) % SLOT_SIZE {
for i := 0; i < bitnslots(input2.size) - 1; i++ { for i in 0..bitnslots(input2.size) - 1 {
output.field[i + offset_slot + 1] |= output.field[i + offset_slot + 1] |=
u32(input2.field[i] >> u32(SLOT_SIZE - offset_bit)) u32(input2.field[i] >> u32(SLOT_SIZE - offset_bit))
} }
@ -331,7 +331,7 @@ pub fn clone(input BitField) BitField {
pub fn cmp(input1 BitField, input2 BitField) bool { pub fn cmp(input1 BitField, input2 BitField) bool {
if input1.size != input2.size {return false} if input1.size != input2.size {return false}
for i := 0; i < bitnslots(input1.size); i++ { for i in 0..bitnslots(input1.size) {
if input1.field[i] != input2.field[i] {return false} if input1.field[i] != input2.field[i] {return false}
} }
return true return true
@ -344,14 +344,14 @@ pub fn (instance BitField) popcount() int {
bitnslots := bitnslots(size) bitnslots := bitnslots(size)
tail := size % SLOT_SIZE tail := size % SLOT_SIZE
mut count := 0 mut count := 0
for i := 0; i < bitnslots - 1; i++ { for i in 0..bitnslots - 1 {
for j := 0; j < SLOT_SIZE; j++ { for j in 0..SLOT_SIZE {
if u32(instance.field[i] >> u32(j)) & u32(1) == u32(1) { if u32(instance.field[i] >> u32(j)) & u32(1) == u32(1) {
count++ count++
} }
} }
} }
for j := 0; j < tail; j++ { for j in 0..tail {
if u32(instance.field[bitnslots - 1] >> u32(j)) & u32(1) == u32(1) { if u32(instance.field[bitnslots - 1] >> u32(j)) & u32(1) == u32(1) {
count++ count++
} }
@ -412,7 +412,7 @@ pub fn (input BitField) slice(_start int, _end int) BitField {
if output_slots > 1 { if output_slots > 1 {
if start_offset != 0 { if start_offset != 0 {
for i := 0; i < output_slots - 1; i++ { for i in 0..output_slots - 1 {
output.field[i] = output.field[i] =
u32(input.field[start_slot + i] >> u32(start_offset)) u32(input.field[start_slot + i] >> u32(start_offset))
output.field[i] = output.field[i] | output.field[i] = output.field[i] |
@ -421,7 +421,7 @@ pub fn (input BitField) slice(_start int, _end int) BitField {
} }
} }
else { else {
for i := 0; i < output_slots - 1; i++ { for i in 0..output_slots - 1 {
output.field[i] = output.field[i] =
u32(input.field[start_slot + i]) u32(input.field[start_slot + i])
} }
@ -465,14 +465,14 @@ pub fn (instance BitField) reverse() BitField {
bitnslots := bitnslots(size) bitnslots := bitnslots(size)
mut output := new(size) mut output := new(size)
for i:= 0; i < (bitnslots - 1); i++ { for i:= 0; i < (bitnslots - 1); i++ {
for j := 0; j < SLOT_SIZE; j++ { for j in 0..SLOT_SIZE {
if u32(instance.field[i] >> u32(j)) & u32(1) == u32(1) { if u32(instance.field[i] >> u32(j)) & u32(1) == u32(1) {
bitset(mut output, size - i * SLOT_SIZE - j - 1) bitset(mut output, size - i * SLOT_SIZE - j - 1)
} }
} }
} }
bits_in_last_input_slot := (size - 1) % SLOT_SIZE + 1 bits_in_last_input_slot := (size - 1) % SLOT_SIZE + 1
for j := 0; j < bits_in_last_input_slot; j++ { for j in 0..bits_in_last_input_slot {
if u32(instance.field[bitnslots - 1] >> u32(j)) & u32(1) == u32(1) { if u32(instance.field[bitnslots - 1] >> u32(j)) & u32(1) == u32(1) {
bitset(mut output, bits_in_last_input_slot - j - 1) bitset(mut output, bits_in_last_input_slot - j - 1)
} }

View File

@ -49,7 +49,7 @@ fn test_clone_cmp() {
rand.seed(time.now().unix) rand.seed(time.now().unix)
len := 80 len := 80
mut input := bitfield.new(len) mut input := bitfield.new(len)
for i := 0; i < len; i++ { for i in 0..len {
if rand.next(2) == 1 { if rand.next(2) == 1 {
input.setbit(i) input.setbit(i)
} }
@ -63,7 +63,7 @@ fn test_slice_join() {
rand.seed(time.now().unix) rand.seed(time.now().unix)
len := 80 len := 80
mut input := bitfield.new(len) mut input := bitfield.new(len)
for i := 0; i < len; i++ { for i in 0..len {
if rand.next(2) == 1 { if rand.next(2) == 1 {
input.setbit(i) input.setbit(i)
} }
@ -87,7 +87,7 @@ fn test_popcount() {
len := 80 len := 80
mut count0 := 0 mut count0 := 0
mut input := bitfield.new(len) mut input := bitfield.new(len)
for i := 0; i < len; i++ { for i in 0..len {
if rand.next(2) == 1 { if rand.next(2) == 1 {
input.setbit(i) input.setbit(i)
count0++ count0++
@ -103,7 +103,7 @@ fn test_hamming() {
mut count := 0 mut count := 0
mut input1 := bitfield.new(len) mut input1 := bitfield.new(len)
mut input2 := bitfield.new(len) mut input2 := bitfield.new(len)
for i := 0; i < len; i++ { for i in 0..len {
match rand.next(4) { match rand.next(4) {
0, 1 { 0, 1 {
input1.setbit(i) input1.setbit(i)
@ -129,7 +129,7 @@ fn test_bf_from_bytes() {
input := [byte(0xF0), byte(0x0F), byte(0xF0), byte(0xFF)] input := [byte(0xF0), byte(0x0F), byte(0xF0), byte(0xFF)]
output := bitfield.from_bytes(input) output := bitfield.from_bytes(input)
mut result := 1 mut result := 1
for i := 0; i < input.len * 8; i++ { for i in 0..input.len * 8 {
if (input[i / 8] >> (i % 8)) & 1 != output.getbit(i) { if (input[i / 8] >> (i % 8)) & 1 != output.getbit(i) {
result = 0 result = 0
} }
@ -141,7 +141,7 @@ fn test_bf_from_string() {
rand.seed(time.now().unix) rand.seed(time.now().unix)
len := 80 len := 80
mut input := '' mut input := ''
for i := 0; i < len; i++ { for i in 0..len {
if rand.next(2) == 1 { if rand.next(2) == 1 {
input = input + '1' input = input + '1'
} }
@ -151,7 +151,7 @@ fn test_bf_from_string() {
} }
output := bitfield.from_string(input) output := bitfield.from_string(input)
mut result := 1 mut result := 1
for i := 0; i < len; i++ { for i in 0..len {
if input[i] != output.getbit(i) + 48 { if input[i] != output.getbit(i) + 48 {
result = 0 result = 0
} }
@ -163,13 +163,13 @@ fn test_bf_bf2str() {
rand.seed(time.now().unix) rand.seed(time.now().unix)
len := 80 len := 80
mut input := bitfield.new(len) mut input := bitfield.new(len)
for i := 0; i < len; i++ { for i in 0..len {
if rand.next(2) == 1 { if rand.next(2) == 1 {
input.setbit(i) input.setbit(i)
} }
} }
mut check := '' mut check := ''
for i := 0; i < len; i++ { for i in 0..len {
if input.getbit(i) == 1 { if input.getbit(i) == 1 {
check = check + '1' check = check + '1'
} }
@ -179,7 +179,7 @@ fn test_bf_bf2str() {
} }
output := input.string() output := input.string()
mut result := 1 mut result := 1
for i := 0; i < len; i++ { for i in 0..len {
if check[i] != output[i] { if check[i] != output[i] {
result = 0 result = 0
} }
@ -193,7 +193,7 @@ fn test_bf_setall() {
mut input := bitfield.new(len) mut input := bitfield.new(len)
input.setall() input.setall()
mut result := 1 mut result := 1
for i := 0; i < len; i++ { for i in 0..len {
if input.getbit(i) != 1 { if input.getbit(i) != 1 {
result = 0 result = 0
} }
@ -205,14 +205,14 @@ fn test_bf_clearall() {
rand.seed(time.now().unix) rand.seed(time.now().unix)
len := 80 len := 80
mut input := bitfield.new(len) mut input := bitfield.new(len)
for i := 0; i < len; i++ { for i in 0..len {
if rand.next(2) == 1 { if rand.next(2) == 1 {
input.setbit(i) input.setbit(i)
} }
} }
input.clearall() input.clearall()
mut result := 1 mut result := 1
for i := 0; i < len; i++ { for i in 0..len {
if input.getbit(i) != 0 { if input.getbit(i) != 0 {
result = 0 result = 0
} }
@ -224,7 +224,7 @@ fn test_bf_reverse() {
rand.seed(time.now().unix) rand.seed(time.now().unix)
len := 80 len := 80
mut input := bitfield.new(len) mut input := bitfield.new(len)
for i := 0; i < len; i++ { for i in 0..len {
if rand.next(2) == 1 { if rand.next(2) == 1 {
input.setbit(i) input.setbit(i)
} }
@ -232,7 +232,7 @@ fn test_bf_reverse() {
check := bitfield.clone(input) check := bitfield.clone(input)
output := input.reverse() output := input.reverse()
mut result := 1 mut result := 1
for i := 0; i < len; i++ { for i in 0..len {
if output.getbit(i) != check.getbit(len - i - 1) { if output.getbit(i) != check.getbit(len - i - 1) {
result = 0 result = 0
} }
@ -244,7 +244,7 @@ fn test_bf_resize() {
rand.seed(time.now().unix) rand.seed(time.now().unix)
len := 80 len := 80
mut input := bitfield.new(rand.next(len) + 1) mut input := bitfield.new(rand.next(len) + 1)
for i := 0; i < 100; i++ { for i in 0..100 {
input.resize(rand.next(len) + 1) input.resize(rand.next(len) + 1)
input.setbit(input.getsize() - 1) input.setbit(input.getsize() - 1)
} }
@ -263,12 +263,12 @@ fn test_bf_pos() {
len := 80 len := 80
mut result := 1 mut result := 1
for i := 1; i < len; i++ { // needle size for i := 1; i < len; i++ { // needle size
for j := 0; j < len - i; j++ { // needle position in the haystack for j in 0..len - i { // needle position in the haystack
// create the needle // create the needle
mut needle := bitfield.new(i) mut needle := bitfield.new(i)
// fill the needle with random values // fill the needle with random values
for k := 0; k < i; k++ { for k in 0..i {
if rand.next(2) == 1 { if rand.next(2) == 1 {
needle.setbit(k) needle.setbit(k)
} }

View File

@ -98,7 +98,7 @@ pub fn (a array) repeat(nr_repeats int) array {
element_size: a.element_size element_size: a.element_size
data: calloc(size) data: calloc(size)
} }
for i := 0; i < nr_repeats; i++ { for i in 0..nr_repeats {
C.memcpy(arr.data + i * a.len * a.element_size, a.data, a.len * a.element_size) C.memcpy(arr.data + i * a.len * a.element_size, a.data, a.len * a.element_size)
} }
return arr return arr
@ -335,7 +335,7 @@ pub fn (a array) reverse() array {
element_size: a.element_size element_size: a.element_size
data: calloc(a.cap * a.element_size) data: calloc(a.cap * a.element_size)
} }
for i := 0; i < a.len; i++ { for i in 0..a.len {
C.memcpy(arr.data + i * arr.element_size, &a[a.len - 1 - i], arr.element_size) C.memcpy(arr.data + i * arr.element_size, &a[a.len - 1 - i], arr.element_size)
} }
return arr return arr
@ -355,7 +355,7 @@ pub fn (a array) free() {
pub fn (a []string) str() string { pub fn (a []string) str() string {
mut sb := strings.new_builder(a.len * 3) mut sb := strings.new_builder(a.len * 3)
sb.write('[') sb.write('[')
for i := 0; i < a.len; i++ { for i in 0..a.len {
val := a[i] val := a[i]
sb.write('"') sb.write('"')
sb.write(val) sb.write(val)
@ -373,7 +373,7 @@ pub fn (a []string) str() string {
pub fn (a []bool) str() string { pub fn (a []bool) str() string {
mut sb := strings.new_builder(a.len * 3) mut sb := strings.new_builder(a.len * 3)
sb.write('[') sb.write('[')
for i := 0; i < a.len; i++ { for i in 0..a.len {
val := a[i] val := a[i]
if val { if val {
sb.write('true') sb.write('true')
@ -394,7 +394,7 @@ pub fn (a []bool) str() string {
pub fn (b []byte) hex() string { pub fn (b []byte) hex() string {
mut hex := malloc(b.len * 2 + 1) mut hex := malloc(b.len * 2 + 1)
mut ptr := &hex[0] mut ptr := &hex[0]
for i := 0; i < b.len; i++ { for i in 0..b.len {
// QTODO // QTODO
ptr += C.sprintf(ptr, '%02x', b[i]) ptr += C.sprintf(ptr, '%02x', b[i])
} }
@ -435,7 +435,7 @@ pub fn (a mut []int) sort() {
// []string.index returns the index of the first element equal to the given value, // []string.index returns the index of the first element equal to the given value,
// or -1 if the value is not found in the array. // or -1 if the value is not found in the array.
pub fn (a []string) index(v string) int { pub fn (a []string) index(v string) int {
for i := 0; i < a.len; i++ { for i in 0..a.len {
if a[i] == v { if a[i] == v {
return i return i
} }
@ -446,7 +446,7 @@ pub fn (a []string) index(v string) int {
// []int.index returns the index of the first element equal to the given value, // []int.index returns the index of the first element equal to the given value,
// or -1 if the value is not found in the array. // or -1 if the value is not found in the array.
pub fn (a []int) index(v int) int { pub fn (a []int) index(v int) int {
for i := 0; i < a.len; i++ { for i in 0..a.len {
if a[i] == v { if a[i] == v {
return i return i
} }
@ -457,7 +457,7 @@ pub fn (a []int) index(v int) int {
// []byte.index returns the index of the first element equal to the given value, // []byte.index returns the index of the first element equal to the given value,
// or -1 if the value is not found in the array. // or -1 if the value is not found in the array.
pub fn (a []byte) index(v byte) int { pub fn (a []byte) index(v byte) int {
for i := 0; i < a.len; i++ { for i in 0..a.len {
if a[i] == v { if a[i] == v {
return i return i
} }
@ -469,7 +469,7 @@ pub fn (a []byte) index(v byte) int {
// or -1 if the value is not found in the array. // or -1 if the value is not found in the array.
// TODO is `char` type yet in the language? // TODO is `char` type yet in the language?
pub fn (a []char) index(v char) int { pub fn (a []char) index(v char) int {
for i := 0; i < a.len; i++ { for i in 0..a.len {
if a[i] == v { if a[i] == v {
return i return i
} }
@ -480,13 +480,11 @@ pub fn (a []char) index(v char) int {
// []int.reduce executes a given reducer function on each element of the array, // []int.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(accum, curr int)int, accum_start int) int { pub fn (a []int) reduce(iter fn(accum, curr int)int, accum_start int) int {
mut _accum := 0 mut _accum := accum_start
/* for i in a {
_accum = accum_start _accum = iter(_accum, i)
for i := 0; i < a.len; i++ {
_accum = iter(_accum, a[i])
} }
*/
return _accum return _accum
} }
@ -497,7 +495,7 @@ fn array_eq<T>(a1, a2 []T) bool {
if a1.len != a2.len { if a1.len != a2.len {
return false return false
} }
for i := 0; i < a1.len; i++ { for i in 0..a1.len {
if a1[i] != a2[i] { if a1[i] != a2[i] {
return false return false
} }
@ -528,7 +526,7 @@ pub fn (a1 []string) eq(a2 []string) bool {
if a1.len != a2.len { if a1.len != a2.len {
return false return false
} }
for i := 0; i < a1.len; i++ { for i in 0..a1.len {
if a1[i] != a2[i] { if a1[i] != a2[i] {
return false return false
} }

View File

@ -62,7 +62,7 @@ fn test_short() {
fn test_large() { fn test_large() {
mut a := [0].repeat(0) mut a := [0].repeat(0)
for i := 0; i < 10000; i++ { for i in 0..10000 {
a << i a << i
} }
assert a.len == 10000 assert a.len == 10000
@ -311,7 +311,7 @@ fn test_clone() {
fn test_doubling() { fn test_doubling() {
mut nums := [1, 2, 3, 4, 5] mut nums := [1, 2, 3, 4, 5]
for i := 0; i < nums.len; i++ { for i in 0..nums.len {
nums[i] *= 2 nums[i] *= 2
} }
assert nums.str() == '[2, 4, 6, 8, 10]' assert nums.str() == '[2, 4, 6, 8, 10]'
@ -562,7 +562,7 @@ fn test_push_many_self() {
actual_arr << actual_arr actual_arr << actual_arr
expected_arr := [1, 2, 3, 4, 1, 2, 3, 4] expected_arr := [1, 2, 3, 4, 1, 2, 3, 4]
assert actual_arr.len == expected_arr.len assert actual_arr.len == expected_arr.len
for i := 0; i < actual_arr.len; i++ { for i in 0..actual_arr.len {
assert actual_arr[i] == expected_arr[i] assert actual_arr[i] == expected_arr[i]
} }
} }

View File

@ -47,7 +47,7 @@ pub fn (a array) repeat(nr_repeats int) array {
element_size: a.element_size element_size: a.element_size
data: malloc(nr_repeats * a.len * a.element_size) data: malloc(nr_repeats * a.len * a.element_size)
} }
for i := 0; i < nr_repeats; i++ { for i in 0..nr_repeats {
mem_copy(arr.data + i * a.len * a.element_size, a.data, a.len * a.element_size) mem_copy(arr.data + i * a.len * a.element_size, a.data, a.len * a.element_size)
} }
return arr return arr

View File

@ -28,10 +28,10 @@ fn (s string) add(a string) string {
len: new_len len: new_len
str: malloc(new_len + 1) str: malloc(new_len + 1)
} }
for j := 0; j < s.len; j++ { for j in 0..s.len {
res[j] = s[j] res[j] = s[j]
} }
for j := 0; j < a.len; j++ { for j in 0..a.len {
res[s.len + j] = a[j] res[s.len + j] = a[j]
} }
res[new_len] = `\0`// V strings are not null terminated, but just in case res[new_len] = `\0`// V strings are not null terminated, but just in case

View File

@ -186,7 +186,7 @@ pub fn (c rune) str() string {
len: len len: len
str: malloc(len + 1) str: malloc(len + 1)
} }
for i := 0; i < len; i++ { for i in 0..len {
str.str[i] = int(c)>>8 * (3 - i) & 0xff str.str[i] = int(c)>>8 * (3 - i) & 0xff
} }
str[len] = `\0` str[len] = `\0`
@ -210,7 +210,7 @@ pub fn (c byte) is_capital() bool {
pub fn (b []byte) clone() []byte { pub fn (b []byte) clone() []byte {
mut res := [byte(0)].repeat(b.len) mut res := [byte(0)].repeat(b.len)
//mut res := make([]byte, {repeat:b.len}) //mut res := make([]byte, {repeat:b.len})
for i := 0; i < b.len; i++ { for i in 0..b.len {
res[i] = b[i] res[i] = b[i]
} }
return res return res

View File

@ -109,7 +109,7 @@ pub fn (a array) free() {
pub fn (a []string) str() string { pub fn (a []string) str() string {
mut sb := strings.new_builder(a.len * 3) mut sb := strings.new_builder(a.len * 3)
sb.write('[') sb.write('[')
for i := 0; i < a.len; i++ { for i in 0..a.len {
val := a[i] val := a[i]
sb.write('"') sb.write('"')
sb.write(val) sb.write(val)

View File

@ -83,7 +83,7 @@ pub fn (c byte) is_capital() bool {
pub fn (b []byte) clone() []byte { pub fn (b []byte) clone() []byte {
mut res := [byte(0)].repeat(b.len) mut res := [byte(0)].repeat(b.len)
for i := 0; i < b.len; i++ { for i in 0..b.len {
res[i] = b[i] res[i] = b[i]
} }
return res return res

View File

@ -74,7 +74,7 @@ fn test_large_map() {
//ticks := time.ticks() //ticks := time.ticks()
mut nums := map[string]int mut nums := map[string]int
N := 30 * 1000 N := 30 * 1000
for i := 0; i < N; i++ { for i in 0..N {
key := i.str() key := i.str()
nums[key] = i nums[key] = i
} }

View File

@ -309,7 +309,7 @@ fn (n mut mapnode) merge(idx int) {
sibling := &mapnode(n.children[idx + 1]) sibling := &mapnode(n.children[idx + 1])
child.keys[mid_index] = n.keys[idx] child.keys[mid_index] = n.keys[idx]
child.values[mid_index] = n.values[idx] child.values[mid_index] = n.values[idx]
for i := 0; i < sibling.size; i++ { for i in 0..sibling.size {
child.keys[i + degree] = sibling.keys[i] child.keys[i + degree] = sibling.keys[i]
child.values[i + degree] = sibling.values[i] child.values[i + degree] = sibling.values[i]
} }
@ -413,4 +413,4 @@ pub fn (m SortedMap) print() {
// } // }
// sb.writeln('}') // sb.writeln('}')
// return sb.str() // return sb.str()
// } // }

View File

@ -109,7 +109,7 @@ pub fn (a string) clone() string {
len: a.len len: a.len
str: malloc(a.len + 1) str: malloc(a.len + 1)
} }
for i := 0; i < a.len; i++ { for i in 0..a.len {
b[i] = a[i] b[i] = a[i]
} }
b[a.len] = `\0` b[a.len] = `\0`
@ -168,7 +168,7 @@ pub fn (s string) replace(rep, with string) string {
for i := 0; i < s.len; i++ { for i := 0; i < s.len; i++ {
// Reached the location of rep, replace it with "with" // Reached the location of rep, replace it with "with"
if i == cur_idx { if i == cur_idx {
for j := 0; j < with.len; j++ { for j in 0..with.len {
b[b_i] = with[j] b[b_i] = with[j]
b_i++ b_i++
} }
@ -266,7 +266,7 @@ val_idx:rep_i}
if i == cur_idx.idx { if i == cur_idx.idx {
rep := vals[cur_idx.val_idx] rep := vals[cur_idx.val_idx]
with := vals[cur_idx.val_idx + 1] with := vals[cur_idx.val_idx + 1]
for j := 0; j < with.len; j++ { for j in 0..with.len {
b[b_i] = with[j] b[b_i] = with[j]
b_i++ b_i++
} }
@ -339,7 +339,7 @@ fn (s string) eq(a string) bool {
if s.len != a.len { if s.len != a.len {
return false return false
} }
for i := 0; i < s.len; i++ { for i in 0..s.len {
if s[i] != a[i] { if s[i] != a[i] {
return false return false
} }
@ -354,7 +354,7 @@ fn (s string) ne(a string) bool {
// s < a // s < a
fn (s string) lt(a string) bool { fn (s string) lt(a string) bool {
for i := 0; i < s.len; i++ { for i in 0..s.len {
if i >= a.len || s[i] > a[i] { if i >= a.len || s[i] > a[i] {
return false return false
} }
@ -390,10 +390,10 @@ fn (s string) add(a string) string {
len: new_len len: new_len
str: malloc(new_len + 1) str: malloc(new_len + 1)
} }
for j := 0; j < s.len; j++ { for j in 0..s.len {
res[j] = s[j] res[j] = s[j]
} }
for j := 0; j < a.len; j++ { for j in 0..a.len {
res[s.len + j] = a[j] res[s.len + j] = a[j]
} }
res[new_len] = `\0` // V strings are not null terminated, but just in case res[new_len] = `\0` // V strings are not null terminated, but just in case
@ -528,7 +528,7 @@ pub fn (s string) substr(start, end int) string {
len: len len: len
str: malloc(len + 1) str: malloc(len + 1)
} }
for i := 0; i < len; i++ { for i in 0..len {
res.str[i] = s.str[start + i] res.str[i] = s.str[start + i]
} }
res.str[len] = `\0` res.str[len] = `\0`
@ -595,7 +595,7 @@ fn (s string) index_kmp(p string) int {
prefix[i] = j prefix[i] = j
} }
j = 0 j = 0
for i := 0; i < s.len; i++ { for i in 0..s.len {
for p[j] != s[i] && j > 0 { for p[j] != s[i] && j > 0 {
j = prefix[j - 1] j = prefix[j - 1]
} }
@ -665,7 +665,7 @@ pub fn (s string) index_after(p string, start int) int {
} }
pub fn (s string) index_byte(c byte) int { pub fn (s string) index_byte(c byte) int {
for i := 0; i < s.len; i++ { for i in 0..s.len {
if s[i] == c { if s[i] == c {
return i return i
} }
@ -714,7 +714,7 @@ pub fn (s string) starts_with(p string) bool {
if p.len > s.len { if p.len > s.len {
return false return false
} }
for i := 0; i < p.len; i++ { for i in 0..p.len {
if s[i] != p[i] { if s[i] != p[i] {
return false return false
} }
@ -726,7 +726,7 @@ pub fn (s string) ends_with(p string) bool {
if p.len > s.len { if p.len > s.len {
return false return false
} }
for i := 0; i < p.len; i++ { for i in 0..p.len {
if p[i] != s[s.len - p.len + i] { if p[i] != s[s.len - p.len + i] {
return false return false
} }
@ -737,7 +737,7 @@ pub fn (s string) ends_with(p string) bool {
// TODO only works with ASCII // TODO only works with ASCII
pub fn (s string) to_lower() string { pub fn (s string) to_lower() string {
mut b := malloc(s.len + 1) mut b := malloc(s.len + 1)
for i := 0; i < s.len; i++ { for i in 0..s.len {
b[i] = C.tolower(s.str[i]) b[i] = C.tolower(s.str[i])
} }
return tos(b, s.len) return tos(b, s.len)
@ -745,7 +745,7 @@ pub fn (s string) to_lower() string {
pub fn (s string) to_upper() string { pub fn (s string) to_upper() string {
mut b := malloc(s.len + 1) mut b := malloc(s.len + 1)
for i := 0; i < s.len; i++ { for i in 0..s.len {
b[i] = C.toupper(s.str[i]) b[i] = C.toupper(s.str[i])
} }
return tos(b, s.len) return tos(b, s.len)
@ -807,7 +807,7 @@ fn (ar []int) contains(val int) bool {
/* /*
pub fn (a []string) to_c() voidptr { pub fn (a []string) to_c() voidptr {
mut res := malloc(sizeof(byteptr) * a.len) mut res := malloc(sizeof(byteptr) * a.len)
for i := 0; i < a.len; i++ { for i in 0..a.len {
val := a[i] val := a[i]
res[i] = val.str res[i] = val.str
} }
@ -1177,14 +1177,14 @@ pub fn (a []string) join(del string) string {
mut idx := 0 mut idx := 0
// Go thru every string and copy its every char one by one // Go thru every string and copy its every char one by one
for i, val in a { for i, val in a {
for j := 0; j < val.len; j++ { for j in 0..val.len {
c := val[j] c := val[j]
res.str[idx] = val.str[j] res.str[idx] = val.str[j]
idx++ idx++
} }
// Add del if it's not last // Add del if it's not last
if i != a.len - 1 { if i != a.len - 1 {
for k := 0; k < del.len; k++ { for k in 0..del.len {
res.str[idx] = del.str[k] res.str[idx] = del.str[k]
idx++ idx++
} }

View File

@ -43,7 +43,7 @@ pub fn (cmd mut Command) parse(args []string) {
cmd.add_default_commands() cmd.add_default_commands()
cmd.args = args[1..] cmd.args = args[1..]
for i := 0; i < cmd.commands.len; i++ { for i in 0..cmd.commands.len {
cmd.commands[i].parent = cmd cmd.commands[i].parent = cmd
} }
@ -75,7 +75,7 @@ fn (cmd mut Command) parse_flags() {
break break
} }
mut found := false mut found := false
for i := 0; i < cmd.flags.len; i++ { for i in 0..cmd.flags.len {
mut flag := &cmd.flags[i] mut flag := &cmd.flags[i]
if flag.matches(cmd.args) { if flag.matches(cmd.args) {
found = true found = true
@ -102,9 +102,9 @@ fn (cmd &Command) parse_commands() {
cmd.check_help_flag() cmd.check_help_flag()
cmd.check_version_flag() cmd.check_version_flag()
for i := 0; i < cmd.args.len; i++ { for i in 0..cmd.args.len {
arg := cmd.args[i] arg := cmd.args[i]
for j := 0; j < cmd.commands.len; j++ { for j in 0..cmd.commands.len {
mut command := cmd.commands[j] mut command := cmd.commands[j]
if command.name == arg { if command.name == arg {
for flag in global_flags { for flag in global_flags {

View File

@ -178,7 +178,7 @@ fn compare_arrays(array0 []string, array1 []string) bool {
if array0.len != array1.len { if array0.len != array1.len {
return false return false
} }
for i := 0; i < array0.len; i++ { for i in 0..array0.len {
if array0[i] != array1[i] { if array0[i] != array1[i] {
return false return false
} }

View File

@ -361,7 +361,7 @@ fn (cb &Clipboard) pick_target(prop Property) Atom {
//This is higher than the maximum priority. //This is higher than the maximum priority.
mut priority := math.max_i32 mut priority := math.max_i32
for i := 0; i < prop.nitems; i++ { for i in 0..prop.nitems {
//See if this data type is allowed and of higher priority (closer to zero) //See if this data type is allowed and of higher priority (closer to zero)
//than the present one. //than the present one.

View File

@ -63,7 +63,7 @@ fn encrypt_block_generic(xk []u32, dst, src []byte) {
mut t1 := u32(0) mut t1 := u32(0)
mut t2 := u32(0) mut t2 := u32(0)
mut t3 := u32(0) mut t3 := u32(0)
for r := 0; r < nr; r++ { for r in 0..nr {
t0 = xk[k+0] ^ te0[byte(s0>>24)] ^ te1[byte(s1>>16)] ^ te2[byte(s2>>8)] ^ u32(te3[byte(s3)]) t0 = xk[k+0] ^ te0[byte(s0>>24)] ^ te1[byte(s1>>16)] ^ te2[byte(s2>>8)] ^ u32(te3[byte(s3)])
t1 = xk[k+1] ^ te0[byte(s1>>24)] ^ te1[byte(s2>>16)] ^ te2[byte(s3>>8)] ^ u32(te3[byte(s0)]) t1 = xk[k+1] ^ te0[byte(s1>>24)] ^ te1[byte(s2>>16)] ^ te2[byte(s3>>8)] ^ u32(te3[byte(s0)])
t2 = xk[k+2] ^ te0[byte(s2>>24)] ^ te1[byte(s3>>16)] ^ te2[byte(s0>>8)] ^ u32(te3[byte(s1)]) t2 = xk[k+2] ^ te0[byte(s2>>24)] ^ te1[byte(s3>>16)] ^ te2[byte(s0>>8)] ^ u32(te3[byte(s1)])
@ -115,7 +115,7 @@ fn decrypt_block_generic(xk []u32, dst, src []byte) {
mut t1 := u32(0) mut t1 := u32(0)
mut t2 := u32(0) mut t2 := u32(0)
mut t3 := u32(0) mut t3 := u32(0)
for r := 0; r < nr; r++ { for r in 0..nr {
t0 = xk[k+0] ^ td0[byte(s0>>24)] ^ td1[byte(s3>>16)] ^ td2[byte(s2>>8)] ^ u32(td3[byte(s1)]) t0 = xk[k+0] ^ td0[byte(s0>>24)] ^ td1[byte(s3>>16)] ^ td2[byte(s2>>8)] ^ u32(td3[byte(s1)])
t1 = xk[k+1] ^ td0[byte(s1>>24)] ^ td1[byte(s0>>16)] ^ td2[byte(s3>>8)] ^ u32(td3[byte(s2)]) t1 = xk[k+1] ^ td0[byte(s1>>24)] ^ td1[byte(s0>>16)] ^ td2[byte(s3>>8)] ^ u32(td3[byte(s2)])
t2 = xk[k+2] ^ td0[byte(s2>>24)] ^ td1[byte(s1>>16)] ^ td2[byte(s0>>8)] ^ u32(td3[byte(s3)]) t2 = xk[k+2] ^ td0[byte(s2>>24)] ^ td1[byte(s1>>16)] ^ td2[byte(s0>>8)] ^ u32(td3[byte(s3)])
@ -189,7 +189,7 @@ fn expand_key_generic(key []byte, enc mut []u32, dec mut []u32) {
n := enc.len n := enc.len
for i = 0; i < n; i += 4 { for i = 0; i < n; i += 4 {
ei := n - i - 4 ei := n - i - 4
for j := 0; j < 4; j++ { for j in 0..4 {
mut x := enc[ei+j] mut x := enc[ei+j]
if i > 0 && i+4 < n { if i > 0 && i+4 < n {
x = td0[s_box0[x>>24]] ^ td1[s_box0[x>>16&0xff]] ^ td2[s_box0[x>>8&0xff]] ^ td3[s_box0[x&u32(0xff)]] x = td0[s_box0[x>>24]] ^ td1[s_box0[x>>16&0xff]] ^ td2[s_box0[x>>8&0xff]] ^ td3[s_box0[x&u32(0xff)]]

View File

@ -24,7 +24,7 @@ pub fn xor_bytes(dst mut []byte, a, b []byte) int {
// n needs to be smaller or equal than the length of a and b. // n needs to be smaller or equal than the length of a and b.
pub fn safe_xor_bytes(dst mut []byte, a, b []byte, n int) { pub fn safe_xor_bytes(dst mut []byte, a, b []byte, n int) {
for i := 0; i < n; i++ { for i in 0..n {
dst[i] = a[i] ^ b[i] dst[i] = a[i] ^ b[i]
} }
} }

View File

@ -32,11 +32,11 @@ pub fn new_cipher(key []byte) ?Cipher {
mut c := Cipher{ mut c := Cipher{
s: [u32(0)].repeat(256) s: [u32(0)].repeat(256)
} }
for i := 0; i < 256; i++ { for i in 0..256 {
c.s[i] = u32(i) c.s[i] = u32(i)
} }
mut j := byte(0) mut j := byte(0)
for i := 0; i < 256; i++ { for i in 0..256 {
j += byte(c.s[i]) + key[i%key.len] j += byte(c.s[i]) + key[i%key.len]
tmp := c.s[i] tmp := c.s[i]
c.s[i] = c.s[j] c.s[i] = c.s[j]

View File

@ -28,7 +28,7 @@ fn block_generic(dig mut Digest, p_ []byte) {
for p.len >= chunk { for p.len >= chunk {
// Can interlace the computation of w with the // Can interlace the computation of w with the
// rounds below if needed for speed. // rounds below if needed for speed.
for i := 0; i < 16; i++ { for i in 0..16 {
j := i * 4 j := i * 4
w[i] = u32(p[j]<<24) | u32(p[j+1]<<16) | u32(p[j+2]<<8) | u32(p[j+3]) w[i] = u32(p[j]<<24) | u32(p[j+1]<<16) | u32(p[j+2]<<8) | u32(p[j+3])
} }

View File

@ -97,7 +97,7 @@ fn block_generic(dig mut Digest, p_ []byte) {
for p.len >= chunk { for p.len >= chunk {
// Can interlace the computation of w with the // Can interlace the computation of w with the
// rounds below if needed for speed. // rounds below if needed for speed.
for i := 0; i < 16; i++ { for i in 0..16 {
j := i * 4 j := i * 4
w[i] = u32(p[j]<<24) | u32(p[j+1]<<16) | u32(p[j+2]<<8) | u32(p[j+3]) w[i] = u32(p[j]<<24) | u32(p[j+1]<<16) | u32(p[j+2]<<8) | u32(p[j+3])
} }
@ -118,7 +118,7 @@ fn block_generic(dig mut Digest, p_ []byte) {
mut g := h6 mut g := h6
mut h := h7 mut h := h7
for i := 0; i < 64; i++ { for i in 0..64 {
t1 := h + ((bits.rotate_left_32(e, -6)) ^ (bits.rotate_left_32(e, -11)) ^ (bits.rotate_left_32(e, -25))) + ((e & f) ^ (~e & g)) + u32(_k[i]) + w[i] t1 := h + ((bits.rotate_left_32(e, -6)) ^ (bits.rotate_left_32(e, -11)) ^ (bits.rotate_left_32(e, -25))) + ((e & f) ^ (~e & g)) + u32(_k[i]) + w[i]
t2 := ((bits.rotate_left_32(a, -2)) ^ (bits.rotate_left_32(a, -13)) ^ (bits.rotate_left_32(a, -22))) + ((a & b) ^ (a & c) ^ (b & c)) t2 := ((bits.rotate_left_32(a, -2)) ^ (bits.rotate_left_32(a, -13)) ^ (bits.rotate_left_32(a, -22))) + ((a & b) ^ (a & c) ^ (b & c))

View File

@ -105,7 +105,7 @@ fn block_generic(dig mut Digest, p_ []byte) {
mut h6 := dig.h[6] mut h6 := dig.h[6]
mut h7 := dig.h[7] mut h7 := dig.h[7]
for p.len >= Chunk { for p.len >= Chunk {
for i := 0; i < 16; i++ { for i in 0..16 {
j := i * 8 j := i * 8
w[i] = (u64(p[j])<<56) | (u64(p[j + 1])<<48) | (u64(p[j + 2])<<40) | (u64(p[j + 3])<<32) | (u64(p[j + 4])<<24) | (u64(p[j + 5])<<16) | (u64(p[j + 6])<<8) | u64(p[j + 7]) w[i] = (u64(p[j])<<56) | (u64(p[j + 1])<<48) | (u64(p[j + 2])<<40) | (u64(p[j + 3])<<32) | (u64(p[j + 4])<<24) | (u64(p[j + 5])<<16) | (u64(p[j + 6])<<8) | u64(p[j + 7])
} }
@ -124,7 +124,7 @@ fn block_generic(dig mut Digest, p_ []byte) {
mut f := h5 mut f := h5
mut g := h6 mut g := h6
mut h := h7 mut h := h7
for i := 0; i < 80; i++ { for i in 0..80 {
t1 := h + (bits.rotate_left_64(e, -14) ^ bits.rotate_left_64(e, -18) ^ bits.rotate_left_64(e, -41)) + ((e & f) ^ (~e & g)) + _k[i] + w[i] t1 := h + (bits.rotate_left_64(e, -14) ^ bits.rotate_left_64(e, -18) ^ bits.rotate_left_64(e, -41)) + ((e & f) ^ (~e & g)) + _k[i] + w[i]
t2 := (bits.rotate_left_64(a, -28) ^ bits.rotate_left_64(a, -34) ^ bits.rotate_left_64(a, -39)) + ((a & b) ^ (a & c) ^ (b & c)) t2 := (bits.rotate_left_64(a, -28) ^ bits.rotate_left_64(a, -34) ^ bits.rotate_left_64(a, -39)) + ((a & b) ^ (a & c) ^ (b & c))
h = g h = g

View File

@ -14,14 +14,14 @@ fn test_long_encoding(){
mut s := 0 mut s := 0
ebuffer := malloc( s_encoded.len ) ebuffer := malloc( s_encoded.len )
for i := 0; i < repeats; i++ { for i in 0..repeats {
resultsize := base64.encode_in_buffer(s_original, ebuffer) resultsize := base64.encode_in_buffer(s_original, ebuffer)
s += resultsize s += resultsize
assert resultsize == s_encoded.len assert resultsize == s_encoded.len
} }
dbuffer := malloc( s_decoded.len ) dbuffer := malloc( s_decoded.len )
for i := 0; i < repeats; i++ { for i in 0..repeats {
resultsize := base64.decode_in_buffer(s_encoded, dbuffer) resultsize := base64.decode_in_buffer(s_encoded, dbuffer)
s += resultsize s += resultsize
assert resultsize == s_decoded.len assert resultsize == s_decoded.len

View File

@ -226,7 +226,7 @@ pub fn new_context(cfg gg.Cfg) &FreeType {
// Gen texture // Gen texture
// Load first 128 characters of ASCII set // Load first 128 characters of ASCII set
mut chars := []Character mut chars := []Character
for c := 0; c < 128; c++ { for c in 0..128 {
ch := ft_load_char(face, i64(c)) ch := ft_load_char(face, i64(c))
// s := utf32_to_str(uint(0x043f)) // s := utf32_to_str(uint(0x043f))
// s := 'п' // s := 'п'
@ -309,7 +309,7 @@ fn (ctx mut FreeType) private_draw_text(_x, _y int, utext ustring, cfg gx.TextCf
gl.bind_vao(ctx.vao) gl.bind_vao(ctx.vao)
// Iterate through all characters // Iterate through all characters
// utext := text.ustring() // utext := text.ustring()
for i := 0; i < utext.len; i++ { for i in 0..utext.len {
_rune := utext.at(i) _rune := utext.at(i)
// println('$i => $_rune') // println('$i => $_rune')
mut ch := Character{} mut ch := Character{}
@ -325,7 +325,7 @@ fn (ctx mut FreeType) private_draw_text(_x, _y int, utext ustring, cfg gx.TextCf
} }
else if _rune.len > 1 { else if _rune.len > 1 {
// TODO O(1) use map // TODO O(1) use map
for j := 0; j < ctx.utf_runes.len; j++ { for j in 0..ctx.utf_runes.len {
rune_j := ctx.utf_runes[j] rune_j := ctx.utf_runes[j]
if rune_j==_rune { if rune_j==_rune {
ch = ctx.utf_chars[j] ch = ctx.utf_chars[j]
@ -406,7 +406,7 @@ pub fn (ctx mut FreeType) text_size(s string) (int, int) {
mut maxy := u32(0) mut maxy := u32(0)
mut _rune := '' mut _rune := ''
mut ch := Character{} mut ch := Character{}
for i := 0; i < utext.len; i++ { for i in 0..utext.len {
_rune = utext.at(i) _rune = utext.at(i)
ch = Character{} ch = Character{}
mut found := false mut found := false
@ -421,7 +421,7 @@ pub fn (ctx mut FreeType) text_size(s string) (int, int) {
} }
else if _rune.len > 1 { else if _rune.len > 1 {
// TODO O(1) use map // TODO O(1) use map
for j := 0; j < ctx.utf_runes.len; j++ { for j in 0..ctx.utf_runes.len {
rune_j := ctx.utf_runes[j] rune_j := ctx.utf_runes[j]
if rune_j==_rune { if rune_j==_rune {
ch = ctx.utf_chars[j] ch = ctx.utf_chars[j]

View File

@ -59,11 +59,11 @@ pub fn (v Vec2) str() string {
pub fn (m Mat4) str() string { pub fn (m Mat4) str() string {
mut s := '[ ' mut s := '[ '
for i := 0; i < 4; i++ { for i in 0..4 {
if i != 0 { if i != 0 {
s += ' ' s += ' '
} }
for j := 0; j < 4; j++ { for j in 0..4 {
val := m.data[i * 4 + j] val := m.data[i * 4 + j]
s += '${val:.2f} ' s += '${val:.2f} '
} }

View File

@ -24,9 +24,9 @@ mut:
} }
fn(c mut Crc32) generate_table(poly int) { fn(c mut Crc32) generate_table(poly int) {
for i := 0; i < 256; i++ { for i in 0..256 {
mut crc := u32(i) mut crc := u32(i)
for j := 0; j < 8; j++ { for j in 0..8 {
if crc & u32(1) == u32(1) { if crc & u32(1) == u32(1) {
crc = (crc >> 1) ^ u32(poly) crc = (crc >> 1) ^ u32(poly)
} else { } else {
@ -39,7 +39,7 @@ fn(c mut Crc32) generate_table(poly int) {
fn(c &Crc32) sum32(b []byte) u32 { fn(c &Crc32) sum32(b []byte) u32 {
mut crc := ~u32(0) mut crc := ~u32(0)
for i := 0; i < b.len; i++ { for i in 0..b.len {
crc = c.table[byte(crc)^b[i]] ^ u32(crc >> u32(8)) crc = c.table[byte(crc)^b[i]] ^ u32(crc >> u32(8))
} }
return ~crc return ~crc

View File

@ -10,7 +10,7 @@ const (
[inline] [inline]
pub fn sum32_string(data string) u32 { pub fn sum32_string(data string) u32 {
mut hash := fnv32_offset_basis mut hash := fnv32_offset_basis
for i := 0; i < data.len; i++ { for i in 0..data.len {
hash = (hash ^ u32(data[i])) * fnv32_prime hash = (hash ^ u32(data[i])) * fnv32_prime
} }
return hash return hash
@ -19,7 +19,7 @@ pub fn sum32_string(data string) u32 {
[inline] [inline]
pub fn sum32(data []byte) u32 { pub fn sum32(data []byte) u32 {
mut hash := fnv32_offset_basis mut hash := fnv32_offset_basis
for i := 0; i < data.len; i++ { for i in 0..data.len {
hash = (hash ^ u32(data[i])) * fnv32_prime hash = (hash ^ u32(data[i])) * fnv32_prime
} }
return hash return hash
@ -28,7 +28,7 @@ pub fn sum32(data []byte) u32 {
[inline] [inline]
pub fn sum64_string(data string) u64 { pub fn sum64_string(data string) u64 {
mut hash := fnv64_offset_basis mut hash := fnv64_offset_basis
for i := 0; i < data.len; i++ { for i in 0..data.len {
hash = (hash ^ u64(data[i])) * fnv64_prime hash = (hash ^ u64(data[i])) * fnv64_prime
} }
return hash return hash
@ -37,7 +37,7 @@ pub fn sum64_string(data string) u64 {
[inline] [inline]
pub fn sum64(data []byte) u64 { pub fn sum64(data []byte) u64 {
mut hash := fnv64_offset_basis mut hash := fnv64_offset_basis
for i := 0; i < data.len; i++ { for i in 0..data.len {
hash = (hash ^ u64(data[i])) * fnv64_prime hash = (hash ^ u64(data[i])) * fnv64_prime
} }
return hash return hash

View File

@ -119,7 +119,7 @@ pub fn mode(arr []f64) f64 {
freqs<<freq(arr,v) freqs<<freq(arr,v)
} }
mut max := 0 mut max := 0
for i := 0; i < freqs.len; i++ { for i in 0..freqs.len {
if freqs[i] > freqs[max] { if freqs[i] > freqs[max] {
max = i max = i
} }

View File

@ -45,7 +45,7 @@ pub fn (r Result) rows() []Row {
nr_cols := r.num_fields() nr_cols := r.num_fields()
for rr := r.fetch_row(); rr; rr = r.fetch_row() { for rr := r.fetch_row(); rr; rr = r.fetch_row() {
mut row := Row{} mut row := Row{}
for i := 0; i < nr_cols; i++ { for i in 0..nr_cols {
if rr[i] == 0 { if rr[i] == 0 {
row.vals << '' row.vals << ''
} else { } else {
@ -61,7 +61,7 @@ pub fn (r Result) fetch_fields() []Field {
mut fields := []Field mut fields := []Field
nr_cols := r.num_fields() nr_cols := r.num_fields()
orig_fields := mysql_fetch_fields(r.result) orig_fields := mysql_fetch_fields(r.result)
for i := 0; i < nr_cols; i++ { for i in 0..nr_cols {
fields << Field{ fields << Field{
name: string(orig_fields[i].name) name: string(orig_fields[i].name)
org_name: string(orig_fields[i].org_name) org_name: string(orig_fields[i].org_name)

View File

@ -47,7 +47,7 @@ fn (dtp DTP) read() []byte {
buf, len := dtp.sock.recv(1024) buf, len := dtp.sock.recv(1024)
if len == 0 { break } if len == 0 { break }
for i := 0; i < len; i++ { for i in 0..len {
data << buf[i] data << buf[i]
} }
unsafe { free(buf) } unsafe { free(buf) }

View File

@ -329,7 +329,7 @@ pub fn (s Socket) read_line() string {
} }
buf[n] = `\0` buf[n] = `\0`
mut eol_idx := -1 mut eol_idx := -1
for i := 0; i < n; i++ { for i in 0..n {
if int(buf[i]) == `\n` { if int(buf[i]) == `\n` {
eol_idx = i eol_idx = i
// Ensure that tos_clone(buf) later, // Ensure that tos_clone(buf) later,

View File

@ -242,7 +242,7 @@ fn escape(s string, mode EncodingMode) string {
mut space_count := 0 mut space_count := 0
mut hex_count := 0 mut hex_count := 0
mut c := byte(0) mut c := byte(0)
for i := 0; i < s.len; i++ { for i in 0..s.len {
c = s[i] c = s[i]
if should_escape(c, mode) { if should_escape(c, mode) {
if c == ` ` && mode == .encode_query_component { if c == ` ` && mode == .encode_query_component {
@ -267,7 +267,7 @@ fn escape(s string, mode EncodingMode) string {
} }
if hex_count == 0 { if hex_count == 0 {
copy(t, s.bytes()) copy(t, s.bytes())
for i := 0; i < s.len; i++ { for i in 0..s.len {
if s[i] == ` ` { if s[i] == ` ` {
t[i] = `+` t[i] = `+`
} }
@ -276,7 +276,7 @@ fn escape(s string, mode EncodingMode) string {
} }
upperhex := '0123456789ABCDEF' upperhex := '0123456789ABCDEF'
mut j := 0 mut j := 0
for i := 0; i < s.len; i++ { for i in 0..s.len {
c1 := s[i] c1 := s[i]
if c1 == ` ` && mode == .encode_query_component { if c1 == ` ` && mode == .encode_query_component {
t[j] = `+` t[j] = `+`
@ -382,7 +382,7 @@ fn (u &Userinfo) string() string {
// (scheme must be [a-zA-Z][a-zA-Z0-9+-.]*) // (scheme must be [a-zA-Z][a-zA-Z0-9+-.]*)
// If so, return [scheme, path]; else return ['', rawurl] // If so, return [scheme, path]; else return ['', rawurl]
fn split_by_scheme(rawurl string) ?[]string { fn split_by_scheme(rawurl string) ?[]string {
for i := 0; i < rawurl.len; i++ { for i in 0..rawurl.len {
c := rawurl[i] c := rawurl[i]
if (`a` <= c && c <= `z`) || (`A` <= c && c <= `Z`) { if (`a` <= c && c <= `z`) || (`A` <= c && c <= `Z`) {
// do nothing // do nothing
@ -692,7 +692,7 @@ fn (u &URL) escaped_path() string {
// valid_encoded_path reports whether s is a valid encoded path. // valid_encoded_path reports whether s is a valid encoded path.
// It must not contain any bytes that require escaping during path encoding. // It must not contain any bytes that require escaping during path encoding.
fn valid_encoded_path(s string) bool { fn valid_encoded_path(s string) bool {
for i := 0; i < s.len; i++ { for i in 0..s.len {
// RFC 3986, Appendix A. // RFC 3986, Appendix A.
// pchar = unreserved / pct-encoded / sub-delims / ':' / '@'. // pchar = unreserved / pct-encoded / sub-delims / ':' / '@'.
// should_escape is not quite compliant with the RFC, // should_escape is not quite compliant with the RFC,
@ -1097,7 +1097,7 @@ pub fn valid_userinfo(s string) bool {
// string_contains_ctl_byte reports whether s contains any ASCII control character. // string_contains_ctl_byte reports whether s contains any ASCII control character.
fn string_contains_ctl_byte(s string) bool { fn string_contains_ctl_byte(s string) bool {
for i := 0; i < s.len; i++ { for i in 0..s.len {
b := s[i] b := s[i]
if b < ` ` || b == 0x7f { if b < ` ` || b == 0x7f {
return true return true

View File

@ -82,7 +82,7 @@ mut:
fn init_os_args_wide(argc int, argv &byteptr) []string { fn init_os_args_wide(argc int, argv &byteptr) []string {
mut args := []string mut args := []string
for i := 0; i < argc; i++ { for i in 0..argc {
args << string_from_wide(&u16(argv[i])) args << string_from_wide(&u16(argv[i]))
} }
return args return args

View File

@ -50,9 +50,9 @@ fn res_to_rows(res voidptr) []pg.Row {
nr_rows := C.PQntuples(res) nr_rows := C.PQntuples(res)
nr_cols := C.PQnfields(res) nr_cols := C.PQnfields(res)
mut rows := []pg.Row mut rows := []pg.Row
for i := 0; i < nr_rows; i++ { for i in 0..nr_rows {
mut row := Row{} mut row := Row{}
for j := 0; j < nr_cols; j++ { for j in 0..nr_cols {
val := C.PQgetvalue(res, i, j) val := C.PQgetvalue(res, i, j)
row.vals << string(val) row.vals << string(val)
} }
@ -124,7 +124,7 @@ pub fn (db DB) exec_one(query string) ?pg.Row {
// //
pub fn (db DB) exec_param_many(query string, params []string) []pg.Row { pub fn (db DB) exec_param_many(query string, params []string) []pg.Row {
mut param_vals := &byteptr( malloc( params.len * sizeof(byteptr) ) ) mut param_vals := &byteptr( malloc( params.len * sizeof(byteptr) ) )
for i := 0; i < params.len; i++ { for i in 0..params.len {
param_vals[i] = params[i].str param_vals[i] = params[i].str
} }
res := C.PQexecParams(db.conn, query.str, params.len, 0, param_vals, 0, 0, 0) res := C.PQexecParams(db.conn, query.str, params.len, 0, param_vals, 0, 0, 0)

View File

@ -257,11 +257,11 @@ fn (sdlc mut SdlContext) set_sdl_context(w int, h int, title string) {
C.Mix_VolumeMusic(sdlc.actx.volume) C.Mix_VolumeMusic(sdlc.actx.volume)
} }
njoy := C.SDL_NumJoysticks() njoy := C.SDL_NumJoysticks()
for i := 0; i < njoy; i++ { for i in 0..njoy {
C.SDL_JoystickOpen(i) C.SDL_JoystickOpen(i)
jn := tos_clone(sdl.joystick_name_for_index(i)) jn := tos_clone(sdl.joystick_name_for_index(i))
println('JOY NAME $jn') println('JOY NAME $jn')
for j := 0; j < NJOYMAX; j++ { for j in 0..NJOYMAX {
if sdlc.jnames[j] == jn { if sdlc.jnames[j] == jn {
println('FOUND JOYSTICK $j $jn ID=$i') println('FOUND JOYSTICK $j $jn ID=$i')
sdlc.jids[j] = i sdlc.jids[j] = i
@ -534,7 +534,7 @@ fn (g mut Game) init_game() {
g.generate_tetro() g.generate_tetro()
g.field = [] g.field = []
// Generate the field, fill it with 0's, add -1's on each edge // Generate the field, fill it with 0's, add -1's on each edge
for i := 0; i < FieldHeight + 2; i++ { for i in 0..FieldHeight + 2 {
mut row := [0].repeat(FieldWidth + 2) mut row := [0].repeat(FieldWidth + 2)
row[0] = - 1 row[0] = - 1
row[FieldWidth + 1] = - 1 row[FieldWidth + 1] = - 1
@ -542,7 +542,7 @@ fn (g mut Game) init_game() {
} }
mut first_row := g.field[0] mut first_row := g.field[0]
mut last_row := g.field[FieldHeight + 1] mut last_row := g.field[FieldHeight + 1]
for j := 0; j < FieldWidth + 2; j++ { for j in 0..FieldWidth + 2 {
first_row[j] = - 1 first_row[j] = - 1
last_row[j] = - 1 last_row[j] = - 1
} }
@ -626,7 +626,7 @@ fn (g mut Game) move_tetro() {
fn (g mut Game) move_right(dx int) bool { fn (g mut Game) move_right(dx int) bool {
// Reached left/right edge or another tetro? // Reached left/right edge or another tetro?
for i := 0; i < TetroSize; i++ { for i in 0..TetroSize {
tetro := g.tetro[i] tetro := g.tetro[i]
y := tetro.y + g.pos_y y := tetro.y + g.pos_y
x := tetro.x + g.pos_x + dx x := tetro.x + g.pos_x + dx
@ -693,7 +693,7 @@ fn (g mut Game) get_tetro() {
} }
fn (g &Game) drop_tetro() { fn (g &Game) drop_tetro() {
for i := 0; i < TetroSize; i++ { for i in 0..TetroSize {
tetro := g.tetro[i] tetro := g.tetro[i]
x := tetro.x + g.pos_x x := tetro.x + g.pos_x
y := tetro.y + g.pos_y y := tetro.y + g.pos_y
@ -705,7 +705,7 @@ fn (g &Game) drop_tetro() {
} }
fn (g &Game) draw_tetro() { fn (g &Game) draw_tetro() {
for i := 0; i < TetroSize; i++ { for i in 0..TetroSize {
tetro := g.tetro[i] tetro := g.tetro[i]
g.draw_block(g.pos_y + tetro.y, g.pos_x + tetro.x, g.tetro_idx + 1) g.draw_block(g.pos_y + tetro.y, g.pos_x + tetro.x, g.tetro_idx + 1)
} }

View File

@ -51,13 +51,13 @@ pub fn dice_coefficient(s1, s2 string) f32 {
a := if s1.len > s2.len { s1 } else { s2 } a := if s1.len > s2.len { s1 } else { s2 }
b := if a == s1 { s2 } else { s1 } b := if a == s1 { s2 } else { s1 }
mut first_bigrams := map[string]int mut first_bigrams := map[string]int
for i := 0; i < a.len - 1; i++ { for i in 0..a.len - 1 {
bigram := a[i..i + 2] bigram := a[i..i + 2]
q := if bigram in first_bigrams { first_bigrams[bigram] + 1 } else { 1 } q := if bigram in first_bigrams { first_bigrams[bigram] + 1 } else { 1 }
first_bigrams[bigram] = q first_bigrams[bigram] = q
} }
mut intersection_size := 0 mut intersection_size := 0
for i := 0; i < b.len - 1; i++ { for i in 0..b.len - 1 {
bigram := b[i..i + 2] bigram := b[i..i + 2]
count := if bigram in first_bigrams { first_bigrams[bigram] } else { 0 } count := if bigram in first_bigrams { first_bigrams[bigram] } else { 0 }
if count > 0 { if count > 0 {

View File

@ -106,7 +106,7 @@ fn test_smonth() {
} }
fn test_day_of_week() { fn test_day_of_week() {
for i := 0; i < 7; i++ { for i in 0..7 {
day_of_week := i + 1 day_of_week := i + 1
// 2 Dec 2019 is Monday // 2 Dec 2019 is Monday
t := time.Time{ t := time.Time{

View File

@ -16,7 +16,7 @@ fn test_c_files() {
vroot := filepath.dir(vexe) vroot := filepath.dir(vexe)
term_ok := term.ok_message('OK') term_ok := term.ok_message('OK')
term_fail := term.fail_message('FAIL') term_fail := term.fail_message('FAIL')
for i in 1 .. nr_tests + 1 { for i in 1..(nr_tests + 1) {
path := '$vroot/vlib/v/gen/tests/${i}.vv' path := '$vroot/vlib/v/gen/tests/${i}.vv'
mut ctext := os.read_file('$vroot/vlib/v/gen/tests/${i}.c') or { mut ctext := os.read_file('$vroot/vlib/v/gen/tests/${i}.c') or {
panic(err) panic(err)

View File

@ -192,7 +192,7 @@ fn handle_conn<T>(conn net.Socket, app mut T) {
mut len := 0 mut len := 0
mut body_len := 0 mut body_len := 0
//for line in lines[1..] { //for line in lines[1..] {
for j := 0; j < 100; j++ { for j in 0..100 {
//println(j) //println(j)
line := conn.read_line() line := conn.read_line()
sline := strip(line) sline := strip(line)