All Downloads are FREE. Search and download functionalities are using the official Maven repository.

commonMain.io.github.alexandrepiveteau.graphs.util.Packing.kt Maven / Gradle / Ivy

@file:Suppress("NOTHING_TO_INLINE")

package io.github.alexandrepiveteau.graphs.util

/** Packs two [Int] values into one [Long] value for use in inline classes. */
@PublishedApi
internal inline fun packInts(val1: Int, val2: Int): Long {
  return val1.toLong().shl(32) or (val2.toLong() and 0xFFFFFFFF)
}

/** Unpacks the first [Int] value in [packInts] from its returned [Long]. */
@PublishedApi
internal inline fun unpackInt1(value: Long): Int {
  return value.shr(32).toInt()
}

/** Unpacks the second [Int] value in [packInts] from its returned [Long]. */
@PublishedApi
internal inline fun unpackInt2(value: Long): Int {
  return value.and(0xFFFFFFFF).toInt()
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy