package com.fasterxml.jackson.dataformat.smile;

Class for miscellaneous helper methods.
/** * Class for miscellaneous helper methods. */
public class SmileUtil { public static int zigzagEncode(int input) { // canonical, avoids branching, which matters more than alu ops return (input << 1) ^ (input >> 31); /* if (input < 0) { return (input << 1) ^ -1; } return (input << 1); */ } public static int zigzagDecode(int encoded) { // canonical, avoids branching return (encoded >>> 1) ^ (-(encoded & 1)); /* if ((encoded & 1) == 0) { return (encoded >>> 1); } return (encoded >>> 1) ^ -1; */ } public static long zigzagEncode(long input) { // Canonical version return (input << 1) ^ (input >> 63); /* if (input < 0L) { return (input << 1) ^ -1L; } return (input << 1); */ } public static long zigzagDecode(long encoded) { // canonical: return (encoded >>> 1) ^ (-(encoded & 1)); /* if ((encoded & 1) == 0) { return (encoded >>> 1); } return (encoded >>> 1) ^ -1L; */ } }