Click here to Skip to main content
15,891,621 members
Articles / Desktop Programming / MFC

Genetic Algorithm Library

Rate me:
Please Sign up or sign in to vote.
4.93/5 (175 votes)
7 Apr 2012GPL358 min read 439.1K   34.7K   555  
A framework for genetic algorithms
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
<title>Genetic Algorithm Library: Population::GaSortedGroup Class Reference</title>
<link href="doxygen.css" rel="stylesheet" type="text/css">
<link href="tabs.css" rel="stylesheet" type="text/css">
</head><body>
<!-- Generated by Doxygen 1.5.5 -->
<div class="navigation" id="top">
  <div class="tabs">
    <ul>
      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
      <li><a href="files.html"><span>Files</span></a></li>
    </ul>
  </div>
  <div class="tabs">
    <ul>
      <li><a href="annotated.html"><span>Class&nbsp;List</span></a></li>
      <li><a href="hierarchy.html"><span>Class&nbsp;Hierarchy</span></a></li>
      <li><a href="functions.html"><span>Class&nbsp;Members</span></a></li>
    </ul>
  </div>
  <div class="navpath"><a class="el" href="namespace_population.html">Population</a>::<a class="el" href="class_population_1_1_ga_sorted_group.html">GaSortedGroup</a>
  </div>
</div>
<div class="contents">
<h1>Population::GaSortedGroup Class Reference</h1><!-- doxytag: class="Population::GaSortedGroup" -->Sorted group stores indices of chromosomes in sorted order, chromosomes must be from same population. For sorting, group use provided fitness comparator. Direction depends on type of group. It group type is <code>GASGT_BEST</code> or <code>GASGT_OTHER</code> chromosomes are sorted in descending order by their fitness value, if group type is <code>GASGT_WORST</code> chromosomes are sorted in ascending order by their fitness value. Sorted group can only accept fixed number of chromosomes.  
<a href="#_details">More...</a>
<p>
<code>#include &lt;source/SortedGroup.h&gt;</code>
<p>

