package com.android.launcher3.util import java.util.StringJoiner import java.util.function.IntFunction object FlagDebugUtils { /** Appends the [flagName] to [str] when the [flag] is set in [flags]. */ @JvmStatic fun appendFlag(str: StringJoiner, flags: Int, flag: Int, flagName: String) { if (flags and flag != 0) { str.add(flagName) } } /** * Produces a human-readable representation of the [current] flags, followed by a diff from from * [previous]. * * The resulting string is intented for logging and debugging. */ @JvmStatic fun formatFlagChange(current: Int, previous: Int, flagSerializer: IntFunction): String { val result = StringJoiner(" ") result.add("[" + flagSerializer.apply(current) + "]") val changed = current xor previous val added = current and changed if (added != 0) { result.add("+[" + flagSerializer.apply(added) + "]") } val removed = previous and changed if (removed != 0) { result.add("-[" + flagSerializer.apply(removed) + "]") } return result.toString() } }