Package org.deuce.transaction.lsa.field

Source Code of org.deuce.transaction.lsa.field.Field

package org.deuce.transaction.lsa.field;

import org.deuce.reflection.UnsafeHolder;
import org.deuce.transform.Exclude;

import sun.misc.Unsafe;

/**
* @author Pascal Felber
*/
@Exclude
public class Field {

  @Exclude
  static public enum Type {
    BYTE, BOOLEAN, CHAR, SHORT, INT, LONG, FLOAT, DOUBLE, OBJECT
  }

  static public Object getValue(Object reference, long field, Type type) {
    Unsafe unsafe = UnsafeHolder.getUnsafe();
    switch (type) {
    case BYTE:
      return unsafe.getByte(reference, field);
    case BOOLEAN:
      return unsafe.getBoolean(reference, field);
    case CHAR:
      return unsafe.getChar(reference, field);
    case SHORT:
      return unsafe.getShort(reference, field);
    case INT:
      return unsafe.getInt(reference, field);
    case LONG:
      return unsafe.getLong(reference, field);
    case FLOAT:
      return unsafe.getFloat(reference, field);
    case DOUBLE:
      return unsafe.getDouble(reference, field);
    case OBJECT:
      return unsafe.getObject(reference, field);
    }
    return null;
  }

  static public void putValue(Object reference, long field, Object value, Type type) {
    Unsafe unsafe = UnsafeHolder.getUnsafe();
    switch (type) {
    case BYTE:
      unsafe.putByte(reference, field, (Byte) value);
      break;
    case BOOLEAN:
      unsafe.putBoolean(reference, field, (Boolean) value);
      break;
    case CHAR:
      unsafe.putChar(reference, field, (Character) value);
      break;
    case SHORT:
      unsafe.putShort(reference, field, (Short) value);
      break;
    case INT:
      unsafe.putInt(reference, field, (Integer) value);
      break;
    case LONG:
      unsafe.putLong(reference, field, (Long) value);
      break;
    case FLOAT:
      unsafe.putFloat(reference, field, (Float) value);
      break;
    case DOUBLE:
      unsafe.putDouble(reference, field, (Double) value);
      break;
    case OBJECT:
      unsafe.putObject(reference, field, value);
      break;
    }
  }
}
TOP

Related Classes of org.deuce.transaction.lsa.field.Field

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.