package edu.neu.ccs.demeter.aplib;

import java.util.Collection;

/** An encapsulated strategy consisting of a strategy graph S, sets of
    source and target nodes s and t (subsets of nodes in S), a name
    relation N from nodes in S to symbolic names (strings), and a
    constraint map B from edges in S to predicates over symbolic
    elements. */
public interface SimpleStrategyI extends StrategyI {
  /** The strategy graph S. */
  StrategyGraphI getStrategyGraph();

  /** The source set s, a collection of nodes in the strategy graph S. */
  Collection getSources();

  /** The target set t, a collection of nodes in the strategy graph S. */
  Collection getTargets();

  /** The set N(v), a collection of symbolic names (strings)
      corresponding to node v in the strategy graph S.  Return null if v
      is a wildcard node, intended to map to all class graph nodes. */
  Collection getNames(Object v);

  /** The constraint map B.  Return null for B<sub>true</sub>, in which all
      predicates return true. */
  ConstraintMapI getConstraintMap();
}

