RLPark 1.0.0
Reinforcement Learning Framework in Java
|
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 }