RLPark 1.0.0
Reinforcement Learning Framework in Java

PrimitiveArrayNode.java

Go to the documentation of this file.
00001 package zephyr.plugin.core.api.internal.codeparser.codetree;
00002 
00003 import java.lang.reflect.Array;
00004 
00005 import zephyr.plugin.core.api.internal.codeparser.interfaces.ParentNode;
00006 import zephyr.plugin.core.api.internal.monitoring.abstracts.MonitorContainerNode;
00007 import zephyr.plugin.core.api.internal.parsing.CollectionLabelBuilder;
00008 import zephyr.plugin.core.api.monitoring.abstracts.Monitored;
00009 
00010 
00011 public abstract class PrimitiveArrayNode<T> extends AbstractCodeNode implements MonitorContainerNode,
00012     AbstractPrimitives {
00013   static class PrimitiveDoubleArrayNode extends PrimitiveArrayNode<double[]> {
00014     protected PrimitiveDoubleArrayNode(String label, ParentNode parent, int level,
00015         CollectionLabelBuilder collectionLabelBuilder, double[] array) {
00016       super(label, parent, level, collectionLabelBuilder, array);
00017     }
00018 
00019     @Override
00020     protected Monitored createMonitored(final int i) {
00021       return new Monitored() {
00022         @Override
00023         public double monitoredValue() {
00024           return array[i];
00025         }
00026       };
00027     }
00028   }
00029 
00030   static class PrimitiveIntegerArrayNode extends PrimitiveArrayNode<int[]> {
00031     protected PrimitiveIntegerArrayNode(String label, ParentNode parent, int level,
00032         CollectionLabelBuilder collectionLabelBuilder, int[] array) {
00033       super(label, parent, level, collectionLabelBuilder, array);
00034     }
00035 
00036     @Override
00037     protected Monitored createMonitored(final int i) {
00038       return new Monitored() {
00039         @Override
00040         public double monitoredValue() {
00041           return array[i];
00042         }
00043       };
00044     }
00045   }
00046 
00047   static class PrimitiveFloatArrayNode extends PrimitiveArrayNode<float[]> {
00048     protected PrimitiveFloatArrayNode(String label, ParentNode parent, int level,
00049         CollectionLabelBuilder collectionLabelBuilder, float[] array) {
00050       super(label, parent, level, collectionLabelBuilder, array);
00051     }
00052 
00053     @Override
00054     protected Monitored createMonitored(final int i) {
00055       return new Monitored() {
00056         @Override
00057         public double monitoredValue() {
00058           return array[i];
00059         }
00060       };
00061     }
00062   }
00063 
00064   final protected CollectionLabelBuilder collectionLabelBuilder;
00065   final protected T array;
00066 
00067   protected PrimitiveArrayNode(String label, ParentNode parent, int level,
00068       CollectionLabelBuilder collectionLabelBuilder, T array) {
00069     super(label, parent, level);
00070     this.collectionLabelBuilder = collectionLabelBuilder;
00071     this.array = array;
00072   }
00073 
00074   @Override
00075   public Monitored createMonitored(String label) {
00076     int index = collectionLabelBuilder.indexOf(label, size());
00077     if (index < 0)
00078       return null;
00079     return createMonitored(index);
00080   }
00081 
00082   @Override
00083   public String[] createLabels() {
00084     return collectionLabelBuilder.createLabels(size());
00085   }
00086 
00087   @Override
00088   public Monitored[] createMonitored() {
00089     Monitored[] monitored = new Monitored[size()];
00090     for (int i = 0; i < monitored.length; i++)
00091       monitored[i] = createMonitored(i);
00092     return monitored;
00093   }
00094 
00095   abstract protected Monitored createMonitored(int i);
00096 
00097   @Override
00098   public int size() {
00099     return Array.getLength(array);
00100   }
00101 
00102   static public PrimitiveArrayNode<?> createPrimitiveArrayNode(String label, ParentNode parent, Object array,
00103       CollectionLabelBuilder collectionLabelBuilder, int level) {
00104     if (array.getClass().getComponentType().equals(double.class))
00105       return new PrimitiveDoubleArrayNode(label, parent, level, collectionLabelBuilder, (double[]) array);
00106     else if (array.getClass().getComponentType().equals(float.class))
00107       return new PrimitiveFloatArrayNode(label, parent, level, collectionLabelBuilder, (float[]) array);
00108     if (array.getClass().getComponentType().equals(int.class))
00109       return new PrimitiveIntegerArrayNode(label, parent, level, collectionLabelBuilder, (int[]) array);
00110     return null;
00111   }
00112 }
 All Classes Namespaces Files Functions Variables Enumerations
Zephyr
RLPark