+ redef fun is_empty: Bool do return self.length == 0
+
+ redef fun index_of(c: Char): Int
+ do
+ return index_of_from(c, 0)
+ end
+
+ redef fun last: Char do return self.chars[length-1]
+
+ redef fun index_of_from(c: Char, pos: Int): Int
+ do
+ var iter = self.chars.iterator_from(pos)
+ while iter.is_ok do
+ if iter.item == c then return iter.index
+ end
+ return -1
+ end
+
+ redef fun last_index_of(c: Char): Int
+ do
+ return last_index_of_from(c, length - 1)
+ end
+
+ redef fun last_index_of_from(item: Char, pos: Int): Int
+ do
+ var iter = self.chars.reverse_iterator_from(pos)
+ while iter.is_ok do
+ if iter.item == item then return iter.index
+ iter.next
+ end
+ return -1
+ end
+
+ redef fun iterator: Iterator[Char]
+ do
+ return self.chars.iterator
+ end
+
+ redef fun has(c: Char): Bool
+ do
+ return self.chars.has(c)
+ end
+
+ redef fun to_a: Array[Char] do return chars.to_a
+