1   /*
2    * SPDX-FileCopyrightText: none
3    * SPDX-License-Identifier: CC0-1.0
4    */
5   
6   package dev.metaschema.core.metapath.item;
7   
8   import dev.metaschema.core.metapath.function.IFunction;
9   import dev.metaschema.core.metapath.item.atomic.IAnyAtomicItem;
10  import dev.metaschema.core.metapath.item.function.IArrayItem;
11  import dev.metaschema.core.metapath.item.function.IMapItem;
12  import dev.metaschema.core.metapath.item.node.INodeItem;
13  import edu.umd.cs.findbugs.annotations.NonNull;
14  
15  /**
16   * Use to visit the major types of items.
17   */
18  public interface IItemVisitor {
19    /**
20     * Visit the array item instance.
21     *
22     * @param array
23     *          the instance to visit
24     */
25    void visit(@NonNull IArrayItem<?> array);
26  
27    /**
28     * Visit the map item instance.
29     *
30     * @param map
31     *          the instance to visit
32     */
33    void visit(@NonNull IMapItem<?> map);
34  
35    /**
36     * Visit the node item instance.
37     *
38     * @param node
39     *          the instance to visit
40     */
41    void visit(@NonNull INodeItem node);
42  
43    /**
44     * Visit the atomic item instance.
45     *
46     * @param item
47     *          the instance to visit
48     */
49    void visit(@NonNull IAnyAtomicItem item);
50  
51    /**
52     * Visit the function item instance.
53     *
54     * @param function
55     *          the instance to visit
56     */
57    void visit(@NonNull IFunction function);
58  }