make intstr/floatstr internal to cs_value

master
Daniel Kolesa 2021-03-19 00:12:47 +01:00
parent b534a6d9af
commit 64d9c0e749
4 changed files with 32 additions and 36 deletions

View File

@ -4,6 +4,18 @@
namespace cscript {
static cs_string intstr(cs_int v) {
auto app = ostd::appender<cs_string>();
cscript::util::format_int(app, v);
return std::move(app.get());
}
static cs_string floatstr(cs_float v) {
auto app = ostd::appender<cs_string>();
cscript::util::format_float(app, v);
return std::move(app.get());
}
template<typename T>
struct stor_priv_t {
cs_shared_state *state;

View File

@ -1021,14 +1021,12 @@ static uint32_t *runcode(cs_state &cs, uint32_t *code, cs_value &result) {
arg.set_str(static_cast<cs_svar *>(id)->get_value());
continue;
case CsIdIvar:
arg.set_str(
intstr(static_cast<cs_ivar *>(id)->get_value())
);
arg.set_int(static_cast<cs_ivar *>(id)->get_value());
arg.force_str();
continue;
case CsIdFvar:
arg.set_str(
floatstr(static_cast<cs_fvar *>(id)->get_value())
);
arg.set_float(static_cast<cs_fvar *>(id)->get_value());
arg.force_str();
continue;
case CsIdUnknown:
arg.set_str("");
@ -1189,14 +1187,12 @@ static uint32_t *runcode(cs_state &cs, uint32_t *code, cs_value &result) {
arg.set_str(static_cast<cs_svar *>(id)->get_value());
continue;
case CsIdIvar:
arg.set_str(
intstr(static_cast<cs_ivar *>(id)->get_value())
);
arg.set_int(static_cast<cs_ivar *>(id)->get_value());
arg.force_str();
continue;
case CsIdFvar:
arg.set_str(
floatstr(static_cast<cs_fvar *>(id)->get_value())
);
arg.set_float(static_cast<cs_fvar *>(id)->get_value());
arg.force_str();
continue;
case CsIdUnknown:
arg.set_str("");
@ -1285,9 +1281,10 @@ static uint32_t *runcode(cs_state &cs, uint32_t *code, cs_value &result) {
)->get_value());
continue;
case CS_CODE_IVAR | CS_RET_STRING:
args[numargs++].set_str(intstr(static_cast<cs_ivar *>(
args[numargs].set_int(static_cast<cs_ivar *>(
cs.p_state->identmap[op >> 8]
)->get_value()));
)->get_value());
args[numargs++].force_str();
continue;
case CS_CODE_IVAR | CS_RET_FLOAT:
args[numargs++].set_float(cs_float(static_cast<cs_ivar *>(
@ -1324,11 +1321,10 @@ static uint32_t *runcode(cs_state &cs, uint32_t *code, cs_value &result) {
)->get_value());
continue;
case CS_CODE_FVAR | CS_RET_STRING:
args[numargs++].set_str(floatstr(
static_cast<cs_fvar *>(
cs.p_state->identmap[op >> 8]
)->get_value()
));
args[numargs].set_int(static_cast<cs_fvar *>(
cs.p_state->identmap[op >> 8]
)->get_value());
args[numargs++].force_str();
continue;
case CS_CODE_FVAR | CS_RET_INT:
args[numargs++].set_int(int(static_cast<cs_fvar *>(

View File

@ -314,9 +314,6 @@ struct cs_gen_state {
void skip_comments();
};
cs_string intstr(cs_int v);
cs_string floatstr(cs_float v);
bool cs_check_num(ostd::string_range s);
static inline void bcode_incr(uint32_t *bc) {

View File

@ -3,18 +3,6 @@
namespace cscript {
cs_string intstr(cs_int v) {
auto app = ostd::appender<cs_string>();
cscript::util::format_int(app, v);
return std::move(app.get());
}
cs_string floatstr(cs_float v) {
auto app = ostd::appender<cs_string>();
cscript::util::format_float(app, v);
return std::move(app.get());
}
bool cs_check_num(ostd::string_range s) {
if (isdigit(s[0])) {
return true;
@ -879,9 +867,12 @@ cs_float cs_clamp_fvar(cs_state &cs, cs_fvar *fv, cs_float v) {
} else {
return v;
}
cs_value vmin{cs}, vmax{cs};
vmin.set_float(fv->get_val_min());
vmax.set_float(fv->get_val_max());
throw cs_error(
cs, "valid range for '%s' is %s..%s", floatstr(fv->get_val_min()),
floatstr(fv->get_val_max())
cs, "valid range for '%s' is %s..%s", fv->get_name(),
vmin.force_str(), vmax.force_str()
);
return v;
}