🐛 fix compilation warnings on macOS

This commit is contained in:
ValKmjolnir 2023-04-11 00:28:12 +08:00
parent db47ab4445
commit a37ce6aadd
1 changed files with 46 additions and 49 deletions

View File

@ -270,7 +270,9 @@ std::ostream& operator<<(std::ostream& out,nas_vec& vec) {
var nas_hash::get_val(const string& key) {
if (elems.count(key)) {
return elems.at(key);
} else if (elems.count("parents")) {
} else if (!elems.count("parents")) {
return var::none();
}
var ret=var::none();
var val=elems.at("parents");
if (val.type!=vm_vec) {
@ -284,14 +286,15 @@ var nas_hash::get_val(const string& key) {
return ret;
}
}
}
return var::none();
return ret;
}
var* nas_hash::get_mem(const string& key) {
if (elems.count(key)) {
return &elems.at(key);
} else if (elems.count("parents")) {
} else if (!elems.count("parents")) {
return nullptr;
}
var* addr=nullptr;
var val=elems.at("parents");
if (val.type!=vm_vec) {
@ -305,8 +308,7 @@ var* nas_hash::get_mem(const string& key) {
return addr;
}
}
}
return nullptr;
return addr;
}
std::ostream& operator<<(std::ostream& out,nas_hash& hash) {
@ -441,43 +443,35 @@ bool var::objchk(obj_type objtype) {
}
var var::none() {
return {vm_none,0};
return {vm_none,{0}};
}
var var::nil() {
return {vm_nil,0};
return {vm_nil,{0}};
}
var var::ret(u32 pc) {
return {vm_ret,pc};
return {vm_ret,{.ret=pc}};
}
var var::cnt(i64 n) {
var t;
t.type=vm_cnt;
t.val.cnt=n;
return t;
return {vm_cnt,{.cnt=n}};
}
var var::num(f64 n) {
var t;
t.type=vm_num;
t.val.num=n;
return t;
return {vm_num,{.num=n}};
}
var var::gcobj(nas_val* p) {
var t;
t.type=p->type; // use nas_val::type directly
t.val.gcobj=p;
return t;
var tmp={p->type,{0}};
tmp.val.gcobj=p;
return tmp;
}
var var::addr(var* p) {
var t;
t.type=vm_addr;
t.val.addr=p;
return t;
var tmp={vm_addr,{0}};
tmp.val.addr=p;
return tmp;
}
var* var::addr () {return val.addr; }
@ -823,11 +817,14 @@ var nas_err(const string& err_f,const string& info) {
return var::none();
}
typedef var (*mod)(var*,usize,gc*); // module function type
// module function type
typedef var (*mod)(var*,usize,gc*);
typedef struct {
// module function stores in tables with this type, end with {nullptr,nullptr}
struct mod_func {
const char* name;
mod fd;
} mod_func; // module function stores in tables with this type, end with {nullptr,nullptr}
};
typedef mod_func* (*getptr)(); // module function "get" type
// module function "get" type
typedef mod_func* (*getptr)();