RLPark 1.0.0
Reinforcement Learning Framework in Java
|
00001 package zephyr.plugin.core.api.internal.codeparser.codetree; 00002 00003 import java.util.Arrays; 00004 00005 import zephyr.plugin.core.api.internal.codeparser.interfaces.CodeNode; 00006 import zephyr.plugin.core.api.internal.codeparser.interfaces.ParentNode; 00007 00008 public abstract class AbstractCodeNode implements CodeNode { 00009 static private final String[] PathRoot = new String[] {}; 00010 private final ParentNode parent; 00011 private final String label; 00012 private final int level; 00013 private String[] path = null; 00014 00015 protected AbstractCodeNode(String label, ParentNode parent, int level) { 00016 this.parent = parent; 00017 this.label = label; 00018 this.level = parent != null ? Math.max(level, parent.level()) : level; 00019 } 00020 00021 @Override 00022 public int level() { 00023 return level; 00024 } 00025 00026 @Override 00027 public ParentNode parent() { 00028 return parent; 00029 } 00030 00031 @Override 00032 public String label() { 00033 return label; 00034 } 00035 00036 @Override 00037 public String[] path() { 00038 if (path == null) { 00039 String[] parentPath = parent != null ? parent.path() : PathRoot; 00040 path = Arrays.copyOf(parentPath, parentPath.length + 1); 00041 path[path.length - 1] = label; 00042 } 00043 return path; 00044 } 00045 }