content: /*
   * HalfNES by Andrew Hoffman
   * Licensed under the GNU GPL Version 3. See LICENSE file
   */
  package com.grapeshot.halfnes;
  
  import java.util.Locale;
  
  public class utils {
  
      private utils() {}
      
      public final static int BIT0 = 1, BIT1 = 2, BIT2 = 4, BIT3 = 8, BIT4 = 16,
              BIT5 = 32, BIT6 = 64, BIT7 = 128, BIT8 = 256, BIT9 = 512,
              BIT10 = 1024, BIT11 = 2048, BIT12 = 4096, BIT13 = 8192,
              BIT14 = 16384, BIT15 = 32768;
  
      public static int setbit(final int num, final int bitnum, final boolean state) {
          return (state) ? (num | (1 << bitnum)) : (num & ~(1 << bitnum));
      }
  
      public static String hex(final int num) {
          String s = Integer.toHexString(num).toUpperCase(Locale.US);
          if ((s.length() & 1) == 1) {
              s = "0" + s;
          }
          return s;
      }
  
      public static String hex(final long num) {
          String s = Long.toHexString(num).toUpperCase(Locale.US);
          if ((s.length() & 1) == 1) {
              s = "0" + s;
          }
          return s;
      }
  
      public static int reverseByte(int nibble) {
          //reverses 8 bits packed into int.
          return (Integer.reverse(nibble) >> 24) & 0xff;
      }
  
      public static void printarray(final int[] a) {
          StringBuilder s = new StringBuilder();
          for (int i : a) {
              s.append(i);
              s.append(", ");
          }
          if (s.length() >= 1) {
              s.deleteCharAt(s.length() - 1);
          }
          s.append("\n");
          System.err.print(s.toString());
      }
  
      public static void printarray(final boolean[] a) {
          StringBuilder s = new StringBuilder();
          for (boolean i : a) {
              s.append(i);
              s.append(", ");
          }
          if (s.length() >= 1) {
              s.deleteCharAt(s.length() - 1);
          }
          s.append("\n");
          System.err.print(s.toString());
      }
  
      public static void printarray(final double[] a) {
          StringBuilder s = new StringBuilder();
          for (double i : a) {
              s.append(i);
              s.append(", ");
          }
          if (s.length() >= 1) {
              s.deleteCharAt(s.length() - 1);
          }
          s.append("\n");
          System.err.print(s.toString());
      }
  
      public static void printarray(final float[] a) {
          StringBuilder s = new StringBuilder();
          for (float i : a) {
              s.append(i);
              s.append(", ");
          }
          if (s.length() >= 1) {
              s.deleteCharAt(s.length() - 1);
          }
          s.append("\n");
          System.err.print(s.toString());
      }
  
      public static void printarray(final Object[] a) {
          StringBuilder s = new StringBuilder();
          for (Object i : a) {
              s.append(i.toString());
              s.append(", ");
          }
          if (s.length() >= 1) {
              s.deleteCharAt(s.length() - 1);
          }
          s.append("\n");
          System.err.print(s.toString());
      }
  
      public static int max(final int[] array) {
          int m = array[0];
          for (Integer i : array) {
              if (i > m) {
                  m = i;
              }
          }
          return m;
      }
  }
  