<?php $isip_window_title = "ISIP Homepage"; ?>
<?php include("/data/isip/www/templates/documentation/header/header.html"); ?>

<!--#set var="isip_page_title" value="AlgorithmContainer" -->
<?php include("/data/isip/www/templates/documentation/body/index_class.html"); ?>
<?php include("/data/isip/www/templates/documentation/body/bar.html"); ?>

<a name="name">
<b>
name:
<a href="/perl/ifc_document.pl?file=$isip/class/algo/AlgorithmContainer/AlgorithmContainer.h">AlgorithmContainer</a> : public <a href="../AlgorithmBase/index.html">AlgorithmBase</a>
</b>

<br><br>

<a name="synopsis">
<b>synopsis:</b>
<br><br>

<blockquote>
<pre>
g++ [flags ...] file ... -l /isip/tools/lib/$ISIP_BINARY/lib_algo.a

#include &lt;AlgorithmContainer.h&gt;

AlgorithmContainer();
AlgorithmContainer(const AlgorithmContainer& arg);
boolean eq(const AlgorithmContainer& arg);
boolean setAlgorithm(ALGORITHM algorithm);
</pre>
</blockquote>

<a name="quick_start">
<b>quick start:</b>
<br><br>

<blockquote>
<pre>
AlgorithmContainer lab;
lab.setGraphTag(14);
</pre>
</blockquote>

<a name="description"> 
<b>description:</b>
<br><br>

The AlgorithmContainer class is used as a dummy placeholder for
subgraphs. This class allows container objects to be specified in a recipe
(via isip_transform_builder) and to be read by isip_transform.

<br><br>
<a name="dependencies">
<b>dependencies:</b>
<br><br>

<ul>
  <li> <a href="../AlgorithmBase/index.html">AlgorithmBase</a>
  <li> <a href="../../math/scalar/Long/index.html">Long</a>
  <li> <a href="../../math/scalar/String/index.html">String</a>
  <li> <a href="../../system/MemoryManager/index.html">MemoryManager</a>
</ul>

<a name="constants">
<b>public constants:</b>
<br><br>

<ul>
  <li> define the class name:
       
       <pre><a href="/perl/ifc_document.pl?file=$isip/class/algo/AlgorithmContainer/actn_00.cc&constant=CLASS_NAME">static const String CLASS_NAME = L"AlgorithmContainer";</a></pre>
       
  <li> define the algorithm choices:

       <pre>enum ALGORITHM { SUB_GRAPH = 0, DEF_ALGORITHM = SUB_GRAPH };</pre>

  <li> define the implementation choices:

       <pre>enum IMPLEMENTATION { EXPAND = 0, DEF_IMPLEMENTATION = EXPAND };</pre>

  <li> define static NameMap objects

       <pre><a href="/perl/ifc_document.pl?file=$isip/class/algo/AlgorithmContainer/actn_00.cc&constant=ALGO_MAP">static const NameMap ALGO_MAP(L"SUB_GRAPH");</a></pre>
       <pre><a href="/perl/ifc_document.pl?file=$isip/class/algo/AlgorithmContainer/actn_00.cc&constant=IMPL_MAP">static const NameMap IMPL_MAP(L"EXPAND");</a></pre>

  <li>define i/o related constants:
       
       <pre><a href="/perl/ifc_document.pl?file=$isip/class/algo/AlgorithmContainer/actn_00.cc&constant=DEF_PARAM">static const String DEF_PARAM = L"";</a></pre>
       <pre><a href="/perl/ifc_document.pl?file=$isip/class/algo/AlgorithmContainer/actn_00.cc&constant=PARAM_ALGORITHM">static const String PARAM_ALGORITHM = L"algorithm";</a></pre>
       <pre><a href="/perl/ifc_document.pl?file=$isip/class/algo/AlgorithmContainer/actn_00.cc&constant=PARAM_IMPLEMENTATION">static const String PARAM_IMPLEMENTATION = L"implementation";</a></pre>       
       <pre><a href="/perl/ifc_document.pl?file=$isip/class/algo/AlgorithmContainer/actn_00.cc&constant=PARAM_GRAPH_TAG">static const String PARAM_GRAPH_TAG = L"graph_tag";</a></pre>       
       <pre><a href="/perl/ifc_document.pl?file=$isip/class/algo/AlgorithmContainer/actn_00.cc&constant=PARAM_VARIABLE">static const String PARAM_VARIABLE = L"variable";</a></pre>       

  <li> define default value(s) of the class data:

       <pre>static const long DEF_GRAPH_TAG = -1;</pre>
       
  <li> define default argument(s):

       <pre>none.</pre>
</ul>

<a name="error">
<b>error codes:</b>
<br><br>

<ul>
  <li> error code indicating AlgorithmContainer class general error:

       <pre><a href="/perl/ifc_document.pl?err=00073200">static const long ERR = 73200;</a></pre>
</ul>

<a name="protected">
<b>protected data:</b>
<br><br>

