// automatically generated by the FlatBuffers compiler, do not modify

package optional_scalars

import java.nio.*
import kotlin.math.sign
import com.google.flatbuffers.*

@Suppress("unused")
@ExperimentalUnsignedTypes
class ScalarStuff : Table() {

    fun __init(_i: Int, _bb: ByteBuffer)  {
        __reset(_i, _bb)
    }
    fun __assign(_i: Int, _bb: ByteBuffer) : ScalarStuff {
        __init(_i, _bb)
        return this
    }
    val justI8 : Byte
        get() {
            val o = __offset(4)
            return if(o != 0) bb.get(o + bb_pos) else 0
        }
    val maybeI8 : Byte?
        get() {
            val o = __offset(6)
            return if(o != 0) bb.get(o + bb_pos) else null
        }
    val defaultI8 : Byte
        get() {
            val o = __offset(8)
            return if(o != 0) bb.get(o + bb_pos) else 42
        }
    val justU8 : UByte
        get() {
            val o = __offset(10)
            return if(o != 0) bb.get(o + bb_pos).toUByte() else 0u
        }
    val maybeU8 : UByte?
        get() {
            val o = __offset(12)
            return if(o != 0) bb.get(o + bb_pos).toUByte() else null
        }
    val defaultU8 : UByte
        get() {
            val o = __offset(14)
            return if(o != 0) bb.get(o + bb_pos).toUByte() else 42u
        }
    val justI16 : Short
        get() {
            val o = __offset(16)
            return if(o != 0) bb.getShort(o + bb_pos) else 0
        }
    val maybeI16 : Short?
        get() {
            val o = __offset(18)
            return if(o != 0) bb.getShort(o + bb_pos) else null
        }
    val defaultI16 : Short
        get() {
            val o = __offset(20)
            return if(o != 0) bb.getShort(o + bb_pos) else 42
        }
    val justU16 : UShort
        get() {
            val o = __offset(22)
            return if(o != 0) bb.getShort(o + bb_pos).toUShort() else 0u
        }
    val maybeU16 : UShort?
        get() {
            val o = __offset(24)
            return if(o != 0) bb.getShort(o + bb_pos).toUShort() else null
        }
    val defaultU16 : UShort
        get() {
            val o = __offset(26)
            return if(o != 0) bb.getShort(o + bb_pos).toUShort() else 42u
        }
    val justI32 : Int
        get() {
            val o = __offset(28)
            return if(o != 0) bb.getInt(o + bb_pos) else 0
        }
    val maybeI32 : Int?
        get() {
            val o = __offset(30)
            return if(o != 0) bb.getInt(o + bb_pos) else null
        }
    val defaultI32 : Int
        get() {
            val o = __offset(32)
            return if(o != 0) bb.getInt(o + bb_pos) else 42
        }
    val justU32 : UInt
        get() {
            val o = __offset(34)
            return if(o != 0) bb.getInt(o + bb_pos).toUInt() else 0u
        }
    val maybeU32 : UInt?
        get() {
            val o = __offset(36)
            return if(o != 0) bb.getInt(o + bb_pos).toUInt() else null
        }
    val defaultU32 : UInt
        get() {
            val o = __offset(38)
            return if(o != 0) bb.getInt(o + bb_pos).toUInt() else 42u
        }
    val justI64 : Long
        get() {
            val o = __offset(40)
            return if(o != 0) bb.getLong(o + bb_pos) else 0L
        }
    val maybeI64 : Long?
        get() {
            val o = __offset(42)
            return if(o != 0) bb.getLong(o + bb_pos) else null
        }
    val defaultI64 : Long
        get() {
            val o = __offset(44)
            return if(o != 0) bb.getLong(o + bb_pos) else 42L
        }
    val justU64 : ULong
        get() {
            val o = __offset(46)
            return if(o != 0) bb.getLong(o + bb_pos).toULong() else 0UL
        }
    val maybeU64 : ULong?
        get() {
            val o = __offset(48)
            return if(o != 0) bb.getLong(o + bb_pos).toULong() else null
        }
    val defaultU64 : ULong
        get() {
            val o = __offset(50)
            return if(o != 0) bb.getLong(o + bb_pos).toULong() else 42UL
        }
    val justF32 : Float
        get() {
            val o = __offset(52)
            return if(o != 0) bb.getFloat(o + bb_pos) else 0.0f
        }
    val maybeF32 : Float?
        get() {
            val o = __offset(54)
            return if(o != 0) bb.getFloat(o + bb_pos) else null
        }
    val defaultF32 : Float
        get() {
            val o = __offset(56)
            return if(o != 0) bb.getFloat(o + bb_pos) else 42.0f
        }
    val justF64 : Double
        get() {
            val o = __offset(58)
            return if(o != 0) bb.getDouble(o + bb_pos) else 0.0
        }
    val maybeF64 : Double?
        get() {
            val o = __offset(60)
            return if(o != 0) bb.getDouble(o + bb_pos) else null
        }
    val defaultF64 : Double
        get() {
            val o = __offset(62)
            return if(o != 0) bb.getDouble(o + bb_pos) else 42.0
        }
    val justBool : Boolean
        get() {
            val o = __offset(64)
            return if(o != 0) 0.toByte() != bb.get(o + bb_pos) else false
        }
    val maybeBool : Boolean?
        get() {
            val o = __offset(66)
            return if(o != 0) 0.toByte() != bb.get(o + bb_pos) else null
        }
    val defaultBool : Boolean
        get() {
            val o = __offset(68)
            return if(o != 0) 0.toByte() != bb.get(o + bb_pos) else true
        }
    val justEnum : Byte
        get() {
            val o = __offset(70)
            return if(o != 0) bb.get(o + bb_pos) else 0
        }
    val maybeEnum : Byte?
        get() {
            val o = __offset(72)
            return if(o != 0) bb.get(o + bb_pos) else null
        }
    val defaultEnum : Byte
        get() {
            val o = __offset(74)
            return if(o != 0) bb.get(o + bb_pos) else 1
        }
    companion object {
        fun validateVersion() = Constants.FLATBUFFERS_2_0_0()
        fun getRootAsScalarStuff(_bb: ByteBuffer): ScalarStuff = getRootAsScalarStuff(_bb, ScalarStuff())
        fun getRootAsScalarStuff(_bb: ByteBuffer, obj: ScalarStuff): ScalarStuff {
            _bb.order(ByteOrder.LITTLE_ENDIAN)
            return (obj.__assign(_bb.getInt(_bb.position()) + _bb.position(), _bb))
        }
        fun ScalarStuffBufferHasIdentifier(_bb: ByteBuffer) : Boolean = __has_identifier(_bb, "NULL")
        fun createScalarStuff(builder: FlatBufferBuilder, justI8: Byte, maybeI8: Byte?, defaultI8: Byte, justU8: UByte, maybeU8: UByte?, defaultU8: UByte, justI16: Short, maybeI16: Short?, defaultI16: Short, justU16: UShort, maybeU16: UShort?, defaultU16: UShort, justI32: Int, maybeI32: Int?, defaultI32: Int, justU32: UInt, maybeU32: UInt?, defaultU32: UInt, justI64: Long, maybeI64: Long?, defaultI64: Long, justU64: ULong, maybeU64: ULong?, defaultU64: ULong, justF32: Float, maybeF32: Float?, defaultF32: Float, justF64: Double, maybeF64: Double?, defaultF64: Double, justBool: Boolean, maybeBool: Boolean?, defaultBool: Boolean, justEnum: Byte, maybeEnum: Byte?, defaultEnum: Byte) : Int {
            builder.startTable(36)
            addDefaultF64(builder, defaultF64)
            maybeF64?.run { addMaybeF64(builder, maybeF64) }
            addJustF64(builder, justF64)
            addDefaultU64(builder, defaultU64)
            maybeU64?.run { addMaybeU64(builder, maybeU64) }
            addJustU64(builder, justU64)
            addDefaultI64(builder, defaultI64)
            maybeI64?.run { addMaybeI64(builder, maybeI64) }
            addJustI64(builder, justI64)
            addDefaultF32(builder, defaultF32)
            maybeF32?.run { addMaybeF32(builder, maybeF32) }
            addJustF32(builder, justF32)
            addDefaultU32(builder, defaultU32)
            maybeU32?.run { addMaybeU32(builder, maybeU32) }
            addJustU32(builder, justU32)
            addDefaultI32(builder, defaultI32)
            maybeI32?.run { addMaybeI32(builder, maybeI32) }
            addJustI32(builder, justI32)
            addDefaultU16(builder, defaultU16)
            maybeU16?.run { addMaybeU16(builder, maybeU16) }
            addJustU16(builder, justU16)
            addDefaultI16(builder, defaultI16)
            maybeI16?.run { addMaybeI16(builder, maybeI16) }
            addJustI16(builder, justI16)
            addDefaultEnum(builder, defaultEnum)
            maybeEnum?.run { addMaybeEnum(builder, maybeEnum) }
            addJustEnum(builder, justEnum)
            addDefaultBool(builder, defaultBool)
            maybeBool?.run { addMaybeBool(builder, maybeBool) }
            addJustBool(builder, justBool)
            addDefaultU8(builder, defaultU8)
            maybeU8?.run { addMaybeU8(builder, maybeU8) }
            addJustU8(builder, justU8)
            addDefaultI8(builder, defaultI8)
            maybeI8?.run { addMaybeI8(builder, maybeI8) }
            addJustI8(builder, justI8)
            return endScalarStuff(builder)
        }
        fun startScalarStuff(builder: FlatBufferBuilder) = builder.startTable(36)
        fun addJustI8(builder: FlatBufferBuilder, justI8: Byte) = builder.addByte(0, justI8, 0)
        fun addMaybeI8(builder: FlatBufferBuilder, maybeI8: Byte) = builder.addByte(1, maybeI8, 0)
        fun addDefaultI8(builder: FlatBufferBuilder, defaultI8: Byte) = builder.addByte(2, defaultI8, 42)
        fun addJustU8(builder: FlatBufferBuilder, justU8: UByte) = builder.addByte(3, justU8.toByte(), 0)
        fun addMaybeU8(builder: FlatBufferBuilder, maybeU8: UByte) = builder.addByte(4, maybeU8.toByte(), 0)
        fun addDefaultU8(builder: FlatBufferBuilder, defaultU8: UByte) = builder.addByte(5, defaultU8.toByte(), 42)
        fun addJustI16(builder: FlatBufferBuilder, justI16: Short) = builder.addShort(6, justI16, 0)
        fun addMaybeI16(builder: FlatBufferBuilder, maybeI16: Short) = builder.addShort(7, maybeI16, 0)
        fun addDefaultI16(builder: FlatBufferBuilder, defaultI16: Short) = builder.addShort(8, defaultI16, 42)
        fun addJustU16(builder: FlatBufferBuilder, justU16: UShort) = builder.addShort(9, justU16.toShort(), 0)
        fun addMaybeU16(builder: FlatBufferBuilder, maybeU16: UShort) = builder.addShort(10, maybeU16.toShort(), 0)
        fun addDefaultU16(builder: FlatBufferBuilder, defaultU16: UShort) = builder.addShort(11, defaultU16.toShort(), 42)
        fun addJustI32(builder: FlatBufferBuilder, justI32: Int) = builder.addInt(12, justI32, 0)
        fun addMaybeI32(builder: FlatBufferBuilder, maybeI32: Int) = builder.addInt(13, maybeI32, 0)
        fun addDefaultI32(builder: FlatBufferBuilder, defaultI32: Int) = builder.addInt(14, defaultI32, 42)
        fun addJustU32(builder: FlatBufferBuilder, justU32: UInt) = builder.addInt(15, justU32.toInt(), 0)
        fun addMaybeU32(builder: FlatBufferBuilder, maybeU32: UInt) = builder.addInt(16, maybeU32.toInt(), 0)
        fun addDefaultU32(builder: FlatBufferBuilder, defaultU32: UInt) = builder.addInt(17, defaultU32.toInt(), 42)
        fun addJustI64(builder: FlatBufferBuilder, justI64: Long) = builder.addLong(18, justI64, 0L)
        fun addMaybeI64(builder: FlatBufferBuilder, maybeI64: Long) = builder.addLong(19, maybeI64, 0)
        fun addDefaultI64(builder: FlatBufferBuilder, defaultI64: Long) = builder.addLong(20, defaultI64, 42L)
        fun addJustU64(builder: FlatBufferBuilder, justU64: ULong) = builder.addLong(21, justU64.toLong(), 0)
        fun addMaybeU64(builder: FlatBufferBuilder, maybeU64: ULong) = builder.addLong(22, maybeU64.toLong(), 0)
        fun addDefaultU64(builder: FlatBufferBuilder, defaultU64: ULong) = builder.addLong(23, defaultU64.toLong(), 42)
        fun addJustF32(builder: FlatBufferBuilder, justF32: Float) = builder.addFloat(24, justF32, 0.0)
        fun addMaybeF32(builder: FlatBufferBuilder, maybeF32: Float) = builder.addFloat(25, maybeF32, 0.0)
        fun addDefaultF32(builder: FlatBufferBuilder, defaultF32: Float) = builder.addFloat(26, defaultF32, 42.0)
        fun addJustF64(builder: FlatBufferBuilder, justF64: Double) = builder.addDouble(27, justF64, 0.0)
        fun addMaybeF64(builder: FlatBufferBuilder, maybeF64: Double) = builder.addDouble(28, maybeF64, 0.0)
        fun addDefaultF64(builder: FlatBufferBuilder, defaultF64: Double) = builder.addDouble(29, defaultF64, 42.0)
        fun addJustBool(builder: FlatBufferBuilder, justBool: Boolean) = builder.addBoolean(30, justBool, false)
        fun addMaybeBool(builder: FlatBufferBuilder, maybeBool: Boolean) = builder.addBoolean(31, maybeBool, false)
        fun addDefaultBool(builder: FlatBufferBuilder, defaultBool: Boolean) = builder.addBoolean(32, defaultBool, true)
        fun addJustEnum(builder: FlatBufferBuilder, justEnum: Byte) = builder.addByte(33, justEnum, 0)
        fun addMaybeEnum(builder: FlatBufferBuilder, maybeEnum: Byte) = builder.addByte(34, maybeEnum, 0)
        fun addDefaultEnum(builder: FlatBufferBuilder, defaultEnum: Byte) = builder.addByte(35, defaultEnum, 1)
        fun endScalarStuff(builder: FlatBufferBuilder) : Int {
            val o = builder.endTable()
            return o
        }
        fun finishScalarStuffBuffer(builder: FlatBufferBuilder, offset: Int) = builder.finish(offset, "NULL")
        fun finishSizePrefixedScalarStuffBuffer(builder: FlatBufferBuilder, offset: Int) = builder.finishSizePrefixed(offset, "NULL")
    }
}