<p>
<a href="class_population_1_1_ga_sorted_group-members.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
<tr><td></td></tr>
<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_population_1_1_ga_sorted_group.html#fc664c57e33181f18a80021848ef9616">GaSortedGroup</a> (const <a class="el" href="class_population_1_1_ga_population.html">GaPopulation</a> *population, int maxSize, <a class="el" href="namespace_population.html#218f7e319fff9f9172a5ab1f8c7202cf">GaSortedGroupType</a> type, const <a class="el" href="class_chromosome_1_1_ga_fitness_comparator.html">GaFitnessComparator</a> *comparator)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">This constructor allocates memory for array of chromosomes' indices, and initializes comparator, group type, and binds group to specified population.  <a href="#fc664c57e33181f18a80021848ef9616"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_population_1_1_ga_sorted_group.html#4533249965dc9d7870ac6030c3a3f52f">GaSortedGroup</a> (const <a class="el" href="class_population_1_1_ga_population.html">GaPopulation</a> *population, <a class="el" href="namespace_population.html#218f7e319fff9f9172a5ab1f8c7202cf">GaSortedGroupType</a> type)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">This constructor just bounds group to population and initializes its type, but doesn't allocate memory for array of chromosomes' indices. Because maximal group size is not specified, chromosomes cannot be inserted in this group before calling <a class="el" href="class_population_1_1_ga_sorted_group.html#0fac2b9e39dcb919f08c6f39350b2255" title="SetMaxSize method sets maximal number of chromosomes which can be stored in this...">SetMaxSize</a>.  <a href="#4533249965dc9d7870ac6030c3a3f52f"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_population_1_1_ga_sorted_group.html#209f6966abedcf418a4306fea13c4ba6">~GaSortedGroup</a> ()</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Destructor frees memory used by the array of chromosomes' indices.  <a href="#209f6966abedcf418a4306fea13c4ba6"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">GAL_API void GACALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_population_1_1_ga_sorted_group.html#61fddaf3fd96a1b3812efe816f1535f1">CopyTo</a> (<a class="el" href="class_population_1_1_ga_sorted_group.html">GaSortedGroup</a> &amp;destination, bool sameSorting) const </td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">This method copies chromosomes' indices to destination group. It copies indices until destination group is not full, or until all chromosomes from source group aren't copied.  <a href="#61fddaf3fd96a1b3812efe816f1535f1"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">GAL_API int GACALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_population_1_1_ga_sorted_group.html#7ec56a4e4b973c97b3146ec635e29e77">Add</a> (int chromosomeIndex)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight"><code>Add</code> method inserts chromosome in sorted group. This method preserves sorting. Before this method inserts chromosome it checks to see if chromosome is already in the group. Check is done based on group membership flags of scaled chromosome object. If group is not full and chromosome is not already in the group, it is inserted. If group is full, chromosome is inserted only if it has better fitness (by sorting policy: sorting comparator + group type) then the chromosome which has worst fitness (by sorting policy) in the group, it this is the case, worst chromosome is removed from the group (and membership flag of the group in scaled chromosome object is cleared) and new chromosome is inserted. If chromosome is inserted successfully this method sets membership flag of the group in scaled chromosome object.  <a href="#7ec56a4e4b973c97b3146ec635e29e77"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">GAL_API bool GACALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_population_1_1_ga_sorted_group.html#9b20db7918b7fa3188c5f55c6789a1fd">Remove</a> (int chromosomeIndex)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight"><code>Remove</code> method removes chromosome from sorted group. This method preserves sorting of the group. Before this method removes chromosome it checks to see if chromosome is in the group. Check is done based on group membership flags of scaled chromosome object. If chromosome is removed successfully this method clears membership flag of the group in scaled chromosome object.  <a href="#9b20db7918b7fa3188c5f55c6789a1fd"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">GAL_API void GACALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_population_1_1_ga_sorted_group.html#1c061c3fe333403ae92e5cb0cb8f0ab6">Clear</a> ()</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight"><code>Clear</code> method removes all chromosomes from the group and clears theirs membership flags.  <a href="#1c061c3fe333403ae92e5cb0cb8f0ab6"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">GAL_API int GACALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_population_1_1_ga_sorted_group.html#0a491ed859f959271e9fc59ec31bd80b">GetRanking</a> (int chromosomeIndex)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight"><code>GetRanking</code> method returns ranking of chromosome in this sorted group.  <a href="#0a491ed859f959271e9fc59ec31bd80b"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">int GACALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_population_1_1_ga_sorted_group.html#ad5fa8b404af9d6ea359df2c0380a679">GetAt</a> (int pos) const </td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight"><code>GetAt</code> method returns index of chromosome at specified position in the group.  <a href="#ad5fa8b404af9d6ea359df2c0380a679"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">GAL_API <a class="el" href="class_chromosome_1_1_ga_scaled_chromosome.html">GaScaledChromosome</a> &amp;GACALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_population_1_1_ga_sorted_group.html#57ba58c2a9b7e6ef8a643d2d1077b344">GetScaledChromosomeAt</a> (int pos) const </td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight"><code>GetScaledChromosomeAt</code> method returns reference to scaled chromosome object at specified position in the group.  <a href="#57ba58c2a9b7e6ef8a643d2d1077b344"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="class_common_1_1_ga_smart_ptr.html">GaChromosomePtr</a> GACALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_population_1_1_ga_sorted_group.html#e60cf453b9dff184f962f3485c70d6ae">GetChromosomeAt</a> (int pos) const </td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight"><code>GetChromosomeAt</code> method returns smart pointer to chromosome object at specified position in the group.  <a href="#e60cf453b9dff184f962f3485c70d6ae"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">int GACALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_population_1_1_ga_sorted_group.html#a866ff07fcea4081abdcdb836f7d3e0c">GetMaxSize</a> () const </td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">This method is not thread-safe.  <a href="#a866ff07fcea4081abdcdb836f7d3e0c"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">GAL_API void GACALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_population_1_1_ga_sorted_group.html#0fac2b9e39dcb919f08c6f39350b2255">SetMaxSize</a> (int size)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight"><code>SetMaxSize</code> method sets maximal number of chromosomes which can be stored in this group.  <a href="#0fac2b9e39dcb919f08c6f39350b2255"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">int GACALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_population_1_1_ga_sorted_group.html#d22550ae58746f98d74a527f8d880780">GetCurrentSize</a> () const </td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">This method is not thread-safe.  <a href="#d22550ae58746f98d74a527f8d880780"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="namespace_population.html#218f7e319fff9f9172a5ab1f8c7202cf">GaSortedGroupType</a> GACALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_population_1_1_ga_sorted_group.html#d84d781949d18e7f0347bd83376b625f">GetType</a> () const </td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">This method is not thread-safe.  <a href="#d84d781949d18e7f0347bd83376b625f"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">const <a class="el" href="class_chromosome_1_1_ga_fitness_comparator.html">GaFitnessComparator</a> *GACALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_population_1_1_ga_sorted_group.html#e2a2f24a305dd357e0bf1a8f386ca840">GetComparator</a> () const </td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">This method is not thread-safe.  <a href="#e2a2f24a305dd357e0bf1a8f386ca840"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">GAL_API void GACALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_population_1_1_ga_sorted_group.html#eafa9f4ef34c6d07d0a440026743b670">SetComparator</a> (const <a class="el" href="class_chromosome_1_1_ga_fitness_comparator.html">GaFitnessComparator</a> *comparator)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight"><code>SetComparator</code> method sets comparator which is used for sorting chromosome in this group. If comparator is changed, this method resort chromosomes in group, according to new sorting policy.  <a href="#eafa9f4ef34c6d07d0a440026743b670"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">const <a class="el" href="class_population_1_1_ga_population.html">GaPopulation</a> *GACALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_population_1_1_ga_sorted_group.html#6ba0e0dc087cd60957820b6e517009b6">GetPopulation</a> () const </td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">This method is not thread-safe.  <a href="#6ba0e0dc087cd60957820b6e517009b6"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">int GACALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_population_1_1_ga_sorted_group.html#1c2e928eedf527f55c77e4742962fad1">operator[]</a> (int pos) const </td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight"><code>operator []</code> returns index of chromosome at specified position in the group.  <a href="#1c2e928eedf527f55c77e4742962fad1"></a><br></td></tr>
<tr><td colspan="2"><br><h2>Private Attributes</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">const <a class="el" href="class_population_1_1_ga_population.html">GaPopulation</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_population_1_1_ga_sorted_group.html#26b6f17af8cd56891d38e5c9de33a06a">_population</a></td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Pointer to population which hosts chromosomes in sorted group.  <a href="#26b6f17af8cd56891d38e5c9de33a06a"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">int *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_population_1_1_ga_sorted_group.html#46d9455d608ab9b868606a2f7cb5b56a">_chromosomesIndecies</a></td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Pointer to array of chromosomes' indices.  <a href="#46d9455d608ab9b868606a2f7cb5b56a"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">const <a class="el" href="class_chromosome_1_1_ga_fitness_comparator.html">GaFitnessComparator</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_population_1_1_ga_sorted_group.html#82a13de52232e70fc1f759ad2c97a251">_comparator</a></td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Pointer to comparator which is used for sorting chromosomes.  <a href="#82a13de52232e70fc1f759ad2c97a251"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_population_1_1_ga_sorted_group.html#fa04bb1d8c12666b3471601147c8b532">_maxSize</a></td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Maximal number of chromosomes which can be stored in this sorted group.  <a href="#fa04bb1d8c12666b3471601147c8b532"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_population_1_1_ga_sorted_group.html#7d9a07ebc0d1e63ab269bfde44690941">_currentSize</a></td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Current number of chromosomes in this sorted group.  <a href="#7d9a07ebc0d1e63ab269bfde44690941"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="namespace_population.html#218f7e319fff9f9172a5ab1f8c7202cf">GaSortedGroupType</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_population_1_1_ga_sorted_group.html#df24136415d095f35d9aa369eede11a2">_type</a></td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Type of sorted group.  <a href="#df24136415d095f35d9aa369eede11a2"></a><br></td></tr>
</table>
<hr><a name="_details"></a><h2>Detailed Description</h2>
Sorted group stores indices of chromosomes in sorted order, chromosomes must be from same population. For sorting, group use provided fitness comparator. Direction depends on type of group. It group type is <code>GASGT_BEST</code> or <code>GASGT_OTHER</code> chromosomes are sorted in descending order by their fitness value, if group type is <code>GASGT_WORST</code> chromosomes are sorted in ascending order by their fitness value. Sorted group can only accept fixed number of chromosomes. 
<p>
This class has built-in synchronizator so it is allowed to use <code>LOCK_OBJECT</code> and <code>LOCK_THIS_OBJECT</code> macros with instances of this class, but no public or private methods are thread-safe. <hr><h2>Constructor &amp; Destructor Documentation</h2>
<a class="anchor" name="fc664c57e33181f18a80021848ef9616"></a><!-- doxytag: member="Population::GaSortedGroup::GaSortedGroup" ref="fc664c57e33181f18a80021848ef9616" args="(const GaPopulation *population, int maxSize, GaSortedGroupType type, const GaFitnessComparator *comparator)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">Population::GaSortedGroup::GaSortedGroup           </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="class_population_1_1_ga_population.html">GaPopulation</a> *&nbsp;</td>
          <td class="paramname"> <em>population</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>maxSize</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="namespace_population.html#218f7e319fff9f9172a5ab1f8c7202cf">GaSortedGroupType</a>&nbsp;</td>
          <td class="paramname"> <em>type</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="class_chromosome_1_1_ga_fitness_comparator.html">GaFitnessComparator</a> *&nbsp;</td>
          <td class="paramname"> <em>comparator</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td width="100%"><code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
This constructor allocates memory for array of chromosomes' indices, and initializes comparator, group type, and binds group to specified population. 
<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>population</em>&nbsp;</td><td>pointer to population to which this group is bound.</td></tr>
    <tr><td valign="top"></td><td valign="top"><em>maxSize</em>&nbsp;</td><td>maximal number of chromosomes which can be stored in the group.</td></tr>
    <tr><td valign="top"></td><td valign="top"><em>type</em>&nbsp;</td><td>type of group.</td></tr>
    <tr><td valign="top"></td><td valign="top"><em>comparator</em>&nbsp;</td><td>pointer to fitness comparator which is used for sorting.</td></tr>
  </table>
</dl>

</div>
</div><p>
<a class="anchor" name="4533249965dc9d7870ac6030c3a3f52f"></a><!-- doxytag: member="Population::GaSortedGroup::GaSortedGroup" ref="4533249965dc9d7870ac6030c3a3f52f" args="(const GaPopulation *population, GaSortedGroupType type)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">Population::GaSortedGroup::GaSortedGroup           </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="class_population_1_1_ga_population.html">GaPopulation</a> *&nbsp;</td>
          <td class="paramname"> <em>population</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="namespace_population.html#218f7e319fff9f9172a5ab1f8c7202cf">GaSortedGroupType</a>&nbsp;</td>
          <td class="paramname"> <em>type</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td width="100%"><code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
This constructor just bounds group to population and initializes its type, but doesn't allocate memory for array of chromosomes' indices. Because maximal group size is not specified, chromosomes cannot be inserted in this group before calling <a class="el" href="class_population_1_1_ga_sorted_group.html#0fac2b9e39dcb919f08c6f39350b2255" title="SetMaxSize method sets maximal number of chromosomes which can be stored in this...">SetMaxSize</a>. 
<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>population</em>&nbsp;</td><td>pointer to population to which this group is bound.</td></tr>
    <tr><td valign="top"></td><td valign="top"><em>type</em>&nbsp;</td><td>type of group.</td></tr>
  </table>
</dl>

</div>
</div><p>
<a class="anchor" name="209f6966abedcf418a4306fea13c4ba6"></a><!-- doxytag: member="Population::GaSortedGroup::~GaSortedGroup" ref="209f6966abedcf418a4306fea13c4ba6" args="()" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">Population::GaSortedGroup::~GaSortedGroup           </td>
          <td>(</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%"><code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Destructor frees memory used by the array of chromosomes' indices. 
<p>

</div>
</div><p>
<hr><h2>Member Function Documentation</h2>
<a class="anchor" name="61fddaf3fd96a1b3812efe816f1535f1"></a><!-- doxytag: member="Population::GaSortedGroup::CopyTo" ref="61fddaf3fd96a1b3812efe816f1535f1" args="(GaSortedGroup &amp;destination, bool sameSorting) const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void Population::GaSortedGroup::CopyTo           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="class_population_1_1_ga_sorted_group.html">GaSortedGroup</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>destination</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">bool&nbsp;</td>
          <td class="paramname"> <em>sameSorting</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td width="100%"> const</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
This method copies chromosomes' indices to destination group. It copies indices until destination group is not full, or until all chromosomes from source group aren't copied. 
<p>
This method is not thread-safe. <dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>destination</em>&nbsp;</td><td>reference to group which is destination of copying.</td></tr>
    <tr><td valign="top"></td><td valign="top"><em>sameSorting</em>&nbsp;</td><td>instructs to copy method not to resort chromosomes in destination population. If two groups use same sorting policy this parameter should be <code>true</code>, to improve performance because resorting is skipped. If they use different sorting policies this parameter should be <code>false</code>, because that instructs method to resort indices in destination group according to its sorting policy.</td></tr>
  </table>
</dl>

</div>
</div><p>
<a class="anchor" name="7ec56a4e4b973c97b3146ec635e29e77"></a><!-- doxytag: member="Population::GaSortedGroup::Add" ref="7ec56a4e4b973c97b3146ec635e29e77" args="(int chromosomeIndex)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int Population::GaSortedGroup::Add           </td>
          <td>(</td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>chromosomeIndex</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%"></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
<code>Add</code> method inserts chromosome in sorted group. This method preserves sorting. Before this method inserts chromosome it checks to see if chromosome is already in the group. Check is done based on group membership flags of scaled chromosome object. If group is not full and chromosome is not already in the group, it is inserted. If group is full, chromosome is inserted only if it has better fitness (by sorting policy: sorting comparator + group type) then the chromosome which has worst fitness (by sorting policy) in the group, it this is the case, worst chromosome is removed from the group (and membership flag of the group in scaled chromosome object is cleared) and new chromosome is inserted. If chromosome is inserted successfully this method sets membership flag of the group in scaled chromosome object. 
<p>
This method is not thread-safe. <dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>chromosomeIndex</em>&nbsp;</td><td>index of chromosome in population.</td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>Method returns position in group at which it is inserted, if it is inserted successfully. If chromosome is not inserted, method returns -1.</dd></dl>

</div>
</div><p>
<a class="anchor" name="9b20db7918b7fa3188c5f55c6789a1fd"></a><!-- doxytag: member="Population::GaSortedGroup::Remove" ref="9b20db7918b7fa3188c5f55c6789a1fd" args="(int chromosomeIndex)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool Population::GaSortedGroup::Remove           </td>
          <td>(</td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>chromosomeIndex</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%"></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
<code>Remove</code> method removes chromosome from sorted group. This method preserves sorting of the group. Before this method removes chromosome it checks to see if chromosome is in the group. Check is done based on group membership flags of scaled chromosome object. If chromosome is removed successfully this method clears membership flag of the group in scaled chromosome object. 
<p>
This method is not thread-safe. <dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>chromosomeIndex</em>&nbsp;</td><td>index of chromosome in population.</td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>Method returns <code>true</code> if chromosome is found and removed successfully. If chromosome doesn't belong to the group, this method returns <code>false</code>.</dd></dl>

</div>
</div><p>
<a class="anchor" name="1c061c3fe333403ae92e5cb0cb8f0ab6"></a><!-- doxytag: member="Population::GaSortedGroup::Clear" ref="1c061c3fe333403ae92e5cb0cb8f0ab6" args="()" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void Population::GaSortedGroup::Clear           </td>
          <td>(</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%"></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
<code>Clear</code> method removes all chromosomes from the group and clears theirs membership flags. 
<p>
This method is not thread-safe. 
</div>
</div><p>
<a class="anchor" name="0a491ed859f959271e9fc59ec31bd80b"></a><!-- doxytag: member="Population::GaSortedGroup::GetRanking" ref="0a491ed859f959271e9fc59ec31bd80b" args="(int chromosomeIndex)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int Population::GaSortedGroup::GetRanking           </td>
          <td>(</td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>chromosomeIndex</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%"></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
<code>GetRanking</code> method returns ranking of chromosome in this sorted group. 
<p>
This method is not thread-safe. <dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>chromosomeIndex</em>&nbsp;</td><td>index of chromosome which rank in the group is queried.</td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>Method returns ranking of chromosome in this group. If chromosome doesn't belong to this group, method returns -1.</dd></dl>

</div>
</div><p>
<a class="anchor" name="ad5fa8b404af9d6ea359df2c0380a679"></a><!-- doxytag: member="Population::GaSortedGroup::GetAt" ref="ad5fa8b404af9d6ea359df2c0380a679" args="(int pos) const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int GACALL Population::GaSortedGroup::GetAt           </td>
          <td>(</td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>pos</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%"> const<code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
<code>GetAt</code> method returns index of chromosome at specified position in the group. 
<p>
This method is not thread-safe. <dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>pos</em>&nbsp;</td><td>position of chromosome in group.</td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>Method returns index of chromosome at specified position in the group. If position is out of range, method returns -1.</dd></dl>

</div>
</div><p>
<a class="anchor" name="57ba58c2a9b7e6ef8a643d2d1077b344"></a><!-- doxytag: member="Population::GaSortedGroup::GetScaledChromosomeAt" ref="57ba58c2a9b7e6ef8a643d2d1077b344" args="(int pos) const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="class_chromosome_1_1_ga_scaled_chromosome.html">GaScaledChromosome</a> &amp; Population::GaSortedGroup::GetScaledChromosomeAt           </td>
          <td>(</td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>pos</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%"> const</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
<code>GetScaledChromosomeAt</code> method returns reference to scaled chromosome object at specified position in the group. 
<p>
This method is not thread-safe. <dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>pos</em>&nbsp;</td><td>position of chromosome in group.</td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>Method returns reference to scaled chromosome object at specified position in the group.</dd></dl>

</div>
</div><p>
<a class="anchor" name="e60cf453b9dff184f962f3485c70d6ae"></a><!-- doxytag: member="Population::GaSortedGroup::GetChromosomeAt" ref="e60cf453b9dff184f962f3485c70d6ae" args="(int pos) const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="class_common_1_1_ga_smart_ptr.html">GaChromosomePtr</a> GACALL Population::GaSortedGroup::GetChromosomeAt           </td>
          <td>(</td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>pos</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%"> const<code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
<code>GetChromosomeAt</code> method returns smart pointer to chromosome object at specified position in the group. 
<p>
This method is not thread-safe. <dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>pos</em>&nbsp;</td><td>position of chromosome in group.</td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>Method returns smart pointer to chromosome object at specified position in the group.</dd></dl>

</div>
</div><p>
<a class="anchor" name="a866ff07fcea4081abdcdb836f7d3e0c"></a><!-- doxytag: member="Population::GaSortedGroup::GetMaxSize" ref="a866ff07fcea4081abdcdb836f7d3e0c" args="() const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int GACALL Population::GaSortedGroup::GetMaxSize           </td>
          <td>(</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%"> const<code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
This method is not thread-safe. 
<p>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>Method returns maximal number of chromosomes which can be stored in this group.</dd></dl>

</div>
</div><p>
<a class="anchor" name="0fac2b9e39dcb919f08c6f39350b2255"></a><!-- doxytag: member="Population::GaSortedGroup::SetMaxSize" ref="0fac2b9e39dcb919f08c6f39350b2255" args="(int size)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void Population::GaSortedGroup::SetMaxSize           </td>
          <td>(</td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>size</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%"></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
<code>SetMaxSize</code> method sets maximal number of chromosomes which can be stored in this group. 
<p>
This method is not thread-safe. <dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>size</em>&nbsp;</td><td>new maximal number of chromosome.</td></tr>
  </table>
</dl>

</div>
</div><p>
<a class="anchor" name="d22550ae58746f98d74a527f8d880780"></a><!-- doxytag: member="Population::GaSortedGroup::GetCurrentSize" ref="d22550ae58746f98d74a527f8d880780" args="() const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int GACALL Population::GaSortedGroup::GetCurrentSize           </td>
          <td>(</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%"> const<code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
This method is not thread-safe. 
<p>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>Method returns number of chromosomes which are currently in group.</dd></dl>

</div>
</div><p>
<a class="anchor" name="d84d781949d18e7f0347bd83376b625f"></a><!-- doxytag: member="Population::GaSortedGroup::GetType" ref="d84d781949d18e7f0347bd83376b625f" args="() const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="namespace_population.html#218f7e319fff9f9172a5ab1f8c7202cf">GaSortedGroupType</a> GACALL Population::GaSortedGroup::GetType           </td>
          <td>(</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%"> const<code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
This method is not thread-safe. 
<p>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>Method returns type of the group.</dd></dl>

</div>
</div><p>
<a class="anchor" name="e2a2f24a305dd357e0bf1a8f386ca840"></a><!-- doxytag: member="Population::GaSortedGroup::GetComparator" ref="e2a2f24a305dd357e0bf1a8f386ca840" args="() const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">const <a class="el" href="class_chromosome_1_1_ga_fitness_comparator.html">GaFitnessComparator</a>* GACALL Population::GaSortedGroup::GetComparator           </td>
          <td>(</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%"> const<code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
This method is not thread-safe. 
<p>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>Method returns pointer to fitness comparator which is used for sorting chromosomes.</dd></dl>

</div>
</div><p>
<a class="anchor" name="eafa9f4ef34c6d07d0a440026743b670"></a><!-- doxytag: member="Population::GaSortedGroup::SetComparator" ref="eafa9f4ef34c6d07d0a440026743b670" args="(const GaFitnessComparator *comparator)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void Population::GaSortedGroup::SetComparator           </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="class_chromosome_1_1_ga_fitness_comparator.html">GaFitnessComparator</a> *&nbsp;</td>
          <td class="paramname"> <em>comparator</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%"></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
<code>SetComparator</code> method sets comparator which is used for sorting chromosome in this group. If comparator is changed, this method resort chromosomes in group, according to new sorting policy. 
<p>
This method is not thread-safe. <dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>comparator</em>&nbsp;</td><td>pointer to new fitness comparator.</td></tr>
  </table>
</dl>

</div>
</div><p>
<a class="anchor" name="6ba0e0dc087cd60957820b6e517009b6"></a><!-- doxytag: member="Population::GaSortedGroup::GetPopulation" ref="6ba0e0dc087cd60957820b6e517009b6" args="() const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">const <a class="el" href="class_population_1_1_ga_population.html">GaPopulation</a>* GACALL Population::GaSortedGroup::GetPopulation           </td>
          <td>(</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%"> const<code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
This method is not thread-safe. 
<p>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>Method returns pointer to population to which this group is bound.</dd></dl>

</div>
</div><p>
<a class="anchor" name="1c2e928eedf527f55c77e4742962fad1"></a><!-- doxytag: member="Population::GaSortedGroup::operator[]" ref="1c2e928eedf527f55c77e4742962fad1" args="(int pos) const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int GACALL Population::GaSortedGroup::operator[]           </td>
          <td>(</td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>pos</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%"> const<code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
<code>operator []</code> returns index of chromosome at specified position in the group. 
<p>
This operator is not thread-safe. <dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>pos</em>&nbsp;</td><td>position of chromosome in group.</td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>Operator returns index of chromosome at specified position in the group. If position is out of range, operator returns -1.</dd></dl>

</div>
</div><p>
<hr><h2>Member Data Documentation</h2>
<a class="anchor" name="26b6f17af8cd56891d38e5c9de33a06a"></a><!-- doxytag: member="Population::GaSortedGroup::_population" ref="26b6f17af8cd56891d38e5c9de33a06a" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">const <a class="el" href="class_population_1_1_ga_population.html">GaPopulation</a>* <a class="el" href="class_population_1_1_ga_sorted_group.html#26b6f17af8cd56891d38e5c9de33a06a">Population::GaSortedGroup::_population</a><code> [private]</code>          </td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Pointer to population which hosts chromosomes in sorted group. 
<p>

</div>
</div><p>
<a class="anchor" name="46d9455d608ab9b868606a2f7cb5b56a"></a><!-- doxytag: member="Population::GaSortedGroup::_chromosomesIndecies" ref="46d9455d608ab9b868606a2f7cb5b56a" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int* <a class="el" href="class_population_1_1_ga_sorted_group.html#46d9455d608ab9b868606a2f7cb5b56a">Population::GaSortedGroup::_chromosomesIndecies</a><code> [private]</code>          </td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Pointer to array of chromosomes' indices. 
<p>

</div>
</div><p>
<a class="anchor" name="82a13de52232e70fc1f759ad2c97a251"></a><!-- doxytag: member="Population::GaSortedGroup::_comparator" ref="82a13de52232e70fc1f759ad2c97a251" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">const <a class="el" href="class_chromosome_1_1_ga_fitness_comparator.html">GaFitnessComparator</a>* <a class="el" href="class_population_1_1_ga_sorted_group.html#82a13de52232e70fc1f759ad2c97a251">Population::GaSortedGroup::_comparator</a><code> [private]</code>          </td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Pointer to comparator which is used for sorting chromosomes. 
<p>

</div>
</div><p>
<a class="anchor" name="fa04bb1d8c12666b3471601147c8b532"></a><!-- doxytag: member="Population::GaSortedGroup::_maxSize" ref="fa04bb1d8c12666b3471601147c8b532" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int <a class="el" href="class_population_1_1_ga_sorted_group.html#fa04bb1d8c12666b3471601147c8b532">Population::GaSortedGroup::_maxSize</a><code> [private]</code>          </td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Maximal number of chromosomes which can be stored in this sorted group. 
<p>

</div>
</div><p>
<a class="anchor" name="7d9a07ebc0d1e63ab269bfde44690941"></a><!-- doxytag: member="Population::GaSortedGroup::_currentSize" ref="7d9a07ebc0d1e63ab269bfde44690941" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int <a class="el" href="class_population_1_1_ga_sorted_group.html#7d9a07ebc0d1e63ab269bfde44690941">Population::GaSortedGroup::_currentSize</a><code> [private]</code>          </td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Current number of chromosomes in this sorted group. 
<p>

</div>
</div><p>
<a class="anchor" name="df24136415d095f35d9aa369eede11a2"></a><!-- doxytag: member="Population::GaSortedGroup::_type" ref="df24136415d095f35d9aa369eede11a2" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="namespace_population.html#218f7e319fff9f9172a5ab1f8c7202cf">GaSortedGroupType</a> <a class="el" href="class_population_1_1_ga_sorted_group.html#df24136415d095f35d9aa369eede11a2">Population::GaSortedGroup::_type</a><code> [private]</code>          </td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Type of sorted group. 
<p>

</div>
</div><p>
<hr>The documentation for this class was generated from the following files:<ul>
<li>source/<a class="el" href="_sorted_group_8h.html">SortedGroup.h</a><li>source/<a class="el" href="_population_8cpp.html">Population.cpp</a></ul>
</div>
<br/><a href="http://www.coolsoft-sd.com/ProductVersion.aspx?vid=9">Genetic Algorithm Library</a><br/><a href="http://www.coolsoft-sd.com/">Coolsoft Software Development</a>
</body>
</html>

By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.

If a file you wish to view isn't highlighted, and is a text file (not binary), please let us know and we'll add colourisation support for it.

License

This article, along with any associated source code and files, is licensed under The GNU General Public License (GPLv3)


Written By
Software Developer
Serbia Serbia
This member has not yet provided a Biography. Assume it's interesting and varied, and probably something to do with programming.

Comments and Discussions