make intstr/floatstr internal to cs_value
parent
b534a6d9af
commit
64d9c0e749
|
@ -4,6 +4,18 @@
|
||||||
|
|
||||||
namespace cscript {
|
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>
|
template<typename T>
|
||||||
struct stor_priv_t {
|
struct stor_priv_t {
|
||||||
cs_shared_state *state;
|
cs_shared_state *state;
|
||||||
|
|
34
src/cs_vm.cc
34
src/cs_vm.cc
|
@ -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());
|
arg.set_str(static_cast<cs_svar *>(id)->get_value());
|
||||||
continue;
|
continue;
|
||||||
case CsIdIvar:
|
case CsIdIvar:
|
||||||
arg.set_str(
|
arg.set_int(static_cast<cs_ivar *>(id)->get_value());
|
||||||
intstr(static_cast<cs_ivar *>(id)->get_value())
|
arg.force_str();
|
||||||
);
|
|
||||||
continue;
|
continue;
|
||||||
case CsIdFvar:
|
case CsIdFvar:
|
||||||
arg.set_str(
|
arg.set_float(static_cast<cs_fvar *>(id)->get_value());
|
||||||
floatstr(static_cast<cs_fvar *>(id)->get_value())
|
arg.force_str();
|
||||||
);
|
|
||||||
continue;
|
continue;
|
||||||
case CsIdUnknown:
|
case CsIdUnknown:
|
||||||
arg.set_str("");
|
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());
|
arg.set_str(static_cast<cs_svar *>(id)->get_value());
|
||||||
continue;
|
continue;
|
||||||
case CsIdIvar:
|
case CsIdIvar:
|
||||||
arg.set_str(
|
arg.set_int(static_cast<cs_ivar *>(id)->get_value());
|
||||||
intstr(static_cast<cs_ivar *>(id)->get_value())
|
arg.force_str();
|
||||||
);
|
|
||||||
continue;
|
continue;
|
||||||
case CsIdFvar:
|
case CsIdFvar:
|
||||||
arg.set_str(
|
arg.set_float(static_cast<cs_fvar *>(id)->get_value());
|
||||||
floatstr(static_cast<cs_fvar *>(id)->get_value())
|
arg.force_str();
|
||||||
);
|
|
||||||
continue;
|
continue;
|
||||||
case CsIdUnknown:
|
case CsIdUnknown:
|
||||||
arg.set_str("");
|
arg.set_str("");
|
||||||
|
@ -1285,9 +1281,10 @@ static uint32_t *runcode(cs_state &cs, uint32_t *code, cs_value &result) {
|
||||||
)->get_value());
|
)->get_value());
|
||||||
continue;
|
continue;
|
||||||
case CS_CODE_IVAR | CS_RET_STRING:
|
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]
|
cs.p_state->identmap[op >> 8]
|
||||||
)->get_value()));
|
)->get_value());
|
||||||
|
args[numargs++].force_str();
|
||||||
continue;
|
continue;
|
||||||
case CS_CODE_IVAR | CS_RET_FLOAT:
|
case CS_CODE_IVAR | CS_RET_FLOAT:
|
||||||
args[numargs++].set_float(cs_float(static_cast<cs_ivar *>(
|
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());
|
)->get_value());
|
||||||
continue;
|
continue;
|
||||||
case CS_CODE_FVAR | CS_RET_STRING:
|
case CS_CODE_FVAR | CS_RET_STRING:
|
||||||
args[numargs++].set_str(floatstr(
|
args[numargs].set_int(static_cast<cs_fvar *>(
|
||||||
static_cast<cs_fvar *>(
|
cs.p_state->identmap[op >> 8]
|
||||||
cs.p_state->identmap[op >> 8]
|
)->get_value());
|
||||||
)->get_value()
|
args[numargs++].force_str();
|
||||||
));
|
|
||||||
continue;
|
continue;
|
||||||
case CS_CODE_FVAR | CS_RET_INT:
|
case CS_CODE_FVAR | CS_RET_INT:
|
||||||
args[numargs++].set_int(int(static_cast<cs_fvar *>(
|
args[numargs++].set_int(int(static_cast<cs_fvar *>(
|
||||||
|
|
|
@ -314,9 +314,6 @@ struct cs_gen_state {
|
||||||
void skip_comments();
|
void skip_comments();
|
||||||
};
|
};
|
||||||
|
|
||||||
cs_string intstr(cs_int v);
|
|
||||||
cs_string floatstr(cs_float v);
|
|
||||||
|
|
||||||
bool cs_check_num(ostd::string_range s);
|
bool cs_check_num(ostd::string_range s);
|
||||||
|
|
||||||
static inline void bcode_incr(uint32_t *bc) {
|
static inline void bcode_incr(uint32_t *bc) {
|
||||||
|
|
|
@ -3,18 +3,6 @@
|
||||||
|
|
||||||
namespace cscript {
|
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) {
|
bool cs_check_num(ostd::string_range s) {
|
||||||
if (isdigit(s[0])) {
|
if (isdigit(s[0])) {
|
||||||
return true;
|
return true;
|
||||||
|
@ -879,9 +867,12 @@ cs_float cs_clamp_fvar(cs_state &cs, cs_fvar *fv, cs_float v) {
|
||||||
} else {
|
} else {
|
||||||
return v;
|
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(
|
throw cs_error(
|
||||||
cs, "valid range for '%s' is %s..%s", floatstr(fv->get_val_min()),
|
cs, "valid range for '%s' is %s..%s", fv->get_name(),
|
||||||
floatstr(fv->get_val_max())
|
vmin.force_str(), vmax.force_str()
|
||||||
);
|
);
|
||||||
return v;
|
return v;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue