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

all: re-apply C++ support

This commit is contained in:
Uwe Krüger
2020-05-18 21:38:06 +02:00
committed by GitHub
parent 895cefe351
commit 2635be511f
33 changed files with 261 additions and 150 deletions

View File

@ -19,10 +19,10 @@ pub mut:
fn __new_array(mylen int, cap int, elm_size int) array {
cap_ := if cap < mylen { mylen } else { cap }
arr := array{
len: mylen
cap: cap_
element_size: elm_size
data: vcalloc(cap_ * elm_size)
len: mylen
cap: cap_
}
return arr
}
@ -30,10 +30,10 @@ fn __new_array(mylen int, cap int, elm_size int) array {
fn __new_array_with_default(mylen int, cap int, elm_size int, val voidptr) array {
cap_ := if cap < mylen { mylen } else { cap }
arr := array{
len: mylen
cap: cap_
element_size: elm_size
data: vcalloc(cap_ * elm_size)
len: mylen
cap: cap_
}
if val != 0 {
for i in 0..arr.len {
@ -48,10 +48,10 @@ fn new_array_from_c_array(len, cap, elm_size int, c_array voidptr) array {
cap_ := if cap < len { len } else { cap }
arr := array{
len: len
cap: cap_
element_size: elm_size
data: vcalloc(cap_ * elm_size)
len: len
cap: cap_
}
// TODO Write all memory functions (like memcpy) in V
C.memcpy(arr.data, c_array, len * elm_size)
@ -61,10 +61,10 @@ fn new_array_from_c_array(len, cap, elm_size int, c_array voidptr) array {
// Private function, used by V (`nums := [1, 2, 3] !`)
fn new_array_from_c_array_no_alloc(len, cap, elm_size int, c_array voidptr) array {
arr := array{
len: len
cap: cap
element_size: elm_size
data: c_array
len: len
cap: cap
}
return arr
}
@ -98,10 +98,10 @@ pub fn (a array) repeat(count int) array {
size = a.element_size
}
arr := array{
len: count * a.len
cap: count * a.len
element_size: a.element_size
data: vcalloc(size)
len: count * a.len
cap: count * a.len
}
for i in 0..count {
C.memcpy(byteptr(arr.data) + i * a.len * a.element_size, byteptr(a.data), a.len * a.element_size)
@ -241,10 +241,10 @@ pub fn (a &array) clone() array {
size++
}
arr := array{
len: a.len
cap: a.cap
element_size: a.element_size
data: vcalloc(size)
len: a.len
cap: a.cap
}
C.memcpy(byteptr(arr.data), a.data, a.cap * a.element_size)
return arr
@ -312,10 +312,10 @@ pub fn (a array) reverse() array {
return a
}
arr := array{
len: a.len
cap: a.cap
element_size: a.element_size
data: vcalloc(a.cap * a.element_size)
len: a.len
cap: a.cap
}
for i in 0..a.len {
//C.memcpy(arr.data + i * arr.element_size, &a[a.len - 1 - i], arr.element_size)