Tweak String class, and cleanup usages
remove String::clear, add operator=(String&&) add str_to_int(const String&) to replace atoi.
This commit is contained in:
parent
ae590f35d8
commit
ecb3a737a9
|
@ -242,9 +242,9 @@ void edit(const CommandParameters& params, const Context& context)
|
|||
|
||||
if (params.size() > 1)
|
||||
{
|
||||
int line = std::max(0, atoi(params[1].c_str()) - 1);
|
||||
int line = std::max(0, str_to_int(params[1]) - 1);
|
||||
int column = params.size() > 2 ?
|
||||
std::max(0, atoi(params[2].c_str()) - 1) : 0;
|
||||
std::max(0, str_to_int(params[2]) - 1) : 0;
|
||||
|
||||
window.select(window.buffer().iterator_at({line, column}));
|
||||
}
|
||||
|
@ -473,7 +473,7 @@ EnvVarMap params_to_env_var_map(const CommandParameters& params)
|
|||
for (size_t i = 0; i < params.size(); ++i)
|
||||
{
|
||||
param_name[sizeof(param_name) - 2] = '0' + i;
|
||||
vars[param_name] = params[i].c_str();
|
||||
vars[param_name] = params[i];
|
||||
}
|
||||
return vars;
|
||||
}
|
||||
|
@ -567,7 +567,7 @@ void exec_commands_in_file(const CommandParameters& params,
|
|||
while (true)
|
||||
{
|
||||
if (not cat_with_previous)
|
||||
command_line.clear();
|
||||
command_line = String();
|
||||
|
||||
size_t end_pos = pos;
|
||||
|
||||
|
@ -796,7 +796,7 @@ void menu(const CommandParameters& params,
|
|||
oss << "(empty cancels): ";
|
||||
|
||||
String choice = prompt(oss.str(), complete_nothing);
|
||||
int i = atoi(choice.c_str());
|
||||
int i = str_to_int(choice);
|
||||
|
||||
if (i > 0 and i < (count / 2) + 1)
|
||||
CommandManager::instance().execute(parser[(i-1)*2+1], context);
|
||||
|
|
|
@ -57,7 +57,7 @@ void expand_tabulations(Buffer& buffer, Modification& modification)
|
|||
}
|
||||
|
||||
int count = tabstop - (column % tabstop);
|
||||
modification.content.clear();
|
||||
modification.content = String();
|
||||
for (int i = 0; i < count; ++i)
|
||||
modification.content += ' ';
|
||||
}
|
||||
|
|
|
@ -31,7 +31,7 @@ public:
|
|||
bool operator==(const Option& other) const { return m_value == other.m_value; }
|
||||
bool operator!=(const Option& other) const { return m_value != other.m_value; }
|
||||
|
||||
int as_int() const { return atoi(m_value.c_str()); }
|
||||
int as_int() const { return str_to_int(m_value); }
|
||||
String as_string() const { return m_value; }
|
||||
private:
|
||||
String m_value;
|
||||
|
|
|
@ -25,6 +25,11 @@ String int_to_str(int value)
|
|||
return String(buffer + pos);
|
||||
}
|
||||
|
||||
int str_to_int(const String& str)
|
||||
{
|
||||
return atoi(str.c_str());
|
||||
}
|
||||
|
||||
std::vector<String> split(const String& str, Character separator)
|
||||
{
|
||||
auto begin = str.begin();
|
||||
|
|
|
@ -16,7 +16,9 @@ class String
|
|||
public:
|
||||
String() {}
|
||||
String(const char* content) : m_content(content) {}
|
||||
String(const std::string& content) : m_content(content) {}
|
||||
String(std::string content) : m_content(std::move(content)) {}
|
||||
String(const String& string) = default;
|
||||
String(String&& string) = default;
|
||||
explicit String(Character content) : m_content(std::string() + (char)content) {}
|
||||
template<typename Iterator>
|
||||
String(Iterator begin, Iterator end) : m_content(begin, end) {}
|
||||
|
@ -30,6 +32,7 @@ public:
|
|||
bool operator< (const String& other) const { return m_content < other.m_content; }
|
||||
|
||||
String& operator= (const String& other) { m_content = other.m_content; return *this; }
|
||||
String& operator= (String&& other) { m_content = std::move(other.m_content); return *this; }
|
||||
|
||||
String operator+ (const String& other) const { return String(m_content + other.m_content); }
|
||||
String& operator+= (const String& other) { m_content += other.m_content; return *this; }
|
||||
|
@ -41,7 +44,6 @@ public:
|
|||
const char* c_str() const { return m_content.c_str(); }
|
||||
|
||||
String substr(size_t pos, size_t length = -1) const { return String(m_content.substr(pos, length)); }
|
||||
void clear() { m_content.clear(); }
|
||||
|
||||
class iterator
|
||||
{
|
||||
|
@ -110,6 +112,7 @@ inline String operator+(Character lhs, const String& rhs)
|
|||
}
|
||||
|
||||
String int_to_str(int value);
|
||||
int str_to_int(const String& str);
|
||||
std::vector<String> split(const String& str, Character separator);
|
||||
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue
Block a user