🐛 fix compilation warnings on macOS
This commit is contained in:
parent
db47ab4445
commit
a37ce6aadd
95
nasal_gc.h
95
nasal_gc.h
|
@ -270,43 +270,45 @@ std::ostream& operator<<(std::ostream& out,nas_vec& vec) {
|
||||||
var nas_hash::get_val(const string& key) {
|
var nas_hash::get_val(const string& key) {
|
||||||
if (elems.count(key)) {
|
if (elems.count(key)) {
|
||||||
return elems.at(key);
|
return elems.at(key);
|
||||||
} else if (elems.count("parents")) {
|
} else if (!elems.count("parents")) {
|
||||||
var ret=var::none();
|
return var::none();
|
||||||
var val=elems.at("parents");
|
}
|
||||||
if (val.type!=vm_vec) {
|
var ret=var::none();
|
||||||
|
var val=elems.at("parents");
|
||||||
|
if (val.type!=vm_vec) {
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
for(auto& i:val.vec().elems) {
|
||||||
|
if (i.type==vm_hash) {
|
||||||
|
ret=i.hash().get_val(key);
|
||||||
|
}
|
||||||
|
if (ret.type!=vm_none) {
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
for(auto& i:val.vec().elems) {
|
|
||||||
if (i.type==vm_hash) {
|
|
||||||
ret=i.hash().get_val(key);
|
|
||||||
}
|
|
||||||
if (ret.type!=vm_none) {
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
return var::none();
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
var* nas_hash::get_mem(const string& key) {
|
var* nas_hash::get_mem(const string& key) {
|
||||||
if (elems.count(key)) {
|
if (elems.count(key)) {
|
||||||
return &elems.at(key);
|
return &elems.at(key);
|
||||||
} else if (elems.count("parents")) {
|
} else if (!elems.count("parents")) {
|
||||||
var* addr=nullptr;
|
return nullptr;
|
||||||
var val=elems.at("parents");
|
}
|
||||||
if (val.type!=vm_vec) {
|
var* addr=nullptr;
|
||||||
|
var val=elems.at("parents");
|
||||||
|
if (val.type!=vm_vec) {
|
||||||
|
return addr;
|
||||||
|
}
|
||||||
|
for(auto& i:val.vec().elems) {
|
||||||
|
if (i.type==vm_hash) {
|
||||||
|
addr=i.hash().get_mem(key);
|
||||||
|
}
|
||||||
|
if (addr) {
|
||||||
return addr;
|
return addr;
|
||||||
}
|
}
|
||||||
for(auto& i:val.vec().elems) {
|
|
||||||
if (i.type==vm_hash) {
|
|
||||||
addr=i.hash().get_mem(key);
|
|
||||||
}
|
|
||||||
if (addr) {
|
|
||||||
return addr;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
return nullptr;
|
return addr;
|
||||||
}
|
}
|
||||||
|
|
||||||
std::ostream& operator<<(std::ostream& out,nas_hash& hash) {
|
std::ostream& operator<<(std::ostream& out,nas_hash& hash) {
|
||||||
|
@ -441,43 +443,35 @@ bool var::objchk(obj_type objtype) {
|
||||||
}
|
}
|
||||||
|
|
||||||
var var::none() {
|
var var::none() {
|
||||||
return {vm_none,0};
|
return {vm_none,{0}};
|
||||||
}
|
}
|
||||||
|
|
||||||
var var::nil() {
|
var var::nil() {
|
||||||
return {vm_nil,0};
|
return {vm_nil,{0}};
|
||||||
}
|
}
|
||||||
|
|
||||||
var var::ret(u32 pc) {
|
var var::ret(u32 pc) {
|
||||||
return {vm_ret,pc};
|
return {vm_ret,{.ret=pc}};
|
||||||
}
|
}
|
||||||
|
|
||||||
var var::cnt(i64 n) {
|
var var::cnt(i64 n) {
|
||||||
var t;
|
return {vm_cnt,{.cnt=n}};
|
||||||
t.type=vm_cnt;
|
|
||||||
t.val.cnt=n;
|
|
||||||
return t;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
var var::num(f64 n) {
|
var var::num(f64 n) {
|
||||||
var t;
|
return {vm_num,{.num=n}};
|
||||||
t.type=vm_num;
|
|
||||||
t.val.num=n;
|
|
||||||
return t;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
var var::gcobj(nas_val* p) {
|
var var::gcobj(nas_val* p) {
|
||||||
var t;
|
var tmp={p->type,{0}};
|
||||||
t.type=p->type; // use nas_val::type directly
|
tmp.val.gcobj=p;
|
||||||
t.val.gcobj=p;
|
return tmp;
|
||||||
return t;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
var var::addr(var* p) {
|
var var::addr(var* p) {
|
||||||
var t;
|
var tmp={vm_addr,{0}};
|
||||||
t.type=vm_addr;
|
tmp.val.addr=p;
|
||||||
t.val.addr=p;
|
return tmp;
|
||||||
return t;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
var* var::addr () {return val.addr; }
|
var* var::addr () {return val.addr; }
|
||||||
|
@ -823,11 +817,14 @@ var nas_err(const string& err_f,const string& info) {
|
||||||
return var::none();
|
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;
|
const char* name;
|
||||||
mod fd;
|
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)();
|
||||||
|
|
Loading…
Reference in New Issue