<ul>
  <li> data common to all algorithms and implementations:

       <br><br>

       <ul>
	 <li> define an algorithm name:
       
	      <pre>ALGORITHM algorithm_d;</pre>
  
	 <li> define an implementation name:
       
	      <pre>IMPLEMENTATION implementation_d;</pre>
	      
	 <li> the graph tag

	      <pre>Long graph_tag_d;</pre>

	 <li> the container variable name

	      <pre>String varname_d;</pre>

	 <li> static memory manager:
       
	      <pre><a href="/perl/ifc_document.pl?file=$isip/class/algo/AlgorithmContainer/actn_00.cc&static=mgr_d">static MemoryManager mgr_d;</a></pre>
       </ul>

  <li> algorithm and implementation specific variables:
       
       <pre>none.</pre>
</ul>

<a name="public">
<b>required public methods:</b>
<br><br>

<ul>
  <li> static methods:
       
       <pre><a href="/perl/ifc_document.pl?file=$isip/class/algo/AlgorithmContainer/AlgorithmContainer.h&method=name">static const String& name();</a></pre>
       <pre><a href="/perl/ifc_document.pl?file=$isip/class/algo/AlgorithmContainer/actn_02.cc&method=diagnose">static boolean diagnose(Integral::DEBUG debug_level);</a></pre>

  <li> debug methods: setDebug method is inherited from base class
       
       <pre><a href="/perl/ifc_document.pl?file=$isip/class/algo/AlgorithmContainer/actn_01.cc&method=debug">boolean debug(const unichar* message) const;</a></pre>
       
  <li> destructor/constructor(s):
       
       <pre><a href="/perl/ifc_document.pl?file=$isip/class/algo/AlgorithmContainer/AlgorithmContainer.h&method=destructor">~AlgorithmContainer();</a></pre>
       <pre><a href="/perl/ifc_document.pl?file=$isip/class/algo/AlgorithmContainer/AlgorithmContainer.h&method=constructor">AlgorithmContainer(ALGORITHM algorithm = DEF_ALGORITHM, IMPLEMENTATION implementation = DEF_IMPLEMENTATION, long graph_tag = DEF_GRAPH_TAG);</a></pre>
       <pre><a href="/perl/ifc_document.pl?file=$isip/class/algo/AlgorithmContainer/AlgorithmContainer.h&method=copy+constructor">AlgorithmContainer(const AlgorithmContainer& arg);</a></pre>

  <li> assign methods:
       
       <pre><a href="/perl/ifc_document.pl?file=$isip/class/algo/AlgorithmContainer/actn_00.cc&method=assign&instance=0">boolean assign(const AlgorithmContainer& arg);</a></pre>
       
  <li> operator= methods:
       
      <pre><a href="/perl/ifc_document.pl?file=$isip/class/algo/AlgorithmContainer/AlgorithmContainer.h&method=operator%3D&instance=0">AlgorithmContainer& operator= (const AlgorithmContainer& arg);</a></pre>
              
  <li> i/o methods:
       
       <pre><a href="/perl/ifc_document.pl?file=$isip/class/algo/AlgorithmContainer/actn_04.cc&method=sofSize">long sofSize() const;</a></pre>     
       <pre><a href="/perl/ifc_document.pl?file=$isip/class/algo/AlgorithmContainer/actn_03.cc&method=read">boolean read(Sof& sof, long tag, const String& name = CLASS_NAME);</a></pre>     
       <pre><a href="/perl/ifc_document.pl?file=$isip/class/algo/AlgorithmContainer/actn_04.cc&method=write">boolean write(Sof& sof, long tag, const String& name = CLASS_NAME) const;</a></pre>     
       <pre><a href="/perl/ifc_document.pl?file=$isip/class/algo/AlgorithmContainer/actn_03.cc&method=readData">boolean readData(Sof& sof, const String& pname = DEF_PARAM, long size = SofParser::FULL_OBJECT, boolean param = true, boolean nested = false);</a></pre>     
       <pre><a href="/perl/ifc_document.pl?file=$isip/class/algo/AlgorithmContainer/actn_04.cc&method=writeData">boolean writeData(Sof& sof, const String& pname = DEF_PARAM) const;</a></pre>     

  <li> equality methods:
       
       <pre><a href="/perl/ifc_document.pl?file=$isip/class/algo/AlgorithmContainer/AlgorithmContainer.h&method=eq&instance=0">boolean eq(const AlgorithmContainer& arg) const;</a></pre>
       
  <li> memory management methods:
       
       <pre><a href="/perl/ifc_document.pl?file=$isip/class/algo/AlgorithmContainer/AlgorithmContainer.h&method=new">static void* operator new(size_t size);</a></pre>
       <pre><a href="/perl/ifc_document.pl?file=$isip/class/algo/AlgorithmContainer/AlgorithmContainer.h&method=new\[\]">static void* operator new[](size_t size);</a></pre>
       <pre><a href="/perl/ifc_document.pl?file=$isip/class/algo/AlgorithmContainer/AlgorithmContainer.h&method=delete">static void operator delete(void* ptr);</a></pre>
       <pre><a href="/perl/ifc_document.pl?file=$isip/class/algo/AlgorithmContainer/AlgorithmContainer.h&method=delete\[\]">static void operator delete[](void* ptr);</a></pre>
       <pre><a href="/perl/ifc_document.pl?file=$isip/class/algo/AlgorithmContainer/AlgorithmContainer.h&method=setGrowSize">static boolean setGrowSize(long grow_size);</a></pre>
       <pre><a href="/perl/ifc_document.pl?file=$isip/class/algo/AlgorithmContainer/actn_00.cc&method=clear">boolean clear(Integral::CMODE ctype = Integral::DEF_CMODE);</a></pre>
</ul>

<a name="specific">
<b>class-specific public methods:</b>
<br><br>

<ul>
  <li> set methods:
       
       <pre><a href="/perl/ifc_document.pl?file=$isip/class/algo/AlgorithmContainer/AlgorithmContainer.h&method=setAlgorithm">boolean setAlgorithm(ALGORITHM algorithm);</a></pre>
       <pre><a href="/perl/ifc_document.pl?file=$isip/class/algo/AlgorithmContainer/AlgorithmContainer.h&method=setImplementation">boolean setImplementation(IMPLEMENTATION implementation);</a></pre>
       <pre><a href="/perl/ifc_document.pl?file=$isip/class/algo/AlgorithmContainer/AlgorithmContainer.h&method=setVariable">boolean setVariable(const String& name);</a></pre>
       <pre><a href="/perl/ifc_document.pl?file=$isip/class/algo/AlgorithmContainer/AlgorithmContainer.h&method=setGraphTag">boolean setGraphTag(long arg);</a></pre>
       <pre><a href="/perl/ifc_document.pl?file=$isip/class/algo/AlgorithmContainer/AlgorithmContainer.h&method=set">boolean set(ALGORITHM algorithm = DEF_ALGORITHM, IMPLEMENTATION implementation = DEF_IMPLEMENTATION,long graph_tag = DEF_GRAPH_TAG);</a></pre>

  <li> get methods:

       <pre><a href="/perl/ifc_document.pl?file=$isip/class/algo/AlgorithmContainer/AlgorithmContainer.h&method=getAlgorithm">ALGORITHM getAlgorithm() const;</a></pre>
       <pre><a href="/perl/ifc_document.pl?file=$isip/class/algo/AlgorithmContainer/AlgorithmContainer.h&method=getImplementation">IMPLEMENTATION getImplementation() const;</a></pre>       
       <pre><a href="/perl/ifc_document.pl?file=$isip/class/algo/AlgorithmContainer/AlgorithmContainer.h&method=getVariable">const String& getVariable() const;</a></pre>
       <pre><a href="/perl/ifc_document.pl?file=$isip/class/algo/AlgorithmContainer/AlgorithmContainer.h&method=getGraphTag">long getGraphTag() const;</a></pre>
       <pre><a href="/perl/ifc_document.pl?file=$isip/class/algo/AlgorithmContainer/AlgorithmContainer.h&method=get">boolean get(ALGORITHM& algorithm, IMPLEMENTATION& implementation, long& graph_tag) const;</a></pre>
       
  <li> AlgorithmBase interface contract methods:

       <pre><a href="/perl/ifc_document.pl?file=$isip/class/algo/AlgorithmContainer/actn_00.cc&method=assign&instance=1">boolean assign(const AlgorithmBase& arg);</a></pre>
       <pre><a href="/perl/ifc_document.pl?file=$isip/class/algo/AlgorithmContainer/actn_00.cc&method=eq&instance=0">boolean eq(const AlgorithmBase& arg) const;</a></pre>
       <pre><a href="/perl/ifc_document.pl?file=$isip/class/algo/AlgorithmContainer/AlgorithmContainer.h&method=className">const String& className() const;</a></pre>
       <pre><a href="/perl/ifc_document.pl?file=$isip/class/algo/AlgorithmContainer/AlgorithmContainer.h&method=apply">boolean apply(Vector&lt;AlgorithmData&gt;& output, const Vector&lt;AlgorithmData&gt;& input);</a></pre>
       <pre><a href="/perl/ifc_document.pl?file=$isip/class/algo/AlgorithmContainer/actn_03.cc&method=setParser">boolean setParser(SofParser* parser);</a></pre>
</ul>

<a name="private">
<b>private methods:</b>

<ul>
  <li> none
</ul>
       
<a name="examples">
<b>examples:</b>

<ul>
  <li> none
</ul>

<a name="notes">
<b>notes:</b>
<br><br>

<ul>
  <li> This class is not used by standard Algorithm classes for
       computational purposes. Instead,  it simply exists to
       allow for containers to be specified in a recipe used by
       isip_transform.
</ul>

<!--#include virtual="/hse/ies/templates/documentation/footer/footer.html" -->
