/** 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); } }
public static int getType(long field) { return Utils.safeCastLongToInt(MANIPULATOR.get(field, 1)); }
public static long setType(long field, int type) { return MANIPULATOR.set(field, 1, type); }
public static long getNext(long field) { return MANIPULATOR.get(field, 0); }
public static long setNext(long field, long next) { return MANIPULATOR.set(field, 0, next); }