001/* 002 * Configurate 003 * Copyright (C) zml and Configurate contributors 004 * 005 * Licensed under the Apache License, Version 2.0 (the "License"); 006 * you may not use this file except in compliance with the License. 007 * You may obtain a copy of the License at 008 * 009 * http://www.apache.org/licenses/LICENSE-2.0 010 * 011 * Unless required by applicable law or agreed to in writing, software 012 * distributed under the License is distributed on an "AS IS" BASIS, 013 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 014 * See the License for the specific language governing permissions and 015 * limitations under the License. 016 */ 017package ninja.leaping.configurate.transformation; 018 019import org.checkerframework.checker.nullness.qual.NonNull; 020 021import java.util.Iterator; 022 023/** 024 * Represents the path to a given node. 025 */ 026public interface NodePath extends Iterable<Object> { 027 028 /** 029 * Gets a specific element from the path array 030 * 031 * @param i The index to get 032 * @return Object at the index 033 */ 034 Object get(int i); 035 036 /** 037 * Gets the length of the path 038 * 039 * @return Length of the path array 040 */ 041 int size(); 042 043 /** 044 * Returns a copy of the original path array 045 * 046 * @return the copied array 047 */ 048 Object[] getArray(); 049 050 /** 051 * Returns an iterator over the path. 052 * 053 * @return An iterator of the path 054 */ 055 @NonNull 056 @Override 057 Iterator<Object> iterator(); 058}