content: /*
   * Licensed to the Apache Software Foundation (ASF) under one
   * or more contributor license agreements.  See the NOTICE file
   * distributed with this work for additional information
   * regarding copyright ownership.  The ASF licenses this file
   * to you under the Apache License, Version 2.0 (the
   * "License"); you may not use this file except in compliance
   * with the License.  You may obtain a copy of the License at
   *
   *   http://www.apache.org/licenses/LICENSE-2.0
   *
   * Unless required by applicable law or agreed to in writing,
   * software distributed under the License is distributed on an
   * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
   * KIND, either express or implied.  See the License for the
   * specific language governing permissions and limitations
   * under the License.
   */
  
  package org.apache.cassandra.utils;
  
  import com.google.common.primitives.UnsignedInteger;
  import com.google.common.primitives.UnsignedInts;
  
  /**
   * This class packages several UInt utility methods so we can easily change it's implementation when needed.
   */
  public class CassandraUInt
  {
      /**
       * Returns the long representation of the maximum value we can hold
       */
      public final static long MAX_VALUE_LONG = UnsignedInteger.MAX_VALUE.longValue();
      /**
       * Returns the UInt representation of the maximum value we can hold
       */
      public final static int MAX_VALUE_UINT = UnsignedInteger.MAX_VALUE.intValue();
      
      /**
       * Converts a long to it's unsigned integer representation
       * 
       * @param value A long between 0 and 2<sup>32</sup>-1 inclusive
       * @return an unsigned integer representation of the long
       * @throws IllegalArgumentException if value '< 0' or '>= 2<sup>32</sup>'
       */
      public static int fromLong(long value)
      {
          return UnsignedInts.checkedCast(value);
      }
  
      /**
       * The same but works on an array on longs
       * 
       */
      public static int[] fromLong(long[] values)
      {
          int[] delTimesUints = new int[values.length];
          for (int i=0; i < values.length; i++)
              delTimesUints[i] = CassandraUInt.fromLong(values[i]);
          return delTimesUints;
      }
  
      /**
       * Returns the long resulting from parsing the int as an unsigned integer
       * 
       * @param value Unsigned integer representation of the long
       * @return The long resulting from parsing the int as an unsigned integer
       */
      public static long toLong(int value)
      {
          return UnsignedInts.toLong(value);
      }
  
      /**
       * Compare 2 Uints
       *
       * @return < 0 if x is less than y. > 0 if x is greater than y. Zero if they are equal
       */
      public static int compare(int x, int y)
      {
          return UnsignedInts.compare(x, y);
      }
  }
  