Commit 3e644426 authored by Him188's avatar Him188

Make `MessageChainBuilder` open

parent a63af806
......@@ -48,13 +48,13 @@ inline fun buildMessageChain(initialSize: Int, block: MessageChainBuilder.() ->
* @see asMessageChain 完成构建
*/
@OptIn(MiraiExperimentalAPI::class)
class MessageChainBuilder private constructor(
open class MessageChainBuilder private constructor(
private val container: MutableList<SingleMessage>
) : MutableList<SingleMessage> by container, Appendable {
constructor() : this(mutableListOf())
constructor(initialSize: Int) : this(ArrayList<SingleMessage>(initialSize))
override fun add(element: SingleMessage): Boolean {
final override fun add(element: SingleMessage): Boolean {
checkBuilt()
flushCache()
return addAndCheckConstrainSingle(element)
......@@ -72,7 +72,7 @@ class MessageChainBuilder private constructor(
}
}
override fun addAll(elements: Collection<SingleMessage>): Boolean {
final override fun addAll(elements: Collection<SingleMessage>): Boolean {
checkBuilt()
flushCache()
return addAll(elements.flatten())
......@@ -124,9 +124,9 @@ class MessageChainBuilder private constructor(
withCache { append(charSequence) }
}
override fun append(value: Char): MessageChainBuilder = withCache { append(value) }
override fun append(value: CharSequence?): MessageChainBuilder = withCache { append(value) }
override fun append(value: CharSequence?, startIndex: Int, endIndex: Int): MessageChainBuilder =
final override fun append(value: Char): MessageChainBuilder = withCache { append(value) }
final override fun append(value: CharSequence?): MessageChainBuilder = withCache { append(value) }
final override fun append(value: CharSequence?, startIndex: Int, endIndex: Int): MessageChainBuilder =
withCache { append(value, startIndex, endIndex) }
fun append(message: Message): MessageChainBuilder = apply { add(message) }
......@@ -153,27 +153,27 @@ class MessageChainBuilder private constructor(
///////
// FOR IMMUTABLE SAFETY
override fun remove(element: SingleMessage): Boolean {
final override fun remove(element: SingleMessage): Boolean {
checkBuilt()
return container.remove(element)
}
override fun removeAll(elements: Collection<SingleMessage>): Boolean {
final override fun removeAll(elements: Collection<SingleMessage>): Boolean {
checkBuilt()
return container.removeAll(elements)
}
override fun removeAt(index: Int): SingleMessage {
final override fun removeAt(index: Int): SingleMessage {
checkBuilt()
return container.removeAt(index)
}
override fun clear() {
final override fun clear() {
checkBuilt()
return container.clear()
}
override fun set(index: Int, element: SingleMessage): SingleMessage {
final override fun set(index: Int, element: SingleMessage): SingleMessage {
checkBuilt()
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