/*
 * Copyright (c) 2012 Mateusz Parzonka, Eric Bodden
 * All rights reserved. This program and the accompanying materials
 * are made available under the terms of the Eclipse Public License v1.0
 * which accompanies this distribution, and is available at
 * http://www.eclipse.org/legal/epl-v10.html
 *
 * Contributors:
 * Mateusz Parzonka - initial API and implementation
 */
package prm4j.indexing.treebased;

/*
 * Copyright (c) 2012 Mateusz Parzonka, Eric Bodden
 * All rights reserved. This program and the accompanying materials
 * are made available under the terms of the Eclipse Public License v1.0
 * which accompanies this distribution, and is available at
 * http://www.eclipse.org/legal/epl-v10.html
 *
 * Contributors:
 * Mateusz Parzonka - initial API and implementation
 */
import prm4j.indexing.AbstractBaseMonitor;
import prm4j.logic.NodeContext;

/**
 * @param <A>
 *            the type of the auxiliary data usable by base monitors
 */
public interface Node<A> {

    /**
     * The node is used in {@link NodeMap}s with similar functionality as map entries.
     *
     * @return TODO comment
     */
    public Node<A> next();

    /**
     *
     * @return monitor matching the node's binding or <code>null</code>, if the queried path is no prefix of a final
     *         path.
     */
    public AbstractBaseMonitor<A> getMonitor();

    public void setMonitor(AbstractBaseMonitor<A> monitor);

    /**
     * Returns a monitor set which represents a (sometimes not real) subset of instances which are more informative than
     * the instance represented by this node.
     *
     * @param setId
     *            the id of the parameter set. <br>
     *            Ids <i>should</i> be in the range [0, n].<br>
     *            Id 0 <b>must</b> select the set of all instances which are strictly more informative than this node.
     *            <p>
     *            example: this node is a1b1, set 0 can denote all a1b1c and a1b1d, where 1 denote all a1b1d and set 2
     *            all a1b1d
     * @return
     */
    public MonitorSet<A> getMonitorSet(int parameterSetId);

    public NodeMap<A> getNodeMap();

    public NodeContext getNodeContext();

}

@@ -987,162 +987,38 @@
     
-/**%0A     * The node is used in %7B@link NodeMap%7Ds with similar functionality as map entries.%0A     *%0A     * @return TODO comment%0A     */%0A    public Node%3CA%3E n
+public NodeContext getNodeCont
 ext(
@@ -1288,24 +1288,61 @@
  monitor);%0A%0A
+    public NodeMap%3CA%3E getNodeMap();%0A%0A
     /**%0A    
@@ -2027,75 +2027,162 @@
     
-public NodeMap%3CA%3E getNodeMap();%0A%0A    public NodeContext getNodeCont
+/**%0A     * The node is used in %7B@link NodeMap%7Ds with similar functionality as map entries.%0A     *%0A     * @return TODO comment%0A     */%0A    public Node%3CA%3E n
 ext(

Reorder methods