mirror of
https://github.com/RGBCube/serenity
synced 2025-07-25 03:57:43 +00:00
AK: Use size_t for the length of strings
Using int was a mistake. This patch changes String, StringImpl, StringView and StringBuilder to use size_t instead of int for lengths. Obviously a lot of code needs to change as a result of this.
This commit is contained in:
parent
1726c17d0d
commit
6f4c380d95
54 changed files with 387 additions and 377 deletions
|
@ -21,7 +21,7 @@ void LineEditor::add_to_history(const String& line)
|
|||
|
||||
void LineEditor::clear_line()
|
||||
{
|
||||
for (int i = 0; i < m_cursor; ++i)
|
||||
for (size_t i = 0; i < m_cursor; ++i)
|
||||
fputc(0x8, stdout);
|
||||
fputs("\033[K", stdout);
|
||||
fflush(stdout);
|
||||
|
@ -31,10 +31,10 @@ void LineEditor::clear_line()
|
|||
|
||||
void LineEditor::append(const String& string)
|
||||
{
|
||||
m_buffer.append(string.characters(), string.length());
|
||||
m_buffer.append(string.characters(), (int)string.length());
|
||||
fputs(string.characters(), stdout);
|
||||
fflush(stdout);
|
||||
m_cursor = m_buffer.size();
|
||||
m_cursor = (size_t)m_buffer.size();
|
||||
}
|
||||
|
||||
void LineEditor::cache_path()
|
||||
|
@ -68,9 +68,9 @@ void LineEditor::cache_path()
|
|||
quick_sort(m_path.begin(), m_path.end(), AK::is_less_than<String>);
|
||||
}
|
||||
|
||||
void LineEditor::cut_mismatching_chars(String& completion, const String& program, int token_length)
|
||||
void LineEditor::cut_mismatching_chars(String& completion, const String& program, size_t token_length)
|
||||
{
|
||||
int i = token_length;
|
||||
size_t i = token_length;
|
||||
while (i < completion.length() && i < program.length() && completion[i] == program[i])
|
||||
++i;
|
||||
completion = completion.substring(0, i);
|
||||
|
@ -139,17 +139,17 @@ String LineEditor::get_line(const String& prompt)
|
|||
}
|
||||
|
||||
auto do_delete = [&] {
|
||||
if (m_cursor == m_buffer.size()) {
|
||||
if (m_cursor == (size_t)m_buffer.size()) {
|
||||
fputc('\a', stdout);
|
||||
fflush(stdout);
|
||||
return;
|
||||
}
|
||||
m_buffer.remove(m_cursor - 1);
|
||||
m_buffer.remove((int)m_cursor - 1);
|
||||
fputs("\033[3~", stdout);
|
||||
fflush(stdout);
|
||||
vt_save_cursor();
|
||||
vt_clear_to_end_of_line();
|
||||
for (int i = m_cursor; i < m_buffer.size(); ++i)
|
||||
for (size_t i = m_cursor; i < (size_t)m_buffer.size(); ++i)
|
||||
fputc(m_buffer[i], stdout);
|
||||
vt_restore_cursor();
|
||||
};
|
||||
|
@ -195,7 +195,7 @@ String LineEditor::get_line(const String& prompt)
|
|||
m_state = InputState::Free;
|
||||
continue;
|
||||
case 'C': // right
|
||||
if (m_cursor < m_buffer.size()) {
|
||||
if (m_cursor < (size_t)m_buffer.size()) {
|
||||
++m_cursor;
|
||||
fputs("\033[C", stdout);
|
||||
fflush(stdout);
|
||||
|
@ -204,17 +204,17 @@ String LineEditor::get_line(const String& prompt)
|
|||
continue;
|
||||
case 'H':
|
||||
if (m_cursor > 0) {
|
||||
fprintf(stdout, "\033[%dD", m_cursor);
|
||||
fprintf(stdout, "\033[%zuD", m_cursor);
|
||||
fflush(stdout);
|
||||
m_cursor = 0;
|
||||
}
|
||||
m_state = InputState::Free;
|
||||
continue;
|
||||
case 'F':
|
||||
if (m_cursor < m_buffer.size()) {
|
||||
fprintf(stdout, "\033[%dC", m_buffer.size() - m_cursor);
|
||||
if (m_cursor < (size_t)m_buffer.size()) {
|
||||
fprintf(stdout, "\033[%zuC", (size_t)m_buffer.size() - m_cursor);
|
||||
fflush(stdout);
|
||||
m_cursor = m_buffer.size();
|
||||
m_cursor = (size_t)m_buffer.size();
|
||||
}
|
||||
m_state = InputState::Free;
|
||||
continue;
|
||||
|
@ -264,13 +264,13 @@ String LineEditor::get_line(const String& prompt)
|
|||
fflush(stdout);
|
||||
return;
|
||||
}
|
||||
m_buffer.remove(m_cursor - 1);
|
||||
m_buffer.remove((int)m_cursor - 1);
|
||||
--m_cursor;
|
||||
putchar(8);
|
||||
vt_save_cursor();
|
||||
vt_clear_to_end_of_line();
|
||||
for (int i = m_cursor; i < m_buffer.size(); ++i)
|
||||
fputc(m_buffer[i], stdout);
|
||||
for (size_t i = m_cursor; i < (size_t)m_buffer.size(); ++i)
|
||||
fputc(m_buffer[(int)i], stdout);
|
||||
vt_restore_cursor();
|
||||
};
|
||||
|
||||
|
@ -281,7 +281,7 @@ String LineEditor::get_line(const String& prompt)
|
|||
if (ch == g.termios.c_cc[VWERASE]) {
|
||||
bool has_seen_nonspace = false;
|
||||
while (m_cursor > 0) {
|
||||
if (isspace(m_buffer[m_cursor - 1])) {
|
||||
if (isspace(m_buffer[(int)m_cursor - 1])) {
|
||||
if (has_seen_nonspace)
|
||||
break;
|
||||
} else {
|
||||
|
@ -301,14 +301,14 @@ String LineEditor::get_line(const String& prompt)
|
|||
fputs(prompt.characters(), stdout);
|
||||
for (int i = 0; i < m_buffer.size(); ++i)
|
||||
fputc(m_buffer[i], stdout);
|
||||
if (m_cursor < m_buffer.size())
|
||||
printf("\033[%dD", m_buffer.size() - m_cursor); // Move cursor N steps left.
|
||||
if (m_cursor < (size_t)m_buffer.size())
|
||||
printf("\033[%zuD", (size_t)m_buffer.size() - m_cursor); // Move cursor N steps left.
|
||||
fflush(stdout);
|
||||
continue;
|
||||
}
|
||||
if (ch == 0x01) { // ^A
|
||||
if (m_cursor > 0) {
|
||||
printf("\033[%dD", m_cursor);
|
||||
printf("\033[%zuD", m_cursor);
|
||||
fflush(stdout);
|
||||
m_cursor = 0;
|
||||
}
|
||||
|
@ -322,10 +322,10 @@ String LineEditor::get_line(const String& prompt)
|
|||
continue;
|
||||
}
|
||||
if (ch == 0x05) { // ^E
|
||||
if (m_cursor < m_buffer.size()) {
|
||||
printf("\033[%dC", m_buffer.size() - m_cursor);
|
||||
if (m_cursor < (size_t)m_buffer.size()) {
|
||||
printf("\033[%zuC", (size_t)m_buffer.size() - m_cursor);
|
||||
fflush(stdout);
|
||||
m_cursor = m_buffer.size();
|
||||
m_cursor = (size_t)m_buffer.size();
|
||||
}
|
||||
continue;
|
||||
}
|
||||
|
@ -337,17 +337,17 @@ String LineEditor::get_line(const String& prompt)
|
|||
return string;
|
||||
}
|
||||
|
||||
if (m_cursor == m_buffer.size()) {
|
||||
if (m_cursor == (size_t)m_buffer.size()) {
|
||||
m_buffer.append(ch);
|
||||
++m_cursor;
|
||||
continue;
|
||||
}
|
||||
vt_save_cursor();
|
||||
vt_clear_to_end_of_line();
|
||||
for (int i = m_cursor; i < m_buffer.size(); ++i)
|
||||
fputc(m_buffer[i], stdout);
|
||||
for (size_t i = m_cursor; i < (size_t)m_buffer.size(); ++i)
|
||||
fputc(m_buffer[(int)i], stdout);
|
||||
vt_restore_cursor();
|
||||
m_buffer.insert(m_cursor, move(ch));
|
||||
m_buffer.insert((int)m_cursor, move(ch));
|
||||
++m_cursor;
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue