package nxm.sys.inc;

import nxm.sys.lib.Table;

/** Marks an object that can be converted into a {@link Table}. The standard convert methods will
    recognize any object that implements this interface and allow them to be converted to a table
    (see {@link nxm.sys.lib.Convert#o2t(Object)}.

    @author  J. Czechowski IV
    @since   NeXtMidas 2.7.1
    @version $Id: Tablizable.java,v 1.3 2014/10/21 18:37:25 ntn Exp $
 */
public interface Tablizable {
  /** Provides a table that represents this object. The table returned will be a new instance such
      that any changes to the table returned have no affect on the object or on any other tables
      created by previous calls to this method. <br>
      <br>
      If two calls are made to this method with intervening changes to the object, they should
      generally be equal to each other using {@link Table#equals(Object)} (this requirement is
      not applicable if the table contains "real time" information that is subject to frequent
      changes).<br>
      <br>
      Although encouraged, it is not required that the table returned be "all inclusive" and contain
      all information held in this object. (There is no requirement that the resulting table
      be equal to this object -- in fact, this this is highly discouraged in most cases.)
      @return A table representing this object.
   */
  Table toTable ();
}
