reuse codes in nasal_vec::print and nasal_hash::print
now they all use nasal_ref::print
This commit is contained in:
parent
c55ce758ed
commit
92646840e4
40
nasal_gc.h
40
nasal_gc.h
|
@ -70,6 +70,7 @@ struct nasal_ref
|
||||||
// number and string can be translated to each other
|
// number and string can be translated to each other
|
||||||
double to_number();
|
double to_number();
|
||||||
std::string to_string();
|
std::string to_string();
|
||||||
|
void print();
|
||||||
inline uint32_t ret ();
|
inline uint32_t ret ();
|
||||||
inline int64_t& cnt ();
|
inline int64_t& cnt ();
|
||||||
inline double& num ();
|
inline double& num ();
|
||||||
|
@ -171,17 +172,7 @@ void nasal_vec::print()
|
||||||
std::cout<<'[';
|
std::cout<<'[';
|
||||||
for(auto& i:elems)
|
for(auto& i:elems)
|
||||||
{
|
{
|
||||||
switch(i.type)
|
i.print();
|
||||||
{
|
|
||||||
case vm_none: std::cout<<"undefined"; break;
|
|
||||||
case vm_nil: std::cout<<"nil"; break;
|
|
||||||
case vm_num: std::cout<<i.num(); break;
|
|
||||||
case vm_str: std::cout<<*i.str(); break;
|
|
||||||
case vm_vec: i.vec()->print(); break;
|
|
||||||
case vm_hash: i.hash()->print(); break;
|
|
||||||
case vm_func: std::cout<<"func(..){..}";break;
|
|
||||||
case vm_obj: std::cout<<"<object>"; break;
|
|
||||||
}
|
|
||||||
std::cout<<",]"[(++iter)==elems.size()];
|
std::cout<<",]"[(++iter)==elems.size()];
|
||||||
}
|
}
|
||||||
--depth;
|
--depth;
|
||||||
|
@ -244,18 +235,7 @@ void nasal_hash::print()
|
||||||
for(auto& i:elems)
|
for(auto& i:elems)
|
||||||
{
|
{
|
||||||
std::cout<<i.first<<':';
|
std::cout<<i.first<<':';
|
||||||
nasal_ref tmp=i.second;
|
i.second.print();
|
||||||
switch(tmp.type)
|
|
||||||
{
|
|
||||||
case vm_none: std::cout<<"undefined"; break;
|
|
||||||
case vm_nil: std::cout<<"nil"; break;
|
|
||||||
case vm_num: std::cout<<tmp.num(); break;
|
|
||||||
case vm_str: std::cout<<*tmp.str(); break;
|
|
||||||
case vm_vec: tmp.vec()->print(); break;
|
|
||||||
case vm_hash: tmp.hash()->print(); break;
|
|
||||||
case vm_func: std::cout<<"func(..){..}";break;
|
|
||||||
case vm_obj: std::cout<<"<object>"; break;
|
|
||||||
}
|
|
||||||
std::cout<<",}"[(++iter)==elems.size()];
|
std::cout<<",}"[(++iter)==elems.size()];
|
||||||
}
|
}
|
||||||
--depth;
|
--depth;
|
||||||
|
@ -307,6 +287,20 @@ std::string nasal_ref::to_string()
|
||||||
return std::to_string(num());
|
return std::to_string(num());
|
||||||
return "";
|
return "";
|
||||||
}
|
}
|
||||||
|
void nasal_ref::print()
|
||||||
|
{
|
||||||
|
switch(type)
|
||||||
|
{
|
||||||
|
case vm_none: std::cout<<"undefined"; break;
|
||||||
|
case vm_nil: std::cout<<"nil"; break;
|
||||||
|
case vm_num: std::cout<<value.num; break;
|
||||||
|
case vm_str: std::cout<<*(this->str());break;
|
||||||
|
case vm_vec: this->vec()->print(); break;
|
||||||
|
case vm_hash: this->hash()->print(); break;
|
||||||
|
case vm_func: std::cout<<"func(..){..}";break;
|
||||||
|
case vm_obj: std::cout<<"<object>"; break;
|
||||||
|
}
|
||||||
|
}
|
||||||
inline uint32_t nasal_ref::ret (){return value.ret; }
|
inline uint32_t nasal_ref::ret (){return value.ret; }
|
||||||
inline int64_t& nasal_ref::cnt (){return value.cnt; }
|
inline int64_t& nasal_ref::cnt (){return value.cnt; }
|
||||||
inline double& nasal_ref::num (){return value.num; }
|
inline double& nasal_ref::num (){return value.num; }
|
||||||
|
|
Loading…
Reference in New Issue