compiler: first step to require explicit definition of imported C fns
parent
13e4c79f58
commit
cb31eeec55
|
@ -1582,6 +1582,10 @@ fn (p mut Parser) name_expr() string {
|
||||||
cfn := p.table.find_fn(name) or {
|
cfn := p.table.find_fn(name) or {
|
||||||
// Not Found? Return 'void*'
|
// Not Found? Return 'void*'
|
||||||
//return 'cvoid' //'void*'
|
//return 'cvoid' //'void*'
|
||||||
|
if false {
|
||||||
|
p.warn('\ndefine imported C function with ' +
|
||||||
|
'`fn C.$name([args]) [return_type]`\n')
|
||||||
|
}
|
||||||
return 'void*'
|
return 'void*'
|
||||||
}
|
}
|
||||||
return cfn.typ
|
return cfn.typ
|
||||||
|
|
|
@ -33,6 +33,7 @@ pub fn _make(len, cap, elm_size int) array {
|
||||||
return new_array(len, cap, elm_size)
|
return new_array(len, cap, elm_size)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// Private function, used by V (`nums := [1, 2, 3]`)
|
// Private function, used by V (`nums := [1, 2, 3]`)
|
||||||
fn new_array_from_c_array(len, cap, elm_size int, c_array voidptr) array {
|
fn new_array_from_c_array(len, cap, elm_size int, c_array voidptr) array {
|
||||||
arr := array {
|
arr := array {
|
||||||
|
|
|
@ -4,6 +4,12 @@
|
||||||
|
|
||||||
module builtin
|
module builtin
|
||||||
|
|
||||||
|
fn C.memcpy(byteptr, byteptr, int)
|
||||||
|
fn C.memmove(byteptr, byteptr, int)
|
||||||
|
//fn C.malloc(int) byteptr
|
||||||
|
fn C.realloc(byteptr, int) byteptr
|
||||||
|
|
||||||
|
|
||||||
pub fn exit(code int) {
|
pub fn exit(code int) {
|
||||||
C.exit(code)
|
C.exit(code)
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,8 +4,6 @@
|
||||||
|
|
||||||
module math
|
module math
|
||||||
|
|
||||||
#include <math.h>
|
|
||||||
|
|
||||||
// NOTE
|
// NOTE
|
||||||
// When adding a new function, please make sure it's in the right place.
|
// When adding a new function, please make sure it's in the right place.
|
||||||
// All functions are sorted alphabetically.
|
// All functions are sorted alphabetically.
|
||||||
|
@ -51,6 +49,8 @@ pub fn abs(a f64) f64 {
|
||||||
return a
|
return a
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn C.acos(a f64) f64
|
||||||
|
|
||||||
// acos calculates inverse cosine (arccosine).
|
// acos calculates inverse cosine (arccosine).
|
||||||
pub fn acos(a f64) f64 {
|
pub fn acos(a f64) f64 {
|
||||||
return C.acos(a)
|
return C.acos(a)
|
||||||
|
|
Loading…
Reference in New Issue