using c++ cast (wip)

This commit is contained in:
ValKmjolnir 2023-09-14 00:34:31 +08:00
parent c157d8a9b1
commit 36a2aa67ef
6 changed files with 30 additions and 16 deletions

View File

@ -42,9 +42,10 @@ const auto ghost_for_test = "ghost_for_test";
void ghost_for_test_destructor(void* ptr) {
std::cout << "ghost_for_test::destructor (0x";
std::cout << std::hex << (u64)ptr << std::dec << ") {\n";
delete (u32*)ptr;
std::cout << " delete 0x" << std::hex << (u64)ptr << std::dec << ";\n";
std::cout << std::hex << reinterpret_cast<u64>(ptr) << std::dec << ") {\n";
delete static_cast<u32*>(ptr);
std::cout << " delete 0x" << std::hex;
std::cout << reinterpret_cast<u64>(ptr) << std::dec << ";\n";
std::cout << "}\n";
}

View File

@ -3,23 +3,35 @@
namespace nasal {
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) {
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) {
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) {
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) {
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) {
@ -79,7 +91,7 @@ var builtin_sfld(var* local, gc& ngc) {
if (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) {

View File

@ -52,7 +52,7 @@ std::ostream& help(std::ostream& out) {
<< " -t, --time | show execute time.\n"
<< " -d, --detail | get detail info.\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,"
<< "available under debug mode.\n"
<< "file:\n"

View File

@ -51,7 +51,7 @@ var builtin_setsize(var* local, gc& ngc) {
if (size.type!=vm_num || size.num()<0) {
return nil;
}
vec.vec().elems.resize((i64)size.num(), nil);
vec.vec().elems.resize(static_cast<i64>(size.num()), nil);
return nil;
}
@ -144,7 +144,7 @@ var builtin_int(var* local, gc& ngc) {
if (val.type!=vm_num && val.type!=vm_str) {
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) {
@ -333,7 +333,7 @@ var builtin_right(var* local, gc& ngc) {
if (len.type!=vm_num) {
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();
if (length>srclen) {
length = srclen;

View File

@ -154,7 +154,8 @@ void nas_co::clear() {
}
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;
}

View File

@ -130,11 +130,11 @@ void vm::stackinfo(const u32 limit = 10) {
var* bottom = ctx.stack;
std::clog << "stack (0x" << std::hex << (u64)bottom << std::dec;
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) {
std::clog << " 0x" << std::hex
<< std::setw(6) << std::setfill('0')
<< (u64)(top-bottom) << std::dec
<< static_cast<u64>(top-bottom) << std::dec
<< " ";
valinfo(top[0]);
}