get rid of some more pointers in API
parent
3e8db1042a
commit
f19fd57549
|
@ -86,17 +86,11 @@ struct LIBCUBESCRIPT_EXPORT alias_local {
|
||||||
/** @brief Local handlers are not move assignable */
|
/** @brief Local handlers are not move assignable */
|
||||||
alias_local &operator=(alias_local &&v) = delete;
|
alias_local &operator=(alias_local &&v) = delete;
|
||||||
|
|
||||||
/** @brief Get the contained alias
|
/** @brief Get the contained alias */
|
||||||
*
|
alias &get_alias() noexcept { return *p_alias; }
|
||||||
* @return the alias or `nullptr` if none set
|
|
||||||
*/
|
|
||||||
alias *get_alias() noexcept { return p_alias; }
|
|
||||||
|
|
||||||
/** @brief Get the contained alias
|
/** @brief Get the contained alias */
|
||||||
*
|
alias const &get_alias() const noexcept { return *p_alias; }
|
||||||
* @return the alias or `nullptr` if none set
|
|
||||||
*/
|
|
||||||
alias const *get_alias() const noexcept { return p_alias; }
|
|
||||||
|
|
||||||
/** @brief Set the contained alias's value
|
/** @brief Set the contained alias's value
|
||||||
*
|
*
|
||||||
|
|
|
@ -339,7 +339,7 @@ struct LIBCUBESCRIPT_EXPORT any_value {
|
||||||
* performed, so after main thread destruction this may become
|
* performed, so after main thread destruction this may become
|
||||||
* dangling (and unsafe to use).
|
* dangling (and unsafe to use).
|
||||||
*/
|
*/
|
||||||
void set_ident(ident *val);
|
void set_ident(ident &val);
|
||||||
|
|
||||||
/** @brief Get the value as a string reference.
|
/** @brief Get the value as a string reference.
|
||||||
*
|
*
|
||||||
|
|
|
@ -88,7 +88,7 @@ void var_changed(thread_state &ts, ident *id) {
|
||||||
}
|
}
|
||||||
auto *cimp = static_cast<command_impl *>(cid);
|
auto *cimp = static_cast<command_impl *>(cid);
|
||||||
any_value val{};
|
any_value val{};
|
||||||
val.set_ident(id);
|
val.set_ident(*id);
|
||||||
cimp->call(ts, span_type<any_value>{&val, 1}, val);
|
cimp->call(ts, span_type<any_value>{&val, 1}, val);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -165,10 +165,10 @@ void any_value::set_code(bcode_ref const &val) {
|
||||||
csv_get<bcode *>(&p_stor) = p;
|
csv_get<bcode *>(&p_stor) = p;
|
||||||
}
|
}
|
||||||
|
|
||||||
void any_value::set_ident(ident *val) {
|
void any_value::set_ident(ident &val) {
|
||||||
csv_cleanup(p_type, &p_stor);
|
csv_cleanup(p_type, &p_stor);
|
||||||
p_type = value_type::IDENT;
|
p_type = value_type::IDENT;
|
||||||
csv_get<ident *>(&p_stor) = val;
|
csv_get<ident *>(&p_stor) = &val;
|
||||||
}
|
}
|
||||||
|
|
||||||
void any_value::force_none() {
|
void any_value::force_none() {
|
||||||
|
@ -270,7 +270,7 @@ ident &any_value::force_ident(state &cs) {
|
||||||
auto &id = state_p{cs}.ts().istate->new_ident(
|
auto &id = state_p{cs}.ts().istate->new_ident(
|
||||||
cs, get_string(cs), IDENT_FLAG_UNKNOWN
|
cs, get_string(cs), IDENT_FLAG_UNKNOWN
|
||||||
);
|
);
|
||||||
set_ident(&id);
|
set_ident(id);
|
||||||
return id;
|
return id;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -154,7 +154,7 @@ void exec_command(
|
||||||
if (rep) {
|
if (rep) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
args[i].set_ident(ts.istate->id_dummy);
|
args[i].set_ident(*ts.istate->id_dummy);
|
||||||
fakeargs++;
|
fakeargs++;
|
||||||
} else {
|
} else {
|
||||||
args[i].force_ident(*ts.pstate);
|
args[i].force_ident(*ts.pstate);
|
||||||
|
@ -162,7 +162,7 @@ void exec_command(
|
||||||
break;
|
break;
|
||||||
case '$':
|
case '$':
|
||||||
i += 1;
|
i += 1;
|
||||||
args[i].set_ident(self);
|
args[i].set_ident(*self);
|
||||||
break;
|
break;
|
||||||
case 'N':
|
case 'N':
|
||||||
i += 1;
|
i += 1;
|
||||||
|
@ -734,7 +734,7 @@ std::uint32_t *vm_exec(
|
||||||
ts.get_astack(a).push(ts.idstack.emplace_back());
|
ts.get_astack(a).push(ts.idstack.emplace_back());
|
||||||
ts.callstack->usedargs[a->get_index()] = true;
|
ts.callstack->usedargs[a->get_index()] = true;
|
||||||
}
|
}
|
||||||
args.emplace_back().set_ident(a);
|
args.emplace_back().set_ident(*a);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
case BC_INST_IDENT_U: {
|
case BC_INST_IDENT_U: {
|
||||||
|
@ -750,7 +750,7 @@ std::uint32_t *vm_exec(
|
||||||
ts.get_astack(a).push(ts.idstack.emplace_back());
|
ts.get_astack(a).push(ts.idstack.emplace_back());
|
||||||
ts.callstack->usedargs[id->get_index()] = true;
|
ts.callstack->usedargs[id->get_index()] = true;
|
||||||
}
|
}
|
||||||
arg.set_ident(id);
|
arg.set_ident(*id);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -157,7 +157,7 @@ LIBCUBESCRIPT_EXPORT void std_init_base(state &gcs) {
|
||||||
|
|
||||||
new_cmd_quiet(gcs, "pushif", "rte", [](auto &cs, auto args, auto &res) {
|
new_cmd_quiet(gcs, "pushif", "rte", [](auto &cs, auto args, auto &res) {
|
||||||
alias_local st{cs, args[0]};
|
alias_local st{cs, args[0]};
|
||||||
if (st.get_alias()->is_arg()) {
|
if (st.get_alias().is_arg()) {
|
||||||
throw error{cs, "cannot push an argument"};
|
throw error{cs, "cannot push an argument"};
|
||||||
}
|
}
|
||||||
if (args[1].get_bool()) {
|
if (args[1].get_bool()) {
|
||||||
|
@ -317,7 +317,7 @@ end:
|
||||||
|
|
||||||
new_cmd_quiet(gcs, "push", "rte", [](auto &cs, auto args, auto &res) {
|
new_cmd_quiet(gcs, "push", "rte", [](auto &cs, auto args, auto &res) {
|
||||||
alias_local st{cs, args[0]};
|
alias_local st{cs, args[0]};
|
||||||
if (st.get_alias()->is_arg()) {
|
if (st.get_alias().is_arg()) {
|
||||||
throw error{cs, "cannot push an argument"};
|
throw error{cs, "cannot push an argument"};
|
||||||
}
|
}
|
||||||
st.set(args[1]);
|
st.set(args[1]);
|
||||||
|
|
Loading…
Reference in New Issue