Commit 3e644426 authored by Him188's avatar Him188

Make `MessageChainBuilder` open

parent a63af806
...@@ -48,13 +48,13 @@ inline fun buildMessageChain(initialSize: Int, block: MessageChainBuilder.() -> ...@@ -48,13 +48,13 @@ inline fun buildMessageChain(initialSize: Int, block: MessageChainBuilder.() ->
* @see asMessageChain 完成构建 * @see asMessageChain 完成构建
*/ */
@OptIn(MiraiExperimentalAPI::class) @OptIn(MiraiExperimentalAPI::class)
class MessageChainBuilder private constructor( open class MessageChainBuilder private constructor(
private val container: MutableList<SingleMessage> private val container: MutableList<SingleMessage>
) : MutableList<SingleMessage> by container, Appendable { ) : MutableList<SingleMessage> by container, Appendable {
constructor() : this(mutableListOf()) constructor() : this(mutableListOf())
constructor(initialSize: Int) : this(ArrayList<SingleMessage>(initialSize)) constructor(initialSize: Int) : this(ArrayList<SingleMessage>(initialSize))
override fun add(element: SingleMessage): Boolean { final override fun add(element: SingleMessage): Boolean {
checkBuilt() checkBuilt()
flushCache() flushCache()
return addAndCheckConstrainSingle(element) return addAndCheckConstrainSingle(element)
...@@ -72,7 +72,7 @@ class MessageChainBuilder private constructor( ...@@ -72,7 +72,7 @@ class MessageChainBuilder private constructor(
} }
} }
override fun addAll(elements: Collection<SingleMessage>): Boolean { final override fun addAll(elements: Collection<SingleMessage>): Boolean {
checkBuilt() checkBuilt()
flushCache() flushCache()
return addAll(elements.flatten()) return addAll(elements.flatten())
...@@ -124,9 +124,9 @@ class MessageChainBuilder private constructor( ...@@ -124,9 +124,9 @@ class MessageChainBuilder private constructor(
withCache { append(charSequence) } withCache { append(charSequence) }
} }
override fun append(value: Char): MessageChainBuilder = withCache { append(value) } final override fun append(value: Char): MessageChainBuilder = withCache { append(value) }
override fun append(value: CharSequence?): MessageChainBuilder = withCache { append(value) } final override fun append(value: CharSequence?): MessageChainBuilder = withCache { append(value) }
override fun append(value: CharSequence?, startIndex: Int, endIndex: Int): MessageChainBuilder = final override fun append(value: CharSequence?, startIndex: Int, endIndex: Int): MessageChainBuilder =
withCache { append(value, startIndex, endIndex) } withCache { append(value, startIndex, endIndex) }
fun append(message: Message): MessageChainBuilder = apply { add(message) } fun append(message: Message): MessageChainBuilder = apply { add(message) }
...@@ -153,27 +153,27 @@ class MessageChainBuilder private constructor( ...@@ -153,27 +153,27 @@ class MessageChainBuilder private constructor(
/////// ///////
// FOR IMMUTABLE SAFETY // FOR IMMUTABLE SAFETY
override fun remove(element: SingleMessage): Boolean { final override fun remove(element: SingleMessage): Boolean {
checkBuilt() checkBuilt()
return container.remove(element) return container.remove(element)
} }
override fun removeAll(elements: Collection<SingleMessage>): Boolean { final override fun removeAll(elements: Collection<SingleMessage>): Boolean {
checkBuilt() checkBuilt()
return container.removeAll(elements) return container.removeAll(elements)
} }
override fun removeAt(index: Int): SingleMessage { final override fun removeAt(index: Int): SingleMessage {
checkBuilt() checkBuilt()
return container.removeAt(index) return container.removeAt(index)
} }
override fun clear() { final override fun clear() {
checkBuilt() checkBuilt()
return container.clear() return container.clear()
} }
override fun set(index: Int, element: SingleMessage): SingleMessage { final override fun set(index: Int, element: SingleMessage): SingleMessage {
checkBuilt() checkBuilt()
return container.set(index, element) return container.set(index, element)
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment