diff options
Diffstat (limited to 'crawl-ref/source/format.cc')
-rw-r--r-- | crawl-ref/source/format.cc | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/crawl-ref/source/format.cc b/crawl-ref/source/format.cc index 9cd282e058..cf884f8220 100644 --- a/crawl-ref/source/format.cc +++ b/crawl-ref/source/format.cc @@ -329,6 +329,27 @@ inline void cap(int &i, int max) i = 0; } +char &formatted_string::operator [] (size_t idx) +{ + size_t rel_idx = idx; + int size = ops.size(); + for (int i = 0; i < size; ++i) + { + if (ops[i] != FSOP_TEXT) + continue; + + size_t len = ops[i].text.length(); + if (rel_idx >= len) + rel_idx -= len; + else + return ops[i].text[rel_idx]; + } + ASSERT(!"Invalid index"); + char *invalid = NULL; + return *invalid; +} + + std::string formatted_string::tostring(int s, int e) const { std::string st; |