예제 #1
0
/** Manipulates relationship group cache field containing NEXT and TYPE. */
public class NextFieldManipulator {
  private static final LongBitsManipulator MANIPULATOR =
      new LongBitsManipulator(64 - 16 /*next*/, 16 /*type*/);
  private static final long EMPTY_FIELD = MANIPULATOR.template(true, false);

  private NextFieldManipulator() {}

  public static long setNext(long field, long next) {
    return MANIPULATOR.set(field, 0, next);
  }

  public static long getNext(long field) {
    return MANIPULATOR.get(field, 0);
  }

  public static long setType(long field, int type) {
    return MANIPULATOR.set(field, 1, type);
  }

  public static int getType(long field) {
    return Utils.safeCastLongToInt(MANIPULATOR.get(field, 1));
  }

  public static long initialFieldWithType(int type) {
    return setType(EMPTY_FIELD, type);
  }
}
예제 #2
0
 public static int getType(long field) {
   return Utils.safeCastLongToInt(MANIPULATOR.get(field, 1));
 }
예제 #3
0
 public static long setType(long field, int type) {
   return MANIPULATOR.set(field, 1, type);
 }
예제 #4
0
 public static long getNext(long field) {
   return MANIPULATOR.get(field, 0);
 }
예제 #5
0
 public static long setNext(long field, long next) {
   return MANIPULATOR.set(field, 0, next);
 }