hide value getter from public alias interface
since this will become thread-specific, this API makes no sensemaster
parent
6bb3dc2a57
commit
e2b65000d5
|
@ -300,8 +300,6 @@ protected:
|
||||||
};
|
};
|
||||||
|
|
||||||
struct LIBCUBESCRIPT_EXPORT alias: ident {
|
struct LIBCUBESCRIPT_EXPORT alias: ident {
|
||||||
any_value get_value() const;
|
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
alias() = default;
|
alias() = default;
|
||||||
};
|
};
|
||||||
|
|
|
@ -176,7 +176,7 @@ bcode *alias_impl::compile_code(thread_state &ts) {
|
||||||
if (!p_acode) {
|
if (!p_acode) {
|
||||||
codegen_state gs(ts);
|
codegen_state gs(ts);
|
||||||
gs.code.reserve(64);
|
gs.code.reserve(64);
|
||||||
gs.gen_main(get_value().get_str());
|
gs.gen_main(p_astack->val_s.get_str());
|
||||||
/* i wish i could steal the memory somehow */
|
/* i wish i could steal the memory somehow */
|
||||||
uint32_t *code = bcode_alloc(ts.istate, gs.code.size());
|
uint32_t *code = bcode_alloc(ts.istate, gs.code.size());
|
||||||
memcpy(code, gs.code.data(), gs.code.size() * sizeof(uint32_t));
|
memcpy(code, gs.code.data(), gs.code.size() * sizeof(uint32_t));
|
||||||
|
@ -397,10 +397,6 @@ LIBCUBESCRIPT_EXPORT void string_var::set_value(string_ref val) {
|
||||||
static_cast<svar_impl *>(this)->p_storage = val;
|
static_cast<svar_impl *>(this)->p_storage = val;
|
||||||
}
|
}
|
||||||
|
|
||||||
LIBCUBESCRIPT_EXPORT any_value alias::get_value() const {
|
|
||||||
return static_cast<alias_impl const *>(this)->p_astack->val_s;
|
|
||||||
}
|
|
||||||
|
|
||||||
LIBCUBESCRIPT_EXPORT std::string_view command::get_args() const {
|
LIBCUBESCRIPT_EXPORT std::string_view command::get_args() const {
|
||||||
return static_cast<command_impl const *>(this)->p_cargs;
|
return static_cast<command_impl const *>(this)->p_cargs;
|
||||||
}
|
}
|
||||||
|
|
|
@ -196,8 +196,9 @@ LIBCUBESCRIPT_EXPORT void state::destroy() {
|
||||||
ident *i = p.second;
|
ident *i = p.second;
|
||||||
alias *a = i->get_alias();
|
alias *a = i->get_alias();
|
||||||
if (a) {
|
if (a) {
|
||||||
a->get_value().force_none();
|
auto *aimp = static_cast<alias_impl *>(a);
|
||||||
static_cast<alias_impl *>(a)->clean_code();
|
aimp->p_astack->val_s.force_none();
|
||||||
|
aimp->clean_code();
|
||||||
}
|
}
|
||||||
sp->destroy(i->p_impl);
|
sp->destroy(i->p_impl);
|
||||||
}
|
}
|
||||||
|
@ -467,7 +468,7 @@ LIBCUBESCRIPT_EXPORT void state::clear_override(ident &id) {
|
||||||
case ident_type::ALIAS: {
|
case ident_type::ALIAS: {
|
||||||
alias_impl &a = static_cast<alias_impl &>(id);
|
alias_impl &a = static_cast<alias_impl &>(id);
|
||||||
a.clean_code();
|
a.clean_code();
|
||||||
a.get_value().set_str("");
|
a.p_astack->val_s.set_str("");
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case ident_type::IVAR: {
|
case ident_type::IVAR: {
|
||||||
|
@ -656,7 +657,7 @@ state::get_alias_val(std::string_view name) {
|
||||||
if ((a->get_flags() & IDENT_FLAG_ARG) && !ident_is_used_arg(a, *p_tstate)) {
|
if ((a->get_flags() & IDENT_FLAG_ARG) && !ident_is_used_arg(a, *p_tstate)) {
|
||||||
return std::nullopt;
|
return std::nullopt;
|
||||||
}
|
}
|
||||||
return a->get_value().get_str();
|
return static_cast<alias_impl *>(a)->p_astack->val_s.get_str();
|
||||||
}
|
}
|
||||||
|
|
||||||
integer_type clamp_var(state &cs, integer_var *iv, integer_type v) {
|
integer_type clamp_var(state &cs, integer_var *iv, integer_type v) {
|
||||||
|
@ -881,7 +882,10 @@ LIBCUBESCRIPT_EXPORT void state::run(
|
||||||
) {
|
) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
if (a->get_value().get_type() == value_type::NONE) {
|
if (
|
||||||
|
static_cast<alias_impl *>(a)->p_astack->val_s.get_type() ==
|
||||||
|
value_type::NONE
|
||||||
|
) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
exec_alias(
|
exec_alias(
|
||||||
|
|
36
src/cs_vm.cc
36
src/cs_vm.cc
|
@ -770,7 +770,7 @@ std::uint32_t *vm_exec(
|
||||||
any_value &arg = args.back();
|
any_value &arg = args.back();
|
||||||
switch (get_lookupu_type(ts, arg, id, op)) {
|
switch (get_lookupu_type(ts, arg, id, op)) {
|
||||||
case ID_ALIAS:
|
case ID_ALIAS:
|
||||||
arg = static_cast<alias *>(id)->get_value();
|
arg = static_cast<alias_impl *>(id)->p_astack->val_s;
|
||||||
arg.force_str();
|
arg.force_str();
|
||||||
continue;
|
continue;
|
||||||
case ID_SVAR:
|
case ID_SVAR:
|
||||||
|
@ -798,7 +798,7 @@ std::uint32_t *vm_exec(
|
||||||
args.emplace_back(cs).set_str("");
|
args.emplace_back(cs).set_str("");
|
||||||
} else {
|
} else {
|
||||||
auto &v = args.emplace_back(cs);
|
auto &v = args.emplace_back(cs);
|
||||||
v = a->get_value();
|
v = static_cast<alias_impl *>(a)->p_astack->val_s;
|
||||||
v.force_str();
|
v.force_str();
|
||||||
}
|
}
|
||||||
continue;
|
continue;
|
||||||
|
@ -809,9 +809,9 @@ std::uint32_t *vm_exec(
|
||||||
any_value &arg = args.back();
|
any_value &arg = args.back();
|
||||||
switch (get_lookupu_type(ts, arg, id, op)) {
|
switch (get_lookupu_type(ts, arg, id, op)) {
|
||||||
case ID_ALIAS:
|
case ID_ALIAS:
|
||||||
arg.set_int(
|
arg.set_int(static_cast<alias_impl *>(
|
||||||
static_cast<alias *>(id)->get_value().get_int()
|
id
|
||||||
);
|
)->p_astack->val_s.get_int());
|
||||||
continue;
|
continue;
|
||||||
case ID_SVAR:
|
case ID_SVAR:
|
||||||
arg.set_int(parse_int(
|
arg.set_int(parse_int(
|
||||||
|
@ -838,7 +838,9 @@ std::uint32_t *vm_exec(
|
||||||
if (!a) {
|
if (!a) {
|
||||||
args.emplace_back(cs).set_int(0);
|
args.emplace_back(cs).set_int(0);
|
||||||
} else {
|
} else {
|
||||||
args.emplace_back(cs).set_int(a->get_value().get_int());
|
args.emplace_back(cs).set_int(
|
||||||
|
static_cast<alias_impl *>(a)->p_astack->val_s.get_int()
|
||||||
|
);
|
||||||
}
|
}
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
@ -847,9 +849,9 @@ std::uint32_t *vm_exec(
|
||||||
any_value &arg = args.back();
|
any_value &arg = args.back();
|
||||||
switch (get_lookupu_type(ts, arg, id, op)) {
|
switch (get_lookupu_type(ts, arg, id, op)) {
|
||||||
case ID_ALIAS:
|
case ID_ALIAS:
|
||||||
arg.set_float(
|
arg.set_float(static_cast<alias_impl *>(
|
||||||
static_cast<alias *>(id)->get_value().get_float()
|
id
|
||||||
);
|
)->p_astack->val_s.get_float());
|
||||||
continue;
|
continue;
|
||||||
case ID_SVAR:
|
case ID_SVAR:
|
||||||
arg.set_float(parse_float(
|
arg.set_float(parse_float(
|
||||||
|
@ -878,7 +880,9 @@ std::uint32_t *vm_exec(
|
||||||
if (!a) {
|
if (!a) {
|
||||||
args.emplace_back(cs).set_float(float_type(0));
|
args.emplace_back(cs).set_float(float_type(0));
|
||||||
} else {
|
} else {
|
||||||
args.emplace_back(cs).set_float(a->get_value().get_float());
|
args.emplace_back(cs).set_float(static_cast<alias_impl *>(
|
||||||
|
a
|
||||||
|
)->p_astack->val_s.get_float());
|
||||||
}
|
}
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
@ -887,7 +891,9 @@ std::uint32_t *vm_exec(
|
||||||
any_value &arg = args.back();
|
any_value &arg = args.back();
|
||||||
switch (get_lookupu_type(ts, arg, id, op)) {
|
switch (get_lookupu_type(ts, arg, id, op)) {
|
||||||
case ID_ALIAS:
|
case ID_ALIAS:
|
||||||
static_cast<alias *>(id)->get_value().get_val(arg);
|
static_cast<alias_impl *>(
|
||||||
|
id
|
||||||
|
)->p_astack->val_s.get_val(arg);
|
||||||
continue;
|
continue;
|
||||||
case ID_SVAR:
|
case ID_SVAR:
|
||||||
arg.set_str(static_cast<string_var *>(id)->get_value());
|
arg.set_str(static_cast<string_var *>(id)->get_value());
|
||||||
|
@ -912,7 +918,9 @@ std::uint32_t *vm_exec(
|
||||||
if (!a) {
|
if (!a) {
|
||||||
args.emplace_back(cs).set_none();
|
args.emplace_back(cs).set_none();
|
||||||
} else {
|
} else {
|
||||||
a->get_value().get_val(args.emplace_back(cs));
|
static_cast<alias_impl *>(a)->p_astack->val_s.get_val(
|
||||||
|
args.emplace_back(cs)
|
||||||
|
);
|
||||||
}
|
}
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
@ -1210,7 +1218,9 @@ noid:
|
||||||
force_arg(result, op & BC_INST_RET_MASK);
|
force_arg(result, op & BC_INST_RET_MASK);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
if (a->get_value().get_type() == value_type::NONE) {
|
if (static_cast<alias_impl *>(
|
||||||
|
a
|
||||||
|
)->p_astack->val_s.get_type() == value_type::NONE) {
|
||||||
goto noid;
|
goto noid;
|
||||||
}
|
}
|
||||||
exec_alias(
|
exec_alias(
|
||||||
|
|
Loading…
Reference in New Issue