Skip to content
Snippets Groups Projects
Select Git revision
  • 0bff78cd1b45541b70c9f703b7d10050c4df156f
  • master default protected
  • greenkeeper/webpack-4.10.1
  • greenkeeper/webpack-4.10.0
  • greenkeeper/webpack-4.9.2
  • greenkeeper/promise-polyfill-8.0.0
  • greenkeeper/webpack-4.9.1
  • greenkeeper/webpack-4.9.0
  • greenkeeper/webpack-manifest-plugin-2.0.3
  • greenkeeper/update-to-node-10
  • gh-pages
  • greenkeeper/webpack-4.8.3
  • greenkeeper/webpack-4.8.2
  • greenkeeper/webpack-4.7.0
  • greenkeeper/webpack-manifest-plugin-2.0.2
  • greenkeeper/webpack-manifest-plugin-2.0.1
  • greenkeeper/style-loader-0.21.0
  • greenkeeper/webpack-4.6.0
  • greenkeeper/sass-loader-7.0.1
  • greenkeeper/sass-loader-7.0.0
  • greenkeeper/webpack-manifest-plugin-2.0.0
  • 2.7.3
  • 2.7.2
  • 2.7.1
  • 2.7.0
  • 2.6.6
  • 2.6.5
  • 2.6.4
  • 2.6.3
  • 2.6.2
  • 2.6.1
  • 2.6.0
  • 2.5.5
  • 2.5.4
  • 2.5.3
  • 2.5.2
  • 2.5.1
  • 2.5.0
  • 2.4.0
  • 2.3.0
  • 2.2.6
41 results

scripts

  • Clone with SSH
  • Clone with HTTPS
  • Kotlin Bitflags

    Kotlin-Bitflags is a utility library to simplify implementing bitflags in Kotlin. It integrates with Kotlin unsigned types and Java Enumsets. This especially useful when interacting with binary protocols from Kotlin.

    Using Kotlin-Bitflags

    After adding this module to your dependencies, you'll have to implement the related interfaces in your classes:

    enum class MessageFlag(
      override val value: UInt,
    ) : Flag<UInt> {
      Self(0x01u),
      Highlight(0x02u),
      Redirected(0x04u),
      ServerMsg(0x08u),
      Backlog(0x80u);
    
      companion object : Flags<UInt, MessageFlag> {
        override val all: Set<MessageFlag> = values().toEnumSet()
      }
    }

    This allows you to then use this elsewhere to e.g initialize a field from discrete values

    // Construct from varargs or an array
    val field = MessageFlag.of(MessageFlag.Self, MessageFlag.Highlight)
    
    val values = listOf(MessageFlag.Self, MessageFlag.Highlight)
    // Or from a collection
    val field = MessageFlag.of(values)
    // Or use the to helper
    val field = values.toEnumSet()

    You can also convert such a field into the raw binary value easily

    // Returns in this case UInt
    field.toBits()

    Additional utility functions are available:

    // Empty field
    MessageFlag.none()
    // Get all non-null values
    MessageFlag.validValues()