[stdlib] Explicit visibility and return types: HexFormat

This commit is contained in:
Ilya Gorbunov
2023-09-19 14:29:43 +02:00
committed by Space Team
parent 02e933b3ff
commit 92b3131c12
+31 -31
View File
@@ -21,15 +21,15 @@ public class HexFormat internal constructor(
* *
* Affects both `ByteArray` and numeric value formatting. * Affects both `ByteArray` and numeric value formatting.
*/ */
val upperCase: Boolean, public val upperCase: Boolean,
/** /**
* Specifies hexadecimal format used for formatting and parsing `ByteArray`. * Specifies hexadecimal format used for formatting and parsing `ByteArray`.
*/ */
val bytes: BytesHexFormat, public val bytes: BytesHexFormat,
/** /**
* Specifies hexadecimal format used for formatting and parsing a numeric value. * Specifies hexadecimal format used for formatting and parsing a numeric value.
*/ */
val number: NumberHexFormat public val number: NumberHexFormat
) { ) {
override fun toString(): String = buildString { override fun toString(): String = buildString {
@@ -64,19 +64,19 @@ public class HexFormat internal constructor(
*/ */
public class BytesHexFormat internal constructor( public class BytesHexFormat internal constructor(
/** The maximum number of bytes per line. */ /** The maximum number of bytes per line. */
val bytesPerLine: Int, public val bytesPerLine: Int,
/** The maximum number of bytes per group. */ /** The maximum number of bytes per group. */
val bytesPerGroup: Int, public val bytesPerGroup: Int,
/** The string used to separate adjacent groups in a line. */ /** The string used to separate adjacent groups in a line. */
val groupSeparator: String, public val groupSeparator: String,
/** The string used to separate adjacent bytes in a group. */ /** The string used to separate adjacent bytes in a group. */
val byteSeparator: String, public val byteSeparator: String,
/** The string that immediately precedes two-digit hexadecimal representation of each byte. */ /** The string that immediately precedes two-digit hexadecimal representation of each byte. */
val bytePrefix: String, public val bytePrefix: String,
/** The string that immediately succeeds two-digit hexadecimal representation of each byte. */ /** The string that immediately succeeds two-digit hexadecimal representation of each byte. */
val byteSuffix: String public val byteSuffix: String
) { ) {
internal val noLineAndGroupSeparator: Boolean = internal val noLineAndGroupSeparator: Boolean =
@@ -114,7 +114,7 @@ public class HexFormat internal constructor(
/** /**
* A context for building a [BytesHexFormat]. Provides API for configuring format options. * A context for building a [BytesHexFormat]. Provides API for configuring format options.
*/ */
class Builder internal constructor() { public class Builder internal constructor() {
/** /**
* Defines [BytesHexFormat.bytesPerLine] of the format being built, [Int.MAX_VALUE] by default. * Defines [BytesHexFormat.bytesPerLine] of the format being built, [Int.MAX_VALUE] by default.
* *
@@ -122,7 +122,7 @@ public class HexFormat internal constructor(
* *
* @throws IllegalArgumentException if a non-positive value is assigned to this property. * @throws IllegalArgumentException if a non-positive value is assigned to this property.
*/ */
var bytesPerLine: Int = Default.bytesPerLine public var bytesPerLine: Int = Default.bytesPerLine
set(value) { set(value) {
if (value <= 0) if (value <= 0)
throw IllegalArgumentException("Non-positive values are prohibited for bytesPerLine, but was $value") throw IllegalArgumentException("Non-positive values are prohibited for bytesPerLine, but was $value")
@@ -136,7 +136,7 @@ public class HexFormat internal constructor(
* *
* @throws IllegalArgumentException if a non-positive value is assigned to this property. * @throws IllegalArgumentException if a non-positive value is assigned to this property.
*/ */
var bytesPerGroup: Int = Default.bytesPerGroup public var bytesPerGroup: Int = Default.bytesPerGroup
set(value) { set(value) {
if (value <= 0) if (value <= 0)
throw IllegalArgumentException("Non-positive values are prohibited for bytesPerGroup, but was $value") throw IllegalArgumentException("Non-positive values are prohibited for bytesPerGroup, but was $value")
@@ -144,7 +144,7 @@ public class HexFormat internal constructor(
} }
/** Defines [BytesHexFormat.groupSeparator] of the format being built, two space characters (`" "`) by default. */ /** Defines [BytesHexFormat.groupSeparator] of the format being built, two space characters (`" "`) by default. */
var groupSeparator: String = Default.groupSeparator public var groupSeparator: String = Default.groupSeparator
/** /**
* Defines [BytesHexFormat.byteSeparator] of the format being built, empty string by default. * Defines [BytesHexFormat.byteSeparator] of the format being built, empty string by default.
@@ -153,7 +153,7 @@ public class HexFormat internal constructor(
* *
* @throws IllegalArgumentException if a string containing LF or CR character is assigned to this property. * @throws IllegalArgumentException if a string containing LF or CR character is assigned to this property.
*/ */
var byteSeparator: String = Default.byteSeparator public var byteSeparator: String = Default.byteSeparator
set(value) { set(value) {
if (value.contains('\n') || value.contains('\r')) if (value.contains('\n') || value.contains('\r'))
throw IllegalArgumentException("LF and CR characters are prohibited in byteSeparator, but was $value") throw IllegalArgumentException("LF and CR characters are prohibited in byteSeparator, but was $value")
@@ -167,7 +167,7 @@ public class HexFormat internal constructor(
* *
* @throws IllegalArgumentException if a string containing LF or CR character is assigned to this property. * @throws IllegalArgumentException if a string containing LF or CR character is assigned to this property.
*/ */
var bytePrefix: String = Default.bytePrefix public var bytePrefix: String = Default.bytePrefix
set(value) { set(value) {
if (value.contains('\n') || value.contains('\r')) if (value.contains('\n') || value.contains('\r'))
throw IllegalArgumentException("LF and CR characters are prohibited in bytePrefix, but was $value") throw IllegalArgumentException("LF and CR characters are prohibited in bytePrefix, but was $value")
@@ -181,7 +181,7 @@ public class HexFormat internal constructor(
* *
* @throws IllegalArgumentException if a string containing LF or CR character is assigned to this property. * @throws IllegalArgumentException if a string containing LF or CR character is assigned to this property.
*/ */
var byteSuffix: String = Default.byteSuffix public var byteSuffix: String = Default.byteSuffix
set(value) { set(value) {
if (value.contains('\n') || value.contains('\r')) if (value.contains('\n') || value.contains('\r'))
throw IllegalArgumentException("LF and CR characters are prohibited in byteSuffix, but was $value") throw IllegalArgumentException("LF and CR characters are prohibited in byteSuffix, but was $value")
@@ -236,11 +236,11 @@ public class HexFormat internal constructor(
*/ */
public class NumberHexFormat internal constructor( public class NumberHexFormat internal constructor(
/** The string that immediately precedes hexadecimal representation of a numeric value. */ /** The string that immediately precedes hexadecimal representation of a numeric value. */
val prefix: String, public val prefix: String,
/** The string that immediately succeeds hexadecimal representation of a numeric value. */ /** The string that immediately succeeds hexadecimal representation of a numeric value. */
val suffix: String, public val suffix: String,
/** Specifies whether to remove leading zeros in the hexadecimal representation of a numeric value. */ /** Specifies whether to remove leading zeros in the hexadecimal representation of a numeric value. */
val removeLeadingZeros: Boolean public val removeLeadingZeros: Boolean
) { ) {
internal val isDigitsOnly: Boolean = prefix.isEmpty() && suffix.isEmpty() internal val isDigitsOnly: Boolean = prefix.isEmpty() && suffix.isEmpty()
@@ -267,7 +267,7 @@ public class HexFormat internal constructor(
/** /**
* A context for building a [NumberHexFormat]. Provides API for configuring format options. * A context for building a [NumberHexFormat]. Provides API for configuring format options.
*/ */
class Builder internal constructor() { public class Builder internal constructor() {
/** /**
* Defines [NumberHexFormat.prefix] of the format being built, empty string by default. * Defines [NumberHexFormat.prefix] of the format being built, empty string by default.
* *
@@ -275,7 +275,7 @@ public class HexFormat internal constructor(
* *
* @throws IllegalArgumentException if a string containing LF or CR character is assigned to this property. * @throws IllegalArgumentException if a string containing LF or CR character is assigned to this property.
*/ */
var prefix: String = Default.prefix public var prefix: String = Default.prefix
set(value) { set(value) {
if (value.contains('\n') || value.contains('\r')) if (value.contains('\n') || value.contains('\r'))
throw IllegalArgumentException("LF and CR characters are prohibited in prefix, but was $value") throw IllegalArgumentException("LF and CR characters are prohibited in prefix, but was $value")
@@ -289,15 +289,15 @@ public class HexFormat internal constructor(
* *
* @throws IllegalArgumentException if a string containing LF or CR character is assigned to this property. * @throws IllegalArgumentException if a string containing LF or CR character is assigned to this property.
*/ */
var suffix: String = Default.suffix public var suffix: String = Default.suffix
set(value) { set(value) {
if (value.contains('\n') || value.contains('\r')) if (value.contains('\n') || value.contains('\r'))
throw IllegalArgumentException("LF and CR characters are prohibited in suffix, but was $value") throw IllegalArgumentException("LF and CR characters are prohibited in suffix, but was $value")
field = value field = value
} }
/** Defines [NumberHexFormat.removeLeadingZeros] of the format being built, empty string by default. */ /** Defines [NumberHexFormat.removeLeadingZeros] of the format being built, `false` by default. */
var removeLeadingZeros: Boolean = Default.removeLeadingZeros public var removeLeadingZeros: Boolean = Default.removeLeadingZeros
internal fun build(): NumberHexFormat { internal fun build(): NumberHexFormat {
return NumberHexFormat(prefix, suffix, removeLeadingZeros) return NumberHexFormat(prefix, suffix, removeLeadingZeros)
@@ -319,14 +319,14 @@ public class HexFormat internal constructor(
*/ */
public class Builder @PublishedApi internal constructor() { public class Builder @PublishedApi internal constructor() {
/** Defines [HexFormat.upperCase] of the format being built, `false` by default. */ /** Defines [HexFormat.upperCase] of the format being built, `false` by default. */
var upperCase: Boolean = Default.upperCase public var upperCase: Boolean = Default.upperCase
/** /**
* Defines [HexFormat.bytes] of the format being built. * Defines [HexFormat.bytes] of the format being built.
* *
* See [BytesHexFormat.Builder] for default values of the options. * See [BytesHexFormat.Builder] for default values of the options.
*/ */
val bytes: BytesHexFormat.Builder public val bytes: BytesHexFormat.Builder
get() { get() {
if (_bytes == null) { if (_bytes == null) {
_bytes = BytesHexFormat.Builder() _bytes = BytesHexFormat.Builder()
@@ -341,7 +341,7 @@ public class HexFormat internal constructor(
* *
* See [NumberHexFormat.Builder] for default values of the options. * See [NumberHexFormat.Builder] for default values of the options.
*/ */
val number: NumberHexFormat.Builder public val number: NumberHexFormat.Builder
get() { get() {
if (_number == null) { if (_number == null) {
_number = NumberHexFormat.Builder() _number = NumberHexFormat.Builder()
@@ -357,7 +357,7 @@ public class HexFormat internal constructor(
* See [BytesHexFormat.Builder] for default values of the options. * See [BytesHexFormat.Builder] for default values of the options.
*/ */
@InlineOnly @InlineOnly
inline fun bytes(builderAction: BytesHexFormat.Builder.() -> Unit) { public inline fun bytes(builderAction: BytesHexFormat.Builder.() -> Unit) {
bytes.builderAction() bytes.builderAction()
} }
@@ -367,7 +367,7 @@ public class HexFormat internal constructor(
* See [NumberHexFormat.Builder] for default values of the options. * See [NumberHexFormat.Builder] for default values of the options.
*/ */
@InlineOnly @InlineOnly
inline fun number(builderAction: NumberHexFormat.Builder.() -> Unit) { public inline fun number(builderAction: NumberHexFormat.Builder.() -> Unit) {
number.builderAction() number.builderAction()
} }
@@ -382,7 +382,7 @@ public class HexFormat internal constructor(
} }
companion object { public companion object {
/** /**
* The default hexadecimal format options. * The default hexadecimal format options.
* *
@@ -425,7 +425,7 @@ public class HexFormat internal constructor(
* and returns the resulting format. * and returns the resulting format.
* *
* The builder passed as a receiver to the [builderAction] is valid only inside that function. * The builder passed as a receiver to the [builderAction] is valid only inside that function.
* Using it outside of the function produces an unspecified behavior. * Using it outside the function produces an unspecified behavior.
*/ */
@ExperimentalStdlibApi @ExperimentalStdlibApi
@SinceKotlin("1.9") @SinceKotlin("1.9")