private static LinkedHashMap<String, Node> findNamedNodeChildren(Node node) { LinkedHashMap<String, Node> nodes = new LinkedHashMap<>(); NodeClass nodeClass = NodeClass.get(node); for (Object field : nodeClass.getNodeFields()) { if (nodeClass.isChildField(field)) { Object value = nodeClass.getFieldObject(field, node); if (value != null) { nodes.put(nodeClass.getFieldName(field), (Node) value); } } else if (nodeClass.isChildrenField(field)) { Object value = nodeClass.getFieldObject(field, node); if (value != null) { Object[] children = (Object[]) value; for (int i = 0; i < children.length; i++) { if (children[i] != null) { nodes.put(nodeClass.getFieldName(field) + "[" + i + "]", (Node) children[i]); } } } } } return nodes; }
private static LinkedHashMap<String, Node> findNamedNodeChildren(Node node) { LinkedHashMap<String, Node> nodes = new LinkedHashMap<>(); NodeClass nodeClass = NodeClass.get(node); for (Object field : nodeClass.getNodeFields()) { if (nodeClass.isChildField(field)) { Object value = nodeClass.getFieldObject(field, node); if (value != null) { nodes.put(nodeClass.getFieldName(field), (Node) value); } } else if (nodeClass.isChildrenField(field)) { Object value = nodeClass.getFieldObject(field, node); if (value != null) { Object[] children = (Object[]) value; for (int i = 0; i < children.length; i++) { if (children[i] != null) { nodes.put(nodeClass.getFieldName(field) + "[" + i + "]", (Node) children[i]); } } } } } return nodes; }
for (Object field : nodeClass.getNodeFields()) { if (nodeClass.isChildField(field)) { if (nodeClass.getFieldObject(field, parent) == oldChild) { return nodeClass.getFieldType(field).isAssignableFrom(newChild.getClass()); Object arrayObject = nodeClass.getFieldObject(field, parent); if (arrayObject != null) { Object[] array = (Object[]) arrayObject;
/** @since 0.8 or earlier */ public static List<Node> findNodeChildren(Node node) { CompilerAsserts.neverPartOfCompilation("do not call Node.findNodeChildren from compiled code"); List<Node> nodes = new ArrayList<>(); NodeClass nodeClass = node.getNodeClass(); for (Object nodeField : nodeClass.getNodeFields()) { if (nodeClass.isChildField(nodeField)) { Object child = nodeClass.getFieldObject(nodeField, node); if (child != null) { nodes.add((Node) child); } } else if (nodeClass.isChildrenField(nodeField)) { Object[] children = (Object[]) nodeClass.getFieldObject(nodeField, node); if (children != null) { for (Object child : children) { if (child != null) { nodes.add((Node) child); } } } } else if (nodeClass.nodeFieldsOrderedByKind()) { break; } } return nodes; }
/** @since 0.8 or earlier */ public static List<Node> findNodeChildren(Node node) { CompilerAsserts.neverPartOfCompilation("do not call Node.findNodeChildren from compiled code"); List<Node> nodes = new ArrayList<>(); NodeClass nodeClass = node.getNodeClass(); for (Object nodeField : nodeClass.getNodeFields()) { if (nodeClass.isChildField(nodeField)) { Object child = nodeClass.getFieldObject(nodeField, node); if (child != null) { nodes.add((Node) child); } } else if (nodeClass.isChildrenField(nodeField)) { Object[] children = (Object[]) nodeClass.getFieldObject(nodeField, node); if (children != null) { for (Object child : children) { if (child != null) { nodes.add((Node) child); } } } } else if (nodeClass.nodeFieldsOrderedByKind()) { break; } } return nodes; }
private void advance() { if (advanceChildren()) { return; } while (fieldsIndex < fields.length) { Object field = fields[fieldsIndex++]; if (nodeClass.isChildField(field)) { next = (Node) nodeClass.getFieldObject(field, node); if (next != null) { return; } } else if (nodeClass.isChildrenField(field)) { children = (Object[]) nodeClass.getFieldObject(field, node); childrenIndex = 0; if (advanceChildren()) { return; } } else if (nodeClass.nodeFieldsOrderedByKind()) { break; } } next = null; }
for (Object field : nodeClass.getNodeFields()) { if (nodeClass.isChildField(field)) { if (nodeClass.getFieldObject(field, parent) == oldChild) { return nodeClass.getFieldType(field).isAssignableFrom(newChild.getClass()); Object arrayObject = nodeClass.getFieldObject(field, parent); if (arrayObject != null) { Object[] array = (Object[]) arrayObject;
private void advance() { if (advanceChildren()) { return; } while (fieldsIndex < fields.length) { Object field = fields[fieldsIndex++]; if (nodeClass.isChildField(field)) { next = (Node) nodeClass.getFieldObject(field, node); if (next != null) { return; } } else if (nodeClass.isChildrenField(field)) { children = (Object[]) nodeClass.getFieldObject(field, node); childrenIndex = 0; if (advanceChildren()) { return; } } else if (nodeClass.nodeFieldsOrderedByKind()) { break; } } next = null; }
private static String getNodeFieldName(Node parent, Node node, String defaultName) { NodeClass nodeClass = parent.getNodeClass(); for (Object field : nodeClass.getNodeFields()) { if (nodeClass.isChildField(field)) { if (nodeClass.getFieldObject(field, parent) == node) { return nodeClass.getFieldName(field); } } else if (nodeClass.isChildrenField(field)) { int index = 0; for (Object arrayNode : (Object[]) nodeClass.getFieldObject(field, parent)) { if (arrayNode == node) { return nodeClass.getFieldName(field) + "[" + index + "]"; } index++; } } else if (nodeClass.nodeFieldsOrderedByKind()) { break; } } return defaultName; }
static boolean forEachChildRecursive(Node parent, NodeVisitor visitor) { NodeClass nodeClass = parent.getNodeClass(); for (Object field : nodeClass.getNodeFields()) { if (nodeClass.isChildField(field)) { if (!visitChild((Node) nodeClass.getFieldObject(field, parent), visitor)) { return false; } } else if (nodeClass.isChildrenField(field)) { Object arrayObject = nodeClass.getFieldObject(field, parent); if (arrayObject == null) { continue; } Object[] array = (Object[]) arrayObject; for (int i = 0; i < array.length; i++) { if (!visitChild((Node) array[i], visitor)) { return false; } } } else if (nodeClass.nodeFieldsOrderedByKind()) { break; } } return true; }
private static String getNodeFieldName(Node parent, Node node, String defaultName) { NodeClass nodeClass = parent.getNodeClass(); for (Object field : nodeClass.getNodeFields()) { if (nodeClass.isChildField(field)) { if (nodeClass.getFieldObject(field, parent) == node) { return nodeClass.getFieldName(field); } } else if (nodeClass.isChildrenField(field)) { int index = 0; for (Object arrayNode : (Object[]) nodeClass.getFieldObject(field, parent)) { if (arrayNode == node) { return nodeClass.getFieldName(field) + "[" + index + "]"; } index++; } } else if (nodeClass.nodeFieldsOrderedByKind()) { break; } } return defaultName; }
static boolean forEachChildRecursive(Node parent, NodeVisitor visitor) { NodeClass nodeClass = parent.getNodeClass(); for (Object field : nodeClass.getNodeFields()) { if (nodeClass.isChildField(field)) { if (!visitChild((Node) nodeClass.getFieldObject(field, parent), visitor)) { return false; } } else if (nodeClass.isChildrenField(field)) { Object arrayObject = nodeClass.getFieldObject(field, parent); if (arrayObject == null) { continue; } Object[] array = (Object[]) arrayObject; for (int i = 0; i < array.length; i++) { if (!visitChild((Node) array[i], visitor)) { return false; } } } else if (nodeClass.nodeFieldsOrderedByKind()) { break; } } return true; }
static int adoptChildrenAndCountHelper(Node currentNode) { int count = 0; NodeClass clazz = currentNode.getNodeClass(); for (Object field : clazz.getNodeFields()) { if (clazz.isChildField(field)) { Object child = clazz.getFieldObject(field, currentNode); if (child != null) { Node node = (Node) child; count += currentNode.adoptAndCountHelper(node); } } else if (clazz.isChildrenField(field)) { Object arrayObject = clazz.getFieldObject(field, currentNode); if (arrayObject == null) { continue; } Object[] array = (Object[]) arrayObject; for (int i = 0; i < array.length; i++) { Object child = array[i]; if (child != null) { Node node = (Node) child; count += currentNode.adoptAndCountHelper(node); } } } else if (clazz.nodeFieldsOrderedByKind()) { break; } } return count; }
static int adoptChildrenAndCountHelper(Node currentNode) { int count = 0; NodeClass clazz = currentNode.getNodeClass(); for (Object field : clazz.getNodeFields()) { if (clazz.isChildField(field)) { Object child = clazz.getFieldObject(field, currentNode); if (child != null) { Node node = (Node) child; count += currentNode.adoptAndCountHelper(node); } } else if (clazz.isChildrenField(field)) { Object arrayObject = clazz.getFieldObject(field, currentNode); if (arrayObject == null) { continue; } Object[] array = (Object[]) arrayObject; for (int i = 0; i < array.length; i++) { Object child = array[i]; if (child != null) { Node node = (Node) child; count += currentNode.adoptAndCountHelper(node); } } } else if (clazz.nodeFieldsOrderedByKind()) { break; } } return count; }
Object child = nodeClass.getFieldObject(field, parent); if (child != null) { if (!visitor.visit((Node) child)) { Object arrayObject = nodeClass.getFieldObject(field, parent); if (arrayObject != null) { Object[] array = (Object[]) arrayObject;
Node child = (Node) nodeClass.getFieldObject(field, orig); if (child != null) { Node clonedChild = child.deepCopy(); Object[] children = (Object[]) nodeClass.getFieldObject(field, orig); if (children != null) { Object[] clonedChildren = (Object[]) Array.newInstance(children.getClass().getComponentType(), children.length); Object cloneable = nodeClass.getFieldObject(field, clone); if (cloneable != null && cloneable == nodeClass.getFieldObject(field, orig)) { nodeClass.putFieldObject(field, clone, ((NodeCloneable) cloneable).clone());
if (nodeClass.getFieldObject(nodeField, parent) == oldChild) { if (adopt) { parent.adoptHelper(newChild); Object arrayObject = nodeClass.getFieldObject(nodeField, parent); if (arrayObject != null) { Object[] array = (Object[]) arrayObject;
if (nodeClass.getFieldObject(nodeField, parent) == oldChild) { if (adopt) { parent.adoptHelper(newChild); Object arrayObject = nodeClass.getFieldObject(nodeField, parent); if (arrayObject != null) { Object[] array = (Object[]) arrayObject;
for (Object field : clazz.getNodeFields()) { if (clazz.isChildField(field)) { Object child = clazz.getFieldObject(field, currentNode); if (child != null) { Node node = (Node) child; Object arrayObject = clazz.getFieldObject(field, currentNode); if (arrayObject == null) { continue;
for (Object field : clazz.getNodeFields()) { if (clazz.isChildField(field)) { Object child = clazz.getFieldObject(field, currentNode); if (child != null) { Node node = (Node) child; Object arrayObject = clazz.getFieldObject(field, currentNode); if (arrayObject == null) { continue;