✨ using c++ cast (wip)
This commit is contained in:
parent
c157d8a9b1
commit
36a2aa67ef
|
@ -42,9 +42,10 @@ const auto ghost_for_test = "ghost_for_test";
|
||||||
|
|
||||||
void ghost_for_test_destructor(void* ptr) {
|
void ghost_for_test_destructor(void* ptr) {
|
||||||
std::cout << "ghost_for_test::destructor (0x";
|
std::cout << "ghost_for_test::destructor (0x";
|
||||||
std::cout << std::hex << (u64)ptr << std::dec << ") {\n";
|
std::cout << std::hex << reinterpret_cast<u64>(ptr) << std::dec << ") {\n";
|
||||||
delete (u32*)ptr;
|
delete static_cast<u32*>(ptr);
|
||||||
std::cout << " delete 0x" << std::hex << (u64)ptr << std::dec << ";\n";
|
std::cout << " delete 0x" << std::hex;
|
||||||
|
std::cout << reinterpret_cast<u64>(ptr) << std::dec << ";\n";
|
||||||
std::cout << "}\n";
|
std::cout << "}\n";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -3,23 +3,35 @@
|
||||||
namespace nasal {
|
namespace nasal {
|
||||||
|
|
||||||
var builtin_u32xor(var* local, gc& ngc) {
|
var builtin_u32xor(var* local, gc& ngc) {
|
||||||
return var::num((f64)(u32(local[1].num())^u32(local[2].num())));
|
return var::num((f64)(
|
||||||
|
static_cast<u32>(local[1].num()) ^
|
||||||
|
static_cast<u32>(local[2].num())
|
||||||
|
));
|
||||||
}
|
}
|
||||||
|
|
||||||
var builtin_u32and(var* local, gc& ngc) {
|
var builtin_u32and(var* local, gc& ngc) {
|
||||||
return var::num((f64)(u32(local[1].num())&u32(local[2].num())));
|
return var::num((f64)(
|
||||||
|
static_cast<u32>(local[1].num()) &
|
||||||
|
static_cast<u32>(local[2].num())
|
||||||
|
));
|
||||||
}
|
}
|
||||||
|
|
||||||
var builtin_u32or(var* local, gc& ngc) {
|
var builtin_u32or(var* local, gc& ngc) {
|
||||||
return var::num((f64)(u32(local[1].num())|u32(local[2].num())));
|
return var::num((f64)(
|
||||||
|
static_cast<u32>(local[1].num()) |
|
||||||
|
static_cast<u32>(local[2].num())
|
||||||
|
));
|
||||||
}
|
}
|
||||||
|
|
||||||
var builtin_u32nand(var* local, gc& ngc) {
|
var builtin_u32nand(var* local, gc& ngc) {
|
||||||
return var::num((f64)(u32)(~(u32(local[1].num())&u32(local[2].num()))));
|
return var::num(static_cast<f64>(~(
|
||||||
|
static_cast<u32>(local[1].num()) &
|
||||||
|
static_cast<u32>(local[2].num())
|
||||||
|
)));
|
||||||
}
|
}
|
||||||
|
|
||||||
var builtin_u32not(var* local, gc& ngc) {
|
var builtin_u32not(var* local, gc& ngc) {
|
||||||
return var::num((f64)(u32)(~u32(local[1].num())));
|
return var::num(static_cast<f64>(~static_cast<u32>(local[1].num())));
|
||||||
}
|
}
|
||||||
|
|
||||||
var builtin_fld(var* local, gc& ngc) {
|
var builtin_fld(var* local, gc& ngc) {
|
||||||
|
@ -79,7 +91,7 @@ var builtin_sfld(var* local, gc& ngc) {
|
||||||
if (res&(1<<(len-1))) {
|
if (res&(1<<(len-1))) {
|
||||||
res |= ~((1<<len)-1);
|
res |= ~((1<<len)-1);
|
||||||
}
|
}
|
||||||
return var::num((f64)((i32)res));
|
return var::num(static_cast<f64>(static_cast<i32>(res)));
|
||||||
}
|
}
|
||||||
|
|
||||||
var builtin_setfld(var* local, gc& ngc) {
|
var builtin_setfld(var* local, gc& ngc) {
|
||||||
|
|
|
@ -52,7 +52,7 @@ std::ostream& help(std::ostream& out) {
|
||||||
<< " -t, --time | show execute time.\n"
|
<< " -t, --time | show execute time.\n"
|
||||||
<< " -d, --detail | get detail info.\n"
|
<< " -d, --detail | get detail info.\n"
|
||||||
<< " -dbg, --debug | debug mode.\n"
|
<< " -dbg, --debug | debug mode.\n"
|
||||||
<< " --prof | show profiling result, available under debug mode.\n"
|
<< " --prof | show profiling result, available in debug mode.\n"
|
||||||
<< " --prof-all | show profiling result of all files,"
|
<< " --prof-all | show profiling result of all files,"
|
||||||
<< "available under debug mode.\n"
|
<< "available under debug mode.\n"
|
||||||
<< "file:\n"
|
<< "file:\n"
|
||||||
|
|
|
@ -51,7 +51,7 @@ var builtin_setsize(var* local, gc& ngc) {
|
||||||
if (size.type!=vm_num || size.num()<0) {
|
if (size.type!=vm_num || size.num()<0) {
|
||||||
return nil;
|
return nil;
|
||||||
}
|
}
|
||||||
vec.vec().elems.resize((i64)size.num(), nil);
|
vec.vec().elems.resize(static_cast<i64>(size.num()), nil);
|
||||||
return nil;
|
return nil;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -144,7 +144,7 @@ var builtin_int(var* local, gc& ngc) {
|
||||||
if (val.type!=vm_num && val.type!=vm_str) {
|
if (val.type!=vm_num && val.type!=vm_str) {
|
||||||
return nil;
|
return nil;
|
||||||
}
|
}
|
||||||
return var::num(f64((i32)val.tonum()));
|
return var::num(static_cast<f64>(static_cast<i32>(val.tonum())));
|
||||||
}
|
}
|
||||||
|
|
||||||
var builtin_floor(var* local, gc& ngc) {
|
var builtin_floor(var* local, gc& ngc) {
|
||||||
|
@ -333,7 +333,7 @@ var builtin_right(var* local, gc& ngc) {
|
||||||
if (len.type!=vm_num) {
|
if (len.type!=vm_num) {
|
||||||
return nas_err("right", "\"length\" must be number");
|
return nas_err("right", "\"length\" must be number");
|
||||||
}
|
}
|
||||||
i32 length = (i32)len.num();
|
i32 length = static_cast<i32>(len.num());
|
||||||
i32 srclen = str.str().length();
|
i32 srclen = str.str().length();
|
||||||
if (length>srclen) {
|
if (length>srclen) {
|
||||||
length = srclen;
|
length = srclen;
|
||||||
|
|
|
@ -154,7 +154,8 @@ void nas_co::clear() {
|
||||||
}
|
}
|
||||||
|
|
||||||
std::ostream& operator<<(std::ostream& out, const nas_co& co) {
|
std::ostream& operator<<(std::ostream& out, const nas_co& co) {
|
||||||
out << "<coroutine at 0x" << std::hex << u64(&co) << std::dec << ">";
|
out << "<coroutine at 0x" << std::hex;
|
||||||
|
out << reinterpret_cast<u64>(&co) << std::dec << ">";
|
||||||
return out;
|
return out;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -130,11 +130,11 @@ void vm::stackinfo(const u32 limit = 10) {
|
||||||
var* bottom = ctx.stack;
|
var* bottom = ctx.stack;
|
||||||
std::clog << "stack (0x" << std::hex << (u64)bottom << std::dec;
|
std::clog << "stack (0x" << std::hex << (u64)bottom << std::dec;
|
||||||
std::clog << ", limit " << limit << ", total ";
|
std::clog << ", limit " << limit << ", total ";
|
||||||
std::clog << (top<bottom? 0:(i64)(top-bottom+1)) << ")\n";
|
std::clog << (top<bottom? 0:static_cast<i64>(top-bottom+1)) << ")\n";
|
||||||
for(u32 i = 0; i<limit && top>=bottom; ++i, --top) {
|
for(u32 i = 0; i<limit && top>=bottom; ++i, --top) {
|
||||||
std::clog << " 0x" << std::hex
|
std::clog << " 0x" << std::hex
|
||||||
<< std::setw(6) << std::setfill('0')
|
<< std::setw(6) << std::setfill('0')
|
||||||
<< (u64)(top-bottom) << std::dec
|
<< static_cast<u64>(top-bottom) << std::dec
|
||||||
<< " ";
|
<< " ";
|
||||||
valinfo(top[0]);
|
valinfo(top[0]);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue