RLPark 1.0.0
Reinforcement Learning Framework in Java

PrimitiveArrayParser.java

Go to the documentation of this file.
00001 package zephyr.plugin.core.api.internal.codeparser.parsers;
00002 
00003 import java.lang.reflect.Array;
00004 import java.lang.reflect.Field;
00005 
00006 import zephyr.plugin.core.api.internal.codeparser.codetree.CodeTrees;
00007 import zephyr.plugin.core.api.internal.codeparser.codetree.PrimitiveArrayNode;
00008 import zephyr.plugin.core.api.internal.codeparser.interfaces.CodeNode;
00009 import zephyr.plugin.core.api.internal.codeparser.interfaces.CodeParser;
00010 import zephyr.plugin.core.api.internal.codeparser.interfaces.FieldParser;
00011 import zephyr.plugin.core.api.internal.codeparser.interfaces.MutableParentNode;
00012 import zephyr.plugin.core.api.internal.parsing.CollectionLabelBuilder;
00013 
00014 
00015 public class PrimitiveArrayParser implements FieldParser {
00016   @Override
00017   public boolean canParse(Object fieldValue) {
00018     Class<? extends Object> fieldClass = fieldValue.getClass();
00019     if (!fieldClass.isArray())
00020       return false;
00021     return CodeTrees.isPrimitive(fieldClass.getComponentType());
00022   }
00023 
00024   @Override
00025   public CodeNode parse(CodeParser codeParser, MutableParentNode parentNode, Field instanceField, String instanceLabel, Object instance) {
00026     String label = CodeTrees.labelOf(instanceField);
00027     int level = CodeTrees.levelOf(instanceField);
00028     int length = Array.getLength(instance);
00029     CollectionLabelBuilder labelBuilder = codeParser.newCollectionLabelBuilder(instanceField, length);
00030     PrimitiveArrayNode<?> arrayPrimitiveNode = PrimitiveArrayNode.createPrimitiveArrayNode(label, parentNode,
00031                                                                                            instance, labelBuilder,
00032                                                                                            level);
00033     parentNode.addChild(arrayPrimitiveNode);
00034     CodeTrees.popupIFN(codeParser, instanceField, arrayPrimitiveNode);
00035     return arrayPrimitiveNode;
00036   }
00037 }
 All Classes Namespaces Files Functions Variables Enumerations
Zephyr
RLPark