Signed-off-by: Lucas Bajolet <r4pass@hotmail.com>
# Leaf of a `Rope`, used as a buffered area for speedy concatenation.
private class Leaf
# Leaf of a `Rope`, used as a buffered area for speedy concatenation.
private class Leaf
+ super String
+ super Rope
var buf: ManualBuffer
var bns: NativeString is noinit
var buf: ManualBuffer
var bns: NativeString is noinit
-private abstract class RopeString
+# Node that represents a concatenation between two `String`
+private class Concat
super Rope
super String
redef var chars is lazy do return new RopeChars(self)
super Rope
super String
redef var chars is lazy do return new RopeChars(self)
-end
-
-# Node that represents a concatenation between two `String`
-private class Concat
- super RopeString
redef var length is noinit
redef var length is noinit
# the Rope traversal.
var subs: IndexedIterator[String]
# the Rope traversal.
var subs: IndexedIterator[String]
- init(root: RopeString) is old_style_init do
+ init(root: Concat) is old_style_init do
pos = root.length - 1
subs = new ReverseRopeSubstrings(root)
ns = subs.item
pns = ns.length - 1
end
pos = root.length - 1
subs = new ReverseRopeSubstrings(root)
ns = subs.item
pns = ns.length - 1
end
- init from(root: RopeString, pos: Int) do
+ init from(root: Concat, pos: Int) do
self.pos = pos
subs = new ReverseRopeSubstrings.from(root, pos)
ns = subs.item
self.pos = pos
subs = new ReverseRopeSubstrings.from(root, pos)
ns = subs.item
# Position (char) in the Rope (0-indexed)
var pos: Int
# Position (char) in the Rope (0-indexed)
var pos: Int
- init(root: RopeString) is old_style_init do
+ init(root: Concat) is old_style_init do
subs = new RopeSubstrings(root)
pns = 0
str = subs.item
subs = new RopeSubstrings(root)
pns = 0
str = subs.item
- init from(root: RopeString, pos: Int) do
+ init from(root: Concat, pos: Int) do
subs = new RopeSubstrings.from(root, pos)
pns = pos - subs.index
self.pos = pos
subs = new RopeSubstrings.from(root, pos)
pns = pos - subs.index
self.pos = pos
# Current leaf
var str: String is noinit
# Current leaf
var str: String is noinit
- init(root: RopeString) is old_style_init do
+ init(root: Concat) is old_style_init do
var r = new RopeIterPiece(root, false, true, null)
pos = root.length - 1
var lnod: String = root
var r = new RopeIterPiece(root, false, true, null)
pos = root.length - 1
var lnod: String = root
- init from(root: RopeString, pos: Int) do
+ init from(root: Concat, pos: Int) do
var r = new RopeIterPiece(root, false, true, null)
var rnod: String = root
var off = pos
var r = new RopeIterPiece(root, false, true, null)
var rnod: String = root
var off = pos
# Current leaf
var str: FlatString is noinit
# Current leaf
var str: FlatString is noinit
- init(root: RopeString) is old_style_init do
+ init(root: Concat) is old_style_init do
var r = new RopeIterPiece(root, true, false, null)
pos = 0
max = root.length - 1
var r = new RopeIterPiece(root, true, false, null)
pos = 0
max = root.length - 1
- init from(root: RopeString, pos: Int) do
+ init from(root: Concat, pos: Int) do
var r = new RopeIterPiece(root, true, false, null)
max = root.length - 1
var rnod: String = root
var r = new RopeIterPiece(root, true, false, null)
max = root.length - 1
var rnod: String = root
-# Implementation of a `StringCharView` for `RopeString` objects
+# Implementation of a `StringCharView` for `Concat` objects
private class RopeChars
super StringCharView
private class RopeChars
super StringCharView
- redef type SELFTYPE: RopeString
+ redef type SELFTYPE: Concat
redef fun [](i) do
return target[i]
redef fun [](i) do
return target[i]