Index: /cpp/gdk/LICENSE.txt
===================================================================
--- /cpp/gdk/LICENSE.txt	(revision 3)
+++ /cpp/gdk/LICENSE.txt	(revision 3)
@@ -0,0 +1,452 @@
+If  you  are  using  any  part  of  Framsticks  GDK  for  a  project
+which is not  a  part  of  Framsticks  software,  please  explicitly
+acknowledge GDK and make a link  to  Framsticks,  www.framsticks.com
+
+---
+
+
+		  GNU LIBRARY GENERAL PUBLIC LICENSE
+		       Version 2, June 1991
+
+ Copyright (C) 1991 Free Software Foundation, Inc.
+    		    59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+[This is the first released version of the library GPL.  It is
+ numbered 2 because it goes with version 2 of the ordinary GPL.]
+
+			    Preamble
+
+  The licenses for most software are designed to take away your
+freedom to share and change it.  By contrast, the GNU General Public
+Licenses are intended to guarantee your freedom to share and change
+free software--to make sure the software is free for all its users.
+
+  This license, the Library General Public License, applies to some
+specially designated Free Software Foundation software, and to any
+other libraries whose authors decide to use it.  You can use it for
+your libraries, too.
+
+  When we speak of free software, we are referring to freedom, not
+price.  Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+  To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if
+you distribute copies of the library, or if you modify it.
+
+  For example, if you distribute copies of the library, whether gratis
+or for a fee, you must give the recipients all the rights that we gave
+you.  You must make sure that they, too, receive or can get the source
+code.  If you link a program with the library, you must provide
+complete object files to the recipients so that they can relink them
+with the library, after making changes to the library and recompiling
+it.  And you must show them these terms so they know their rights.
+
+  Our method of protecting your rights has two steps: (1) copyright
+the library, and (2) offer you this license which gives you legal
+permission to copy, distribute and/or modify the library.
+
+  Also, for each distributor's protection, we want to make certain
+that everyone understands that there is no warranty for this free
+library.  If the library is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original
+version, so that any problems introduced by others will not reflect on
+the original authors' reputations.
+
+
+  Finally, any free program is threatened constantly by software
+patents.  We wish to avoid the danger that companies distributing free
+software will individually obtain patent licenses, thus in effect
+transforming the program into proprietary software.  To prevent this,
+we have made it clear that any patent must be licensed for everyone's
+free use or not licensed at all.
+
+  Most GNU software, including some libraries, is covered by the ordinary
+GNU General Public License, which was designed for utility programs.  This
+license, the GNU Library General Public License, applies to certain
+designated libraries.  This license is quite different from the ordinary
+one; be sure to read it in full, and don't assume that anything in it is
+the same as in the ordinary license.
+
+  The reason we have a separate public license for some libraries is that
+they blur the distinction we usually make between modifying or adding to a
+program and simply using it.  Linking a program with a library, without
+changing the library, is in some sense simply using the library, and is
+analogous to running a utility program or application program.  However, in
+a textual and legal sense, the linked executable is a combined work, a
+derivative of the original library, and the ordinary General Public License
+treats it as such.
+
+  Because of this blurred distinction, using the ordinary General
+Public License for libraries did not effectively promote software
+sharing, because most developers did not use the libraries.  We
+concluded that weaker conditions might promote sharing better.
+
+  However, unrestricted linking of non-free programs would deprive the
+users of those programs of all benefit from the free status of the
+libraries themselves.  This Library General Public License is intended to
+permit developers of non-free programs to use free libraries, while
+preserving your freedom as a user of such programs to change the free
+libraries that are incorporated in them.  (We have not seen how to achieve
+this as regards changes in header files, but we have achieved it as regards
+changes in the actual functions of the Library.)  The hope is that this
+will lead to faster development of free libraries.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.  Pay close attention to the difference between a
+"work based on the library" and a "work that uses the library".  The
+former contains code derived from the library, while the latter only
+works together with the library.
+
+  Note that it is possible for a library to be covered by the ordinary
+General Public License rather than by this special one.
+
+
+		  GNU LIBRARY GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License Agreement applies to any software library which
+contains a notice placed by the copyright holder or other authorized
+party saying it may be distributed under the terms of this Library
+General Public License (also called "this License").  Each licensee is
+addressed as "you".
+
+  A "library" means a collection of software functions and/or data
+prepared so as to be conveniently linked with application programs
+(which use some of those functions and data) to form executables.
+
+  The "Library", below, refers to any such software library or work
+which has been distributed under these terms.  A "work based on the
+Library" means either the Library or any derivative work under
+copyright law: that is to say, a work containing the Library or a
+portion of it, either verbatim or with modifications and/or translated
+straightforwardly into another language.  (Hereinafter, translation is
+included without limitation in the term "modification".)
+
+  "Source code" for a work means the preferred form of the work for
+making modifications to it.  For a library, complete source code means
+all the source code for all modules it contains, plus any associated
+interface definition files, plus the scripts used to control compilation
+and installation of the library.
+
+  Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope.  The act of
+running a program using the Library is not restricted, and output from
+such a program is covered only if its contents constitute a work based
+on the Library (independent of the use of the Library in a tool for
+writing it).  Whether that is true depends on what the Library does
+and what the program that uses the Library does.
+  
+  1. You may copy and distribute verbatim copies of the Library's
+complete source code as you receive it, in any medium, provided that
+you conspicuously and appropriately publish on each copy an
+appropriate copyright notice and disclaimer of warranty; keep intact
+all the notices that refer to this License and to the absence of any
+warranty; and distribute a copy of this License along with the
+Library.
+
+  You may charge a fee for the physical act of transferring a copy,
+and you may at your option offer warranty protection in exchange for a
+fee.
+
+
+  2. You may modify your copy or copies of the Library or any portion
+of it, thus forming a work based on the Library, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+    a) The modified work must itself be a software library.
+
+    b) You must cause the files modified to carry prominent notices
+    stating that you changed the files and the date of any change.
+
+    c) You must cause the whole of the work to be licensed at no
+    charge to all third parties under the terms of this License.
+
+    d) If a facility in the modified Library refers to a function or a
+    table of data to be supplied by an application program that uses
+    the facility, other than as an argument passed when the facility
+    is invoked, then you must make a good faith effort to ensure that,
+    in the event an application does not supply such function or
+    table, the facility still operates, and performs whatever part of
+    its purpose remains meaningful.
+
+    (For example, a function in a library to compute square roots has
+    a purpose that is entirely well-defined independent of the
+    application.  Therefore, Subsection 2d requires that any
+    application-supplied function or table used by this function must
+    be optional: if the application does not supply it, the square
+    root function must still compute square roots.)
+
+These requirements apply to the modified work as a whole.  If
+identifiable sections of that work are not derived from the Library,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works.  But when you
+distribute the same sections as part of a whole which is a work based
+on the Library, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote
+it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Library.
+
+In addition, mere aggregation of another work not based on the Library
+with the Library (or with a work based on the Library) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+  3. You may opt to apply the terms of the ordinary GNU General Public
+License instead of this License to a given copy of the Library.  To do
+this, you must alter all the notices that refer to this License, so
+that they refer to the ordinary GNU General Public License, version 2,
+instead of to this License.  (If a newer version than version 2 of the
+ordinary GNU General Public License has appeared, then you can specify
+that version instead if you wish.)  Do not make any other change in
+these notices.
+
+
+  Once this change is made in a given copy, it is irreversible for
+that copy, so the ordinary GNU General Public License applies to all
+subsequent copies and derivative works made from that copy.
+
+  This option is useful when you wish to copy part of the code of
+the Library into a program that is not a library.
+
+  4. You may copy and distribute the Library (or a portion or
+derivative of it, under Section 2) in object code or executable form
+under the terms of Sections 1 and 2 above provided that you accompany
+it with the complete corresponding machine-readable source code, which
+must be distributed under the terms of Sections 1 and 2 above on a
+medium customarily used for software interchange.
+
+  If distribution of object code is made by offering access to copy
+from a designated place, then offering equivalent access to copy the
+source code from the same place satisfies the requirement to
+distribute the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+  5. A program that contains no derivative of any portion of the
+Library, but is designed to work with the Library by being compiled or
+linked with it, is called a "work that uses the Library".  Such a
+work, in isolation, is not a derivative work of the Library, and
+therefore falls outside the scope of this License.
+
+  However, linking a "work that uses the Library" with the Library
+creates an executable that is a derivative of the Library (because it
+contains portions of the Library), rather than a "work that uses the
+library".  The executable is therefore covered by this License.
+Section 6 states terms for distribution of such executables.
+
+  When a "work that uses the Library" uses material from a header file
+that is part of the Library, the object code for the work may be a
+derivative work of the Library even though the source code is not.
+Whether this is true is especially significant if the work can be
+linked without the Library, or if the work is itself a library.  The
+threshold for this to be true is not precisely defined by law.
+
+  If such an object file uses only numerical parameters, data
+structure layouts and accessors, and small macros and small inline
+functions (ten lines or less in length), then the use of the object
+file is unrestricted, regardless of whether it is legally a derivative
+work.  (Executables containing this object code plus portions of the
+Library will still fall under Section 6.)
+
+  Otherwise, if the work is a derivative of the Library, you may
+distribute the object code for the work under the terms of Section 6.
+Any executables containing that work also fall under Section 6,
+whether or not they are linked directly with the Library itself.
+
+
+  6. As an exception to the Sections above, you may also compile or
+link a "work that uses the Library" with the Library to produce a
+work containing portions of the Library, and distribute that work
+under terms of your choice, provided that the terms permit
+modification of the work for the customer's own use and reverse
+engineering for debugging such modifications.
+
+  You must give prominent notice with each copy of the work that the
+Library is used in it and that the Library and its use are covered by
+this License.  You must supply a copy of this License.  If the work
+during execution displays copyright notices, you must include the
+copyright notice for the Library among them, as well as a reference
+directing the user to the copy of this License.  Also, you must do one
+of these things:
+
+    a) Accompany the work with the complete corresponding
+    machine-readable source code for the Library including whatever
+    changes were used in the work (which must be distributed under
+    Sections 1 and 2 above); and, if the work is an executable linked
+    with the Library, with the complete machine-readable "work that
+    uses the Library", as object code and/or source code, so that the
+    user can modify the Library and then relink to produce a modified
+    executable containing the modified Library.  (It is understood
+    that the user who changes the contents of definitions files in the
+    Library will not necessarily be able to recompile the application
+    to use the modified definitions.)
+
+    b) Accompany the work with a written offer, valid for at
+    least three years, to give the same user the materials
+    specified in Subsection 6a, above, for a charge no more
+    than the cost of performing this distribution.
+
+    c) If distribution of the work is made by offering access to copy
+    from a designated place, offer equivalent access to copy the above
+    specified materials from the same place.
+
+    d) Verify that the user has already received a copy of these
+    materials or that you have already sent this user a copy.
+
+  For an executable, the required form of the "work that uses the
+Library" must include any data and utility programs needed for
+reproducing the executable from it.  However, as a special exception,
+the source code distributed need not include anything that is normally
+distributed (in either source or binary form) with the major
+components (compiler, kernel, and so on) of the operating system on
+which the executable runs, unless that component itself accompanies
+the executable.
+
+  It may happen that this requirement contradicts the license
+restrictions of other proprietary libraries that do not normally
+accompany the operating system.  Such a contradiction means you cannot
+use both them and the Library together in an executable that you
+distribute.
+
+
+  7. You may place library facilities that are a work based on the
+Library side-by-side in a single library together with other library
+facilities not covered by this License, and distribute such a combined
+library, provided that the separate distribution of the work based on
+the Library and of the other library facilities is otherwise
+permitted, and provided that you do these two things:
+
+    a) Accompany the combined library with a copy of the same work
+    based on the Library, uncombined with any other library
+    facilities.  This must be distributed under the terms of the
+    Sections above.
+
+    b) Give prominent notice with the combined library of the fact
+    that part of it is a work based on the Library, and explaining
+    where to find the accompanying uncombined form of the same work.
+
+  8. You may not copy, modify, sublicense, link with, or distribute
+the Library except as expressly provided under this License.  Any
+attempt otherwise to copy, modify, sublicense, link with, or
+distribute the Library is void, and will automatically terminate your
+rights under this License.  However, parties who have received copies,
+or rights, from you under this License will not have their licenses
+terminated so long as such parties remain in full compliance.
+
+  9. You are not required to accept this License, since you have not
+signed it.  However, nothing else grants you permission to modify or
+distribute the Library or its derivative works.  These actions are
+prohibited by law if you do not accept this License.  Therefore, by
+modifying or distributing the Library (or any work based on the
+Library), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Library or works based on it.
+
+  10. Each time you redistribute the Library (or any work based on the
+Library), the recipient automatically receives a license from the
+original licensor to copy, distribute, link with or modify the Library
+subject to these terms and conditions.  You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+
+  11. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Library at all.  For example, if a patent
+license would not permit royalty-free redistribution of the Library by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Library.
+
+If any portion of this section is held invalid or unenforceable under any
+particular circumstance, the balance of the section is intended to apply,
+and the section as a whole is intended to apply in other circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system which is
+implemented by public license practices.  Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+  12. If the distribution and/or use of the Library is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Library under this License may add
+an explicit geographical distribution limitation excluding those countries,
+so that distribution is permitted only in or among countries not thus
+excluded.  In such case, this License incorporates the limitation as if
+written in the body of this License.
+
+  13. The Free Software Foundation may publish revised and/or new
+versions of the Library General Public License from time to time.
+Such new versions will be similar in spirit to the present version,
+but may differ in detail to address new problems or concerns.
+
+Each version is given a distinguishing version number.  If the Library
+specifies a version number of this License which applies to it and
+"any later version", you have the option of following the terms and
+conditions either of that version or of any later version published by
+the Free Software Foundation.  If the Library does not specify a
+license version number, you may choose any version ever published by
+the Free Software Foundation.
+
+
+  14. If you wish to incorporate parts of the Library into other free
+programs whose distribution conditions are incompatible with these,
+write to the author to ask for permission.  For software which is
+copyrighted by the Free Software Foundation, write to the Free
+Software Foundation; we sometimes make exceptions for this.  Our
+decision will be guided by the two goals of preserving the free status
+of all derivatives of our free software and of promoting the sharing
+and reuse of software generally.
+
+			    NO WARRANTY
+
+  15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
+WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
+EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
+OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
+KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
+LIBRARY IS WITH YOU.  SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
+THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+  16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
+WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
+AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
+FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
+CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
+LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
+RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
+FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
+SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
+DAMAGES.
+
+		     END OF TERMS AND CONDITIONS
Index: /cpp/geno_fx/LICENSE.txt
===================================================================
--- /cpp/geno_fx/LICENSE.txt	(revision 3)
+++ /cpp/geno_fx/LICENSE.txt	(revision 3)
@@ -0,0 +1,452 @@
+If you are using  any  part  of  Framsticks  GenoFX  for  a  project
+which is not  a  part  of  Framsticks  software,  please  explicitly
+acknowledge GenoFX and make a link to Framsticks, www.framsticks.com
+
+---
+
+
+		  GNU LIBRARY GENERAL PUBLIC LICENSE
+		       Version 2, June 1991
+
+ Copyright (C) 1991 Free Software Foundation, Inc.
+    		    59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+[This is the first released version of the library GPL.  It is
+ numbered 2 because it goes with version 2 of the ordinary GPL.]
+
+			    Preamble
+
+  The licenses for most software are designed to take away your
+freedom to share and change it.  By contrast, the GNU General Public
+Licenses are intended to guarantee your freedom to share and change
+free software--to make sure the software is free for all its users.
+
+  This license, the Library General Public License, applies to some
+specially designated Free Software Foundation software, and to any
+other libraries whose authors decide to use it.  You can use it for
+your libraries, too.
+
+  When we speak of free software, we are referring to freedom, not
+price.  Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+  To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if
+you distribute copies of the library, or if you modify it.
+
+  For example, if you distribute copies of the library, whether gratis
+or for a fee, you must give the recipients all the rights that we gave
+you.  You must make sure that they, too, receive or can get the source
+code.  If you link a program with the library, you must provide
+complete object files to the recipients so that they can relink them
+with the library, after making changes to the library and recompiling
+it.  And you must show them these terms so they know their rights.
+
+  Our method of protecting your rights has two steps: (1) copyright
+the library, and (2) offer you this license which gives you legal
+permission to copy, distribute and/or modify the library.
+
+  Also, for each distributor's protection, we want to make certain
+that everyone understands that there is no warranty for this free
+library.  If the library is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original
+version, so that any problems introduced by others will not reflect on
+the original authors' reputations.
+
+
+  Finally, any free program is threatened constantly by software
+patents.  We wish to avoid the danger that companies distributing free
+software will individually obtain patent licenses, thus in effect
+transforming the program into proprietary software.  To prevent this,
+we have made it clear that any patent must be licensed for everyone's
+free use or not licensed at all.
+
+  Most GNU software, including some libraries, is covered by the ordinary
+GNU General Public License, which was designed for utility programs.  This
+license, the GNU Library General Public License, applies to certain
+designated libraries.  This license is quite different from the ordinary
+one; be sure to read it in full, and don't assume that anything in it is
+the same as in the ordinary license.
+
+  The reason we have a separate public license for some libraries is that
+they blur the distinction we usually make between modifying or adding to a
+program and simply using it.  Linking a program with a library, without
+changing the library, is in some sense simply using the library, and is
+analogous to running a utility program or application program.  However, in
+a textual and legal sense, the linked executable is a combined work, a
+derivative of the original library, and the ordinary General Public License
+treats it as such.
+
+  Because of this blurred distinction, using the ordinary General
+Public License for libraries did not effectively promote software
+sharing, because most developers did not use the libraries.  We
+concluded that weaker conditions might promote sharing better.
+
+  However, unrestricted linking of non-free programs would deprive the
+users of those programs of all benefit from the free status of the
+libraries themselves.  This Library General Public License is intended to
+permit developers of non-free programs to use free libraries, while
+preserving your freedom as a user of such programs to change the free
+libraries that are incorporated in them.  (We have not seen how to achieve
+this as regards changes in header files, but we have achieved it as regards
+changes in the actual functions of the Library.)  The hope is that this
+will lead to faster development of free libraries.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.  Pay close attention to the difference between a
+"work based on the library" and a "work that uses the library".  The
+former contains code derived from the library, while the latter only
+works together with the library.
+
+  Note that it is possible for a library to be covered by the ordinary
+General Public License rather than by this special one.
+
+
+		  GNU LIBRARY GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License Agreement applies to any software library which
+contains a notice placed by the copyright holder or other authorized
+party saying it may be distributed under the terms of this Library
+General Public License (also called "this License").  Each licensee is
+addressed as "you".
+
+  A "library" means a collection of software functions and/or data
+prepared so as to be conveniently linked with application programs
+(which use some of those functions and data) to form executables.
+
+  The "Library", below, refers to any such software library or work
+which has been distributed under these terms.  A "work based on the
+Library" means either the Library or any derivative work under
+copyright law: that is to say, a work containing the Library or a
+portion of it, either verbatim or with modifications and/or translated
+straightforwardly into another language.  (Hereinafter, translation is
+included without limitation in the term "modification".)
+
+  "Source code" for a work means the preferred form of the work for
+making modifications to it.  For a library, complete source code means
+all the source code for all modules it contains, plus any associated
+interface definition files, plus the scripts used to control compilation
+and installation of the library.
+
+  Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope.  The act of
+running a program using the Library is not restricted, and output from
+such a program is covered only if its contents constitute a work based
+on the Library (independent of the use of the Library in a tool for
+writing it).  Whether that is true depends on what the Library does
+and what the program that uses the Library does.
+  
+  1. You may copy and distribute verbatim copies of the Library's
+complete source code as you receive it, in any medium, provided that
+you conspicuously and appropriately publish on each copy an
+appropriate copyright notice and disclaimer of warranty; keep intact
+all the notices that refer to this License and to the absence of any
+warranty; and distribute a copy of this License along with the
+Library.
+
+  You may charge a fee for the physical act of transferring a copy,
+and you may at your option offer warranty protection in exchange for a
+fee.
+
+
+  2. You may modify your copy or copies of the Library or any portion
+of it, thus forming a work based on the Library, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+    a) The modified work must itself be a software library.
+
+    b) You must cause the files modified to carry prominent notices
+    stating that you changed the files and the date of any change.
+
+    c) You must cause the whole of the work to be licensed at no
+    charge to all third parties under the terms of this License.
+
+    d) If a facility in the modified Library refers to a function or a
+    table of data to be supplied by an application program that uses
+    the facility, other than as an argument passed when the facility
+    is invoked, then you must make a good faith effort to ensure that,
+    in the event an application does not supply such function or
+    table, the facility still operates, and performs whatever part of
+    its purpose remains meaningful.
+
+    (For example, a function in a library to compute square roots has
+    a purpose that is entirely well-defined independent of the
+    application.  Therefore, Subsection 2d requires that any
+    application-supplied function or table used by this function must
+    be optional: if the application does not supply it, the square
+    root function must still compute square roots.)
+
+These requirements apply to the modified work as a whole.  If
+identifiable sections of that work are not derived from the Library,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works.  But when you
+distribute the same sections as part of a whole which is a work based
+on the Library, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote
+it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Library.
+
+In addition, mere aggregation of another work not based on the Library
+with the Library (or with a work based on the Library) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+  3. You may opt to apply the terms of the ordinary GNU General Public
+License instead of this License to a given copy of the Library.  To do
+this, you must alter all the notices that refer to this License, so
+that they refer to the ordinary GNU General Public License, version 2,
+instead of to this License.  (If a newer version than version 2 of the
+ordinary GNU General Public License has appeared, then you can specify
+that version instead if you wish.)  Do not make any other change in
+these notices.
+
+
+  Once this change is made in a given copy, it is irreversible for
+that copy, so the ordinary GNU General Public License applies to all
+subsequent copies and derivative works made from that copy.
+
+  This option is useful when you wish to copy part of the code of
+the Library into a program that is not a library.
+
+  4. You may copy and distribute the Library (or a portion or
+derivative of it, under Section 2) in object code or executable form
+under the terms of Sections 1 and 2 above provided that you accompany
+it with the complete corresponding machine-readable source code, which
+must be distributed under the terms of Sections 1 and 2 above on a
+medium customarily used for software interchange.
+
+  If distribution of object code is made by offering access to copy
+from a designated place, then offering equivalent access to copy the
+source code from the same place satisfies the requirement to
+distribute the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+  5. A program that contains no derivative of any portion of the
+Library, but is designed to work with the Library by being compiled or
+linked with it, is called a "work that uses the Library".  Such a
+work, in isolation, is not a derivative work of the Library, and
+therefore falls outside the scope of this License.
+
+  However, linking a "work that uses the Library" with the Library
+creates an executable that is a derivative of the Library (because it
+contains portions of the Library), rather than a "work that uses the
+library".  The executable is therefore covered by this License.
+Section 6 states terms for distribution of such executables.
+
+  When a "work that uses the Library" uses material from a header file
+that is part of the Library, the object code for the work may be a
+derivative work of the Library even though the source code is not.
+Whether this is true is especially significant if the work can be
+linked without the Library, or if the work is itself a library.  The
+threshold for this to be true is not precisely defined by law.
+
+  If such an object file uses only numerical parameters, data
+structure layouts and accessors, and small macros and small inline
+functions (ten lines or less in length), then the use of the object
+file is unrestricted, regardless of whether it is legally a derivative
+work.  (Executables containing this object code plus portions of the
+Library will still fall under Section 6.)
+
+  Otherwise, if the work is a derivative of the Library, you may
+distribute the object code for the work under the terms of Section 6.
+Any executables containing that work also fall under Section 6,
+whether or not they are linked directly with the Library itself.
+
+
+  6. As an exception to the Sections above, you may also compile or
+link a "work that uses the Library" with the Library to produce a
+work containing portions of the Library, and distribute that work
+under terms of your choice, provided that the terms permit
+modification of the work for the customer's own use and reverse
+engineering for debugging such modifications.
+
+  You must give prominent notice with each copy of the work that the
+Library is used in it and that the Library and its use are covered by
+this License.  You must supply a copy of this License.  If the work
+during execution displays copyright notices, you must include the
+copyright notice for the Library among them, as well as a reference
+directing the user to the copy of this License.  Also, you must do one
+of these things:
+
+    a) Accompany the work with the complete corresponding
+    machine-readable source code for the Library including whatever
+    changes were used in the work (which must be distributed under
+    Sections 1 and 2 above); and, if the work is an executable linked
+    with the Library, with the complete machine-readable "work that
+    uses the Library", as object code and/or source code, so that the
+    user can modify the Library and then relink to produce a modified
+    executable containing the modified Library.  (It is understood
+    that the user who changes the contents of definitions files in the
+    Library will not necessarily be able to recompile the application
+    to use the modified definitions.)
+
+    b) Accompany the work with a written offer, valid for at
+    least three years, to give the same user the materials
+    specified in Subsection 6a, above, for a charge no more
+    than the cost of performing this distribution.
+
+    c) If distribution of the work is made by offering access to copy
+    from a designated place, offer equivalent access to copy the above
+    specified materials from the same place.
+
+    d) Verify that the user has already received a copy of these
+    materials or that you have already sent this user a copy.
+
+  For an executable, the required form of the "work that uses the
+Library" must include any data and utility programs needed for
+reproducing the executable from it.  However, as a special exception,
+the source code distributed need not include anything that is normally
+distributed (in either source or binary form) with the major
+components (compiler, kernel, and so on) of the operating system on
+which the executable runs, unless that component itself accompanies
+the executable.
+
+  It may happen that this requirement contradicts the license
+restrictions of other proprietary libraries that do not normally
+accompany the operating system.  Such a contradiction means you cannot
+use both them and the Library together in an executable that you
+distribute.
+
+
+  7. You may place library facilities that are a work based on the
+Library side-by-side in a single library together with other library
+facilities not covered by this License, and distribute such a combined
+library, provided that the separate distribution of the work based on
+the Library and of the other library facilities is otherwise
+permitted, and provided that you do these two things:
+
+    a) Accompany the combined library with a copy of the same work
+    based on the Library, uncombined with any other library
+    facilities.  This must be distributed under the terms of the
+    Sections above.
+
+    b) Give prominent notice with the combined library of the fact
+    that part of it is a work based on the Library, and explaining
+    where to find the accompanying uncombined form of the same work.
+
+  8. You may not copy, modify, sublicense, link with, or distribute
+the Library except as expressly provided under this License.  Any
+attempt otherwise to copy, modify, sublicense, link with, or
+distribute the Library is void, and will automatically terminate your
+rights under this License.  However, parties who have received copies,
+or rights, from you under this License will not have their licenses
+terminated so long as such parties remain in full compliance.
+
+  9. You are not required to accept this License, since you have not
+signed it.  However, nothing else grants you permission to modify or
+distribute the Library or its derivative works.  These actions are
+prohibited by law if you do not accept this License.  Therefore, by
+modifying or distributing the Library (or any work based on the
+Library), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Library or works based on it.
+
+  10. Each time you redistribute the Library (or any work based on the
+Library), the recipient automatically receives a license from the
+original licensor to copy, distribute, link with or modify the Library
+subject to these terms and conditions.  You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+
+  11. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Library at all.  For example, if a patent
+license would not permit royalty-free redistribution of the Library by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Library.
+
+If any portion of this section is held invalid or unenforceable under any
+particular circumstance, the balance of the section is intended to apply,
+and the section as a whole is intended to apply in other circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system which is
+implemented by public license practices.  Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+  12. If the distribution and/or use of the Library is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Library under this License may add
+an explicit geographical distribution limitation excluding those countries,
+so that distribution is permitted only in or among countries not thus
+excluded.  In such case, this License incorporates the limitation as if
+written in the body of this License.
+
+  13. The Free Software Foundation may publish revised and/or new
+versions of the Library General Public License from time to time.
+Such new versions will be similar in spirit to the present version,
+but may differ in detail to address new problems or concerns.
+
+Each version is given a distinguishing version number.  If the Library
+specifies a version number of this License which applies to it and
+"any later version", you have the option of following the terms and
+conditions either of that version or of any later version published by
+the Free Software Foundation.  If the Library does not specify a
+license version number, you may choose any version ever published by
+the Free Software Foundation.
+
+
+  14. If you wish to incorporate parts of the Library into other free
+programs whose distribution conditions are incompatible with these,
+write to the author to ask for permission.  For software which is
+copyrighted by the Free Software Foundation, write to the Free
+Software Foundation; we sometimes make exceptions for this.  Our
+decision will be guided by the two goals of preserving the free status
+of all derivatives of our free software and of promoting the sharing
+and reuse of software generally.
+
+			    NO WARRANTY
+
+  15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
+WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
+EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
+OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
+KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
+LIBRARY IS WITH YOU.  SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
+THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+  16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
+WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
+AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
+FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
+CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
+LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
+RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
+FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
+SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
+DAMAGES.
+
+		     END OF TERMS AND CONDITIONS
Index: /cpp/geno_fx/geno_ftest.cpp
===================================================================
--- /cpp/geno_fx/geno_ftest.cpp	(revision 3)
+++ /cpp/geno_fx/geno_ftest.cpp	(revision 3)
@@ -0,0 +1,128 @@
+// This file is a part of Framsticks GenoFX library.
+// Copyright (C) 2002-2009  Maciej Komosinski.  See LICENSE.txt for details.
+// Refer to http://www.framsticks.com/ for further information.
+
+#include "geno_ftest.h"
+#include "nonstd.h" //randomN, rnd01
+
+/** \file
+Sample output (simple examples of various genetic operations):
+\anchor geno_ftest_example
+\include geno_ftest_example
+Produced by the source:
+\include geno_ftest.cpp
+*/
+
+#define FIELDSTRUCT Geno_ftest
+static ParamEntry GENOtestparam_tab[]=   //external access to ftest genetic parameters
+{
+{"Genetics: ftest",1,1,},
+{"ftest_mut",0,0,"Mutation probability","f 0 1",FIELD(prob),"How many genes should be mutated during single mutation (1=all genes, 0.1=ten percent)",},
+{0,},
+};
+#undef FIELDSTRUCT
+
+Geno_ftest::Geno_ftest()
+{
+   par.setParamTab(GENOtestparam_tab);
+   par.select(this);
+   supported_format='t'; //'0' for f0, '1' for f1, etc.
+   prob=0.1;
+}
+
+///The only letters allowed are A,T,G,C
+int Geno_ftest::checkValidity(const char* gene)
+{
+   if (!gene[0]) return 1; //empty is not valid
+   bool ok=true;
+   int i;
+   for(i=0;i<strlen(gene);i++) if (!strchr("ATGC",gene[i])) {ok=false; break;}
+   return ok ? GENOPER_OK : i+1;
+}
+
+///Remove all invalid letters from the genotype
+int Geno_ftest::validate(char *&gene)
+{
+   SString validated; //new genotype (everything except ATGC is skipped)
+   for(int i=0;i<strlen(gene);i++)
+      if (strchr("ATGC",gene[i])) validated+=gene[i];  //validated contains only ATGC
+   free(gene);
+   gene=strdup(validated); //reallocate
+   return GENOPER_OK;
+}
+
+///Very simple mutation
+int Geno_ftest::mutate(char *&gene,float &chg)
+{
+   static char a[]="ATGC";
+   int changes=0,len=strlen(gene);
+   for(int i=0;i<len;i++)
+      if (rnd01<prob) //normalize prob with length of genotype
+         {gene[i]=a[randomN(4)]; changes++;}
+   chg=(float)changes/len;
+   return GENOPER_OK;
+}
+
+///A simple one-point crossover
+int Geno_ftest::crossOver(char *&g1,char *&g2,float& chg1,float& chg2)
+{
+   int len1=strlen(g1),len2=strlen(g2);
+   int p1=randomN(len1);  //random cut point for first genotype
+   int p2=randomN(len2);  //random cut point for second genotype
+   char *child1=(char*)malloc(p1+len2-p2+1);
+   char *child2=(char*)malloc(p2+len1-p1+1);
+   strncpy(child1,g1,p1);   strcpy(child1+p1,g2+p2);
+   strncpy(child2,g2,p2);   strcpy(child2+p2,g1+p1);
+   free(g1); g1=child1;
+   free(g2); g2=child2;
+   chg1=(float)p1/strlen(child1);
+   chg2=(float)p2/strlen(child2);
+   return GENOPER_OK;
+}
+
+///Applying some colors and font styles...
+unsigned long Geno_ftest::style(const char *g, int pos)
+{
+   char ch=g[pos];
+   unsigned long style=GENSTYLE_CS(0,GENSTYLE_INVALID); //default, should be changed below
+   if (ch=='A') style=GENSTYLE_RGBS(200,0,0,GENSTYLE_BOLD);
+   if (ch=='T') style=GENSTYLE_RGBS(0,200,0,GENSTYLE_BOLD);
+   if (ch=='G') style=GENSTYLE_RGBS(0,0,200,GENSTYLE_NONE);
+   if (ch=='C') style=GENSTYLE_RGBS(200,200,0,GENSTYLE_NONE);
+   return style;
+}
+
+
+#ifdef GENO_FTEST_APPL //define this macro to compile a simple testing main function
+
+Geno_ftest gft;
+
+void main()
+{
+   float chg;
+   char *g=strdup(gft.getSimplest());
+   for(int i=0;i<10;i++)
+   {
+      int result=gft.mutate(g,chg);
+      printf("%s   [mutated %.1f%%]\n",g,chg*100);
+   }
+
+   char *g2=strdup(gft.getSimplest());
+   float chg2;
+   printf("\nCrossing over the last mutant, \n\t%s\nand the simplest genotype\n\t%s\n:\n",g,g2);
+   gft.crossOver(g,g2,chg,chg2);
+   printf("Offspring 1:\n\t%s  (%.1f%% genes from parent1)\n",g,chg*100);
+   printf("Offspring 2:\n\t%s  (%.1f%% genes from parent2)\n",g2,chg2*100);
+   free(g);
+   free(g2);
+
+   g=strdup("ATGsomethingCG");
+   printf("\nChecking genotype:\n\t%s... error at position %d.\n",g,gft.checkValidity(g));
+   gft.validate(g);
+   printf("After validation:\n\t%s\n",g);
+   free(g);
+   printf("...and is YOUR genotype O.K.?\n\n");
+}
+
+#endif
+
Index: /cpp/geno_fx/geno_ftest.h
===================================================================
--- /cpp/geno_fx/geno_ftest.h	(revision 3)
+++ /cpp/geno_fx/geno_ftest.h	(revision 3)
@@ -0,0 +1,41 @@
+// This file is a part of Framsticks GenoFX library.
+// Copyright (C) 2002-2009  Maciej Komosinski.  See LICENSE.txt for details.
+// Refer to http://www.framsticks.com/ for further information.
+
+#ifndef _GENO_FTEST_H_
+#define _GENO_FTEST_H_
+
+#include "param.h"
+#include "sstring.h"
+#include "geno_fx.h"
+
+/** \file */
+
+///A sample class for genetic operations on DNA-like genotypes
+/**
+\author Maciej Komosinski
+
+This is a very simple class to illustrate basic genetic operations.
+To compile this code, you may need some GDK files.
+For a more sophisticated example of Geno_f4 derived from Geno_fx, refer to
+the available source on developmental encoding and f4 genotype format.
+
+\sa \ref geno_ftest_example
+*/      
+
+class Geno_ftest : public Geno_fx
+{
+ public:
+   Geno_ftest();
+   int checkValidity(const char *);
+   int validate(char *&);
+   int mutate(char *&g,float& chg);
+   int crossOver(char *&g1,char *&g2,float& chg1,float& chg2);
+   unsigned long style(const char *g, int pos);
+   char* getSimplest() {return "GTTCAGATC";}
+
+   double prob;
+};
+
+#endif
+
Index: /cpp/geno_fx/geno_fx.cpp
===================================================================
--- /cpp/geno_fx/geno_fx.cpp	(revision 3)
+++ /cpp/geno_fx/geno_fx.cpp	(revision 3)
@@ -0,0 +1,209 @@
+// This file is a part of Framsticks GenoFX library.
+// Copyright (C) 2002-2009  Maciej Komosinski.  See LICENSE.txt for details.
+// Refer to http://www.framsticks.com/ for further information.
+
+#include <ctype.h>  //isupper()
+#include "geno_fx.h"
+#include "framsg.h"
+#include "rndutil.h"
+
+int Geno_fx::roulette(const double *probtab,const int count)
+{
+   double sum=0;
+   int i;
+   for (i=0;i<count;i++) sum+=probtab[i];
+   double sel=rnd01*sum;
+   for (sum=0,i=0;i<count;i++) {sum+=probtab[i]; if (sel<sum) return i;}
+   return -1;
+}
+
+bool Geno_fx::getMinMaxDef(ParamInterface *p,int i,double &mn,double &mx,double &def)
+{
+   mn=mx=def=0;
+   int defined=0;
+   if (p->type(i)[0]=='f')
+   {
+      double _mn=0,_mx=1,_def=0.5;
+      defined=p->getMinMax(i,_mn,_mx,_def);
+      if (defined==1) _mx=_mn+1.0;
+      if (_mx<_mn && defined==3) _mn=_mx=_def; //only default was defined, let's assume min=max=default
+      if (defined<3) _def=(_mn+_mx)/2.0;
+      mn=_mn; mx=_mx; def=_def;
+   }
+   if (p->type(i)[0]=='d')
+   {
+      long _mn=0,_mx=1,_def=0;
+      defined=p->getMinMax(i,_mn,_mx,_def);
+      if (defined==1) _mx=_mn+1;
+      if (_mx<_mn && defined==3) _mn=_mx=_def; //only default was defined, let's assume min=max=default
+      if (defined<3) _def=(_mn+_mx)/2;
+      mn=_mn; mx=_mx; def=_def;
+   }
+   return defined==3;
+}
+
+int Geno_fx::selectRandomProperty(Neuro* n)
+{
+   int neuext=n->extraProperties().getPropCount(),
+       neucls=n->getClass()==NULL?0:n->getClass()->getProperties().getPropCount();
+   if (neuext+neucls==0) return -1; //no properties in this neuron
+   int index=randomN(neuext+neucls);
+   if (index>=neuext) index=index-neuext+100;
+   return index;
+}
+
+double Geno_fx::mutateNeuProperty(double current,Neuro *n,int i)
+{
+   if (i==-1) return mutateCreep('f',current,-10,10);
+   ParamInterface *pi;
+   if (i>=100) {i-=100; pi=&n->getClass()->getProperties();}
+      else pi=&n->extraProperties();
+   double newval;
+   /*bool ok=*/getMutatedProperty(*pi,i,current,newval);
+   return newval;
+}
+
+bool Geno_fx::mutatePropertyNaive(ParamInterface &p,int i)
+{
+   double mn,mx,df;
+   if (p.type(i)[0]!='f' && p.type(i)[0]!='d') return false; //don't know how to mutate
+   getMinMaxDef(&p,i,mn,mx,df);
+
+   ExtValue ev;
+   p.get(i,ev);
+   ev.setDouble(mutateCreep(p.type(i)[0],ev.getDouble(),mn,mx));
+   p.set(i,ev);
+   return true;
+}
+
+bool Geno_fx::mutateProperty(ParamInterface &p,int i)
+{
+   double newval;
+   ExtValue ev;
+   p.get(i,ev);
+   bool ok=getMutatedProperty(p,i,ev.getDouble(),newval);
+   if (ok) {ev.setDouble(newval); p.set(i,ev);}
+   return ok;
+}
+
+bool Geno_fx::getMutatedProperty(ParamInterface &p,int i,double oldval,double &newval)
+{
+   newval=0;
+   if (p.type(i)[0]!='f' && p.type(i)[0]!='d') return false; //don't know how to mutate
+   const char *n=p.id(i),*na=p.name(i);
+     if (strcmp(n,"si")==0 && strcmp(na,"Sigmoid")==0) newval=CustomRnd(distrib_sigmo); else
+     if (strcmp(n,"in")==0 && strcmp(na,"Inertia")==0) newval=CustomRnd(distrib_inertia); else
+     if (strcmp(n,"fo")==0 && strcmp(na,"Force")==0) newval=CustomRnd(distrib_force); else
+     {
+       double mn,mx,df;
+       getMinMaxDef(&p,i,mn,mx,df);
+       newval=mutateCreep(p.type(i)[0],oldval,mn,mx);
+     }
+   return true;
+}
+
+double Geno_fx::mutateCreep(char type,double current,double mn,double mx)
+{
+   double result=RndGen.Gauss(current,(mx-mn)/2/5); // /halfinterval, 5 times narrower
+   if (type=='d') {result=int(result+0.5); if (result==current) result+=randomN(2)*2-1;}
+    else result=floor(result*1000)/1000.0;
+   if (result>mx) result=mx; else
+    if (result<mn) result=mn;
+   return result;
+}
+
+NeuroClass* Geno_fx::getRandomNeuroClass()
+{
+	SListTempl<NeuroClass*> active;
+   for(int i=0;i<Neuro::getClassCount();i++)
+      if (Neuro::getClass(i)->genactive) active+=Neuro::getClass(i);
+   if (!active==0) return NULL; else return active(randomN(!active));
+}
+
+NeuroClass* Geno_fx::parseNeuroClass(char*& s)
+{
+   int len=strlen(s);
+   int Len=0;
+   NeuroClass *I=NULL;
+   for(int i=0;i<Neuro::getClassCount();i++)
+   {
+      const char *n=Neuro::getClass(i)->name;
+      int l=strlen(n);
+      if (len>=l && l>Len && (strncmp(s,n,l)==0)) {I=Neuro::getClass(i); Len=l;}
+   }
+   s+=Len;
+   return I;
+}
+
+Neuro* Geno_fx::findNeuro(const Model *m,const NeuroClass *nc)
+{
+  if (!m) return NULL;
+  for(int i=0;i<m->getNeuroCount();i++)
+     if (m->getNeuro(i)->getClass()==nc) return m->getNeuro(i);
+  return NULL; //neuron of class 'nc' was not found
+}
+
+int Geno_fx::neuroClassProp(char*& s,NeuroClass *nc,bool also_v1_N_props)
+{
+   int len=strlen(s);
+   int Len=0,I=-1;
+   if (nc)
+   {
+      Param p=nc->getProperties();
+      for(int i=0;i<p.getPropCount();i++)
+      {
+         const char *n=p.id(i);
+         int l=strlen(n);
+         if (len>=l && l>Len && (strncmp(s,n,l)==0)) {I=100+i; Len=l;}
+         if (also_v1_N_props) //recognize old properties symbols /=!
+         {
+            if (strcmp(n,"si")==0) n="/"; else
+            if (strcmp(n,"in")==0) n="="; else
+            if (strcmp(n,"fo")==0) n="!";
+            l=strlen(n);
+            if (len>=l && l>Len && (strncmp(s,n,l)==0)) {I=100+i; Len=l;}
+         }
+      }
+   }
+   Neuro n;
+   ParamInterface &p=n.extraProperties();
+   for(int i=0;i<p.getPropCount();i++)
+   {
+      const char *n=p.id(i);
+      int l=strlen(n);
+      if (len>=l && l>Len && (strncmp(s,n,l)==0)) {I=i; Len=l;}
+   }
+   s+=Len;
+   return I;
+}
+
+bool Geno_fx::isWS(const char c)
+{return c==' ' || c=='\n' || c=='\t' || c=='\r';}
+
+void Geno_fx::skipWS(char *&s)
+{ if (!s) FramMessage("Geno_fx","skipWS","NULL reference!",1); else
+     while (isWS(*s)) s++;
+}
+
+bool Geno_fx::areAlike(char *g1,char *g2)
+{
+	while (*g1 || *g2)
+	{
+		skipWS(g1);
+		skipWS(g2);
+		if (*g1 != *g2) return false; //when difference
+      if (!*g1 && !*g2) break; //both end
+      g1++;
+      g2++;
+	}
+	return true; //equal
+}
+
+char* Geno_fx::strchrn0(const char *str,char ch)
+{ return ch==0?NULL:strchr((char*)str,ch); }
+
+bool Geno_fx::isNeuroClassName(const char firstchar)
+{
+   return isupper(firstchar) || firstchar=='|' || firstchar=='@' || firstchar=='*';
+}
+
Index: /cpp/geno_fx/geno_fx.h
===================================================================
--- /cpp/geno_fx/geno_fx.h	(revision 3)
+++ /cpp/geno_fx/geno_fx.h	(revision 3)
@@ -0,0 +1,239 @@
+// This file is a part of Framsticks GenoFX library.
+// Copyright (C) 2002-2009  Maciej Komosinski.  See LICENSE.txt for details.
+// Refer to http://www.framsticks.com/ for further information.
+
+#ifndef _GENO_FX_H_
+#define _GENO_FX_H_
+
+#include "nonstd.h"
+#include "model.h"
+
+/** @file */
+
+/** \name Return codes for genetic operators */
+//@{
+#define GENOPER_OK          0 ///<operation successful
+#define GENOPER_OPFAIL     -1 ///<operation failed or could not be completed
+#define GENOPER_REPAIR     -2 ///<do not use in Geno_fx. GenMan uses it in checkValidity()... but will not. only f4 uses it
+#define GENOPER_NOOPER     -3 ///<do not use in Geno_fx. GenMan uses it for "no suitable operator for this genotype format"
+//@}
+
+/** \name gene/character predefined styles (for style() method) */
+//@{
+#define GENSTYLE_NONE       0 ///<no style specified (=normal font)
+#define GENSTYLE_INVALID    1 ///<this char cannot be accepted
+#define GENSTYLE_BOLD       2 ///<bold
+#define GENSTYLE_ITALIC     4 ///<italic
+#define GENSTYLE_STRIKEOUT  8 ///<strikeout (not recommended)
+//UNDERLINE used to mark errors
+//@}
+
+/** \name other useful style/color macros */
+//@{
+#define GENRGB(r,g,b) ((unsigned long)(((unsigned char)(r)|((unsigned short)((unsigned char)(g))<<8))|(((unsigned long)(unsigned char)(b))<<16)))
+#define GENSTYLE_RGBS(r,g,b,s) ((unsigned long)((unsigned char)s)<<24 | GENRGB(r,g,b))
+#define GENSTYLE_CS(rgb,s) ((unsigned long)((unsigned char)s)<<24 | rgb)
+
+#define GENGETSTYLE(style) ((style)>>24)
+#define GENGETCOLOR(style) ((style)&0x00ffffff)
+#define GENGET_R(style) ((style)&0xff)
+#define GENGET_G(style) ((style>>8)&0xff)
+#define GENGET_B(style) ((style>>16)&0xff)
+
+#define GENCOLOR_TEXT    GENRGB(0,0,0) ///<recommended color to use for text genes
+#define GENCOLOR_NUMBER  GENRGB(200,0,0) ///<recommended color to use for number genes
+//@}
+
+///Base class for genetic operations on genotypes of some genetic format
+/**\author Maciej Komosinski
+
+When designing genetic operations on some representation, inherit your class
+(for example Geno_fMy) from Geno_fx. Define some methods,
+like mutate(), in your class, to allow for evolution.
+Ensure they have the same names and arguments as the corresponding
+virtual methods in Geno_fx. Set the 'supported_format' variable to the
+appropriate genetic representation ID.
+Whenever arguments are genotypes, they are without
+trailing characters which describe genetic format
+(for example, "p:", not "//0\np:").
+When allocating/reallocating char* parameters, use malloc, free, realloc, strdup, etc.
+Do not use new and delete.
+
+All the methods you might define are:
+- checkValidity()
+- validate()
+- mutate()
+- crossOver()
+- getSimplest()
+- style()
+
+Your code must not cause errors (like invalid memory access, memory
+leaks) on any arguments, even 'random' ones. GENOPER_OPFAIL should
+be returned when an operator cannot cope with its argument genotype.
+
+To compile your code, you may also need some GDK files.
+A simple example is Geno_ftest class (see \ref geno_ftest_example "C++ code" for details).
+A more realistic example is Geno_f4 derived from Geno_fx: refer to
+the available source on developmental encoding and f4 genotype format.*/
+
+class Geno_fx
+{
+ public:
+   Param par;
+   char supported_format; ///<genotype format which is supported by this class ('6' for Geno_f6, etc.). Must be initialized in constructor
+   SString name; ///<name of this set of genetic operators
+   char **mutation_method_names; ///<array of names for mutation methods. If initialized (by new char*[]), must have entries for each method index returned by mutate(geno,chg,METHOD).  If initialized, it is automatically freed by this destructor.
+   Geno_fx() : par(empty_paramtab) {supported_format='x'; name="Default"; mutation_method_names=NULL; setDefaults();}
+
+/**Used to perform initializations of Param parameters that are not handled by the Param itself
+(i.e. string parameters need to be initialized here)*/
+   virtual void setDefaults() {}
+
+/**Checks a genotype for minor mistakes and major errors.
+\param geno genotype to be checked
+\retval error_position 1-based (or 1 if no exact error position known)
+\retval GENOPER_OK when the genotype is fully valid, and can be translated by the converter with \b no modifications nor tweaks*/
+   virtual int checkValidity(const char *geno) {return GENOPER_NOOPER;}
+
+/**Validates a genotype. The purpose of this function is to validate
+obvious/minor errors (range overruns, invalid links, etc.). Do not try
+to introduce entirely new genes in place of an error.
+\param geno input/output: genotype to be validated
+\retval GENOPER_OK must be returned in any case ("did my best to validate")*/
+   virtual int validate(char *&geno) {return GENOPER_NOOPER;}
+
+/**Mutates a genotype. Mutation should always change something.
+
+Avoid unnecessary calls in your code. Every genotype argument passed to this
+function is first checked, and validated if checkValidity() reported an error (or
+if there is no checkValidity() implemented). Every resulting genotype is subject
+to the same procedure, unless GENOPER_OPFAIL was returned. Thus you do not have
+to call these functions on input and output genotypes, because they are validated
+if needed.
+\param geno input/output: genotype to be mutated
+\param chg output: initialize with a value (in most cases 0..1) corresponding
+to the amount of genotype mutated. For example, it could be the number of changed
+genes divided by the total number of genes before mutation.
+\param chg method: initialize with the ID (number) of mutation method used.
+\retval GENOPER_OK
+\retval GENOPER_OPFAIL
+\sa
+Mutation example to illustrate the exchange of pointers for \e geno.
+The mutation adds random letter at the beginning or removes last letter from \e geno.
+\code
+{
+ int len=strlen(geno);
+ if (len==0 || random(2)==0) //add
+ {
+    method=0;
+    char* mutated=(char*)malloc(mutated,len+2); //allocate for mutated genotype
+    mutated[0]='A'+random(10); //first char random
+    strcpy(mutated+1,geno); //the rest is original
+    free(geno); //must take care of the original allocation
+    geno=mutated;
+ } else 
+ {
+    method=1;
+    geno[len-1]=0; //simply shorten the string - remove last char
+ }
+ chg=1.0/max(len,1); //estimation of mutation strength, divby0-safe
+} \endcode
+*/
+   virtual int mutate(char *&geno,float& chg,int &method) {method=-1; chg=-1; return GENOPER_NOOPER;}
+
+/**Crosses over two genotypes. It is sufficient to return only one child (in \e g1) and set \e chg1 only, then \e g2 must equal "".
+
+Avoid unnecessary calls in your code. Every genotype argument passed to this
+function is first checked, and validated if checkValidity() reported an error (or
+if there is no checkValidity() implemented). Every resulting genotype is subject
+to the same procedure, unless GENOPER_OPFAIL was returned. Thus you do not have
+to call these functions on input and output genotypes, because they are validated
+if needed.
+\param g1 input/output: parent1 genotype, initialize with child1
+\param g2 input/output: parent2 genotype, initialize with child2 if both children are available
+\param chg1 output: initialize with the fraction of parent1 genes in child1 (parent2 has the rest)
+\param chg2 output: initialize with the fraction of parent2 genes in child2 (parent1 has the rest)
+\retval GENOPER_OK
+\retval GENOPER_OPFAIL
+\sa mutate() for an example*/
+   virtual int crossOver(char *&g1,char *&g2,float& chg1,float& chg2) {chg1=chg2=-1; return GENOPER_NOOPER;}
+
+/**\return a pointer to the simplest genotype string*/
+   virtual char* getSimplest() {return NULL;}
+
+/**You may want to have your genotype colored. This method provides desired character styles for genes.
+\param geno genotype
+\param pos 0-based char offset
+\retval number-encoded visual style (and validity) of the genotype char at \e geno[pos].
+Assume white background.
+\sa GENSTYLE_* macros, like GENSTYLE_BOLD*/
+   virtual unsigned long style(const char *geno,int pos) {return GENSTYLE_RGBS(0,0,0,GENSTYLE_NONE);}
+
+///currently not used (similarity of two genotypes)
+   virtual float similarity(const char*,const char*) {return GENOPER_NOOPER;}
+   virtual ~Geno_fx() {if (mutation_method_names) {delete []mutation_method_names; mutation_method_names=NULL;}}
+//   virtual char getFormat() {return 255;} //returns supported genotype format, for ex. '1'
+//   virtual int enabled() {return 1;} // should be enabled by default
+
+/** \name Some helpful methods for you */
+//@{
+	 static int roulette(const double *probtab,const int count); 	///<returns random index according to probabilities in the \e probtab table or -1 if all probs are zero. \e count is the number of elements in \e probtab.
+   static bool getMinMaxDef(ParamInterface *p,int propindex,double &mn,double &mx,double &def); ///<perhaps a more useful (higher-level) way to obtain min/max/def info for integer and double properties. Returns true if min/max/def was really available (otherwise it is just invented).
+   static int selectRandomProperty(Neuro* n); ///<selects random property (either 0-based extraproperty of Neuro or 100-based property of its NeuroClass). -1 if Neuro has no properties.
+   static double mutateNeuProperty(double current,Neuro *n,int propindex); ///<returns value \e current mutated for the property \e propindex of NeuroClass \e nc or for extraproperty (\e propindex - 100) of Neuro. Neuro is used as read-only. Give \e propindex == -1 to mutate connection weight (\e nc is then ignored).
+   static bool mutatePropertyNaive(ParamInterface &p,int propindex); ///<creep-mutate selected property. Returns true when success. mutateProperty() should be used instead of this function.
+   static bool mutateProperty(ParamInterface &p,int propindex); ///<like mutatePropertyNaive(), but uses special probability distributions for some neuron properties.
+   static bool getMutatedProperty(ParamInterface &p,int i,double oldval,double &newval); ///<like mutateProperty(), but just returns \e newval, does not get nor set it using \e p.
+   static double mutateCreep(char type,double current,double mn,double mx); ///<returns \e current value creep-mutated with Gaussian distribution within [ \e mn , \e mx ] interval. Forced precision: 3 digits after comma. \e type must be either 'd' (integer) or 'f' (float/double).
+   static NeuroClass* getRandomNeuroClass(); ///<returns random neuroclass or NULL when no active classes.
+   static NeuroClass* parseNeuroClass(char *&s); ///<returns neuroclass or NULL if the string does not begin with a valid name. Advance \e s pointer.
+   static Neuro* findNeuro(const Model *m,const NeuroClass *nc); ///<returns pointer to first Neuro of class \e nc, or NULL if there is no such Neuro.
+   static int neuroClassProp(char *&s,NeuroClass *nc,bool also_v1_N_props=false); ///<returns 0-based property number for \e neuroclass, 100-based extraproperty number for Neuro, or -1 if the string does not begin with a valid property name. Advance \e s pointer if success.
+   static bool isWS(const char c); ///<is \e c a whitespace char?
+   static void skipWS(char *&s); ///<advances pointer \e s skipping whitespaces.
+   static bool areAlike(char*,char*); ///<compares two text strings skipping whitespaces. Returns 1 when equal, 0 when different.
+ 	 static char* strchrn0(const char *str,char ch); ///<like strchr, but does not find zero char in \e str.
+   static bool isNeuroClassName(const char firstchar); ///<determines if \e firstchar may start NeuroClass name. If not, it may start NeuroClass' (or Neuro's) property name.
+//@}
+};
+
+
+//
+// custom distributions for mutations of various parameters
+//
+/*
+static double distrib_weight[]=
+{
+5,                 // distribution -999 _-^_^-_ +999
+-999, 999,         // each weight value may be useful, especially...
+  -5, -0.3,        // ...little non-zero values
+  -3, -0.6,
+ 0.6, 3,
+ 0.3, 5,
+};*/
+static double distrib_force[]=   // for '!'
+{
+3,                 // distribution 0 -__/ +1
+0.001, 0.2,        // "slow" neurons
+0.001, 1,
+    1, 1,          // "fast" neurons
+};
+static double distrib_inertia[]=  // for '='
+{
+2,                 // distribution 0 |..- +1
+  0, 0,            // "fast" neurons
+0.7, 0.98,
+};
+static double distrib_sigmo[]=  // for '/'
+{
+5,                 // distribution -999 -..-^-..- +999
+-999, -999,        //"perceptron"
+ 999, 999,
+  -5, -1,          // nonlinear
+   1, 5,
+  -1, 1,           // ~linear
+};
+
+
+#endif
+
Index: /cpp/geno_fx/html/annotated.html
===================================================================
--- /cpp/geno_fx/html/annotated.html	(revision 3)
+++ /cpp/geno_fx/html/annotated.html	(revision 3)
@@ -0,0 +1,18 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>Annotated Index</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.17 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; <a class="qindex" href="globals.html">File Members</a> &nbsp; </center>
+<hr><h1>Framsticks GenoFX Compound List</h1>Here are the classes, structs, unions and interfaces with brief descriptions:<table>
+  <tr><td class="indexkey"><a class="el" href="classGeno__ftest.html">Geno_ftest</a></td><td class="indexvalue">A sample class for genetic operations on DNA-like genotypes</td></tr>
+  <tr><td class="indexkey"><a class="el" href="classGeno__fx.html">Geno_fx</a></td><td class="indexvalue">Base class for genetic operations on genotypes of some genetic format</td></tr>
+</table>
+<hr><address style="align: right;"><small>Generated on Sun Sep 15 00:58:40 2002 for Framsticks GenoFX by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0 
+width=110 height=53></a>1.2.17 </small></address>
+</body>
+</html>
Index: /cpp/geno_fx/html/classGeno__ftest-members.html
===================================================================
--- /cpp/geno_fx/html/classGeno__ftest-members.html	(revision 3)
+++ /cpp/geno_fx/html/classGeno__ftest-members.html	(revision 3)
@@ -0,0 +1,43 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>Member List</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.17 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; <a class="qindex" href="globals.html">File Members</a> &nbsp; </center>
+<hr><h1>Geno_ftest Member List</h1>This is the complete list of members for <a class="el" href="classGeno__ftest.html">Geno_ftest</a>, including all inherited members.<table>
+  <tr bgcolor="#f0f0f0"><td><a class="el" href="classGeno__fx.html#z7_11">areAlike</a>(char *, char *)</td><td><a class="el" href="classGeno__fx.html">Geno_fx</a></td><td><code> [static]</code></td></tr>
+  <tr bgcolor="#f0f0f0"><td><a class="el" href="classGeno__ftest.html#a1">checkValidity</a>(const char *)</td><td><a class="el" href="classGeno__ftest.html">Geno_ftest</a></td><td><code> [virtual]</code></td></tr>
+  <tr bgcolor="#f0f0f0"><td><a class="el" href="classGeno__ftest.html#a4">crossOver</a>(char *&amp;g1, char *&amp;g2, float &amp;chg1, float &amp;chg2)</td><td><a class="el" href="classGeno__ftest.html">Geno_ftest</a></td><td><code> [virtual]</code></td></tr>
+  <tr bgcolor="#f0f0f0"><td><b>Geno_ftest</b>() (defined in <a class="el" href="classGeno__ftest.html">Geno_ftest</a>)</td><td><a class="el" href="classGeno__ftest.html">Geno_ftest</a></td><td></td></tr>
+  <tr bgcolor="#f0f0f0"><td><b>Geno_fx</b>() (defined in <a class="el" href="classGeno__fx.html">Geno_fx</a>)</td><td><a class="el" href="classGeno__fx.html">Geno_fx</a></td><td></td></tr>
+  <tr bgcolor="#f0f0f0"><td><a class="el" href="classGeno__fx.html#z7_1">getMinMaxDef</a>(ParamInterface *p, int propindex, double &amp;mn, double &amp;mx, double &amp;def)</td><td><a class="el" href="classGeno__fx.html">Geno_fx</a></td><td><code> [static]</code></td></tr>
+  <tr bgcolor="#f0f0f0"><td><a class="el" href="classGeno__fx.html#z7_6">getRandomNeuroClass</a>()</td><td><a class="el" href="classGeno__fx.html">Geno_fx</a></td><td><code> [static]</code></td></tr>
+  <tr bgcolor="#f0f0f0"><td><b>getSimplest</b>() (defined in <a class="el" href="classGeno__ftest.html">Geno_ftest</a>)</td><td><a class="el" href="classGeno__ftest.html">Geno_ftest</a></td><td><code> [virtual]</code></td></tr>
+  <tr bgcolor="#f0f0f0"><td><a class="el" href="classGeno__fx.html#z7_13">isNeuroClassName</a>(const char firstchar)</td><td><a class="el" href="classGeno__fx.html">Geno_fx</a></td><td><code> [static]</code></td></tr>
+  <tr bgcolor="#f0f0f0"><td><a class="el" href="classGeno__fx.html#z7_9">isWS</a>(const char c)</td><td><a class="el" href="classGeno__fx.html">Geno_fx</a></td><td><code> [static]</code></td></tr>
+  <tr bgcolor="#f0f0f0"><td><a class="el" href="classGeno__ftest.html#a3">mutate</a>(char *&amp;g, float &amp;chg)</td><td><a class="el" href="classGeno__ftest.html">Geno_ftest</a></td><td><code> [virtual]</code></td></tr>
+  <tr bgcolor="#f0f0f0"><td><a class="el" href="classGeno__fx.html#z7_3">mutateNeuProperty</a>(double current, Neuro *n, int propindex)</td><td><a class="el" href="classGeno__fx.html">Geno_fx</a></td><td><code> [static]</code></td></tr>
+  <tr bgcolor="#f0f0f0"><td><a class="el" href="classGeno__fx.html#z7_4">mutateProperty</a>(ParamInterface &amp;p, int propindex)</td><td><a class="el" href="classGeno__fx.html">Geno_fx</a></td><td><code> [static]</code></td></tr>
+  <tr bgcolor="#f0f0f0"><td><a class="el" href="classGeno__fx.html#z7_5">mutateValue</a>(double current, double vmin, double vmax)</td><td><a class="el" href="classGeno__fx.html">Geno_fx</a></td><td><code> [static]</code></td></tr>
+  <tr bgcolor="#f0f0f0"><td><a class="el" href="classGeno__fx.html#m2">name</a></td><td><a class="el" href="classGeno__fx.html">Geno_fx</a></td><td></td></tr>
+  <tr bgcolor="#f0f0f0"><td><a class="el" href="classGeno__fx.html#z7_8">neuroClassProp</a>(char *&amp;s, NeuroClass *nc, bool also_v1_N_props=false)</td><td><a class="el" href="classGeno__fx.html">Geno_fx</a></td><td><code> [static]</code></td></tr>
+  <tr bgcolor="#f0f0f0"><td><b>par</b> (defined in <a class="el" href="classGeno__fx.html">Geno_fx</a>)</td><td><a class="el" href="classGeno__fx.html">Geno_fx</a></td><td></td></tr>
+  <tr bgcolor="#f0f0f0"><td><a class="el" href="classGeno__fx.html#z7_7">parseNeuroClass</a>(char *&amp;s)</td><td><a class="el" href="classGeno__fx.html">Geno_fx</a></td><td><code> [static]</code></td></tr>
+  <tr bgcolor="#f0f0f0"><td><b>prob</b> (defined in <a class="el" href="classGeno__ftest.html">Geno_ftest</a>)</td><td><a class="el" href="classGeno__ftest.html">Geno_ftest</a></td><td></td></tr>
+  <tr bgcolor="#f0f0f0"><td><a class="el" href="classGeno__fx.html#z7_0">roulette</a>(const double *probtab, int count)</td><td><a class="el" href="classGeno__fx.html">Geno_fx</a></td><td><code> [static]</code></td></tr>
+  <tr bgcolor="#f0f0f0"><td><a class="el" href="classGeno__fx.html#z7_2">selectRandomProperty</a>(Neuro *n)</td><td><a class="el" href="classGeno__fx.html">Geno_fx</a></td><td><code> [static]</code></td></tr>
+  <tr bgcolor="#f0f0f0"><td><a class="el" href="classGeno__fx.html#a7">similarity</a>(const char *, const char *)</td><td><a class="el" href="classGeno__fx.html">Geno_fx</a></td><td><code> [virtual]</code></td></tr>
+  <tr bgcolor="#f0f0f0"><td><a class="el" href="classGeno__fx.html#z7_10">skipWS</a>(char *&amp;s)</td><td><a class="el" href="classGeno__fx.html">Geno_fx</a></td><td><code> [static]</code></td></tr>
+  <tr bgcolor="#f0f0f0"><td><a class="el" href="classGeno__fx.html#z7_12">strchrn0</a>(const char *str, char ch)</td><td><a class="el" href="classGeno__fx.html">Geno_fx</a></td><td><code> [static]</code></td></tr>
+  <tr bgcolor="#f0f0f0"><td><a class="el" href="classGeno__ftest.html#a5">style</a>(const char *g, int pos)</td><td><a class="el" href="classGeno__ftest.html">Geno_ftest</a></td><td><code> [virtual]</code></td></tr>
+  <tr bgcolor="#f0f0f0"><td><a class="el" href="classGeno__fx.html#m1">supported_format</a></td><td><a class="el" href="classGeno__fx.html">Geno_fx</a></td><td></td></tr>
+  <tr bgcolor="#f0f0f0"><td><a class="el" href="classGeno__ftest.html#a2">validate</a>(char *&amp;)</td><td><a class="el" href="classGeno__ftest.html">Geno_ftest</a></td><td><code> [virtual]</code></td></tr>
+  <tr bgcolor="#f0f0f0"><td><b>~Geno_fx</b>() (defined in <a class="el" href="classGeno__fx.html">Geno_fx</a>)</td><td><a class="el" href="classGeno__fx.html">Geno_fx</a></td><td><code> [virtual]</code></td></tr>
+</table><hr><address style="align: right;"><small>Generated on Sun Sep 15 00:58:40 2002 for Framsticks GenoFX by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0 
+width=110 height=53></a>1.2.17 </small></address>
+</body>
+</html>
Index: /cpp/geno_fx/html/classGeno__ftest.html
===================================================================
--- /cpp/geno_fx/html/classGeno__ftest.html	(revision 3)
+++ /cpp/geno_fx/html/classGeno__ftest.html	(revision 3)
@@ -0,0 +1,57 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>Geno_ftest class Reference</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.17 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; <a class="qindex" href="globals.html">File Members</a> &nbsp; </center>
+<hr><h1>Geno_ftest Class Reference</h1>A sample class for genetic operations on DNA-like genotypes. 
+<a href="#_details">More...</a>
+<p>
+<p>Inheritance diagram for Geno_ftest:
+<p><center><img src="classGeno__ftest.png" usemap="#Geno_ftest_map" border="0" alt=""></center>
+<map name="Geno_ftest_map">
+<area href="classGeno__fx.html" alt="Geno_fx" shape="rect" coords="0,0,72,24">
+</map>
+<a href="classGeno__ftest-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 Methods</h2></td></tr>
+<tr><td nowrap align=right valign=top><a name="a0" doxytag="Geno_ftest::Geno_ftest"></a>
+&nbsp;</td><td valign=bottom><b>Geno_ftest</b> ()</td></tr>
+<tr><td nowrap align=right valign=top><a name="a1" doxytag="Geno_ftest::checkValidity"></a>
+int&nbsp;</td><td valign=bottom><a class="el" href="classGeno__ftest.html#a1">checkValidity</a> (const char *)</td></tr>
+<tr><td>&nbsp;</td><td><font size=-1><em>The only letters allowed are A,T,G,C.</em></font><br><br></td></tr>
+<tr><td nowrap align=right valign=top><a name="a2" doxytag="Geno_ftest::validate"></a>
+int&nbsp;</td><td valign=bottom><a class="el" href="classGeno__ftest.html#a2">validate</a> (char *&amp;)</td></tr>
+<tr><td>&nbsp;</td><td><font size=-1><em>Remove all invalid letters from the genotype.</em></font><br><br></td></tr>
+<tr><td nowrap align=right valign=top><a name="a3" doxytag="Geno_ftest::mutate"></a>
+int&nbsp;</td><td valign=bottom><a class="el" href="classGeno__ftest.html#a3">mutate</a> (char *&amp;g, float &amp;chg)</td></tr>
+<tr><td>&nbsp;</td><td><font size=-1><em>Very simple mutation.</em></font><br><br></td></tr>
+<tr><td nowrap align=right valign=top><a name="a4" doxytag="Geno_ftest::crossOver"></a>
+int&nbsp;</td><td valign=bottom><a class="el" href="classGeno__ftest.html#a4">crossOver</a> (char *&amp;g1, char *&amp;g2, float &amp;chg1, float &amp;chg2)</td></tr>
+<tr><td>&nbsp;</td><td><font size=-1><em>A simple one-point crossover.</em></font><br><br></td></tr>
+<tr><td nowrap align=right valign=top><a name="a5" doxytag="Geno_ftest::style"></a>
+unsigned long&nbsp;</td><td valign=bottom><a class="el" href="classGeno__ftest.html#a5">style</a> (const char *g, int pos)</td></tr>
+<tr><td>&nbsp;</td><td><font size=-1><em>Applying some colors and font styles...</em></font><br><br></td></tr>
+<tr><td nowrap align=right valign=top><a name="a6" doxytag="Geno_ftest::getSimplest"></a>
+char *&nbsp;</td><td valign=bottom><b>getSimplest</b> ()</td></tr>
+<tr><td colspan=2><br><h2>Public Attributes</h2></td></tr>
+<tr><td nowrap align=right valign=top><a name="m0" doxytag="Geno_ftest::prob"></a>
+double&nbsp;</td><td valign=bottom><b>prob</b></td></tr>
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+A sample class for genetic operations on DNA-like genotypes.
+<p>
+<dl compact><dt><b>Author: </b></dt><dd>
+Maciej Komosinski</dl>This is a very simple class to illustrate basic genetic operations. To compile this code, you may need some GDK files. For a more sophisticated example of Geno_f4 derived from <a class="el" href="classGeno__fx.html">Geno_fx</a>, refer to the available source on developmental encoding and f4 genotype format.
+<p>
+<dl compact><dt><b>See also: </b></dt><dd>
+<a class="el" href="geno__ftest_8cpp.html#geno_ftest_example">geno_ftest_example</a> </dl>
+<p>
+<hr><address style="align: right;"><small>Generated on Sun Sep 15 00:58:40 2002 for Framsticks GenoFX by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0 
+width=110 height=53></a>1.2.17 </small></address>
+</body>
+</html>
Index: /cpp/geno_fx/html/classGeno__fx-members.html
===================================================================
--- /cpp/geno_fx/html/classGeno__fx-members.html	(revision 3)
+++ /cpp/geno_fx/html/classGeno__fx-members.html	(revision 3)
@@ -0,0 +1,41 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>Member List</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.17 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; <a class="qindex" href="globals.html">File Members</a> &nbsp; </center>
+<hr><h1>Geno_fx Member List</h1>This is the complete list of members for <a class="el" href="classGeno__fx.html">Geno_fx</a>, including all inherited members.<table>
+  <tr bgcolor="#f0f0f0"><td><a class="el" href="classGeno__fx.html#z7_11">areAlike</a>(char *, char *)</td><td><a class="el" href="classGeno__fx.html">Geno_fx</a></td><td><code> [static]</code></td></tr>
+  <tr bgcolor="#f0f0f0"><td><a class="el" href="classGeno__fx.html#a1">checkValidity</a>(const char *geno)</td><td><a class="el" href="classGeno__fx.html">Geno_fx</a></td><td><code> [virtual]</code></td></tr>
+  <tr bgcolor="#f0f0f0"><td><a class="el" href="classGeno__fx.html#a4">crossOver</a>(char *&amp;g1, char *&amp;g2, float &amp;chg1, float &amp;chg2)</td><td><a class="el" href="classGeno__fx.html">Geno_fx</a></td><td><code> [virtual]</code></td></tr>
+  <tr bgcolor="#f0f0f0"><td><b>Geno_fx</b>() (defined in <a class="el" href="classGeno__fx.html">Geno_fx</a>)</td><td><a class="el" href="classGeno__fx.html">Geno_fx</a></td><td></td></tr>
+  <tr bgcolor="#f0f0f0"><td><a class="el" href="classGeno__fx.html#z7_1">getMinMaxDef</a>(ParamInterface *p, int propindex, double &amp;mn, double &amp;mx, double &amp;def)</td><td><a class="el" href="classGeno__fx.html">Geno_fx</a></td><td><code> [static]</code></td></tr>
+  <tr bgcolor="#f0f0f0"><td><a class="el" href="classGeno__fx.html#z7_6">getRandomNeuroClass</a>()</td><td><a class="el" href="classGeno__fx.html">Geno_fx</a></td><td><code> [static]</code></td></tr>
+  <tr bgcolor="#f0f0f0"><td><a class="el" href="classGeno__fx.html#a5">getSimplest</a>()</td><td><a class="el" href="classGeno__fx.html">Geno_fx</a></td><td><code> [virtual]</code></td></tr>
+  <tr bgcolor="#f0f0f0"><td><a class="el" href="classGeno__fx.html#z7_13">isNeuroClassName</a>(const char firstchar)</td><td><a class="el" href="classGeno__fx.html">Geno_fx</a></td><td><code> [static]</code></td></tr>
+  <tr bgcolor="#f0f0f0"><td><a class="el" href="classGeno__fx.html#z7_9">isWS</a>(const char c)</td><td><a class="el" href="classGeno__fx.html">Geno_fx</a></td><td><code> [static]</code></td></tr>
+  <tr bgcolor="#f0f0f0"><td><a class="el" href="classGeno__fx.html#a3">mutate</a>(char *&amp;geno, float &amp;chg)</td><td><a class="el" href="classGeno__fx.html">Geno_fx</a></td><td><code> [virtual]</code></td></tr>
+  <tr bgcolor="#f0f0f0"><td><a class="el" href="classGeno__fx.html#z7_3">mutateNeuProperty</a>(double current, Neuro *n, int propindex)</td><td><a class="el" href="classGeno__fx.html">Geno_fx</a></td><td><code> [static]</code></td></tr>
+  <tr bgcolor="#f0f0f0"><td><a class="el" href="classGeno__fx.html#z7_4">mutateProperty</a>(ParamInterface &amp;p, int propindex)</td><td><a class="el" href="classGeno__fx.html">Geno_fx</a></td><td><code> [static]</code></td></tr>
+  <tr bgcolor="#f0f0f0"><td><a class="el" href="classGeno__fx.html#z7_5">mutateValue</a>(double current, double vmin, double vmax)</td><td><a class="el" href="classGeno__fx.html">Geno_fx</a></td><td><code> [static]</code></td></tr>
+  <tr bgcolor="#f0f0f0"><td><a class="el" href="classGeno__fx.html#m2">name</a></td><td><a class="el" href="classGeno__fx.html">Geno_fx</a></td><td></td></tr>
+  <tr bgcolor="#f0f0f0"><td><a class="el" href="classGeno__fx.html#z7_8">neuroClassProp</a>(char *&amp;s, NeuroClass *nc, bool also_v1_N_props=false)</td><td><a class="el" href="classGeno__fx.html">Geno_fx</a></td><td><code> [static]</code></td></tr>
+  <tr bgcolor="#f0f0f0"><td><b>par</b> (defined in <a class="el" href="classGeno__fx.html">Geno_fx</a>)</td><td><a class="el" href="classGeno__fx.html">Geno_fx</a></td><td></td></tr>
+  <tr bgcolor="#f0f0f0"><td><a class="el" href="classGeno__fx.html#z7_7">parseNeuroClass</a>(char *&amp;s)</td><td><a class="el" href="classGeno__fx.html">Geno_fx</a></td><td><code> [static]</code></td></tr>
+  <tr bgcolor="#f0f0f0"><td><a class="el" href="classGeno__fx.html#z7_0">roulette</a>(const double *probtab, int count)</td><td><a class="el" href="classGeno__fx.html">Geno_fx</a></td><td><code> [static]</code></td></tr>
+  <tr bgcolor="#f0f0f0"><td><a class="el" href="classGeno__fx.html#z7_2">selectRandomProperty</a>(Neuro *n)</td><td><a class="el" href="classGeno__fx.html">Geno_fx</a></td><td><code> [static]</code></td></tr>
+  <tr bgcolor="#f0f0f0"><td><a class="el" href="classGeno__fx.html#a7">similarity</a>(const char *, const char *)</td><td><a class="el" href="classGeno__fx.html">Geno_fx</a></td><td><code> [virtual]</code></td></tr>
+  <tr bgcolor="#f0f0f0"><td><a class="el" href="classGeno__fx.html#z7_10">skipWS</a>(char *&amp;s)</td><td><a class="el" href="classGeno__fx.html">Geno_fx</a></td><td><code> [static]</code></td></tr>
+  <tr bgcolor="#f0f0f0"><td><a class="el" href="classGeno__fx.html#z7_12">strchrn0</a>(const char *str, char ch)</td><td><a class="el" href="classGeno__fx.html">Geno_fx</a></td><td><code> [static]</code></td></tr>
+  <tr bgcolor="#f0f0f0"><td><a class="el" href="classGeno__fx.html#a6">style</a>(const char *geno, int pos)</td><td><a class="el" href="classGeno__fx.html">Geno_fx</a></td><td><code> [virtual]</code></td></tr>
+  <tr bgcolor="#f0f0f0"><td><a class="el" href="classGeno__fx.html#m1">supported_format</a></td><td><a class="el" href="classGeno__fx.html">Geno_fx</a></td><td></td></tr>
+  <tr bgcolor="#f0f0f0"><td><a class="el" href="classGeno__fx.html#a2">validate</a>(char *&amp;geno)</td><td><a class="el" href="classGeno__fx.html">Geno_fx</a></td><td><code> [virtual]</code></td></tr>
+  <tr bgcolor="#f0f0f0"><td><b>~Geno_fx</b>() (defined in <a class="el" href="classGeno__fx.html">Geno_fx</a>)</td><td><a class="el" href="classGeno__fx.html">Geno_fx</a></td><td><code> [virtual]</code></td></tr>
+</table><hr><address style="align: right;"><small>Generated on Sun Sep 15 00:58:40 2002 for Framsticks GenoFX by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0 
+width=110 height=53></a>1.2.17 </small></address>
+</body>
+</html>
Index: /cpp/geno_fx/html/classGeno__fx.html
===================================================================
--- /cpp/geno_fx/html/classGeno__fx.html	(revision 3)
+++ /cpp/geno_fx/html/classGeno__fx.html	(revision 3)
@@ -0,0 +1,413 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>Geno_fx class Reference</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.17 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; <a class="qindex" href="globals.html">File Members</a> &nbsp; </center>
+<hr><h1>Geno_fx Class Reference</h1>Base class for genetic operations on genotypes of some genetic format. 
+<a href="#_details">More...</a>
+<p>
+<p>Inheritance diagram for Geno_fx:
+<p><center><img src="classGeno__fx.png" usemap="#Geno_fx_map" border="0" alt=""></center>
+<map name="Geno_fx_map">
+<area href="classGeno__ftest.html" alt="Geno_ftest" shape="rect" coords="0,56,72,80">
+</map>
+<a href="classGeno__fx-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 Methods</h2></td></tr>
+<tr><td nowrap align=right valign=top><a name="a0" doxytag="Geno_fx::Geno_fx"></a>
+&nbsp;</td><td valign=bottom><b>Geno_fx</b> ()</td></tr>
+<tr><td nowrap align=right valign=top>virtual int&nbsp;</td><td valign=bottom><a class="el" href="classGeno__fx.html#a1">checkValidity</a> (const char *geno)</td></tr>
+<tr><td nowrap align=right valign=top>virtual int&nbsp;</td><td valign=bottom><a class="el" href="classGeno__fx.html#a2">validate</a> (char *&amp;geno)</td></tr>
+<tr><td nowrap align=right valign=top>virtual int&nbsp;</td><td valign=bottom><a class="el" href="classGeno__fx.html#a3">mutate</a> (char *&amp;geno, float &amp;chg)</td></tr>
+<tr><td nowrap align=right valign=top>virtual int&nbsp;</td><td valign=bottom><a class="el" href="classGeno__fx.html#a4">crossOver</a> (char *&amp;g1, char *&amp;g2, float &amp;chg1, float &amp;chg2)</td></tr>
+<tr><td nowrap align=right valign=top>virtual char *&nbsp;</td><td valign=bottom><a class="el" href="classGeno__fx.html#a5">getSimplest</a> ()</td></tr>
+<tr><td nowrap align=right valign=top>virtual unsigned long&nbsp;</td><td valign=bottom><a class="el" href="classGeno__fx.html#a6">style</a> (const char *geno, int pos)</td></tr>
+<tr><td nowrap align=right valign=top><a name="a7" doxytag="Geno_fx::similarity"></a>
+virtual float&nbsp;</td><td valign=bottom><a class="el" href="classGeno__fx.html#a7">similarity</a> (const char *, const char *)</td></tr>
+<tr><td>&nbsp;</td><td><font size=-1><em>currently not used (similarity of two genotypes)</em></font><br><br></td></tr>
+<tr><td nowrap align=right valign=top><a name="a8" doxytag="Geno_fx::~Geno_fx"></a>
+virtual&nbsp;</td><td valign=bottom><b>~Geno_fx</b> ()</td></tr>
+<tr><td colspan=2><br><h2>Static Public Methods</h2></td></tr>
+<tr><td colspan="2"><div class="groupHeader">Some helpful methods for you</div></td></tr>
+<tr><td nowrap align=right valign=top><a name="z7_0" doxytag="Geno_fx::roulette"></a>
+int&nbsp;</td><td valign=bottom><a class="el" href="classGeno__fx.html#z7_0">roulette</a> (const double *probtab, int count)</td></tr>
+<tr><td>&nbsp;</td><td><font size=-1><em>returns random index according to probabilities in the <em>probtab</em> table or -1 if all probs are zero. <em>count</em> is the number of elements in <em>probtab</em>.</em></font><br><br></td></tr>
+<tr><td nowrap align=right valign=top><a name="z7_1" doxytag="Geno_fx::getMinMaxDef"></a>
+bool&nbsp;</td><td valign=bottom><a class="el" href="classGeno__fx.html#z7_1">getMinMaxDef</a> (ParamInterface *p, int propindex, double &amp;mn, double &amp;mx, double &amp;def)</td></tr>
+<tr><td>&nbsp;</td><td><font size=-1><em>perhaps a more useful (higher-level) way to obtain min/max/def info for integer and double properties. Returns true if min/max/def was really available (otherwise it is just invented).</em></font><br><br></td></tr>
+<tr><td nowrap align=right valign=top><a name="z7_2" doxytag="Geno_fx::selectRandomProperty"></a>
+int&nbsp;</td><td valign=bottom><a class="el" href="classGeno__fx.html#z7_2">selectRandomProperty</a> (Neuro *n)</td></tr>
+<tr><td>&nbsp;</td><td><font size=-1><em>selects random property (either 0-based extraproperty of Neuro or 100-based property of its NeuroClass).</em></font><br><br></td></tr>
+<tr><td nowrap align=right valign=top><a name="z7_3" doxytag="Geno_fx::mutateNeuProperty"></a>
+double&nbsp;</td><td valign=bottom><a class="el" href="classGeno__fx.html#z7_3">mutateNeuProperty</a> (double current, Neuro *n, int propindex)</td></tr>
+<tr><td>&nbsp;</td><td><font size=-1><em>returns value <em>current</em> mutated for the property <em>propindex</em> of NeuroClass <em>nc</em> or for extraproperty (<em>propindex</em> - 100) of Neuro. Give <em>propindex</em> == -1 to mutate connection weight (<em>nc</em> is then ignored).</em></font><br><br></td></tr>
+<tr><td nowrap align=right valign=top><a name="z7_4" doxytag="Geno_fx::mutateProperty"></a>
+bool&nbsp;</td><td valign=bottom><a class="el" href="classGeno__fx.html#z7_4">mutateProperty</a> (ParamInterface &amp;p, int propindex)</td></tr>
+<tr><td>&nbsp;</td><td><font size=-1><em>mutate selected property. Returns true when success.</em></font><br><br></td></tr>
+<tr><td nowrap align=right valign=top><a name="z7_5" doxytag="Geno_fx::mutateValue"></a>
+double&nbsp;</td><td valign=bottom><a class="el" href="classGeno__fx.html#z7_5">mutateValue</a> (double current, double vmin, double vmax)</td></tr>
+<tr><td>&nbsp;</td><td><font size=-1><em>returns <em>current</em> value "creep"-mutated with Gaussian distribution within [ <em>vmin</em> , <em>vmax</em> ] interval. 3 digits after comma.</em></font><br><br></td></tr>
+<tr><td nowrap align=right valign=top><a name="z7_6" doxytag="Geno_fx::getRandomNeuroClass"></a>
+NeuroClass *&nbsp;</td><td valign=bottom><a class="el" href="classGeno__fx.html#z7_6">getRandomNeuroClass</a> ()</td></tr>
+<tr><td>&nbsp;</td><td><font size=-1><em>returns random neuroclass or NULL when no active classes.</em></font><br><br></td></tr>
+<tr><td nowrap align=right valign=top><a name="z7_7" doxytag="Geno_fx::parseNeuroClass"></a>
+NeuroClass *&nbsp;</td><td valign=bottom><a class="el" href="classGeno__fx.html#z7_7">parseNeuroClass</a> (char *&amp;s)</td></tr>
+<tr><td>&nbsp;</td><td><font size=-1><em>returns neuroclass or NULL if the string does not begin with a valid name. Advance <em>s</em> pointer.</em></font><br><br></td></tr>
+<tr><td nowrap align=right valign=top><a name="z7_8" doxytag="Geno_fx::neuroClassProp"></a>
+int&nbsp;</td><td valign=bottom><a class="el" href="classGeno__fx.html#z7_8">neuroClassProp</a> (char *&amp;s, NeuroClass *nc, bool also_v1_N_props=false)</td></tr>
+<tr><td>&nbsp;</td><td><font size=-1><em>returns 0-based property number for <em>neuroclass</em>, 100-based extraproperty number for Neuro, or -1 if the string does not begin with a valid property name. Advance <em>s</em> pointer if success.</em></font><br><br></td></tr>
+<tr><td nowrap align=right valign=top><a name="z7_9" doxytag="Geno_fx::isWS"></a>
+bool&nbsp;</td><td valign=bottom><a class="el" href="classGeno__fx.html#z7_9">isWS</a> (const char c)</td></tr>
+<tr><td>&nbsp;</td><td><font size=-1><em>is <em>c</em> a whitespace char?</em></font><br><br></td></tr>
+<tr><td nowrap align=right valign=top><a name="z7_10" doxytag="Geno_fx::skipWS"></a>
+void&nbsp;</td><td valign=bottom><a class="el" href="classGeno__fx.html#z7_10">skipWS</a> (char *&amp;s)</td></tr>
+<tr><td>&nbsp;</td><td><font size=-1><em>advances pointer <em>s</em> skipping whitespaces.</em></font><br><br></td></tr>
+<tr><td nowrap align=right valign=top><a name="z7_11" doxytag="Geno_fx::areAlike"></a>
+bool&nbsp;</td><td valign=bottom><a class="el" href="classGeno__fx.html#z7_11">areAlike</a> (char *, char *)</td></tr>
+<tr><td>&nbsp;</td><td><font size=-1><em>compares two text strings skipping whitespaces. Returns 1 when equal, 0 when different.</em></font><br><br></td></tr>
+<tr><td nowrap align=right valign=top><a name="z7_12" doxytag="Geno_fx::strchrn0"></a>
+char *&nbsp;</td><td valign=bottom><a class="el" href="classGeno__fx.html#z7_12">strchrn0</a> (const char *str, char ch)</td></tr>
+<tr><td>&nbsp;</td><td><font size=-1><em>like strchr, but does not find zero char in <em>str</em>.</em></font><br><br></td></tr>
+<tr><td nowrap align=right valign=top><a name="z7_13" doxytag="Geno_fx::isNeuroClassName"></a>
+bool&nbsp;</td><td valign=bottom><a class="el" href="classGeno__fx.html#z7_13">isNeuroClassName</a> (const char firstchar)</td></tr>
+<tr><td>&nbsp;</td><td><font size=-1><em>determines if <em>firstchar</em> may start NeuroClass name. If not, it may start NeuroClass' (or Neuro's) property name.</em></font><br><br></td></tr>
+<tr><td colspan=2><br><h2>Public Attributes</h2></td></tr>
+<tr><td nowrap align=right valign=top><a name="m0" doxytag="Geno_fx::par"></a>
+Param&nbsp;</td><td valign=bottom><b>par</b></td></tr>
+<tr><td nowrap align=right valign=top><a name="m1" doxytag="Geno_fx::supported_format"></a>
+char&nbsp;</td><td valign=bottom><a class="el" href="classGeno__fx.html#m1">supported_format</a></td></tr>
+<tr><td>&nbsp;</td><td><font size=-1><em>genotype format which is supported by this class ('6' for Geno_f6, etc.). Must be initialized in constructor</em></font><br><br></td></tr>
+<tr><td nowrap align=right valign=top><a name="m2" doxytag="Geno_fx::name"></a>
+SString&nbsp;</td><td valign=bottom><a class="el" href="classGeno__fx.html#m2">name</a></td></tr>
+<tr><td>&nbsp;</td><td><font size=-1><em>name of this set of genetic operators</em></font><br><br></td></tr>
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+Base class for genetic operations on genotypes of some genetic format.
+<p>
+<dl compact><dt><b>Author: </b></dt><dd>
+Maciej Komosinski</dl>When designing your genetic representation, inherit your class (for example Geno_fMy) from Geno_fx. Define some methods, like <a class="el" href="classGeno__fx.html#a3">mutate</a>() and validite(), in your class, to allow for evolution. Ensure they have the same names and arguments as the corresponding virtual methods in Geno_fx. Whenever arguments are genotypes, they are without trailing characters which describe genetic format (for example, "p:", not "//0\np:"). When allocating/reallocating char* parameters, use malloc, free, realloc, strdup, etc. Do not use new and delete.
+<p>
+All the methods you might define are:<ul>
+<li><a class="el" href="classGeno__fx.html#a1">checkValidity</a>()<li><a class="el" href="classGeno__fx.html#a2">validate</a>()<li><a class="el" href="classGeno__fx.html#a3">mutate</a>()<li><a class="el" href="classGeno__fx.html#a4">crossOver</a>()<li><a class="el" href="classGeno__fx.html#a5">getSimplest</a>()<li><a class="el" href="classGeno__fx.html#a6">style</a>()</ul>
+Your code must not cause errors (like invalid memory access, memory leaks) on any arguments, even 'random' ones. GENOPER_OPFAIL should be returned when an operator cannot cope with its argument genotype.
+<p>
+To compile your code, you may also need some GDK files. A simple example is <a class="el" href="classGeno__ftest.html">Geno_ftest</a> class (see <a class="el" href="geno__ftest_8cpp.html#geno_ftest_example">C++ code</a> for details). A more realistic example is Geno_f4 derived from Geno_fx: refer to the available source on developmental encoding and f4 genotype format. 
+<p>
+<hr><h2>Member Function Documentation</h2>
+<a name="a1" doxytag="Geno_fx::checkValidity"></a><p>
+<table width="100%" cellpadding="2" cellspacing="0" border="0">
+  <tr>
+    <td class="md">
+      <table cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td class="md" nowrap valign="top"> virtual int Geno_fx::checkValidity </td>
+          <td class="md" valign="top">(&nbsp;</td>
+          <td class="md" nowrap valign="top">const char *&nbsp;</td>
+          <td class="mdname1" valign="top" nowrap>&nbsp; <em>geno</em>          </td>
+          <td class="md" valign="top">)&nbsp;</td>
+          <td class="md" nowrap><code> [virtual]</code></td>
+        </tr>
+
+      </table>
+    </td>
+  </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+  <tr>
+    <td>
+      &nbsp;
+    </td>
+    <td>
+
+<p>
+Checks a genotype for minor mistakes and major errors. <dl compact><dt><b>Parameters: </b></dt><dd>
+<table border=0 cellspacing=2 cellpadding=0>
+<tr><td valign=top><em>geno</em>&nbsp;</td><td>
+genotype to be checked </td></tr>
+</table>
+</dl><dl compact><dt><b>Return values: </b></dt><dd>
+<table border=0 cellspacing=2 cellpadding=0>
+<tr><td valign=top><em>error_position</em>&nbsp;</td><td>
+1-based (or 1 if no exact error position known) </td></tr>
+<tr><td valign=top><em>GENOPER_OK</em>&nbsp;</td><td>
+when the genotype is fully valid, and can be translated by the converter with <b>no</b> modifications nor tweaks </td></tr>
+</table>
+</dl>
+<p>
+Reimplemented in <a class="el" href="classGeno__ftest.html#a1">Geno_ftest</a>.    </td>
+  </tr>
+</table>
+<a name="a4" doxytag="Geno_fx::crossOver"></a><p>
+<table width="100%" cellpadding="2" cellspacing="0" border="0">
+  <tr>
+    <td class="md">
+      <table cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td class="md" nowrap valign="top"> virtual int Geno_fx::crossOver </td>
+          <td class="md" valign="top">(&nbsp;</td>
+          <td class="md" nowrap valign="top">char *&amp;&nbsp;</td>
+          <td class="mdname" nowrap>&nbsp; <em>g1</em>, </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td></td>
+          <td class="md" nowrap>char *&amp;&nbsp;</td>
+          <td class="mdname" nowrap>&nbsp; <em>g2</em>, </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td></td>
+          <td class="md" nowrap>float &amp;&nbsp;</td>
+          <td class="mdname" nowrap>&nbsp; <em>chg1</em>, </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td></td>
+          <td class="md" nowrap>float &amp;&nbsp;</td>
+          <td class="mdname" nowrap>&nbsp; <em>chg2</em></td>
+        </tr>
+        <tr>
+          <td></td>
+          <td class="md">)&nbsp;</td>
+          <td class="md" colspan="2"><code> [virtual]</code></td>
+        </tr>
+
+      </table>
+    </td>
+  </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+  <tr>
+    <td>
+      &nbsp;
+    </td>
+    <td>
+
+<p>
+Crosses over two genotypes. It is sufficient to return only one child (in <em>g1)</em> and set <em>chg1</em> only, then <em>g2</em> must equal "".
+<p>
+Avoid unnecessary calls in your code. Every genotype argument passed to this function is first checked, and validated if <a class="el" href="classGeno__fx.html#a1">checkValidity</a>() reported an error (or if there is no <a class="el" href="classGeno__fx.html#a1">checkValidity</a>() implemented). Every resulting genotype is subject to the same procedure, unless GENOPER_OPFAIL was returned. Thus you do not have to call these functions on input and output genotypes, because they are validated if needed. <dl compact><dt><b>Parameters: </b></dt><dd>
+<table border=0 cellspacing=2 cellpadding=0>
+<tr><td valign=top><em>g1</em>&nbsp;</td><td>
+input/output: parent1 genotype, initialize with child1 </td></tr>
+<tr><td valign=top><em>g2</em>&nbsp;</td><td>
+input/output: parent2 genotype, initialize with child2 if both children are available </td></tr>
+<tr><td valign=top><em>chg1</em>&nbsp;</td><td>
+output: initialize with the fraction of parent1 genes in child1 (parent2 has the rest) </td></tr>
+<tr><td valign=top><em>chg2</em>&nbsp;</td><td>
+output: initialize with the fraction of parent2 genes in child2 (parent1 has the rest) </td></tr>
+</table>
+</dl><dl compact><dt><b>Return values: </b></dt><dd>
+<table border=0 cellspacing=2 cellpadding=0>
+<tr><td valign=top><em>GENOPER_OK</em>&nbsp;</td><td>
+</td></tr>
+<tr><td valign=top><em>GENOPER_OPFAIL</em>&nbsp;</td><td>
+</td></tr>
+</table>
+</dl><dl compact><dt><b>See also: </b></dt><dd>
+<a class="el" href="classGeno__fx.html#a3">mutate</a>() for an example </dl>
+<p>
+Reimplemented in <a class="el" href="classGeno__ftest.html#a4">Geno_ftest</a>.    </td>
+  </tr>
+</table>
+<a name="a5" doxytag="Geno_fx::getSimplest"></a><p>
+<table width="100%" cellpadding="2" cellspacing="0" border="0">
+  <tr>
+    <td class="md">
+      <table cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td class="md" nowrap valign="top"> virtual char* Geno_fx::getSimplest </td>
+          <td class="md" valign="top">(&nbsp;</td>
+          <td class="mdname1" valign="top" nowrap>&nbsp;          </td>
+          <td class="md" valign="top">)&nbsp;</td>
+          <td class="md" nowrap><code> [virtual]</code></td>
+        </tr>
+
+      </table>
+    </td>
+  </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+  <tr>
+    <td>
+      &nbsp;
+    </td>
+    <td>
+
+<p>
+<dl compact><dt><b>Returns :</b></dt><dd>
+a pointer to the simplest genotype string </dl>    </td>
+  </tr>
+</table>
+<a name="a3" doxytag="Geno_fx::mutate"></a><p>
+<table width="100%" cellpadding="2" cellspacing="0" border="0">
+  <tr>
+    <td class="md">
+      <table cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td class="md" nowrap valign="top"> virtual int Geno_fx::mutate </td>
+          <td class="md" valign="top">(&nbsp;</td>
+          <td class="md" nowrap valign="top">char *&amp;&nbsp;</td>
+          <td class="mdname" nowrap>&nbsp; <em>geno</em>, </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td></td>
+          <td class="md" nowrap>float &amp;&nbsp;</td>
+          <td class="mdname" nowrap>&nbsp; <em>chg</em></td>
+        </tr>
+        <tr>
+          <td></td>
+          <td class="md">)&nbsp;</td>
+          <td class="md" colspan="2"><code> [virtual]</code></td>
+        </tr>
+
+      </table>
+    </td>
+  </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+  <tr>
+    <td>
+      &nbsp;
+    </td>
+    <td>
+
+<p>
+Mutates a genotype. Mutation should always change something.
+<p>
+Avoid unnecessary calls in your code. Every genotype argument passed to this function is first checked, and validated if <a class="el" href="classGeno__fx.html#a1">checkValidity</a>() reported an error (or if there is no <a class="el" href="classGeno__fx.html#a1">checkValidity</a>() implemented). Every resulting genotype is subject to the same procedure, unless GENOPER_OPFAIL was returned. Thus you do not have to call these functions on input and output genotypes, because they are validated if needed. <dl compact><dt><b>Parameters: </b></dt><dd>
+<table border=0 cellspacing=2 cellpadding=0>
+<tr><td valign=top><em>geno</em>&nbsp;</td><td>
+input/output: genotype to be mutated </td></tr>
+<tr><td valign=top><em>chg</em>&nbsp;</td><td>
+output: initialize with a value (in most cases 0..1) corresponding to the amount of genotype mutated. For example, it could be the number of changed genes divided by the total number of genes before mutation. </td></tr>
+</table>
+</dl><dl compact><dt><b>Return values: </b></dt><dd>
+<table border=0 cellspacing=2 cellpadding=0>
+<tr><td valign=top><em>GENOPER_OK</em>&nbsp;</td><td>
+</td></tr>
+<tr><td valign=top><em>GENOPER_OPFAIL</em>&nbsp;</td><td>
+</td></tr>
+</table>
+</dl><dl compact><dt><b>See also: </b></dt><dd>
+Mutation example to illustrate the exchange of pointers for <em>geno</em>. The mutation adds random letter at the beginning or removes last letter from <em>geno</em>. <div class="fragment"><pre>{
+ <span class="keywordtype">int</span> len=strlen(geno);
+ <span class="keywordflow">if</span> (len==0 || random(2)==0) <span class="comment">//add</span>
+ {
+    <span class="keywordtype">char</span>* mutated=(<span class="keywordtype">char</span>*)malloc(mutated,len+2); <span class="comment">//allocate for mutated genotype</span>
+    mutated[0]=<span class="charliteral">'A'</span>+random(10); <span class="comment">//first char random</span>
+    strcpy(mutated+1,geno); <span class="comment">//the rest is original</span>
+    free(geno); <span class="comment">//must take care of the original allocation</span>
+    geno=mutated;
+ } <span class="keywordflow">else</span> geno[len-1]=0; <span class="comment">//simply shorten the string - remove last char</span>
+ chg=1.0/max(len,1); <span class="comment">//estimation of mutation strength, divby0-safe</span>
+} 
+</pre></div> </dl>
+<p>
+Reimplemented in <a class="el" href="classGeno__ftest.html#a3">Geno_ftest</a>.    </td>
+  </tr>
+</table>
+<a name="a6" doxytag="Geno_fx::style"></a><p>
+<table width="100%" cellpadding="2" cellspacing="0" border="0">
+  <tr>
+    <td class="md">
+      <table cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td class="md" nowrap valign="top"> virtual unsigned long Geno_fx::style </td>
+          <td class="md" valign="top">(&nbsp;</td>
+          <td class="md" nowrap valign="top">const char *&nbsp;</td>
+          <td class="mdname" nowrap>&nbsp; <em>geno</em>, </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td></td>
+          <td class="md" nowrap>int&nbsp;</td>
+          <td class="mdname" nowrap>&nbsp; <em>pos</em></td>
+        </tr>
+        <tr>
+          <td></td>
+          <td class="md">)&nbsp;</td>
+          <td class="md" colspan="2"><code> [virtual]</code></td>
+        </tr>
+
+      </table>
+    </td>
+  </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+  <tr>
+    <td>
+      &nbsp;
+    </td>
+    <td>
+
+<p>
+You may want to have your genotype colored. This method provides desired character styles for genes. <dl compact><dt><b>Parameters: </b></dt><dd>
+<table border=0 cellspacing=2 cellpadding=0>
+<tr><td valign=top><em>geno</em>&nbsp;</td><td>
+genotype </td></tr>
+<tr><td valign=top><em>pos</em>&nbsp;</td><td>
+0-based char offset </td></tr>
+</table>
+</dl><dl compact><dt><b>Return values: </b></dt><dd>
+<table border=0 cellspacing=2 cellpadding=0>
+<tr><td valign=top><em>number-encoded</em>&nbsp;</td><td>
+visual style (and validity) of the genotype char at <em>geno[pos]</em>. Assume white background. </td></tr>
+</table>
+</dl><dl compact><dt><b>See also: </b></dt><dd>
+GENSTYLE_* macros, like <a class="el" href="geno__fx_8h.html#a6">GENSTYLE_BOLD</a> </dl>
+<p>
+Reimplemented in <a class="el" href="classGeno__ftest.html#a5">Geno_ftest</a>.    </td>
+  </tr>
+</table>
+<a name="a2" doxytag="Geno_fx::validate"></a><p>
+<table width="100%" cellpadding="2" cellspacing="0" border="0">
+  <tr>
+    <td class="md">
+      <table cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td class="md" nowrap valign="top"> virtual int Geno_fx::validate </td>
+          <td class="md" valign="top">(&nbsp;</td>
+          <td class="md" nowrap valign="top">char *&amp;&nbsp;</td>
+          <td class="mdname1" valign="top" nowrap>&nbsp; <em>geno</em>          </td>
+          <td class="md" valign="top">)&nbsp;</td>
+          <td class="md" nowrap><code> [virtual]</code></td>
+        </tr>
+
+      </table>
+    </td>
+  </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+  <tr>
+    <td>
+      &nbsp;
+    </td>
+    <td>
+
+<p>
+Validates a genotype. The purpose of this function is to validate obvious/minor errors (range overruns, invalid links, etc.). Do not try to introduce entirely new genes in place of an error. <dl compact><dt><b>Parameters: </b></dt><dd>
+<table border=0 cellspacing=2 cellpadding=0>
+<tr><td valign=top><em>geno</em>&nbsp;</td><td>
+input/output: genotype to be validated </td></tr>
+</table>
+</dl><dl compact><dt><b>Return values: </b></dt><dd>
+<table border=0 cellspacing=2 cellpadding=0>
+<tr><td valign=top><em>GENOPER_OK</em>&nbsp;</td><td>
+must be returned in any case ("did my best to validate") </td></tr>
+</table>
+</dl>
+<p>
+Reimplemented in <a class="el" href="classGeno__ftest.html#a2">Geno_ftest</a>.    </td>
+  </tr>
+</table>
+<hr><address style="align: right;"><small>Generated on Sun Sep 15 00:58:40 2002 for Framsticks GenoFX by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0 
+width=110 height=53></a>1.2.17 </small></address>
+</body>
+</html>
Index: /cpp/geno_fx/html/doxygen.css
===================================================================
--- /cpp/geno_fx/html/doxygen.css	(revision 3)
+++ /cpp/geno_fx/html/doxygen.css	(revision 3)
@@ -0,0 +1,49 @@
+H1 { text-align: center; }
+CAPTION { font-weight: bold }
+A.qindex {}
+A.qindexRef {}
+A.el { text-decoration: none; font-weight: bold }
+A.elRef { font-weight: bold }
+A.code { text-decoration: none; font-weight: normal; color: #4444ee }
+A.codeRef { font-weight: normal; color: #4444ee }
+A:hover { text-decoration: none; background-color: #f2f2ff }
+DL.el { margin-left: -1cm }
+DIV.fragment { width: 100%; border: none; background-color: #eeeeee }
+DIV.ah { background-color: black; font-weight: bold; color: #ffffff; margin-bottom: 3px; margin-top: 3px }
+TD.md { background-color: #f2f2ff; font-weight: bold; }
+TD.mdname1 { background-color: #f2f2ff; font-weight: bold; color: #602020; }
+TD.mdname { background-color: #f2f2ff; font-weight: bold; color: #602020; width: 600px; }
+DIV.groupHeader { margin-left: 16px; margin-top: 12px; margin-bottom: 6px; font-weight: bold }
+DIV.groupText { margin-left: 16px; font-style: italic; font-size: smaller }
+BODY { background: white }
+TD.indexkey { 
+   background-color: #eeeeff; 
+   font-weight: bold; 
+   padding-right  : 10px; 
+   padding-top    : 2px; 
+   padding-left   : 10px; 
+   padding-bottom : 2px; 
+   margin-left    : 0px; 
+   margin-right   : 0px; 
+   margin-top     : 2px; 
+   margin-bottom  : 2px  
+}
+TD.indexvalue { 
+   background-color: #eeeeff; 
+   font-style: italic; 
+   padding-right  : 10px; 
+   padding-top    : 2px; 
+   padding-left   : 10px; 
+   padding-bottom : 2px; 
+   margin-left    : 0px; 
+   margin-right   : 0px; 
+   margin-top     : 2px; 
+   margin-bottom  : 2px  
+}
+span.keyword       { color: #008000 }
+span.keywordtype   { color: #604020 }
+span.keywordflow   { color: #e08000 }
+span.comment       { color: #800000 }
+span.preprocessor  { color: #806020 }
+span.stringliteral { color: #002080 }
+span.charliteral   { color: #008080 }
Index: /cpp/geno_fx/html/examples.html
===================================================================
--- /cpp/geno_fx/html/examples.html	(revision 3)
+++ /cpp/geno_fx/html/examples.html	(revision 3)
@@ -0,0 +1,17 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>Example Index</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.17 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; <a class="qindex" href="globals.html">File Members</a> &nbsp; <a class="qindex" href="examples.html">Examples</a> &nbsp; </center>
+<hr><h1>Framsticks GenoFX Examples</h1>Here is a list of all examples:<ul>
+<li><a class="el" href="geno__ftest__example-example.html">geno_ftest_example</a>
+</ul>
+<hr><address style="align: right;"><small>Generated on Tue Jul 30 23:53:53 2002 for Framsticks GenoFX by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0 
+width=110 height=53></a>1.2.17 </small></address>
+</body>
+</html>
Index: /cpp/geno_fx/html/files.html
===================================================================
--- /cpp/geno_fx/html/files.html	(revision 3)
+++ /cpp/geno_fx/html/files.html	(revision 3)
@@ -0,0 +1,19 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>File Index</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.17 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; <a class="qindex" href="globals.html">File Members</a> &nbsp; </center>
+<hr><h1>Framsticks GenoFX File List</h1>Here is a list of all documented files with brief descriptions:<table>
+  <tr><td class="indexkey"><a class="el" href="geno__ftest_8cpp.html">geno_ftest.cpp</a></td><td class="indexvalue"></td></tr>
+  <tr><td class="indexkey"><a class="el" href="geno__ftest_8h.html">geno_ftest.h</a> <a href="geno__ftest_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+  <tr><td class="indexkey"><a class="el" href="geno__fx_8h.html">geno_fx.h</a> <a href="geno__fx_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+</table>
+<hr><address style="align: right;"><small>Generated on Sun Sep 15 00:58:39 2002 for Framsticks GenoFX by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0 
+width=110 height=53></a>1.2.17 </small></address>
+</body>
+</html>
Index: /cpp/geno_fx/html/functions.html
===================================================================
--- /cpp/geno_fx/html/functions.html	(revision 3)
+++ /cpp/geno_fx/html/functions.html	(revision 3)
@@ -0,0 +1,39 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>Compound Member Index</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.17 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; <a class="qindex" href="globals.html">File Members</a> &nbsp; </center>
+<hr><h1>Framsticks GenoFX Compound Members</h1>Here is a list of all documented class members with links to the classes they belong to:<ul>
+<li>areAlike()
+: <a class="el" href="classGeno__fx.html#z7_11">Geno_fx</a><li>checkValidity()
+: <a class="el" href="classGeno__ftest.html#a1">Geno_ftest</a>, <a class="el" href="classGeno__fx.html#a1">Geno_fx</a><li>crossOver()
+: <a class="el" href="classGeno__ftest.html#a4">Geno_ftest</a>, <a class="el" href="classGeno__fx.html#a4">Geno_fx</a><li>getMinMaxDef()
+: <a class="el" href="classGeno__fx.html#z7_1">Geno_fx</a><li>getRandomNeuroClass()
+: <a class="el" href="classGeno__fx.html#z7_6">Geno_fx</a><li>getSimplest()
+: <a class="el" href="classGeno__fx.html#a5">Geno_fx</a><li>isNeuroClassName()
+: <a class="el" href="classGeno__fx.html#z7_13">Geno_fx</a><li>isWS()
+: <a class="el" href="classGeno__fx.html#z7_9">Geno_fx</a><li>mutate()
+: <a class="el" href="classGeno__ftest.html#a3">Geno_ftest</a>, <a class="el" href="classGeno__fx.html#a3">Geno_fx</a><li>mutateNeuProperty()
+: <a class="el" href="classGeno__fx.html#z7_3">Geno_fx</a><li>mutateProperty()
+: <a class="el" href="classGeno__fx.html#z7_4">Geno_fx</a><li>mutateValue()
+: <a class="el" href="classGeno__fx.html#z7_5">Geno_fx</a><li>name
+: <a class="el" href="classGeno__fx.html#m2">Geno_fx</a><li>neuroClassProp()
+: <a class="el" href="classGeno__fx.html#z7_8">Geno_fx</a><li>parseNeuroClass()
+: <a class="el" href="classGeno__fx.html#z7_7">Geno_fx</a><li>roulette()
+: <a class="el" href="classGeno__fx.html#z7_0">Geno_fx</a><li>selectRandomProperty()
+: <a class="el" href="classGeno__fx.html#z7_2">Geno_fx</a><li>similarity()
+: <a class="el" href="classGeno__fx.html#a7">Geno_fx</a><li>skipWS()
+: <a class="el" href="classGeno__fx.html#z7_10">Geno_fx</a><li>strchrn0()
+: <a class="el" href="classGeno__fx.html#z7_12">Geno_fx</a><li>style()
+: <a class="el" href="classGeno__ftest.html#a5">Geno_ftest</a>, <a class="el" href="classGeno__fx.html#a6">Geno_fx</a><li>supported_format
+: <a class="el" href="classGeno__fx.html#m1">Geno_fx</a><li>validate()
+: <a class="el" href="classGeno__ftest.html#a2">Geno_ftest</a>, <a class="el" href="classGeno__fx.html#a2">Geno_fx</a></ul>
+<hr><address style="align: right;"><small>Generated on Sun Sep 15 00:58:40 2002 for Framsticks GenoFX by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0 
+width=110 height=53></a>1.2.17 </small></address>
+</body>
+</html>
Index: /cpp/geno_fx/html/geno__ftest_8cpp-source.html
===================================================================
--- /cpp/geno_fx/html/geno__ftest_8cpp-source.html	(revision 3)
+++ /cpp/geno_fx/html/geno__ftest_8cpp-source.html	(revision 3)
@@ -0,0 +1,122 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>geno_ftest.cpp Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.17 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; <a class="qindex" href="globals.html">File Members</a> &nbsp; </center>
+<hr><h1>geno_ftest.cpp</h1><div class="fragment"><pre>00001 <span class="preprocessor">#include "<a class="code" href="geno__ftest_8h.html">geno_ftest.h</a>"</span>
+00002 <span class="preprocessor">#include "nonstd.h"</span> <span class="comment">//randomN, rnd01</span>
+00003 
+00004 <span class="preprocessor">#define FIELDSTRUCT Geno_ftest</span>
+00005 <span class="preprocessor"></span><span class="keyword">static</span> ParamEntry GENOtestparam_tab[]=   <span class="comment">//external access to ftest genetic parameters</span>
+00006 {
+00007 {<span class="stringliteral">"Genetics: ftest"</span>,1,1,},
+00008 {<span class="stringliteral">"ftest_mut"</span>,0,0,<span class="stringliteral">"Mutation probability"</span>,<span class="stringliteral">"f 0 1"</span>,FIELD(prob),<span class="stringliteral">"How many genes should be mutated during single mutation (1=all genes, 0.1=ten percent)"</span>,},
+00009 {0,},
+00010 };
+00011 <span class="preprocessor">#undef FIELDSTRUCT</span>
+00012 <span class="preprocessor"></span>
+00013 Geno_ftest::Geno_ftest() : par(GENOtestparam_tab,this)
+00014 {
+00015    prob=0.1;
+00016 }
+00017 
+<a name="l00019"></a><a class="code" href="classGeno__ftest.html#a1">00019</a> <span class="keywordtype">int</span> <a class="code" href="classGeno__ftest.html#a1">Geno_ftest::check</a>(<span class="keyword">const</span> <span class="keywordtype">char</span>* gene)
+00020 {
+00021    <span class="keywordflow">if</span> (!gene[0]) <span class="keywordflow">return</span> 1; <span class="comment">//empty is not valid</span>
+00022    <span class="keywordtype">bool</span> ok=<span class="keyword">true</span>;
+00023    <span class="keywordtype">int</span> i;
+00024    <span class="keywordflow">for</span>(i=0;i&lt;strlen(gene);i++) <span class="keywordflow">if</span> (!strchr(<span class="stringliteral">"ATGC"</span>,gene[i])) {ok=<span class="keyword">false</span>; <span class="keywordflow">break</span>;}
+00025    <span class="keywordflow">return</span> ok ? <a class="code" href="geno__fx_8h.html#a0">GENOPER_OK</a> : i+1;
+00026 }
+00027 
+<a name="l00029"></a><a class="code" href="classGeno__ftest.html#a2">00029</a> <span class="keywordtype">int</span> <a class="code" href="classGeno__ftest.html#a2">Geno_ftest::validate</a>(<span class="keywordtype">char</span> *&amp;gene)
+00030 {
+00031    SString validated; <span class="comment">//new genotype (everything except ATGC is skipped)</span>
+00032    <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i=0;i&lt;strlen(gene);i++)
+00033       <span class="keywordflow">if</span> (strchr(<span class="stringliteral">"ATGC"</span>,gene[i])) validated+=gene[i];  <span class="comment">//validated contains only ATGC</span>
+00034    free(gene);
+00035    gene=strdup(validated); <span class="comment">//reallocate</span>
+00036    <span class="keywordflow">return</span> <a class="code" href="geno__fx_8h.html#a0">GENOPER_OK</a>;
+00037 }
+00038 
+<a name="l00040"></a><a class="code" href="classGeno__ftest.html#a3">00040</a> <span class="keywordtype">int</span> <a class="code" href="classGeno__ftest.html#a3">Geno_ftest::mutate</a>(<span class="keywordtype">char</span> *&amp;gene,<span class="keywordtype">float</span> &amp;chg)
+00041 {
+00042    <span class="keyword">static</span> <span class="keywordtype">char</span> a[]=<span class="stringliteral">"ATGC"</span>;
+00043    <span class="keywordtype">int</span> changes=0,len=strlen(gene);
+00044    <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i=0;i&lt;len;i++)
+00045       <span class="keywordflow">if</span> (rnd01&lt;prob) <span class="comment">//normalize prob with length of genotype</span>
+00046          {gene[i]=a[randomN(4)]; changes++;}
+00047    chg=(float)changes/len;
+00048    <span class="keywordflow">return</span> <a class="code" href="geno__fx_8h.html#a0">GENOPER_OK</a>;
+00049 }
+00050 
+<a name="l00052"></a><a class="code" href="classGeno__ftest.html#a4">00052</a> <span class="keywordtype">int</span> <a class="code" href="classGeno__ftest.html#a4">Geno_ftest::crossOver</a>(<span class="keywordtype">char</span> *&amp;g1,<span class="keywordtype">char</span> *&amp;g2,<span class="keywordtype">float</span>&amp; chg1,<span class="keywordtype">float</span>&amp; chg2)
+00053 {
+00054    <span class="keywordtype">int</span> len1=strlen(g1),len2=strlen(g2);
+00055    <span class="keywordtype">int</span> p1=randomN(len1);  <span class="comment">//random cut point for first genotype</span>
+00056    <span class="keywordtype">int</span> p2=randomN(len2);  <span class="comment">//random cut point for second genotype</span>
+00057    <span class="keywordtype">char</span> *child1=(<span class="keywordtype">char</span>*)malloc(p1+len2-p2+1);
+00058    <span class="keywordtype">char</span> *child2=(<span class="keywordtype">char</span>*)malloc(p2+len1-p1+1);
+00059    strncpy(child1,g1,p1);   strcpy(child1+p1,g2+p2);
+00060    strncpy(child2,g2,p2);   strcpy(child2+p2,g1+p1);
+00061    free(g1); g1=child1;
+00062    free(g2); g2=child2;
+00063    chg1=(float)p1/strlen(child1);
+00064    chg2=(float)p2/strlen(child2);
+00065    <span class="keywordflow">return</span> <a class="code" href="geno__fx_8h.html#a0">GENOPER_OK</a>;
+00066 }
+00067 
+<a name="l00069"></a><a class="code" href="classGeno__ftest.html#a5">00069</a> <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> <a class="code" href="classGeno__ftest.html#a5">Geno_ftest::style</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *g, <span class="keywordtype">int</span> pos)
+00070 {
+00071    <span class="keywordtype">char</span> ch=g[pos];
+00072    <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> <a class="code" href="classGeno__ftest.html#a5">style</a>=GENSTYLE_CS(0,<a class="code" href="geno__fx_8h.html#a5">GENSTYLE_INVALID</a>); <span class="comment">//default, should be changed below</span>
+00073    <span class="keywordflow">if</span> (ch==<span class="charliteral">'A'</span>) <a class="code" href="classGeno__ftest.html#a5">style</a>=GENSTYLE_RGBS(200,0,0,<a class="code" href="geno__fx_8h.html#a4">GENSTYLE_NONE</a>);
+00074    <span class="keywordflow">if</span> (ch==<span class="charliteral">'T'</span>) <a class="code" href="classGeno__ftest.html#a5">style</a>=GENSTYLE_RGBS(0,200,0,<a class="code" href="geno__fx_8h.html#a4">GENSTYLE_NONE</a>);
+00075    <span class="keywordflow">if</span> (ch==<span class="charliteral">'G'</span>) <a class="code" href="classGeno__ftest.html#a5">style</a>=GENSTYLE_RGBS(0,0,200,<a class="code" href="geno__fx_8h.html#a4">GENSTYLE_NONE</a>);
+00076    <span class="keywordflow">if</span> (ch==<span class="charliteral">'C'</span>) <a class="code" href="classGeno__ftest.html#a5">style</a>=GENSTYLE_RGBS(200,200,0,<a class="code" href="geno__fx_8h.html#a4">GENSTYLE_NONE</a>);
+00077    <span class="keywordflow">return</span> <a class="code" href="classGeno__ftest.html#a5">style</a>;
+00078 }
+00079 
+00080 
+00081 <span class="comment">//#ifdef GENO_FTEST_APPL ///&lt;define this macro to compile a simple testing main function</span>
+00082 
+00083 <a class="code" href="classGeno__ftest.html">Geno_ftest</a> gft;
+00084 
+00085 <span class="keywordtype">void</span> main()
+00086 {
+00087    <span class="keywordtype">float</span> chg;
+00088    <span class="keywordtype">char</span> *g=strdup(gft.<a class="code" href="classGeno__ftest.html#a6">getSimplest</a>());
+00089    <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i=0;i&lt;10;i++)
+00090    {
+00091       <span class="keywordtype">int</span> result=gft.<a class="code" href="classGeno__ftest.html#a3">mutate</a>(g,chg);
+00092       printf(<span class="stringliteral">"%s   [mutated %.1f%%]\n"</span>,g,chg*100);
+00093    }
+00094 
+00095    <span class="keywordtype">char</span> *g2=strdup(gft.<a class="code" href="classGeno__ftest.html#a6">getSimplest</a>());
+00096    <span class="keywordtype">float</span> chg2;
+00097    printf(<span class="stringliteral">"\nCrossing over the last mutant, \n\t%s\nand the simplest genotype\n\t%s\n:\n"</span>,g,g2);
+00098    gft.<a class="code" href="classGeno__ftest.html#a4">crossOver</a>(g,g2,chg,chg2);
+00099    printf(<span class="stringliteral">"Offspring 1:\n\t%s  (%.1f%% genes from parent1)\n"</span>,g,chg*100);
+00100    printf(<span class="stringliteral">"Offspring 2:\n\t%s  (%.1f%% genes from parent2)\n"</span>,g2,chg2*100);
+00101    free(g);
+00102    free(g2);
+00103 
+00104    g=strdup(<span class="stringliteral">"ATGsomethingCG"</span>);
+00105    printf(<span class="stringliteral">"\nChecking genotype:\n\t%s... error at position %d.\n"</span>,g,gft.<a class="code" href="classGeno__ftest.html#a1">check</a>(g));
+00106    gft.<a class="code" href="classGeno__ftest.html#a2">validate</a>(g);
+00107    printf(<span class="stringliteral">"After validation:\n\t%s\n"</span>,g);
+00108    free(g);
+00109    printf(<span class="stringliteral">"...and is YOUR genotype O.K.?\n\n"</span>);
+00110 }
+00111 
+00112 <span class="comment">//#endif</span>
+00113 
+</pre></div><hr><address style="align: right;"><small>Generated on Tue Jul 30 23:21:19 2002 for Framsticks GenoFX by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0 
+width=110 height=53></a>1.2.17 </small></address>
+</body>
+</html>
Index: /cpp/geno_fx/html/geno__ftest_8cpp.html
===================================================================
--- /cpp/geno_fx/html/geno__ftest_8cpp.html	(revision 3)
+++ /cpp/geno_fx/html/geno__ftest_8cpp.html	(revision 3)
@@ -0,0 +1,165 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>geno_ftest.cpp File Reference</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.17 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; <a class="qindex" href="globals.html">File Members</a> &nbsp; </center>
+<hr><h1>geno_ftest.cpp File Reference</h1><table border=0 cellpadding=0 cellspacing=0>
+<tr><td></td></tr>
+<tr><td colspan=2><br><h2>Defines</h2></td></tr>
+<tr><td nowrap align=right valign=top><a name="a0" doxytag="geno_ftest.cpp::FIELDSTRUCT"></a>
+#define&nbsp;</td><td valign=bottom><b>FIELDSTRUCT</b>&nbsp;&nbsp;&nbsp;<a class="el" href="classGeno__ftest.html">Geno_ftest</a></td></tr>
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+Sample output (simple examples of various genetic operations): <a name="geno_ftest_example"></a> <div class="fragment"><pre>GTTCCGATC   [mutated 11.1%]
+GATCCGATC   [mutated 33.3%]
+GATCCGAAC   [mutated 11.1%]
+GATCCGAAC   [mutated 0.0%]
+GATCCGAAC   [mutated 0.0%]
+GATCCGAAC   [mutated 0.0%]
+GATCCGAAC   [mutated 22.2%]
+GATGCGAAC   [mutated 11.1%]
+GATGCGAAC   [mutated 0.0%]
+GATGCGAAC   [mutated 11.1%]
+
+Crossing over the last mutant, 
+        GATGCGAAC
+and the simplest genotype
+        GTTCAGATC
+:
+Offspring 1:
+        GATGCGAATTCAGATC  (50.0% genes from parent1)
+Offspring 2:
+        GC  (50.0% genes from parent2)
+
+Checking genotype:
+        ATGsomethingCG... error at position 4.
+After validation:
+        ATGCG
+...and is YOUR genotype O.K.?
+
+</pre></div> Produced by the source: <div class="fragment"><pre><span class="comment">// This file is a part of Framsticks GenoFX library.</span>
+<span class="comment">// Copyright (C) 2002  Maciej Komosinski.  See LICENSE.txt for details.</span>
+<span class="comment">// Refer to http://www.frams.alife.pl/ for further information.</span>
+
+<span class="preprocessor">#include "<a class="code" href="geno__ftest_8h.html">geno_ftest.h</a>"</span>
+<span class="preprocessor">#include "nonstd.h"</span> <span class="comment">//randomN, rnd01</span>
+
+<span class="preprocessor">#define FIELDSTRUCT Geno_ftest</span>
+<span class="preprocessor"></span><span class="keyword">static</span> ParamEntry GENOtestparam_tab[]=   <span class="comment">//external access to ftest genetic parameters</span>
+{
+{<span class="stringliteral">"Genetics: ftest"</span>,1,1,},
+{<span class="stringliteral">"ftest_mut"</span>,0,0,<span class="stringliteral">"Mutation probability"</span>,<span class="stringliteral">"f 0 1"</span>,FIELD(prob),<span class="stringliteral">"How many genes should be mutated during single mutation (1=all genes, 0.1=ten percent)"</span>,},
+{0,},
+};
+<span class="preprocessor">#undef FIELDSTRUCT</span>
+<span class="preprocessor"></span>
+Geno_ftest::Geno_ftest()
+{
+   par.setParamTab(GENOtestparam_tab);
+   par.select(<span class="keyword">this</span>);
+   <a class="code" href="classGeno__fx.html#m1">supported_format</a>=<span class="charliteral">'t'</span>;
+   prob=0.1;
+}
+
+<span class="keywordtype">int</span> <a class="code" href="classGeno__ftest.html#a1">Geno_ftest::checkValidity</a>(<span class="keyword">const</span> <span class="keywordtype">char</span>* gene)
+{
+   <span class="keywordflow">if</span> (!gene[0]) <span class="keywordflow">return</span> 1; <span class="comment">//empty is not valid</span>
+   <span class="keywordtype">bool</span> ok=<span class="keyword">true</span>;
+   <span class="keywordtype">int</span> i;
+   <span class="keywordflow">for</span>(i=0;i&lt;strlen(gene);i++) <span class="keywordflow">if</span> (!strchr(<span class="stringliteral">"ATGC"</span>,gene[i])) {ok=<span class="keyword">false</span>; <span class="keywordflow">break</span>;}
+   <span class="keywordflow">return</span> ok ? <a class="code" href="geno__fx_8h.html#a0">GENOPER_OK</a> : i+1;
+}
+
+<span class="keywordtype">int</span> <a class="code" href="classGeno__ftest.html#a2">Geno_ftest::validate</a>(<span class="keywordtype">char</span> *&amp;gene)
+{
+   SString validated; <span class="comment">//new genotype (everything except ATGC is skipped)</span>
+   <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i=0;i&lt;strlen(gene);i++)
+      <span class="keywordflow">if</span> (strchr(<span class="stringliteral">"ATGC"</span>,gene[i])) validated+=gene[i];  <span class="comment">//validated contains only ATGC</span>
+   free(gene);
+   gene=strdup(validated); <span class="comment">//reallocate</span>
+   <span class="keywordflow">return</span> <a class="code" href="geno__fx_8h.html#a0">GENOPER_OK</a>;
+}
+
+<span class="keywordtype">int</span> <a class="code" href="classGeno__ftest.html#a3">Geno_ftest::mutate</a>(<span class="keywordtype">char</span> *&amp;gene,<span class="keywordtype">float</span> &amp;chg)
+{
+   <span class="keyword">static</span> <span class="keywordtype">char</span> a[]=<span class="stringliteral">"ATGC"</span>;
+   <span class="keywordtype">int</span> changes=0,len=strlen(gene);
+   <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i=0;i&lt;len;i++)
+      <span class="keywordflow">if</span> (rnd01&lt;prob) <span class="comment">//normalize prob with length of genotype</span>
+         {gene[i]=a[randomN(4)]; changes++;}
+   chg=(float)changes/len;
+   <span class="keywordflow">return</span> <a class="code" href="geno__fx_8h.html#a0">GENOPER_OK</a>;
+}
+
+<span class="keywordtype">int</span> <a class="code" href="classGeno__ftest.html#a4">Geno_ftest::crossOver</a>(<span class="keywordtype">char</span> *&amp;g1,<span class="keywordtype">char</span> *&amp;g2,<span class="keywordtype">float</span>&amp; chg1,<span class="keywordtype">float</span>&amp; chg2)
+{
+   <span class="keywordtype">int</span> len1=strlen(g1),len2=strlen(g2);
+   <span class="keywordtype">int</span> p1=randomN(len1);  <span class="comment">//random cut point for first genotype</span>
+   <span class="keywordtype">int</span> p2=randomN(len2);  <span class="comment">//random cut point for second genotype</span>
+   <span class="keywordtype">char</span> *child1=(<span class="keywordtype">char</span>*)malloc(p1+len2-p2+1);
+   <span class="keywordtype">char</span> *child2=(<span class="keywordtype">char</span>*)malloc(p2+len1-p1+1);
+   strncpy(child1,g1,p1);   strcpy(child1+p1,g2+p2);
+   strncpy(child2,g2,p2);   strcpy(child2+p2,g1+p1);
+   free(g1); g1=child1;
+   free(g2); g2=child2;
+   chg1=(float)p1/strlen(child1);
+   chg2=(float)p2/strlen(child2);
+   <span class="keywordflow">return</span> <a class="code" href="geno__fx_8h.html#a0">GENOPER_OK</a>;
+}
+
+<span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> <a class="code" href="classGeno__ftest.html#a5">Geno_ftest::style</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *g, <span class="keywordtype">int</span> pos)
+{
+   <span class="keywordtype">char</span> ch=g[pos];
+   <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> <a class="code" href="classGeno__fx.html#a6">style</a>=GENSTYLE_CS(0,<a class="code" href="geno__fx_8h.html#a5">GENSTYLE_INVALID</a>); <span class="comment">//default, should be changed below</span>
+   <span class="keywordflow">if</span> (ch==<span class="charliteral">'A'</span>) <a class="code" href="classGeno__fx.html#a6">style</a>=GENSTYLE_RGBS(200,0,0,<a class="code" href="geno__fx_8h.html#a6">GENSTYLE_BOLD</a>);
+   <span class="keywordflow">if</span> (ch==<span class="charliteral">'T'</span>) <a class="code" href="classGeno__fx.html#a6">style</a>=GENSTYLE_RGBS(0,200,0,<a class="code" href="geno__fx_8h.html#a6">GENSTYLE_BOLD</a>);
+   <span class="keywordflow">if</span> (ch==<span class="charliteral">'G'</span>) <a class="code" href="classGeno__fx.html#a6">style</a>=GENSTYLE_RGBS(0,0,200,<a class="code" href="geno__fx_8h.html#a4">GENSTYLE_NONE</a>);
+   <span class="keywordflow">if</span> (ch==<span class="charliteral">'C'</span>) <a class="code" href="classGeno__fx.html#a6">style</a>=GENSTYLE_RGBS(200,200,0,<a class="code" href="geno__fx_8h.html#a4">GENSTYLE_NONE</a>);
+   <span class="keywordflow">return</span> <a class="code" href="classGeno__fx.html#a6">style</a>;
+}
+
+
+<span class="preprocessor">#ifdef GENO_FTEST_APPL //define this macro to compile a simple testing main function</span>
+<span class="preprocessor"></span>
+<a class="code" href="classGeno__ftest.html">Geno_ftest</a> gft;
+
+<span class="keywordtype">void</span> main()
+{
+   <span class="keywordtype">float</span> chg;
+   <span class="keywordtype">char</span> *g=strdup(gft.<a class="code" href="classGeno__ftest.html#a6">getSimplest</a>());
+   <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i=0;i&lt;10;i++)
+   {
+      <span class="keywordtype">int</span> result=gft.<a class="code" href="classGeno__ftest.html#a3">mutate</a>(g,chg);
+      printf(<span class="stringliteral">"%s   [mutated %.1f%%]\n"</span>,g,chg*100);
+   }
+
+   <span class="keywordtype">char</span> *g2=strdup(gft.<a class="code" href="classGeno__ftest.html#a6">getSimplest</a>());
+   <span class="keywordtype">float</span> chg2;
+   printf(<span class="stringliteral">"\nCrossing over the last mutant, \n\t%s\nand the simplest genotype\n\t%s\n:\n"</span>,g,g2);
+   gft.<a class="code" href="classGeno__ftest.html#a4">crossOver</a>(g,g2,chg,chg2);
+   printf(<span class="stringliteral">"Offspring 1:\n\t%s  (%.1f%% genes from parent1)\n"</span>,g,chg*100);
+   printf(<span class="stringliteral">"Offspring 2:\n\t%s  (%.1f%% genes from parent2)\n"</span>,g2,chg2*100);
+   free(g);
+   free(g2);
+
+   g=strdup(<span class="stringliteral">"ATGsomethingCG"</span>);
+   printf(<span class="stringliteral">"\nChecking genotype:\n\t%s... error at position %d.\n"</span>,g,gft.<a class="code" href="classGeno__ftest.html#a1">checkValidity</a>(g));
+   gft.<a class="code" href="classGeno__ftest.html#a2">validate</a>(g);
+   printf(<span class="stringliteral">"After validation:\n\t%s\n"</span>,g);
+   free(g);
+   printf(<span class="stringliteral">"...and is YOUR genotype O.K.?\n\n"</span>);
+}
+
+<span class="preprocessor">#endif</span>
+<span class="preprocessor"></span>
+</pre></div>
+<p>
+<hr><address style="align: right;"><small>Generated on Sun Sep 15 00:58:40 2002 for Framsticks GenoFX by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0 
+width=110 height=53></a>1.2.17 </small></address>
+</body>
+</html>
Index: /cpp/geno_fx/html/geno__ftest_8h-source.html
===================================================================
--- /cpp/geno_fx/html/geno__ftest_8h-source.html	(revision 3)
+++ /cpp/geno_fx/html/geno__ftest_8h-source.html	(revision 3)
@@ -0,0 +1,43 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>geno_ftest.h Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.17 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; <a class="qindex" href="globals.html">File Members</a> &nbsp; </center>
+<hr><h1>geno_ftest.h</h1><a href="geno__ftest_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre>00001 <span class="comment">// This file is a part of Framsticks GenoFX library.</span>
+00002 <span class="comment">// Copyright (C) 2002  Maciej Komosinski.  See LICENSE.txt for details.</span>
+00003 <span class="comment">// Refer to http://www.frams.alife.pl/ for further information.</span>
+00004 
+00005 <span class="preprocessor">#ifndef _GENO_FTEST_H_</span>
+00006 <span class="preprocessor"></span><span class="preprocessor">#define _GENO_FTEST_H_</span>
+00007 <span class="preprocessor"></span>
+00008 <span class="preprocessor">#include "param.h"</span>
+00009 <span class="preprocessor">#include "sstring.h"</span>
+00010 <span class="preprocessor">#include "<a class="code" href="geno__fx_8h.html">geno_fx.h</a>"</span>
+00011 
+00014 
+00015 
+<a name="l00026"></a><a class="code" href="classGeno__ftest.html">00026</a> <span class="keyword">class </span><a class="code" href="classGeno__ftest.html">Geno_ftest</a> : <span class="keyword">public</span> <a class="code" href="classGeno__fx.html">Geno_fx</a>
+00027 {
+00028  <span class="keyword">public</span>:
+00029    <a class="code" href="classGeno__ftest.html">Geno_ftest</a>();
+00030    <span class="keywordtype">int</span> <a class="code" href="classGeno__ftest.html#a1">checkValidity</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *);
+00031    <span class="keywordtype">int</span> <a class="code" href="classGeno__ftest.html#a2">validate</a>(<span class="keywordtype">char</span> *&amp;);
+00032    <span class="keywordtype">int</span> <a class="code" href="classGeno__ftest.html#a3">mutate</a>(<span class="keywordtype">char</span> *&amp;g,<span class="keywordtype">float</span>&amp; chg);
+00033    <span class="keywordtype">int</span> <a class="code" href="classGeno__ftest.html#a4">crossOver</a>(<span class="keywordtype">char</span> *&amp;g1,<span class="keywordtype">char</span> *&amp;g2,<span class="keywordtype">float</span>&amp; chg1,<span class="keywordtype">float</span>&amp; chg2);
+00034    <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> <a class="code" href="classGeno__ftest.html#a5">style</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *g, <span class="keywordtype">int</span> pos);
+00035    <span class="keywordtype">char</span>* <a class="code" href="classGeno__fx.html#a5">getSimplest</a>() {<span class="keywordflow">return</span> <span class="stringliteral">"GTTCAGATC"</span>;}
+00036 
+00037    <span class="keywordtype">double</span> prob;
+00038 };
+00039 
+00040 <span class="preprocessor">#endif</span>
+00041 <span class="preprocessor"></span>
+</pre></div><hr><address style="align: right;"><small>Generated on Sun Sep 15 00:58:39 2002 for Framsticks GenoFX by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0 
+width=110 height=53></a>1.2.17 </small></address>
+</body>
+</html>
Index: /cpp/geno_fx/html/geno__ftest_8h.html
===================================================================
--- /cpp/geno_fx/html/geno__ftest_8h.html	(revision 3)
+++ /cpp/geno_fx/html/geno__ftest_8h.html	(revision 3)
@@ -0,0 +1,25 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>geno_ftest.h File Reference</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.17 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; <a class="qindex" href="globals.html">File Members</a> &nbsp; </center>
+<hr><h1>geno_ftest.h File Reference</h1>
+<p>
+<a href="geno__ftest_8h-source.html">Go to the source code of this file.</a><table border=0 cellpadding=0 cellspacing=0>
+<tr><td></td></tr>
+<tr><td colspan=2><br><h2>Compounds</h2></td></tr>
+<tr><td nowrap align=right valign=top>class &nbsp;</td><td valign=bottom><a class="el" href="classGeno__ftest.html">Geno_ftest</a></td></tr>
+<tr><td>&nbsp;</td><td><font size=-1><em>A sample class for genetic operations on DNA-like genotypes.</em> <a href="classGeno__ftest.html#_details">More...</a><em></em></font><br><br></td></tr>
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+
+<p>
+<hr><address style="align: right;"><small>Generated on Sun Sep 15 00:58:40 2002 for Framsticks GenoFX by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0 
+width=110 height=53></a>1.2.17 </small></address>
+</body>
+</html>
Index: /cpp/geno_fx/html/geno__ftest__example-example.html
===================================================================
--- /cpp/geno_fx/html/geno__ftest__example-example.html	(revision 3)
+++ /cpp/geno_fx/html/geno__ftest__example-example.html	(revision 3)
@@ -0,0 +1,44 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>Example Documentation</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.17 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; <a class="qindex" href="globals.html">File Members</a> &nbsp; <a class="qindex" href="examples.html">Examples</a> &nbsp; </center>
+<hr><h1>geno_ftest_example</h1> <dl compact><dt><b>Author: </b></dt><dd>
+Maciej Komosinski</dl>This is a very simple class to illustrate basic genetic operations. To compile this code, you may need some GDK files. For a more sophisticated example of Geno_f4 derived from <a class="el" href="classGeno__fx.html">Geno_fx</a>, refer to the available source on developmental encoding and f4 genotype format.
+<p>
+<div class="fragment"><pre>GTTCCGATC   [mutated 11.1%]
+GATCCGATC   [mutated 33.3%]
+GATCCGAAC   [mutated 11.1%]
+GATCCGAAC   [mutated 0.0%]
+GATCCGAAC   [mutated 0.0%]
+GATCCGAAC   [mutated 0.0%]
+GATCCGAAC   [mutated 22.2%]
+GATGCGAAC   [mutated 11.1%]
+GATGCGAAC   [mutated 0.0%]
+GATGCGAAC   [mutated 11.1%]
+
+Crossing over the last mutant, 
+        GATGCGAAC
+and the simplest genotype
+        GTTCAGATC
+:
+Offspring 1:
+        GATGCGAATTCAGATC  (50.0% genes from parent1)
+Offspring 2:
+        GC  (50.0% genes from parent2)
+
+Checking genotype:
+        ATGsomethingCG... error at position 4.
+After validation:
+        ATGCG
+...and is YOUR genotype O.K.?
+
+</pre></div><hr><address style="align: right;"><small>Generated on Tue Jul 30 23:53:52 2002 for Framsticks GenoFX by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0 
+width=110 height=53></a>1.2.17 </small></address>
+</body>
+</html>
Index: /cpp/geno_fx/html/geno__fx_8cpp-source.html
===================================================================
--- /cpp/geno_fx/html/geno__fx_8cpp-source.html	(revision 3)
+++ /cpp/geno_fx/html/geno__fx_8cpp-source.html	(revision 3)
@@ -0,0 +1,109 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>geno_fx.cpp Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.17 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; <a class="qindex" href="globals.html">File Members</a> &nbsp; </center>
+<hr><h1>geno_fx.cpp</h1><div class="fragment"><pre>00001 <span class="preprocessor">#include &lt;ctype.h&gt;</span> <span class="comment">// isupper()</span>
+00002 <span class="preprocessor">#include "<a class="code" href="geno__fx_8h.html">geno_fx.h</a>"</span>
+00003 <span class="preprocessor">#include "framsg.h"</span>
+00004 
+<a name="l00005"></a><a class="code" href="classGeno__fx.html#z7_0">00005</a> <span class="keywordtype">int</span> <a class="code" href="classGeno__fx.html#z7_0">Geno_fx::roulette</a>(<span class="keyword">const</span> <span class="keywordtype">double</span> *probtab,<span class="keywordtype">int</span> count)
+00006 {
+00007    <span class="keywordtype">double</span> sum=0;
+00008    <span class="keywordtype">int</span> i;
+00009         <span class="keywordflow">for</span> (i=0;i&lt;count;i++) sum+=probtab[i];
+00010    <span class="keywordtype">double</span> sel=rnd01*sum;
+00011    <span class="keywordflow">for</span> (sum=0,i=0;i&lt;count;i++) {sum+=probtab[i]; <span class="keywordflow">if</span> (sel&lt;sum) <span class="keywordflow">return</span> i;}
+00012    <span class="keywordflow">return</span> -1;
+00013 }
+00014 
+<a name="l00015"></a><a class="code" href="classGeno__fx.html#z7_1">00015</a> <span class="keywordtype">int</span> <a class="code" href="classGeno__fx.html#z7_1">Geno_fx::getRandomNeuroClass</a>()
+00016 {
+00017    <span class="keywordtype">int</span> ileakt=0;
+00018    <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i=0;i&lt;Neuro::getClassCount();i++) ileakt+=(Neuro::getClass(i)-&gt;active==<span class="keyword">true</span>);
+00019    <span class="keywordflow">if</span> (ileakt==0) <span class="keywordflow">return</span> -1;
+00020    <span class="keywordtype">int</span> los=randomN(ileakt)+1;
+00021    ileakt=0;
+00022    <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i=0;i&lt;Neuro::getClassCount();i++)
+00023       {ileakt+=(Neuro::getClass(i)-&gt;active==<span class="keyword">true</span>); <span class="keywordflow">if</span> (ileakt==los) <span class="keywordflow">return</span> i;}
+00024    <span class="keywordflow">return</span> -1; <span class="comment">//never happens   </span>
+00025 }
+00026 
+<a name="l00027"></a><a class="code" href="classGeno__fx.html#z7_2">00027</a> <span class="keywordtype">int</span> <a class="code" href="classGeno__fx.html#z7_2">Geno_fx::parseNeuroClass</a>(<span class="keywordtype">char</span>*&amp; s)
+00028 {
+00029    <span class="keywordtype">int</span> len=strlen(s);
+00030    <span class="keywordtype">int</span> Len=0,I=-1;
+00031    <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i=0;i&lt;Neuro::getClassCount();i++)
+00032    {
+00033       <span class="keyword">const</span> <span class="keywordtype">char</span> *n=Neuro::getClass(i)-&gt;name;
+00034       <span class="keywordtype">int</span> l=strlen(n);
+00035       <span class="keywordflow">if</span> (len&gt;=l &amp;&amp; l&gt;Len &amp;&amp; (strncmp(s,n,l)==0)) {I=i; Len=l;}
+00036    }
+00037    s+=Len;
+00038    <span class="keywordflow">return</span> I;
+00039 }
+00040 
+<a name="l00041"></a><a class="code" href="classGeno__fx.html#z7_3">00041</a> <span class="keywordtype">int</span> <a class="code" href="classGeno__fx.html#z7_3">Geno_fx::getNeuroClass</a>(<span class="keyword">const</span> <span class="keywordtype">char</span>* s)
+00042 {
+00043    <span class="keywordtype">char</span> *p=(<span class="keywordtype">char</span>*)s;
+00044    <span class="keywordflow">return</span> <a class="code" href="classGeno__fx.html#z7_2">parseNeuroClass</a>(p);
+00045 }
+00046 
+<a name="l00047"></a><a class="code" href="classGeno__fx.html#z7_4">00047</a> <span class="keywordtype">int</span> <a class="code" href="classGeno__fx.html#z7_4">Geno_fx::neuroClassProp</a>(<span class="keywordtype">char</span>*&amp; s,<span class="keywordtype">int</span> neuroclass,<span class="keywordtype">bool</span> also_v1_N_props)
+00048 {
+00049    <span class="keywordtype">int</span> len=strlen(s);
+00050    <span class="keywordtype">int</span> Len=0,I=-1;
+00051    Param p=Neuro::getClass(neuroclass)-&gt;getProperties();
+00052 <span class="comment">/*      if (p.type(i)[0]=='f') do mutowania...</span>
+00053 <span class="comment">      {</span>
+00054 <span class="comment">         double mn=0,mx=1,df=0.5,c=p.getDouble(i);</span>
+00055 <span class="comment">         p.getMinMax(i,mn,mx,df);</span>
+00056 <span class="comment">         p.setDouble(i,RandMutValue(c,mn,mx));</span>
+00057 <span class="comment">         changed++;</span>
+00058 <span class="comment">         break;</span>
+00059 <span class="comment">      }*/</span>
+00060    <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i=0;i&lt;p.getPropCount();i++)
+00061    {
+00062       <span class="keyword">const</span> <span class="keywordtype">char</span> *n=p.id(i);
+00063       <span class="keywordtype">int</span> l=strlen(n);
+00064       <span class="keywordflow">if</span> (len&gt;=l &amp;&amp; l&gt;Len &amp;&amp; (strncmp(s,n,l)==0)) {I=i; Len=l;}
+00065       <span class="keywordflow">if</span> (also_v1_N_props) <span class="comment">//recognize old properties symbols /=!</span>
+00066       {
+00067          <span class="keywordflow">if</span> (strcmp(n,<span class="stringliteral">"si"</span>)==0) n=<span class="stringliteral">"/"</span>; <span class="keywordflow">else</span>
+00068          <span class="keywordflow">if</span> (strcmp(n,<span class="stringliteral">"in"</span>)==0) n=<span class="stringliteral">"="</span>; <span class="keywordflow">else</span>
+00069          <span class="keywordflow">if</span> (strcmp(n,<span class="stringliteral">"fo"</span>)==0) n=<span class="stringliteral">"!"</span>;
+00070          l=strlen(n);
+00071          <span class="keywordflow">if</span> (len&gt;=l &amp;&amp; l&gt;Len &amp;&amp; (strncmp(s,n,l)==0)) {I=i; Len=l;}
+00072       }
+00073    }
+00074    s+=Len;
+00075    <span class="keywordflow">return</span> I;
+00076 }
+00077 
+<a name="l00078"></a><a class="code" href="classGeno__fx.html#z7_5">00078</a> <span class="keywordtype">bool</span> <a class="code" href="classGeno__fx.html#z7_5">Geno_fx::isWS</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> c)
+00079 {<span class="keywordflow">return</span> c==<span class="charliteral">' '</span> || c==<span class="charliteral">'\n'</span> || c==<span class="charliteral">'\t'</span> || c==<span class="charliteral">'\r'</span>;}
+00080 
+<a name="l00081"></a><a class="code" href="classGeno__fx.html#z7_6">00081</a> <span class="keywordtype">void</span> <a class="code" href="classGeno__fx.html#z7_6">Geno_fx::skipWS</a>(<span class="keywordtype">char</span> *&amp;s)
+00082 { <span class="keywordflow">if</span> (!s) FramMessage(<span class="stringliteral">"Geno_fx"</span>,<span class="stringliteral">"skipWS"</span>,<span class="stringliteral">"NULL reference!"</span>,1); <span class="keywordflow">else</span>
+00083      <span class="keywordflow">while</span> (<a class="code" href="classGeno__fx.html#z7_5">isWS</a>(*s)) s++;
+00084 }
+00085 
+<a name="l00086"></a><a class="code" href="classGeno__fx.html#z7_7">00086</a> <span class="keywordtype">char</span>* <a class="code" href="classGeno__fx.html#z7_7">Geno_fx::strchrn0</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *str,<span class="keywordtype">char</span> ch)
+00087 { <span class="keywordflow">return</span> ch==0?NULL:strchr((<span class="keywordtype">char</span>*)str,ch); }
+00088 
+<a name="l00089"></a><a class="code" href="classGeno__fx.html#z7_8">00089</a> <span class="keywordtype">bool</span> <a class="code" href="classGeno__fx.html#z7_8">Geno_fx::isNeuroClassName</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> firstchar)
+00090 {
+00091    <span class="keywordflow">return</span> isupper(firstchar) || firstchar==<span class="charliteral">'|'</span> || firstchar==<span class="charliteral">'@'</span>;
+00092 }
+00093 
+00094 <span class="comment">//class TGeno_f2 : public Geno_fx {}; //przyklad</span>
+00095 
+</pre></div><hr><address style="align: right;"><small>Generated on Tue Jul 30 23:21:19 2002 for Framsticks GenoFX by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0 
+width=110 height=53></a>1.2.17 </small></address>
+</body>
+</html>
Index: /cpp/geno_fx/html/geno__fx_8h-source.html
===================================================================
--- /cpp/geno_fx/html/geno__fx_8h-source.html	(revision 3)
+++ /cpp/geno_fx/html/geno__fx_8h-source.html	(revision 3)
@@ -0,0 +1,97 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>geno_fx.h Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.17 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; <a class="qindex" href="globals.html">File Members</a> &nbsp; </center>
+<hr><h1>geno_fx.h</h1><a href="geno__fx_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre>00001 <span class="comment">// This file is a part of Framsticks GenoFX library.</span>
+00002 <span class="comment">// Copyright (C) 2002  Maciej Komosinski.  See LICENSE.txt for details.</span>
+00003 <span class="comment">// Refer to http://www.frams.alife.pl/ for further information.</span>
+00004 
+00005 <span class="preprocessor">#ifndef _GENO_FX_H_</span>
+00006 <span class="preprocessor"></span><span class="preprocessor">#define _GENO_FX_H_</span>
+00007 <span class="preprocessor"></span>
+00008 <span class="preprocessor">#include "nonstd.h"</span>
+00009 <span class="preprocessor">#include "modelparts.h"</span>
+00010 
+<a name="l00015"></a><a class="code" href="geno__fx_8h.html#a0">00015</a> <span class="preprocessor">#define GENOPER_OK          0 </span>
+<a name="l00016"></a><a class="code" href="geno__fx_8h.html#a1">00016</a> <span class="preprocessor">#define GENOPER_OPFAIL     -1 </span>
+<a name="l00017"></a><a class="code" href="geno__fx_8h.html#a2">00017</a> <span class="preprocessor">#define GENOPER_REPAIR     -2 </span>
+<a name="l00018"></a><a class="code" href="geno__fx_8h.html#a3">00018</a> <span class="preprocessor">#define GENOPER_NOOPER     -3 </span>
+00019 <span class="preprocessor"></span>
+00020 <span class="preprocessor"></span>
+00021 <span class="preprocessor"></span>
+<a name="l00023"></a><a class="code" href="geno__fx_8h.html#a4">00023</a> <span class="preprocessor">#define GENSTYLE_NONE       0 </span>
+<a name="l00024"></a><a class="code" href="geno__fx_8h.html#a5">00024</a> <span class="preprocessor">#define GENSTYLE_INVALID    1 </span>
+<a name="l00025"></a><a class="code" href="geno__fx_8h.html#a6">00025</a> <span class="preprocessor">#define GENSTYLE_BOLD       2 </span>
+<a name="l00026"></a><a class="code" href="geno__fx_8h.html#a7">00026</a> <span class="preprocessor">#define GENSTYLE_ITALIC     4 </span>
+<a name="l00027"></a><a class="code" href="geno__fx_8h.html#a8">00027</a> <span class="preprocessor">#define GENSTYLE_STRIKEOUT  8 </span>
+00028 <span class="preprocessor">//UNDERLINE used to mark errors</span>
+00029 <span class="preprocessor"></span>
+00030 
+00033 <span class="preprocessor">#define GENRGB(r,g,b) ((unsigned long)(((unsigned char)(r)|((unsigned short)((unsigned char)(g))&lt;&lt;8))|(((unsigned long)(unsigned char)(b))&lt;&lt;16)))</span>
+00034 <span class="preprocessor"></span><span class="preprocessor">#define GENSTYLE_RGBS(r,g,b,s) ((unsigned long)((unsigned char)s)&lt;&lt;24 | GENRGB(r,g,b))</span>
+00035 <span class="preprocessor"></span><span class="preprocessor">#define GENSTYLE_CS(rgb,s) ((unsigned long)((unsigned char)s)&lt;&lt;24 | rgb)</span>
+00036 <span class="preprocessor"></span>
+00037 <span class="preprocessor">#define GENGETSTYLE(style) ((style)&gt;&gt;24)</span>
+00038 <span class="preprocessor"></span><span class="preprocessor">#define GENGETCOLOR(style) ((style)&amp;0x00ffffff)</span>
+00039 <span class="preprocessor"></span>
+<a name="l00040"></a><a class="code" href="geno__fx_8h.html#a14">00040</a> <span class="preprocessor">#define GENCOLOR_TEXT    GENRGB(0,0,0) </span>
+<a name="l00041"></a><a class="code" href="geno__fx_8h.html#a15">00041</a> <span class="preprocessor">#define GENCOLOR_NUMBER  GENRGB(200,0,0) </span>
+00042 <span class="preprocessor"></span>
+00043 <span class="preprocessor"></span>
+00044 <span class="preprocessor"></span>
+00045 
+<a name="l00075"></a><a class="code" href="classGeno__fx.html">00075</a> <span class="keyword">class </span><a class="code" href="classGeno__fx.html">Geno_fx</a>
+00076 {
+00077  <span class="keyword">public</span>:
+00078    Param par;
+<a name="l00079"></a><a class="code" href="classGeno__fx.html#m1">00079</a>    <span class="keywordtype">char</span> <a class="code" href="classGeno__fx.html#m1">supported_format</a>; 
+<a name="l00080"></a><a class="code" href="classGeno__fx.html#m2">00080</a>    SString <a class="code" href="classGeno__fx.html#m2">name</a>; 
+00081    <a class="code" href="classGeno__fx.html">Geno_fx</a>() : par(empty_paramtab) {<a class="code" href="classGeno__fx.html#m1">supported_format</a>=<span class="charliteral">'x'</span>; <a class="code" href="classGeno__fx.html#m2">name</a>=<span class="stringliteral">"Default"</span>;}
+00082 
+<a name="l00087"></a><a class="code" href="classGeno__fx.html#a1">00087</a>    <span class="keyword">virtual</span> <span class="keywordtype">int</span> <a class="code" href="classGeno__fx.html#a1">checkValidity</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *geno) {<span class="keywordflow">return</span> <a class="code" href="geno__fx_8h.html#a3">GENOPER_NOOPER</a>;}
+00088 
+<a name="l00094"></a><a class="code" href="classGeno__fx.html#a2">00094</a>    <span class="keyword">virtual</span> <span class="keywordtype">int</span> <a class="code" href="classGeno__fx.html#a2">validate</a>(<span class="keywordtype">char</span> *&amp;geno) {<span class="keywordflow">return</span> <a class="code" href="geno__fx_8h.html#a3">GENOPER_NOOPER</a>;}
+00095 
+<a name="l00127"></a><a class="code" href="classGeno__fx.html#a3">00127</a>    <span class="keyword">virtual</span> <span class="keywordtype">int</span> <a class="code" href="classGeno__fx.html#a3">mutate</a>(<span class="keywordtype">char</span> *&amp;geno,<span class="keywordtype">float</span>&amp; chg) {<span class="keywordflow">return</span> <a class="code" href="geno__fx_8h.html#a3">GENOPER_NOOPER</a>;}
+00128 
+<a name="l00144"></a><a class="code" href="classGeno__fx.html#a4">00144</a>    <span class="keyword">virtual</span> <span class="keywordtype">int</span> <a class="code" href="classGeno__fx.html#a4">crossOver</a>(<span class="keywordtype">char</span> *&amp;g1,<span class="keywordtype">char</span> *&amp;g2,<span class="keywordtype">float</span>&amp; chg1,<span class="keywordtype">float</span>&amp; chg2) {<span class="keywordflow">return</span> <a class="code" href="geno__fx_8h.html#a3">GENOPER_NOOPER</a>;}
+00145 
+<a name="l00147"></a><a class="code" href="classGeno__fx.html#a5">00147</a>    <span class="keyword">virtual</span> <span class="keywordtype">char</span>* <a class="code" href="classGeno__fx.html#a5">getSimplest</a>() {<span class="keywordflow">return</span> NULL;}
+00148 
+<a name="l00155"></a><a class="code" href="classGeno__fx.html#a6">00155</a>    <span class="keyword">virtual</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> <a class="code" href="classGeno__fx.html#a6">style</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *geno,<span class="keywordtype">int</span> pos) {<span class="keywordflow">return</span> GENSTYLE_RGBS(0,0,0,<a class="code" href="geno__fx_8h.html#a4">GENSTYLE_NONE</a>);}
+00156 
+<a name="l00158"></a><a class="code" href="classGeno__fx.html#a7">00158</a>    <span class="keyword">virtual</span> <span class="keywordtype">float</span> <a class="code" href="classGeno__fx.html#a7">similarity</a>(<span class="keyword">const</span> <span class="keywordtype">char</span>*,<span class="keyword">const</span> <span class="keywordtype">char</span>*) {<span class="keywordflow">return</span> <a class="code" href="geno__fx_8h.html#a3">GENOPER_NOOPER</a>;}
+00159    <span class="keyword">virtual</span> ~<a class="code" href="classGeno__fx.html">Geno_fx</a>() {} 
+00160 <span class="comment">//   virtual char getFormat() {return 255;} //returns supported genotype format, for ex. '1'</span>
+00161 <span class="comment">//   virtual int enabled() {return 1;} // should be enabled by default</span>
+00162 
+00165         <span class="keyword">static</span> <span class="keywordtype">int</span> <a class="code" href="classGeno__fx.html#z7_0">roulette</a>(<span class="keyword">const</span> <span class="keywordtype">double</span> *probtab,<span class="keywordtype">int</span> count);   
+00166    <span class="keyword">static</span> <span class="keywordtype">bool</span> <a class="code" href="classGeno__fx.html#z7_1">getMinMaxDef</a>(ParamInterface *p,<span class="keywordtype">int</span> propindex,<span class="keywordtype">double</span> &amp;mn,<span class="keywordtype">double</span> &amp;mx,<span class="keywordtype">double</span> &amp;def); 
+00167    <span class="keyword">static</span> <span class="keywordtype">int</span> <a class="code" href="classGeno__fx.html#z7_2">selectRandomProperty</a>(Neuro* n); 
+00168    <span class="keyword">static</span> <span class="keywordtype">double</span> <a class="code" href="classGeno__fx.html#z7_3">mutateNeuProperty</a>(<span class="keywordtype">double</span> current,Neuro *n,<span class="keywordtype">int</span> propindex); 
+00169    <span class="keyword">static</span> <span class="keywordtype">bool</span> <a class="code" href="classGeno__fx.html#z7_4">mutateProperty</a>(ParamInterface &amp;p,<span class="keywordtype">int</span> propindex); 
+00170    <span class="keyword">static</span> <span class="keywordtype">double</span> <a class="code" href="classGeno__fx.html#z7_5">mutateValue</a>(<span class="keywordtype">double</span> current,<span class="keywordtype">double</span> vmin,<span class="keywordtype">double</span> vmax); 
+00171    <span class="keyword">static</span> NeuroClass* <a class="code" href="classGeno__fx.html#z7_6">getRandomNeuroClass</a>(); 
+00172    <span class="keyword">static</span> NeuroClass* <a class="code" href="classGeno__fx.html#z7_7">parseNeuroClass</a>(<span class="keywordtype">char</span> *&amp;s); 
+00173    <span class="keyword">static</span> <span class="keywordtype">int</span> <a class="code" href="classGeno__fx.html#z7_8">neuroClassProp</a>(<span class="keywordtype">char</span> *&amp;s,NeuroClass *nc,<span class="keywordtype">bool</span> also_v1_N_props=<span class="keyword">false</span>); 
+00174    <span class="keyword">static</span> <span class="keywordtype">bool</span> <a class="code" href="classGeno__fx.html#z7_9">isWS</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> c); 
+00175    <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="classGeno__fx.html#z7_10">skipWS</a>(<span class="keywordtype">char</span> *&amp;s); 
+00176    <span class="keyword">static</span> <span class="keywordtype">bool</span> <a class="code" href="classGeno__fx.html#z7_11">areAlike</a>(<span class="keywordtype">char</span>*,<span class="keywordtype">char</span>*); 
+00177         <span class="keyword">static</span> <span class="keywordtype">char</span>* <a class="code" href="classGeno__fx.html#z7_12">strchrn0</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *str,<span class="keywordtype">char</span> ch); 
+00178    <span class="keyword">static</span> <span class="keywordtype">bool</span> <a class="code" href="classGeno__fx.html#z7_13">isNeuroClassName</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> firstchar); 
+00179 
+00180 };
+00181 
+00182 
+00183 <span class="preprocessor">#endif</span>
+00184 <span class="preprocessor"></span>
+</pre></div><hr><address style="align: right;"><small>Generated on Sun Sep 15 00:58:39 2002 for Framsticks GenoFX by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0 
+width=110 height=53></a>1.2.17 </small></address>
+</body>
+</html>
Index: /cpp/geno_fx/html/geno__fx_8h.html
===================================================================
--- /cpp/geno_fx/html/geno__fx_8h.html	(revision 3)
+++ /cpp/geno_fx/html/geno__fx_8h.html	(revision 3)
@@ -0,0 +1,71 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>geno_fx.h File Reference</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.17 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; <a class="qindex" href="globals.html">File Members</a> &nbsp; </center>
+<hr><h1>geno_fx.h File Reference</h1>
+<p>
+<a href="geno__fx_8h-source.html">Go to the source code of this file.</a><table border=0 cellpadding=0 cellspacing=0>
+<tr><td></td></tr>
+<tr><td colspan=2><br><h2>Compounds</h2></td></tr>
+<tr><td nowrap align=right valign=top>class &nbsp;</td><td valign=bottom><a class="el" href="classGeno__fx.html">Geno_fx</a></td></tr>
+<tr><td>&nbsp;</td><td><font size=-1><em>Base class for genetic operations on genotypes of some genetic format.</em> <a href="classGeno__fx.html#_details">More...</a><em></em></font><br><br></td></tr>
+<tr><td colspan=2><br><h2>Return codes for genetic operators</h2></td></tr>
+<tr><td nowrap align=right valign=top><a name="a0" doxytag="geno_fx.h::GENOPER_OK"></a>
+#define&nbsp;</td><td valign=bottom><a class="el" href="geno__fx_8h.html#a0">GENOPER_OK</a>&nbsp;&nbsp;&nbsp;0</td></tr>
+<tr><td>&nbsp;</td><td><font size=-1><em>operation successful</em></font><br><br></td></tr>
+<tr><td nowrap align=right valign=top><a name="a1" doxytag="geno_fx.h::GENOPER_OPFAIL"></a>
+#define&nbsp;</td><td valign=bottom><a class="el" href="geno__fx_8h.html#a1">GENOPER_OPFAIL</a>&nbsp;&nbsp;&nbsp;-1</td></tr>
+<tr><td>&nbsp;</td><td><font size=-1><em>operation failed or could not be completed</em></font><br><br></td></tr>
+<tr><td nowrap align=right valign=top><a name="a2" doxytag="geno_fx.h::GENOPER_REPAIR"></a>
+#define&nbsp;</td><td valign=bottom><a class="el" href="geno__fx_8h.html#a2">GENOPER_REPAIR</a>&nbsp;&nbsp;&nbsp;-2</td></tr>
+<tr><td>&nbsp;</td><td><font size=-1><em>do not use in <a class="el" href="classGeno__fx.html">Geno_fx</a>. GenMan uses it in checkValidity()... but will not. only f4 uses it</em></font><br><br></td></tr>
+<tr><td nowrap align=right valign=top><a name="a3" doxytag="geno_fx.h::GENOPER_NOOPER"></a>
+#define&nbsp;</td><td valign=bottom><a class="el" href="geno__fx_8h.html#a3">GENOPER_NOOPER</a>&nbsp;&nbsp;&nbsp;-3</td></tr>
+<tr><td>&nbsp;</td><td><font size=-1><em>do not use in <a class="el" href="classGeno__fx.html">Geno_fx</a>. GenMan uses it for "no suitable operator for this genotype format"</em></font><br><br></td></tr>
+<tr><td colspan=2><br><h2>gene/character predefined styles (for style() method)</h2></td></tr>
+<tr><td nowrap align=right valign=top><a name="a4" doxytag="geno_fx.h::GENSTYLE_NONE"></a>
+#define&nbsp;</td><td valign=bottom><a class="el" href="geno__fx_8h.html#a4">GENSTYLE_NONE</a>&nbsp;&nbsp;&nbsp;0</td></tr>
+<tr><td>&nbsp;</td><td><font size=-1><em>no style specified (=normal font)</em></font><br><br></td></tr>
+<tr><td nowrap align=right valign=top><a name="a5" doxytag="geno_fx.h::GENSTYLE_INVALID"></a>
+#define&nbsp;</td><td valign=bottom><a class="el" href="geno__fx_8h.html#a5">GENSTYLE_INVALID</a>&nbsp;&nbsp;&nbsp;1</td></tr>
+<tr><td>&nbsp;</td><td><font size=-1><em>this char cannot be accepted</em></font><br><br></td></tr>
+<tr><td nowrap align=right valign=top><a name="a6" doxytag="geno_fx.h::GENSTYLE_BOLD"></a>
+#define&nbsp;</td><td valign=bottom><a class="el" href="geno__fx_8h.html#a6">GENSTYLE_BOLD</a>&nbsp;&nbsp;&nbsp;2</td></tr>
+<tr><td>&nbsp;</td><td><font size=-1><em>bold</em></font><br><br></td></tr>
+<tr><td nowrap align=right valign=top><a name="a7" doxytag="geno_fx.h::GENSTYLE_ITALIC"></a>
+#define&nbsp;</td><td valign=bottom><a class="el" href="geno__fx_8h.html#a7">GENSTYLE_ITALIC</a>&nbsp;&nbsp;&nbsp;4</td></tr>
+<tr><td>&nbsp;</td><td><font size=-1><em>italic</em></font><br><br></td></tr>
+<tr><td nowrap align=right valign=top><a name="a8" doxytag="geno_fx.h::GENSTYLE_STRIKEOUT"></a>
+#define&nbsp;</td><td valign=bottom><a class="el" href="geno__fx_8h.html#a8">GENSTYLE_STRIKEOUT</a>&nbsp;&nbsp;&nbsp;8</td></tr>
+<tr><td>&nbsp;</td><td><font size=-1><em>strikeout (not recommended)</em></font><br><br></td></tr>
+<tr><td colspan=2><br><h2>other useful style/color macros</h2></td></tr>
+<tr><td nowrap align=right valign=top><a name="a9" doxytag="geno_fx.h::GENRGB"></a>
+#define&nbsp;</td><td valign=bottom><b>GENRGB</b>(r, g, b)&nbsp;&nbsp;&nbsp;((unsigned long)(((unsigned char)(r)|((unsigned short)((unsigned char)(g))&lt;&lt;8))|(((unsigned long)(unsigned char)(b))&lt;&lt;16)))</td></tr>
+<tr><td nowrap align=right valign=top><a name="a10" doxytag="geno_fx.h::GENSTYLE_RGBS"></a>
+#define&nbsp;</td><td valign=bottom><b>GENSTYLE_RGBS</b>(r, g, b, s)&nbsp;&nbsp;&nbsp;((unsigned long)((unsigned char)s)&lt;&lt;24 | GENRGB(r,g,b))</td></tr>
+<tr><td nowrap align=right valign=top><a name="a11" doxytag="geno_fx.h::GENSTYLE_CS"></a>
+#define&nbsp;</td><td valign=bottom><b>GENSTYLE_CS</b>(rgb, s)&nbsp;&nbsp;&nbsp;((unsigned long)((unsigned char)s)&lt;&lt;24 | rgb)</td></tr>
+<tr><td nowrap align=right valign=top><a name="a12" doxytag="geno_fx.h::GENGETSTYLE"></a>
+#define&nbsp;</td><td valign=bottom><b>GENGETSTYLE</b>(style)&nbsp;&nbsp;&nbsp;((style)&gt;&gt;24)</td></tr>
+<tr><td nowrap align=right valign=top><a name="a13" doxytag="geno_fx.h::GENGETCOLOR"></a>
+#define&nbsp;</td><td valign=bottom><b>GENGETCOLOR</b>(style)&nbsp;&nbsp;&nbsp;((style)&amp;0x00ffffff)</td></tr>
+<tr><td nowrap align=right valign=top><a name="a14" doxytag="geno_fx.h::GENCOLOR_TEXT"></a>
+#define&nbsp;</td><td valign=bottom><a class="el" href="geno__fx_8h.html#a14">GENCOLOR_TEXT</a>&nbsp;&nbsp;&nbsp;GENRGB(0,0,0)</td></tr>
+<tr><td>&nbsp;</td><td><font size=-1><em>recommended color to use for text genes</em></font><br><br></td></tr>
+<tr><td nowrap align=right valign=top><a name="a15" doxytag="geno_fx.h::GENCOLOR_NUMBER"></a>
+#define&nbsp;</td><td valign=bottom><a class="el" href="geno__fx_8h.html#a15">GENCOLOR_NUMBER</a>&nbsp;&nbsp;&nbsp;GENRGB(200,0,0)</td></tr>
+<tr><td>&nbsp;</td><td><font size=-1><em>recommended color to use for number genes</em></font><br><br></td></tr>
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+
+<p>
+<hr><address style="align: right;"><small>Generated on Sun Sep 15 00:58:40 2002 for Framsticks GenoFX by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0 
+width=110 height=53></a>1.2.17 </small></address>
+</body>
+</html>
Index: /cpp/geno_fx/html/globals.html
===================================================================
--- /cpp/geno_fx/html/globals.html	(revision 3)
+++ /cpp/geno_fx/html/globals.html	(revision 3)
@@ -0,0 +1,27 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>File Member Index</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.17 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; <a class="qindex" href="globals.html">File Members</a> &nbsp; </center>
+<hr><h1>Framsticks GenoFX File Members</h1>Here is a list of all documented file members with links to the documentation:<ul>
+<li>GENCOLOR_NUMBER
+: <a class="el" href="geno__fx_8h.html#a15">geno_fx.h</a><li>GENCOLOR_TEXT
+: <a class="el" href="geno__fx_8h.html#a14">geno_fx.h</a><li>GENOPER_NOOPER
+: <a class="el" href="geno__fx_8h.html#a3">geno_fx.h</a><li>GENOPER_OK
+: <a class="el" href="geno__fx_8h.html#a0">geno_fx.h</a><li>GENOPER_OPFAIL
+: <a class="el" href="geno__fx_8h.html#a1">geno_fx.h</a><li>GENOPER_REPAIR
+: <a class="el" href="geno__fx_8h.html#a2">geno_fx.h</a><li>GENSTYLE_BOLD
+: <a class="el" href="geno__fx_8h.html#a6">geno_fx.h</a><li>GENSTYLE_INVALID
+: <a class="el" href="geno__fx_8h.html#a5">geno_fx.h</a><li>GENSTYLE_ITALIC
+: <a class="el" href="geno__fx_8h.html#a7">geno_fx.h</a><li>GENSTYLE_NONE
+: <a class="el" href="geno__fx_8h.html#a4">geno_fx.h</a><li>GENSTYLE_STRIKEOUT
+: <a class="el" href="geno__fx_8h.html#a8">geno_fx.h</a></ul>
+<hr><address style="align: right;"><small>Generated on Sun Sep 15 00:58:40 2002 for Framsticks GenoFX by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0 
+width=110 height=53></a>1.2.17 </small></address>
+</body>
+</html>
Index: /cpp/geno_fx/html/hierarchy.html
===================================================================
--- /cpp/geno_fx/html/hierarchy.html	(revision 3)
+++ /cpp/geno_fx/html/hierarchy.html	(revision 3)
@@ -0,0 +1,20 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>Hierarchical Index</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.17 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; <a class="qindex" href="globals.html">File Members</a> &nbsp; </center>
+<hr><h1>Framsticks GenoFX Class Hierarchy</h1>This inheritance list is sorted roughly, but not completely, alphabetically:<ul>
+<li><a class="el" href="classGeno__fx.html">Geno_fx</a>
+<ul>
+<li><a class="el" href="classGeno__ftest.html">Geno_ftest</a>
+</ul>
+</ul>
+<hr><address style="align: right;"><small>Generated on Sun Sep 15 00:58:40 2002 for Framsticks GenoFX by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0 
+width=110 height=53></a>1.2.17 </small></address>
+</body>
+</html>
Index: /cpp/geno_fx/html/index.html
===================================================================
--- /cpp/geno_fx/html/index.html	(revision 3)
+++ /cpp/geno_fx/html/index.html	(revision 3)
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>Main Page</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.17 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; <a class="qindex" href="globals.html">File Members</a> &nbsp; </center>
+<hr><h1>Framsticks GenoFX Documentation</h1>
+<p>
+<h3 align="center">1.3</h3><hr><address style="align: right;"><small>Generated on Sun Sep 15 00:58:39 2002 for Framsticks GenoFX by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0 
+width=110 height=53></a>1.2.17 </small></address>
+</body>
+</html>
Index: /cpp/geno_fx/rndutil.cpp
===================================================================
--- /cpp/geno_fx/rndutil.cpp	(revision 3)
+++ /cpp/geno_fx/rndutil.cpp	(revision 3)
@@ -0,0 +1,43 @@
+#include "rndutil.h"
+#include "nonstd.h"
+#include <stdlib.h>
+
+unsigned short pseudornd(short x)
+{
+static long seed=0;
+long y;
+if (x<=0) {seed=-x; return 0;}
+seed=(y=(3677*seed+3680)&0x7fffffff)-1;
+return ((unsigned short)y)%(x);
+}
+
+double CustomRnd(double *tab)
+{
+double *range=tab+1+2*randomN((int)(0.5+tab[0]));
+return range[0]+rnd0N(range[1]-range[0]);
+};
+
+double RandomGener::Uni(float pocz, float kon)
+{
+return pocz+(double)rand()*(kon-pocz)/RAND_MAX;
+}
+
+double RandomGener::GaussStd()
+{
+if (isNextGauss) {isNextGauss=0; return nextGauss;}
+double v1,v2,s;
+do {
+v1=2*rnd01-1; //-1..1
+v2=2*rnd01-1; //-1..1
+s=v1*v1+v2*v2;
+} while (s>=1);
+double mult=sqrt(-2*log(s)/s);
+nextGauss=v2*mult;
+isNextGauss=1;
+return v1*mult;
+}
+
+double RandomGener::Gauss(float m,float s)
+{return m+s*GaussStd();}
+
+RandomGener RndGen;
Index: /cpp/geno_fx/rndutil.h
===================================================================
--- /cpp/geno_fx/rndutil.h	(revision 3)
+++ /cpp/geno_fx/rndutil.h	(revision 3)
@@ -0,0 +1,35 @@
+#ifndef _RNDUTIL_H_
+#define _RNDUTIL_H_
+
+#include "nonstd.h"
+#include "math.h"
+
+/** @file rndutil.h various functions */
+
+/** @param x change seed if x<=0
+    @return random value [0..x-1] if x>0 */
+unsigned short pseudornd(short x);
+
+double CustomRnd(double*);
+// the parameter is a table which describes the random distribution:
+// e.g.
+// double x[]={ 3,     // 3 intervals
+//  -10,-1,            // (each of them has always uniform distribution and equal probability of being selected)
+//  -1, 1,
+//   1,10, };
+
+class RandomGener
+{
+   public:
+      RandomGener() {isNextGauss=0;}
+      static double Uni(float pocz, float kon); ///< unform excluding boundaries
+      double GaussStd();
+      double Gauss(float m,float s); ///< usually will not return further than 5*stdd
+   private:
+      int isNextGauss;
+      double nextGauss;
+};
+
+extern RandomGener RndGen;
+
+#endif
