package jdslx.core.api;

/**
 * <p>
 * This interface abstracts read access of attribute information
 * from the specific organization of the data. In JDSL, attributes are
 * typically stored as decorations or in hashtables. Examples for other
 * forms of representation are the elements of a data structure, constants,
 * or computation on the fly (non-materialized attributes).
 * To avoid dependency on specific forms of representation, it is 
 * recommended that algorithms access and provide attribute information
 * via objects implementing this interface.
 * </p><p>
 * See: Dietmar K&uuml;hl and Karsten Weihe, 
 * `Data Access Templates', <i>C++ Report</i> 9(7):15,18-21, 1997
 * </p>
 * 
 * @author Ulrik Brandes 
 * @version 1.0, 07/31/99
**/

public interface InspectableAttribute {

  /**
   * Read access to an attribute.
   *
   * @return attribute value of <code>elem</code>
  **/

  Object get(Object elem);

}
