elect
09/07/2017, 8:02 AMbamdmux
09/07/2017, 9:18 AMclass IntFlag(var value: Int = 0) {
fun set(f: FLAGS) { value = value or f.value }
fun unset(f: FLAGS) { value = value and f.value.inv() }
fun flagged() = FLAGS.values().filter { (value and it.value) != 0 }
}
enum class FLAGS(val value: Int) {
FIRST(1), SECOND(2), THIRD(4), FOURTH(8) //Use whatever tags you need
}
voddan
09/07/2017, 9:35 AMbamdmux
09/07/2017, 9:44 AMelect
09/07/2017, 10:11 AMbamdmux
09/07/2017, 10:28 AMobject FlagHelper {
val flag = IntFlag()
fun apply_flags(init: Int = 0, actions: IntFlag.() -> Unit) = with(flag) {
flag.value = init
actions()
value
}
}
elect
09/07/2017, 10:29 AMbamdmux
09/07/2017, 10:34 AM