add more utility methods for string_ref
parent
e531ab3434
commit
f93042d7b9
|
@ -63,6 +63,14 @@ struct LIBCUBESCRIPT_EXPORT string_ref {
|
||||||
return std::string_view{*this}.data();
|
return std::string_view{*this}.data();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
std::string_view view() const {
|
||||||
|
return std::string_view{*this};
|
||||||
|
}
|
||||||
|
|
||||||
|
bool empty() const {
|
||||||
|
return (size() == 0);
|
||||||
|
}
|
||||||
|
|
||||||
bool operator==(string_ref const &s) const;
|
bool operator==(string_ref const &s) const;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
|
@ -159,8 +159,8 @@ state::state(alloc_func func, void *data) {
|
||||||
) {
|
) {
|
||||||
auto *sv = args[0].get_ident()->get_svar();
|
auto *sv = args[0].get_ident()->get_svar();
|
||||||
if (args[2].get_integer() <= 1) {
|
if (args[2].get_integer() <= 1) {
|
||||||
auto val = std::string_view{sv->get_value()};
|
auto val = sv->get_value();
|
||||||
if (val.find('"') == val.npos) {
|
if (val.view().find('"') == std::string_view::npos) {
|
||||||
std::printf("%s = \"%s\"\n", sv->get_name().data(), val.data());
|
std::printf("%s = \"%s\"\n", sv->get_name().data(), val.data());
|
||||||
} else {
|
} else {
|
||||||
std::printf("%s = [%s]\n", sv->get_name().data(), val.data());
|
std::printf("%s = [%s]\n", sv->get_name().data(), val.data());
|
||||||
|
|
|
@ -128,7 +128,7 @@ void exec_command(
|
||||||
args[i].set_none();
|
args[i].set_none();
|
||||||
fakeargs++;
|
fakeargs++;
|
||||||
} else if (args[i].get_type() == value_type::STRING) {
|
} else if (args[i].get_type() == value_type::STRING) {
|
||||||
auto str = std::string_view{args[i].get_string()};
|
auto str = args[i].get_string();
|
||||||
if (str.empty()) {
|
if (str.empty()) {
|
||||||
args[i].set_integer(0);
|
args[i].set_integer(0);
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -59,21 +59,21 @@ void init_lib_string(state &cs) {
|
||||||
});
|
});
|
||||||
|
|
||||||
cs.new_command("strlower", "s", [](auto &ccs, auto args, auto &res) {
|
cs.new_command("strlower", "s", [](auto &ccs, auto args, auto &res) {
|
||||||
auto inps = std::string_view{args[0].get_string()};
|
auto inps = args[0].get_string();
|
||||||
auto *ics = state_p{ccs}.ts().istate;
|
auto *ics = state_p{ccs}.ts().istate;
|
||||||
auto *buf = ics->strman->alloc_buf(inps.size());
|
auto *buf = ics->strman->alloc_buf(inps.size());
|
||||||
for (std::size_t i = 0; i < inps.size(); ++i) {
|
for (std::size_t i = 0; i < inps.size(); ++i) {
|
||||||
buf[i] = char(tolower(inps[i]));
|
buf[i] = char(tolower(inps.data()[i]));
|
||||||
}
|
}
|
||||||
res.set_string(ics->strman->steal(buf));
|
res.set_string(ics->strman->steal(buf));
|
||||||
});
|
});
|
||||||
|
|
||||||
cs.new_command("strupper", "s", [](auto &ccs, auto args, auto &res) {
|
cs.new_command("strupper", "s", [](auto &ccs, auto args, auto &res) {
|
||||||
auto inps = std::string_view{args[0].get_string()};
|
auto inps = args[0].get_string();
|
||||||
auto *ics = state_p{ccs}.ts().istate;
|
auto *ics = state_p{ccs}.ts().istate;
|
||||||
auto *buf = ics->strman->alloc_buf(inps.size());
|
auto *buf = ics->strman->alloc_buf(inps.size());
|
||||||
for (std::size_t i = 0; i < inps.size(); ++i) {
|
for (std::size_t i = 0; i < inps.size(); ++i) {
|
||||||
buf[i] = char(toupper(inps[i]));
|
buf[i] = char(toupper(inps.data()[i]));
|
||||||
}
|
}
|
||||||
res.set_string(ics->strman->steal(buf));
|
res.set_string(ics->strman->steal(buf));
|
||||||
});
|
});
|
||||||
|
|
Loading…
Reference in New Issue