#include "util/numeric.h"
ChatBuffer::ChatBuffer(u32 scrollback):
- m_scrollback(scrollback),
- m_unformatted(),
- m_cols(0),
- m_rows(0),
- m_scroll(0),
- m_formatted(),
- m_empty_formatted_line()
+ m_scrollback(scrollback)
{
if (m_scrollback == 0)
m_scrollback = 1;
m_empty_formatted_line.first = true;
}
-ChatBuffer::~ChatBuffer()
-{
-}
-
void ChatBuffer::addLine(std::wstring name, std::wstring text)
{
ChatLine line(name, text);
return m_unformatted.size();
}
-u32 ChatBuffer::getScrollback() const
-{
- return m_scrollback;
-}
-
const ChatLine& ChatBuffer::getLine(u32 index) const
{
assert(index < getLineCount()); // pre-condition
void ChatBuffer::step(f32 dtime)
{
- for (u32 i = 0; i < m_unformatted.size(); ++i)
- {
- m_unformatted[i].age += dtime;
+ for (ChatLine &line : m_unformatted) {
+ line.age += dtime;
}
}
s32 index = m_scroll + (s32) row;
if (index >= 0 && index < (s32) m_formatted.size())
return m_formatted[index];
- else
- return m_empty_formatted_line;
+
+ return m_empty_formatted_line;
}
void ChatBuffer::scroll(s32 rows)
while (frag_length < remaining_in_input &&
frag_length < remaining_in_output)
{
- if (isspace(line.text.getString()[in_pos + frag_length]))
+ if (iswspace(line.text.getString()[in_pos + frag_length]))
space_pos = frag_length;
++frag_length;
}
s32 rows = (s32) m_rows;
if (rows == 0)
return 0;
- else if (formatted_count <= rows)
+
+ if (formatted_count <= rows)
return formatted_count - rows;
- else
- return 0;
+
+ return 0;
}
s32 ChatBuffer::getBottomScrollPos() const
-ChatPrompt::ChatPrompt(std::wstring prompt, u32 history_limit):
+ChatPrompt::ChatPrompt(const std::wstring &prompt, u32 history_limit):
m_prompt(prompt),
- m_line(L""),
- m_history(),
- m_history_index(0),
- m_history_limit(history_limit),
- m_cols(0),
- m_view(0),
- m_cursor(0),
- m_cursor_len(0),
- m_nick_completion_start(0),
- m_nick_completion_end(0)
-{
-}
-
-ChatPrompt::~ChatPrompt()
+ m_history_limit(history_limit)
{
}
{
// no previous nick completion is active
prefix_start = prefix_end = m_cursor;
- while (prefix_start > 0 && !isspace(m_line[prefix_start-1]))
+ while (prefix_start > 0 && !iswspace(m_line[prefix_start-1]))
--prefix_start;
- while (prefix_end < m_line.size() && !isspace(m_line[prefix_end]))
+ while (prefix_end < m_line.size() && !iswspace(m_line[prefix_end]))
++prefix_end;
if (prefix_start == prefix_end)
return;
// find all names that start with the selected prefix
std::vector<std::wstring> completions;
- for (std::list<std::string>::const_iterator
- i = names.begin();
- i != names.end(); ++i)
- {
- if (str_starts_with(narrow_to_wide(*i), prefix, true))
- {
- std::wstring completion = narrow_to_wide(*i);
+ for (const std::string &name : names) {
+ if (str_starts_with(narrow_to_wide(name), prefix, true)) {
+ std::wstring completion = narrow_to_wide(name);
if (prefix_start == 0)
completion += L": ";
completions.push_back(completion);
}
}
+
if (completions.empty())
return;
u32 replacement_index = 0;
if (!initial)
{
- while (word_end < m_line.size() && !isspace(m_line[word_end]))
+ while (word_end < m_line.size() && !iswspace(m_line[word_end]))
++word_end;
std::wstring word = m_line.substr(prefix_start, word_end - prefix_start);
}
}
std::wstring replacement = completions[replacement_index];
- if (word_end < m_line.size() && isspace(word_end))
+ if (word_end < m_line.size() && iswspace(m_line[word_end]))
++word_end;
// replace existing word with replacement word,
case CURSOROP_SCOPE_WORD:
if (dir == CURSOROP_DIR_RIGHT) {
// skip one word to the right
- while (new_cursor < length && isspace(m_line[new_cursor]))
+ while (new_cursor < length && iswspace(m_line[new_cursor]))
new_cursor++;
- while (new_cursor < length && !isspace(m_line[new_cursor]))
+ while (new_cursor < length && !iswspace(m_line[new_cursor]))
new_cursor++;
- while (new_cursor < length && isspace(m_line[new_cursor]))
+ while (new_cursor < length && iswspace(m_line[new_cursor]))
new_cursor++;
} else {
// skip one word to the left
- while (new_cursor >= 1 && isspace(m_line[new_cursor - 1]))
+ while (new_cursor >= 1 && iswspace(m_line[new_cursor - 1]))
new_cursor--;
- while (new_cursor >= 1 && !isspace(m_line[new_cursor - 1]))
+ while (new_cursor >= 1 && !iswspace(m_line[new_cursor - 1]))
new_cursor--;
}
break;
{
}
-ChatBackend::~ChatBackend()
-{
-}
-
void ChatBackend::addMessage(std::wstring name, std::wstring text)
{
// Note: A message may consist of multiple lines, for example the MOTD.