RLPark 1.0.0
Reinforcement Learning Framework in Java
|
00001 package rlpark.plugin.robot.internal.disco.drops; 00002 00003 00004 import rlpark.plugin.rltoys.math.ranges.Range; 00005 import rlpark.plugin.robot.internal.disco.datatype.ScalarReader; 00006 import rlpark.plugin.robot.internal.sync.LiteByteBuffer; 00007 00008 public class DropBit extends DropData implements ScalarReader { 00009 private final byte bitIndex; 00010 private final byte mask; 00011 00012 public DropBit(String label, int bitIndex) { 00013 this(label, bitIndex, -1); 00014 } 00015 00016 public DropBit(String label, int bitIndex, int index) { 00017 super(label, false, index); 00018 this.bitIndex = (byte) bitIndex; 00019 mask = (byte) (0x01 << bitIndex); 00020 } 00021 00022 @Override 00023 public DropData clone(String label, int index) { 00024 return new DropBit(label, bitIndex, index); 00025 } 00026 00027 @Override 00028 public int getInt(LiteByteBuffer buffer) { 00029 byte b = buffer.get(index); 00030 return (b & mask) != 0 ? 1 : 0; 00031 } 00032 00033 @Override 00034 public void putData(LiteByteBuffer buffer) { 00035 } 00036 00037 @Override 00038 public int size() { 00039 return 0; 00040 } 00041 00042 @Override 00043 public Range range() { 00044 return new Range(0, 1); 00045 } 00046 00047 @Override 00048 public double getDouble(LiteByteBuffer buffer) { 00049 return getInt(buffer); 00050 } 00051 }