diff --git a/cmd/tools/vtest-self.v b/cmd/tools/vtest-self.v index ed6cee9f01..9d96ccfbde 100644 --- a/cmd/tools/vtest-self.v +++ b/cmd/tools/vtest-self.v @@ -32,24 +32,7 @@ const ( skip_with_werror = [ 'vlib/clipboard/clipboard_test.v', 'vlib/eventbus/eventbus_test.v', - 'vlib/gx/color_test.v', - 'vlib/json/json_test.v', - 'vlib/math/big/big_test.v', - 'vlib/net/ftp/ftp_test.v', - 'vlib/net/http/cookie_test.v', - 'vlib/net/http/http_httpbin_test.v', - 'vlib/net/http/header_test.v', - 'vlib/net/tcp_test.v', - 'vlib/net/tcp_simple_client_server_test.v', - 'vlib/net/smtp/smtp_test.v', - 'vlib/net/udp_test.v', - 'vlib/net/unix/unix_test.v', - 'vlib/net/http/http_test.v', - 'vlib/net/http/status_test.v', 'vlib/orm/orm_test.v', - 'vlib/os/os_test.v', - 'vlib/rand/mt19937/mt19937_test.v', - 'vlib/readline/readline_test.v', 'vlib/regex/regex_test.v', 'vlib/sqlite/sqlite_test.v', 'vlib/strconv/atof_test.v', diff --git a/vlib/fontstash/fontstash.v b/vlib/fontstash/fontstash.v index 2dab6b6c64..9dccdad017 100644 --- a/vlib/fontstash/fontstash.v +++ b/vlib/fontstash/fontstash.v @@ -51,7 +51,7 @@ pub fn (s &C.FONScontext) reset_atlas(width int, height int) int { // Add fonts [inline] -pub fn (s &C.FONScontext) get_font_by_name(name byteptr) int { +pub fn (s &C.FONScontext) get_font_by_name(name &char) int { return C.fonsGetFontByName(s, name) } @@ -61,7 +61,7 @@ pub fn (s &C.FONScontext) add_fallback_font(base int, fallback int) int { } [inline] -pub fn (s &C.FONScontext) add_font_mem(name byteptr, data byteptr, data_size int, free_data int) int { +pub fn (s &C.FONScontext) add_font_mem(name &char, data &byte, data_size int, free_data int) int { return C.fonsAddFontMem(s, name, data, data_size, free_data) } @@ -114,13 +114,13 @@ pub fn (s &C.FONScontext) set_font(font int) { // Draw text [inline] -pub fn (s &C.FONScontext) draw_text(x f32, y f32, str byteptr, end byteptr) f32 { +pub fn (s &C.FONScontext) draw_text(x f32, y f32, str &char, end &char) f32 { return C.fonsDrawText(s, x, y, str, end) } // Measure text [inline] -pub fn (s &C.FONScontext) text_bounds(x f32, y f32, str byteptr, end byteptr, bounds &f32) f32 { +pub fn (s &C.FONScontext) text_bounds(x f32, y f32, str &char, end &char, bounds &f32) f32 { return C.fonsTextBounds(s, x, y, str, end, bounds) } @@ -136,7 +136,7 @@ pub fn (s &C.FONScontext) vert_metrics(ascender &f32, descender &f32, lineh &f32 // Text iterator [inline] -pub fn (s &C.FONScontext) text_iter_init(iter &C.FONStextIter, x f32, y f32, str byteptr, end byteptr) int { +pub fn (s &C.FONScontext) text_iter_init(iter &C.FONStextIter, x f32, y f32, str &char, end &char) int { return C.fonsTextIterInit(s, iter, x, y, str, end) } @@ -147,8 +147,8 @@ pub fn (s &C.FONScontext) text_iter_next(iter &C.FONStextIter, quad &C.FONSquad) // Pull texture changes [inline] -pub fn (s &C.FONScontext) get_texture_data(width &int, height &int) byteptr { - return C.fonsGetTextureData(s, width, height) +pub fn (s &C.FONScontext) get_texture_data(width &int, height &int) &byte { + return &byte(C.fonsGetTextureData(s, width, height)) } [inline] diff --git a/vlib/fontstash/fontstash_funcs.v b/vlib/fontstash/fontstash_funcs.v index f3e97a8d58..8e260e777c 100644 --- a/vlib/fontstash/fontstash_funcs.v +++ b/vlib/fontstash/fontstash_funcs.v @@ -4,18 +4,21 @@ module fontstash fn C.fonsCreateInternal(params &C.FONSparams) &C.FONScontext fn C.fonsDeleteInternal(s &C.FONScontext) -fn C.fonsSetErrorCallback(s &C.FONScontext, callback fn(uptr voidptr, error int, val int), uptr voidptr) +fn C.fonsSetErrorCallback(s &C.FONScontext, callback fn (voidptr, int, int), uptr voidptr) + // Returns current atlas size. fn C.fonsGetAtlasSize(s &C.FONScontext, width &int, height &int) + // Expands the atlas size. fn C.fonsExpandAtlas(s &C.FONScontext, width int, height int) int + // Resets the whole stash. fn C.fonsResetAtlas(s &C.FONScontext, width int, height int) int // Add fonts -fn C.fonsGetFontByName(s &C.FONScontext, name byteptr) int +fn C.fonsGetFontByName(s &C.FONScontext, name &char) int fn C.fonsAddFallbackFont(s &C.FONScontext, base int, fallback int) int -fn C.fonsAddFontMem(s &C.FONScontext, name byteptr, data byteptr, dataSize int, freeData int) int +fn C.fonsAddFontMem(s &C.FONScontext, name &char, data &byte, dataSize int, freeData int) int // State handling fn C.fonsPushState(s &C.FONScontext) @@ -31,19 +34,19 @@ fn C.fonsSetAlign(s &C.FONScontext, align int) fn C.fonsSetFont(s &C.FONScontext, font int) // Draw text -fn C.fonsDrawText(s &C.FONScontext, x f32, y f32, str byteptr, end byteptr) f32 +fn C.fonsDrawText(s &C.FONScontext, x f32, y f32, str &char, end &char) f32 // Measure text -fn C.fonsTextBounds(s &C.FONScontext, x f32, y f32, str byteptr, end byteptr, bounds &f32) f32 +fn C.fonsTextBounds(s &C.FONScontext, x f32, y f32, str &char, end &char, bounds &f32) f32 fn C.fonsLineBounds(s &C.FONScontext, y f32, miny &f32, maxy &f32) fn C.fonsVertMetrics(s &C.FONScontext, ascender &f32, descender &f32, lineh &f32) // Text iterator -fn C.fonsTextIterInit(s &C.FONScontext, iter &C.FONStextIter, x f32, y f32, str byteptr, end byteptr) int +fn C.fonsTextIterInit(s &C.FONScontext, iter &C.FONStextIter, x f32, y f32, str &char, end &char) int fn C.fonsTextIterNext(s &C.FONScontext, iter &C.FONStextIter, quad &C.FONSquad) int // Pull texture changes -fn C.fonsGetTextureData(s &C.FONScontext, width &int, height &int) byteptr +fn C.fonsGetTextureData(s &C.FONScontext, width &int, height &int) &char fn C.fonsValidateTexture(s &C.FONScontext, dirty &int) int // Draws the stash texture for debugging diff --git a/vlib/json/json_primitives.v b/vlib/json/json_primitives.v index 59d2d4eb97..86c0684726 100644 --- a/vlib/json/json_primitives.v +++ b/vlib/json/json_primitives.v @@ -11,7 +11,7 @@ module json struct C.cJSON { valueint int valuedouble f32 - valuestring charptr + valuestring &char } fn C.cJSON_IsTrue(&C.cJSON) bool @@ -20,13 +20,13 @@ fn C.cJSON_CreateNumber(int) &C.cJSON fn C.cJSON_CreateBool(bool) &C.cJSON -fn C.cJSON_CreateString(charptr) &C.cJSON +fn C.cJSON_CreateString(&char) &C.cJSON -fn C.cJSON_Parse(charptr) &C.cJSON +fn C.cJSON_Parse(&char) &C.cJSON -fn C.cJSON_PrintUnformatted(&C.cJSON) charptr +fn C.cJSON_PrintUnformatted(&C.cJSON) &char -fn C.cJSON_Print(&C.cJSON) charptr +fn C.cJSON_Print(&C.cJSON) &char pub fn decode(typ voidptr, s string) ?voidptr { // compiler implementation @@ -122,7 +122,7 @@ fn decode_string(root &C.cJSON) string { } // println('decode string valuestring="$root.valuestring"') // return tos(root.valuestring, _strlen(root.valuestring)) - return unsafe { tos_clone(byteptr(root.valuestring)) } // , _strlen(root.valuestring)) + return unsafe { tos_clone(&byte(root.valuestring)) } // , _strlen(root.valuestring)) } fn decode_bool(root &C.cJSON) bool { @@ -190,12 +190,12 @@ fn json_parse(s string) &C.cJSON { // json_string := json_print(encode_User(user)) fn json_print(json &C.cJSON) string { s := C.cJSON_PrintUnformatted(json) - return unsafe { tos(byteptr(s), C.strlen(&char(s))) } + return unsafe { tos(&byte(s), C.strlen(&char(s))) } } fn json_print_pretty(json &C.cJSON) string { s := C.cJSON_Print(json) - return unsafe { tos(byteptr(s), C.strlen(&char(s))) } + return unsafe { tos(&byte(s), C.strlen(&char(s))) } } // / cjson wrappers diff --git a/vlib/math/big/big.v b/vlib/math/big/big.v index 465960fd0d..b07c44e05e 100644 --- a/vlib/math/big/big.v +++ b/vlib/math/big/big.v @@ -19,9 +19,9 @@ fn C.bignum_from_int(n &Number, i u64) fn C.bignum_to_int(n &Number) int -fn C.bignum_from_string(n &Number, s &byte, nbytes int) +fn C.bignum_from_string(n &Number, s &char, nbytes int) -fn C.bignum_to_string(n &Number, s &byte, maxsize int) +fn C.bignum_to_string(n &Number, s &char, maxsize int) // c = a + b fn C.bignum_add(a &Number, b &Number, c &Number) @@ -104,7 +104,7 @@ pub fn from_hex_string(input string) Number { padding := '0'.repeat((8 - s.len % 8) % 8) s = padding + s n := Number{} - C.bignum_from_string(&n, s.str, s.len) + C.bignum_from_string(&n, &char(s.str), s.len) return n } @@ -151,7 +151,7 @@ pub fn (n Number) hexstr() string { unsafe { bp := &buf[0] // NB: C.bignum_to_string(), returns the HEXADECIMAL representation of the bignum n - C.bignum_to_string(&n, bp, 8192) + C.bignum_to_string(&n, &char(bp), 8192) s = tos_clone(bp) } if s.len == 0 { diff --git a/vlib/math/big/big_test.v b/vlib/math/big/big_test.v index 2a529777f3..6ba78686ed 100644 --- a/vlib/math/big/big_test.v +++ b/vlib/math/big/big_test.v @@ -115,7 +115,7 @@ fn test_str() { assert big.from_u64(1024).str() == '1024' assert big.from_u64(4294967295).str() == '4294967295' assert big.from_u64(4398046511104).str() == '4398046511104' - assert big.from_int(4294967295).str() == '18446744073709551615' + assert big.from_int(int(4294967295)).str() == '18446744073709551615' assert big.from_int(-1).str() == '18446744073709551615' assert big.from_hex_string('e'.repeat(80)).str() == '1993587900192849410235353592424915306962524220866209251950572167300738410728597846688097947807470' } diff --git a/vlib/net/address.v b/vlib/net/address.v index 2f4a5872c1..efc2ffc636 100644 --- a/vlib/net/address.v +++ b/vlib/net/address.v @@ -72,9 +72,10 @@ pub fn resolve_addr(addr string, family SocketFamily, typ SocketType) ?Addr { // This might look silly but is recommended by MSDN $if windows { - socket_error(0 - C.getaddrinfo(address.str, sport.str, &hints, &info)) ? + socket_error(0 - C.getaddrinfo(&char(address.str), &char(sport.str), &hints, + &info)) ? } $else { - x := C.getaddrinfo(address.str, sport.str, &hints, &info) + x := C.getaddrinfo(&char(address.str), &char(sport.str), &hints, &info) wrap_error(x) ? } diff --git a/vlib/net/http/backend_nix.c.v b/vlib/net/http/backend_nix.c.v index e2b86466b3..bfcec7c57a 100644 --- a/vlib/net/http/backend_nix.c.v +++ b/vlib/net/http/backend_nix.c.v @@ -12,7 +12,7 @@ const ( fn (req &Request) ssl_do(port int, method Method, host_name string, path string) ?Response { // ssl_method := C.SSLv23_method() - ctx := C.SSL_CTX_new(C.TLSv1_2_method()) + ctx := C.SSL_CTX_new(C.TLS_method()) C.SSL_CTX_set_verify_depth(ctx, 4) flags := C.SSL_OP_NO_SSLv2 | C.SSL_OP_NO_SSLv3 | C.SSL_OP_NO_COMPRESSION C.SSL_CTX_set_options(ctx, flags) @@ -23,7 +23,7 @@ fn (req &Request) ssl_do(port int, method Method, host_name string, path string) ssl := &openssl.SSL(0) C.BIO_get_ssl(web, &ssl) preferred_ciphers := 'HIGH:!aNULL:!kRSA:!PSK:!SRP:!MD5:!RC4' - res = C.SSL_set_cipher_list(voidptr(ssl), preferred_ciphers.str) + res = C.SSL_set_cipher_list(voidptr(ssl), &char(preferred_ciphers.str)) if res != 1 { println('http: openssl: cipher failed') } @@ -41,7 +41,7 @@ fn (req &Request) ssl_do(port int, method Method, host_name string, path string) eprintln('> $req_headers') } // println(req_headers) - C.BIO_puts(web, req_headers.str) + C.BIO_puts(web, &char(req_headers.str)) mut content := strings.new_builder(100) mut buff := [bufsize]byte{} bp := &buff[0] diff --git a/vlib/net/tcp.v b/vlib/net/tcp.v index 9cca9a1d9b..0cccc37a31 100644 --- a/vlib/net/tcp.v +++ b/vlib/net/tcp.v @@ -159,7 +159,7 @@ pub fn (c &TcpConn) peer_addr() ?Addr { } pub fn (c &TcpConn) peer_ip() ?string { - buf := [44]byte{} + buf := [44]char{} peeraddr := C.sockaddr_in{} speeraddr := sizeof(peeraddr) socket_error(C.getpeername(c.sock.handle, unsafe { &C.sockaddr(&peeraddr) }, &speeraddr)) ? diff --git a/vlib/net/unix/stream_nix.v b/vlib/net/unix/stream_nix.v index 9d1dcd290e..599a8290ce 100644 --- a/vlib/net/unix/stream_nix.v +++ b/vlib/net/unix/stream_nix.v @@ -41,7 +41,8 @@ fn error_code() int { } fn new_stream_socket() ?StreamSocket { - sockfd := net.socket_error(C.socket(net.SocketFamily.unix, net.SocketType.stream, 0)) ? + sockfd := net.socket_error(C.socket(net.SocketFamily.unix, net.SocketType.stream, + 0)) ? mut s := StreamSocket{ handle: sockfd } @@ -64,7 +65,7 @@ fn (mut s StreamSocket) connect(a string) ? { mut addr := C.sockaddr_un{} unsafe { C.memset(&addr, 0, sizeof(C.sockaddr_un)) } addr.sun_family = C.AF_UNIX - unsafe { C.strncpy(&addr.sun_path[0], a.str, max_sun_path) } + unsafe { C.strncpy(&addr.sun_path[0], &char(a.str), max_sun_path) } size := C.SUN_LEN(&addr) sockaddr := unsafe { &C.sockaddr(&addr) } res := C.connect(s.handle, sockaddr, size) @@ -97,7 +98,7 @@ pub fn listen_stream(sock string) ?&StreamListener { mut addr := C.sockaddr_un{} unsafe { C.memset(&addr, 0, sizeof(C.sockaddr_un)) } addr.sun_family = C.AF_UNIX - unsafe { C.strncpy(&addr.sun_path[0], sock.str, max_sun_path) } + unsafe { C.strncpy(&addr.sun_path[0], &char(sock.str), max_sun_path) } size := C.SUN_LEN(&addr) sockaddr := unsafe { &C.sockaddr(&addr) } net.socket_error(C.bind(s.handle, sockaddr, size)) ? @@ -170,14 +171,14 @@ pub fn (mut c StreamConn) close() ? { } // write_ptr blocks and attempts to write all data -pub fn (mut c StreamConn) write_ptr(b byteptr, len int) ?int { +pub fn (mut c StreamConn) write_ptr(b &byte, len int) ?int { $if trace_unix ? { eprintln( '>>> StreamConn.write_ptr | c.sock.handle: $c.sock.handle | b: ${ptr_str(b)} len: $len |\n' + unsafe { b.vstring_with_len(len) }) } unsafe { - mut ptr_base := byteptr(b) + mut ptr_base := &byte(b) mut total_sent := 0 for total_sent < len { ptr := ptr_base + total_sent @@ -214,7 +215,7 @@ pub fn (mut c StreamConn) write_string(s string) ?int { return c.write_ptr(s.str, s.len) } -pub fn (mut c StreamConn) read_ptr(buf_ptr byteptr, len int) ?int { +pub fn (mut c StreamConn) read_ptr(buf_ptr &byte, len int) ?int { mut res := wrap_read_result(C.recv(c.sock.handle, buf_ptr, len, 0)) ? $if trace_unix ? { eprintln('<<< StreamConn.read_ptr | c.sock.handle: $c.sock.handle | buf_ptr: ${ptr_str(buf_ptr)} len: $len | res: $res') diff --git a/vlib/rand/mt19937/mt19937_test.v b/vlib/rand/mt19937/mt19937_test.v index 02e9daf83c..f2a41de701 100644 --- a/vlib/rand/mt19937/mt19937_test.v +++ b/vlib/rand/mt19937/mt19937_test.v @@ -17,7 +17,7 @@ const ( fn mt19937_basic_test() { mut rng := mt19937.MT19937RNG{} rng.seed([u32(0xdeadbeef)]) - target := [956529277, 3842322136, 3319553134, 1843186657, 2704993644, 595827513, 938518626, + target := [u32(956529277), 3842322136, 3319553134, 1843186657, 2704993644, 595827513, 938518626, 1676224337, 3221315650, 1819026461] for i := 0; i < 10; i++ { assert target[i] == rng.u32() diff --git a/vlib/readline/readline.v b/vlib/readline/readline.v index 85d1fd8f71..2e22a38208 100644 --- a/vlib/readline/readline.v +++ b/vlib/readline/readline.v @@ -8,6 +8,8 @@ module readline // Termios stores the terminal options on Linux. +struct C.termios {} + struct Termios { mut: c_iflag int @@ -32,7 +34,7 @@ mut: is_raw bool orig_termios Termios // Linux current ustring // Line being edited - cursor int // Cursor position + cursor int // Cursor position overwrite bool cursor_row_offset int prompt string diff --git a/vlib/readline/readline_linux.c.v b/vlib/readline/readline_linux.c.v index 1e70179daa..df00233245 100644 --- a/vlib/readline/readline_linux.c.v +++ b/vlib/readline/readline_linux.c.v @@ -13,9 +13,9 @@ import os #include #include -fn C.tcgetattr(fd int, termios_p &Termios) int +fn C.tcgetattr(fd int, termios_p &C.termios) int -fn C.tcsetattr(fd int, optional_actions int, termios_p &Termios) int +fn C.tcsetattr(fd int, optional_actions int, termios_p &C.termios) int fn C.raise(sig int) @@ -47,18 +47,18 @@ enum Action { // Please note that `enable_raw_mode` catches the `SIGUSER` (CTRL + C) signal. // For a method that does please see `enable_raw_mode_nosig`. pub fn (mut r Readline) enable_raw_mode() { - if C.tcgetattr(0, &r.orig_termios) == -1 { + if C.tcgetattr(0, unsafe { &C.termios(&r.orig_termios) }) == -1 { r.is_tty = false r.is_raw = false return } mut raw := r.orig_termios raw.c_iflag &= ~(C.BRKINT | C.ICRNL | C.INPCK | C.ISTRIP | C.IXON) - raw.c_cflag |= (C.CS8) + raw.c_cflag |= C.CS8 raw.c_lflag &= ~(C.ECHO | C.ICANON | C.IEXTEN | C.ISIG) raw.c_cc[C.VMIN] = 1 raw.c_cc[C.VTIME] = 0 - C.tcsetattr(0, C.TCSADRAIN, &raw) + C.tcsetattr(0, C.TCSADRAIN, unsafe { &C.termios(&raw) }) r.is_raw = true r.is_tty = true } @@ -68,18 +68,18 @@ pub fn (mut r Readline) enable_raw_mode() { // Please note that `enable_raw_mode_nosig` does not catch the `SIGUSER` (CTRL + C) signal // as opposed to `enable_raw_mode`. pub fn (mut r Readline) enable_raw_mode_nosig() { - if C.tcgetattr(0, &r.orig_termios) == -1 { + if C.tcgetattr(0, unsafe { &C.termios(&r.orig_termios) }) == -1 { r.is_tty = false r.is_raw = false return } mut raw := r.orig_termios raw.c_iflag &= ~(C.BRKINT | C.ICRNL | C.INPCK | C.ISTRIP | C.IXON) - raw.c_cflag |= (C.CS8) + raw.c_cflag |= C.CS8 raw.c_lflag &= ~(C.ECHO | C.ICANON | C.IEXTEN) raw.c_cc[C.VMIN] = 1 raw.c_cc[C.VTIME] = 0 - C.tcsetattr(0, C.TCSADRAIN, &raw) + C.tcsetattr(0, C.TCSADRAIN, unsafe { &C.termios(&raw) }) r.is_raw = true r.is_tty = true } @@ -88,7 +88,7 @@ pub fn (mut r Readline) enable_raw_mode_nosig() { // For a description of raw mode please see the `enable_raw_mode` method. pub fn (mut r Readline) disable_raw_mode() { if r.is_raw { - C.tcsetattr(0, C.TCSADRAIN, &r.orig_termios) + C.tcsetattr(0, C.TCSADRAIN, unsafe { &C.termios(&r.orig_termios) }) r.is_raw = false } } diff --git a/vlib/strconv/atof_test.v b/vlib/strconv/atof_test.v index 763903a942..ea29920215 100644 --- a/vlib/strconv/atof_test.v +++ b/vlib/strconv/atof_test.v @@ -47,7 +47,7 @@ fn test_atof() { // test C.atof n1 := x.strsci(18) - n2 := f64(C.atof(src_num_str[c].str)).strsci(18) + n2 := f64(C.atof(&char(src_num_str[c].str))).strsci(18) //println("$n1 $n2") assert n1 == n2 } diff --git a/vlib/v/gen/c/auto_eq_methods.v b/vlib/v/gen/c/auto_eq_methods.v index 0783510fd8..f7ef31f4ce 100644 --- a/vlib/v/gen/c/auto_eq_methods.v +++ b/vlib/v/gen/c/auto_eq_methods.v @@ -328,7 +328,6 @@ fn (mut g Gen) gen_map_equality_fn(left ast.Type) string { fn_builder.writeln('\t\tif (*(voidptr*)map_get(&b, k, &(voidptr[]){ 0 }) != v) {') } else { - println(kind) fn_builder.writeln('\t\tif (*($ptr_value_typ*)map_get(&b, k, &($ptr_value_typ[]){ 0 }) != v) {') } } diff --git a/vlib/v/gen/c/json.v b/vlib/v/gen/c/json.v index 2f3ee7a8a4..23949b3f5e 100644 --- a/vlib/v/gen/c/json.v +++ b/vlib/v/gen/c/json.v @@ -127,7 +127,7 @@ fn (mut g Gen) gen_struct_enc_dec(type_info ast.TypeInfo, styp string, mut enc s field_sym := g.table.get_type_symbol(field.typ) // First generate decoding if field.attrs.contains('raw') { - dec.writeln('\tres.${c_name(field.name)} = tos4(cJSON_PrintUnformatted(' + + dec.writeln('\tres.${c_name(field.name)} = tos5(cJSON_PrintUnformatted(' + 'js_get(root, "$name")));') } else { // Now generate decoders for all field types in this struct