[Avida-cvs] [Avida2-svn] r338 - in trunk: . Avida2.xcodeproj source/bindings/Boost.Python source/cpu source/event source/main source/testsuites/unit_testsuites source/testsuites/unit_testsuites/level_0 source/tools source/utils source/utils/hist_map source/utils/task_events source/viewers

brysonda@myxo.css.msu.edu brysonda at myxo.css.msu.edu
Fri Oct 7 19:21:50 PDT 2005


Author: brysonda
Date: 2005-10-07 22:02:38 -0400 (Fri, 07 Oct 2005)
New Revision: 338

Added:
   trunk/source/tools/cHelpAlias.cc
   trunk/source/tools/cHelpAlias.h
   trunk/source/tools/cHelpEntry.h
   trunk/source/tools/cHelpFullEntry.h
   trunk/source/tools/cHelpManager.cc
   trunk/source/tools/cHelpManager.h
   trunk/source/tools/cHelpType.cc
   trunk/source/tools/cHelpType.h
   trunk/source/tools/cHistogram.cc
   trunk/source/tools/cHistogram.h
   trunk/source/tools/cIndexedBlockStruct.cc
   trunk/source/tools/cIndexedBlockStruct.h
   trunk/source/tools/cInitFile.cc
   trunk/source/tools/cInitFile.h
   trunk/source/tools/cIntSum.cc
   trunk/source/tools/cIntSum.h
   trunk/source/tools/cIntegratedSchedule.cc
   trunk/source/tools/cIntegratedSchedule.h
   trunk/source/tools/cIntegratedScheduleNode.cc
   trunk/source/tools/cIntegratedScheduleNode.h
   trunk/source/tools/cMerit.cc
   trunk/source/tools/cMerit.h
   trunk/source/tools/cMessageClass.h
   trunk/source/tools/cMessageClosure.h
   trunk/source/tools/cMessageDisplay.cc
   trunk/source/tools/cMessageDisplay.h
   trunk/source/tools/cMessageDisplay_headers.h
   trunk/source/tools/cMessageType.h
   trunk/source/tools/cProbSchedule.cc
   trunk/source/tools/cProbSchedule.h
   trunk/source/tools/cRandom.cc
   trunk/source/tools/cRandom.h
   trunk/source/tools/cRefBlock.cc
   trunk/source/tools/cRefBlock.h
   trunk/source/tools/cRunningAverage.cc
   trunk/source/tools/cRunningAverage.h
   trunk/source/tools/cScaledBlock.cc
   trunk/source/tools/cScaledBlock.h
   trunk/source/tools/cSchedule.cc
   trunk/source/tools/cSchedule.h
   trunk/source/tools/cString.cc
   trunk/source/tools/cString.h
   trunk/source/tools/cStringIterator.cc
   trunk/source/tools/cStringIterator.h
   trunk/source/tools/cStringList.cc
   trunk/source/tools/cStringList.h
   trunk/source/tools/cStringUtil.cc
   trunk/source/tools/cStringUtil.h
Removed:
   trunk/source/tools/help_alias.cc
   trunk/source/tools/help_alias.hh
   trunk/source/tools/help_entry.hh
   trunk/source/tools/help_full_entry.hh
   trunk/source/tools/help_manager.cc
   trunk/source/tools/help_manager.hh
   trunk/source/tools/help_type.cc
   trunk/source/tools/help_type.hh
   trunk/source/tools/histogram.cc
   trunk/source/tools/histogram.hh
   trunk/source/tools/indexed_block_struct.cc
   trunk/source/tools/indexed_block_struct.hh
   trunk/source/tools/init_file.cc
   trunk/source/tools/init_file.hh
   trunk/source/tools/int_sum.cc
   trunk/source/tools/int_sum.hh
   trunk/source/tools/integrated_schedule.cc
   trunk/source/tools/integrated_schedule.hh
   trunk/source/tools/integrated_schedule_node.cc
   trunk/source/tools/integrated_schedule_node.hh
   trunk/source/tools/merit.cc
   trunk/source/tools/merit.hh
   trunk/source/tools/message_class.hh
   trunk/source/tools/message_closure.hh
   trunk/source/tools/message_display.cc
   trunk/source/tools/message_display.hh
   trunk/source/tools/message_display_hdrs.hh
   trunk/source/tools/message_type.hh
   trunk/source/tools/prob_schedule.cc
   trunk/source/tools/prob_schedule.hh
   trunk/source/tools/random.cc
   trunk/source/tools/random.hh
   trunk/source/tools/ref_block.cc
   trunk/source/tools/ref_block.hh
   trunk/source/tools/running_average.cc
   trunk/source/tools/running_average.hh
   trunk/source/tools/scaled_block.cc
   trunk/source/tools/scaled_block.hh
   trunk/source/tools/schedule.cc
   trunk/source/tools/schedule.hh
   trunk/source/tools/string.cc
   trunk/source/tools/string.hh
   trunk/source/tools/string_iterator.cc
   trunk/source/tools/string_iterator.hh
   trunk/source/tools/string_list.cc
   trunk/source/tools/string_list.hh
   trunk/source/tools/string_util.cc
   trunk/source/tools/string_util.hh
Modified:
   trunk/Avida2.xcodeproj/project.pbxproj
   trunk/source/bindings/Boost.Python/avida_driver_analyze.pyste
   trunk/source/bindings/Boost.Python/avida_driver_base.pyste
   trunk/source/bindings/Boost.Python/const_schedule.pyste
   trunk/source/bindings/Boost.Python/data_file_manager.pyste
   trunk/source/bindings/Boost.Python/file-fixups.hh
   trunk/source/bindings/Boost.Python/genesis-fixups.hh
   trunk/source/bindings/Boost.Python/genotype.pyste
   trunk/source/bindings/Boost.Python/hardware_tracer_test_cpu.pyste
   trunk/source/bindings/Boost.Python/help_alias.pyste
   trunk/source/bindings/Boost.Python/help_entry.pyste
   trunk/source/bindings/Boost.Python/help_full_entry.pyste
   trunk/source/bindings/Boost.Python/help_manager.pyste
   trunk/source/bindings/Boost.Python/help_type.pyste
   trunk/source/bindings/Boost.Python/histogram.pyste
   trunk/source/bindings/Boost.Python/indexed_block_struct.pyste
   trunk/source/bindings/Boost.Python/init_file.pyste
   trunk/source/bindings/Boost.Python/inst_lib_base.pyste
   trunk/source/bindings/Boost.Python/inst_lib_cpu.pyste
   trunk/source/bindings/Boost.Python/int_sum.pyste
   trunk/source/bindings/Boost.Python/integrated_schedule.pyste
   trunk/source/bindings/Boost.Python/integrated_schedule_node.pyste
   trunk/source/bindings/Boost.Python/lineage_control.pyste
   trunk/source/bindings/Boost.Python/merit.pyste
   trunk/source/bindings/Boost.Python/mutation_lib.pyste
   trunk/source/bindings/Boost.Python/population_event_factory.pyste
   trunk/source/bindings/Boost.Python/prob_schedule.pyste
   trunk/source/bindings/Boost.Python/py_avida_driver-fixups.cc
   trunk/source/bindings/Boost.Python/py_hardware_tracer.pyste
   trunk/source/bindings/Boost.Python/random.pyste
   trunk/source/bindings/Boost.Python/reaction_lib.pyste
   trunk/source/bindings/Boost.Python/ref_block.pyste
   trunk/source/bindings/Boost.Python/resource_lib.pyste
   trunk/source/bindings/Boost.Python/running_average.pyste
   trunk/source/bindings/Boost.Python/scaled_block.pyste
   trunk/source/bindings/Boost.Python/schedule.pyste
   trunk/source/bindings/Boost.Python/string.pyste
   trunk/source/bindings/Boost.Python/string_iterator.pyste
   trunk/source/bindings/Boost.Python/string_list.pyste
   trunk/source/bindings/Boost.Python/string_util.pyste
   trunk/source/bindings/Boost.Python/tArray_instantiations.hh
   trunk/source/bindings/Boost.Python/tList_instantiations.hh
   trunk/source/bindings/Boost.Python/tools.pyste
   trunk/source/cpu/cCPUStack.cc
   trunk/source/cpu/cCPUTestInfo.h
   trunk/source/cpu/cCodeLabel.h
   trunk/source/cpu/cHardware4Stack.cc
   trunk/source/cpu/cHardware4Stack.h
   trunk/source/cpu/cHardwareCPU.cc
   trunk/source/cpu/cHardwareCPU.h
   trunk/source/cpu/cHardwareSMT.cc
   trunk/source/cpu/cHardwareSMT.h
   trunk/source/cpu/cHardwareStatusPrinter.cc
   trunk/source/cpu/cHardwareStatusPrinter.h
   trunk/source/cpu/cHardwareUtil.cc
   trunk/source/cpu/cHardwareUtil.h
   trunk/source/cpu/cTestCPU.cc
   trunk/source/cpu/cTestCPU.h
   trunk/source/cpu/cTestUtil.h
   trunk/source/cpu/tInstLib.h
   trunk/source/event/cEvent.h
   trunk/source/event/cEventFactoryManager.cc
   trunk/source/event/cEventFactoryManager.h
   trunk/source/event/cEventList.cc
   trunk/source/event/cPopulationEventFactory.cc
   trunk/source/main/cAnalyze.cc
   trunk/source/main/cAnalyze.h
   trunk/source/main/cAnalyzeCommand.h
   trunk/source/main/cAnalyzeCommandDef.h
   trunk/source/main/cAnalyzeCommandDefBase.h
   trunk/source/main/cAnalyzeFlowCommandDef.h
   trunk/source/main/cAnalyzeFunction.h
   trunk/source/main/cAnalyzeGenotype.h
   trunk/source/main/cAnalyzeUtil.cc
   trunk/source/main/cAvidaDriver_Base.cc
   trunk/source/main/cAvidaDriver_Population.cc
   trunk/source/main/cAvidaDriver_Population.h
   trunk/source/main/cBirthChamber.h
   trunk/source/main/cConfig.h
   trunk/source/main/cEnvironment.cc
   trunk/source/main/cEnvironment.h
   trunk/source/main/cFitnessMatrix.h
   trunk/source/main/cGenebank.h
   trunk/source/main/cGenome.h
   trunk/source/main/cGenotype.cc
   trunk/source/main/cGenotype.h
   trunk/source/main/cGenotypeBatch.h
   trunk/source/main/cInjectGenebank.h
   trunk/source/main/cInjectGenotype.h
   trunk/source/main/cInstSet.cc
   trunk/source/main/cInstSet.h
   trunk/source/main/cInstUtil.cc
   trunk/source/main/cLandscape.h
   trunk/source/main/cLineageControl.cc
   trunk/source/main/cMutation.h
   trunk/source/main/cMxCodeArray.h
   trunk/source/main/cOrganism.cc
   trunk/source/main/cPhenotype.h
   trunk/source/main/cPopulation.cc
   trunk/source/main/cPopulation.h
   trunk/source/main/cReaction.h
   trunk/source/main/cResource.h
   trunk/source/main/cResourceCount.h
   trunk/source/main/cStats.cc
   trunk/source/main/cStats.h
   trunk/source/main/cTaskEntry.h
   trunk/source/testsuites/unit_testsuites/help_alias.t.cc
   trunk/source/testsuites/unit_testsuites/help_entry.t.cc
   trunk/source/testsuites/unit_testsuites/help_full_entry.t.cc
   trunk/source/testsuites/unit_testsuites/help_manager.t.cc
   trunk/source/testsuites/unit_testsuites/help_type.t.cc
   trunk/source/testsuites/unit_testsuites/histogram.t.cc
   trunk/source/testsuites/unit_testsuites/indexed_block_struct.t.cc
   trunk/source/testsuites/unit_testsuites/init_file.t.cc
   trunk/source/testsuites/unit_testsuites/integrated_schedule_node.t.cc
   trunk/source/testsuites/unit_testsuites/level_0/int_sum.t.cc
   trunk/source/testsuites/unit_testsuites/level_0/merit.t.cc
   trunk/source/testsuites/unit_testsuites/message_class.t.cc
   trunk/source/testsuites/unit_testsuites/message_closure.t.cc
   trunk/source/testsuites/unit_testsuites/message_display.t.cc
   trunk/source/testsuites/unit_testsuites/message_type.t.cc
   trunk/source/testsuites/unit_testsuites/prob_schedule.t.cc
   trunk/source/testsuites/unit_testsuites/random.t.cc
   trunk/source/testsuites/unit_testsuites/ref_block.t.cc
   trunk/source/testsuites/unit_testsuites/running_average.t.cc
   trunk/source/testsuites/unit_testsuites/scaled_block.t.cc
   trunk/source/testsuites/unit_testsuites/schedule.t.cc
   trunk/source/testsuites/unit_testsuites/string.t.cc
   trunk/source/testsuites/unit_testsuites/string_iterator.t.cc
   trunk/source/testsuites/unit_testsuites/string_list.t.cc
   trunk/source/testsuites/unit_testsuites/string_util.t.cc
   trunk/source/tools/CMakeLists.txt
   trunk/source/tools/cBlockStruct.h
   trunk/source/tools/cConstSchedule.cc
   trunk/source/tools/cConstSchedule.h
   trunk/source/tools/cDataEntry.h
   trunk/source/tools/cDataFile.cc
   trunk/source/tools/cDataFile.h
   trunk/source/tools/cDataManager_Base.h
   trunk/source/tools/cDefaultMessageDisplay.cc
   trunk/source/tools/cDefaultMessageDisplay.h
   trunk/source/tools/cFile.cc
   trunk/source/tools/cFile.h
   trunk/source/tools/cGenesis.h
   trunk/source/tools/tBuffer.hh
   trunk/source/tools/tDataEntry.hh
   trunk/source/tools/tDataEntryCommand.hh
   trunk/source/tools/tDictionary.hh
   trunk/source/tools/tHashTable.hh
   trunk/source/tools/tools.cc
   trunk/source/tools/tools.hh
   trunk/source/tools/tools.pri
   trunk/source/utils/hist_map/Makefile
   trunk/source/utils/hist_map/hist_map.cc
   trunk/source/utils/hist_map/hist_map2.cc
   trunk/source/utils/matlabify.cc
   trunk/source/utils/task_events/task_event_gen.cc
   trunk/source/utils/task_events/task_event_gen.old.cc
   trunk/source/viewers/menu.hh
   trunk/source/viewers/text_screen.hh
   trunk/source/viewers/zoom_screen.cc
   trunk/status.xml
Log:
Rename tools classes through cStringUtil.

Modified: trunk/Avida2.xcodeproj/project.pbxproj
===================================================================
--- trunk/Avida2.xcodeproj/project.pbxproj	2005-10-07 01:02:35 UTC (rev 337)
+++ trunk/Avida2.xcodeproj/project.pbxproj	2005-10-08 02:02:38 UTC (rev 338)
@@ -11,27 +11,6 @@
 		700E2AF8085DE50C00CF158A /* avida.cc in Sources */ = {isa = PBXBuildFile; fileRef = DCC3109C0762539E008F7A48 /* avida.cc */; };
 		700E2B43085DE50C00CF158A /* weighted_index.cc in Sources */ = {isa = PBXBuildFile; fileRef = DCC315B3076253A5008F7A48 /* weighted_index.cc */; };
 		700E2B44085DE50C00CF158A /* tools.cc in Sources */ = {isa = PBXBuildFile; fileRef = DCC315AA076253A4008F7A48 /* tools.cc */; };
-		700E2B52085DE50C00CF158A /* help_alias.cc in Sources */ = {isa = PBXBuildFile; fileRef = DCC31564076253A4008F7A48 /* help_alias.cc */; };
-		700E2B53085DE50C00CF158A /* help_manager.cc in Sources */ = {isa = PBXBuildFile; fileRef = DCC31568076253A4008F7A48 /* help_manager.cc */; };
-		700E2B54085DE50C00CF158A /* help_type.cc in Sources */ = {isa = PBXBuildFile; fileRef = DCC3156A076253A4008F7A48 /* help_type.cc */; };
-		700E2B55085DE50C00CF158A /* histogram.cc in Sources */ = {isa = PBXBuildFile; fileRef = DCC3156C076253A4008F7A48 /* histogram.cc */; };
-		700E2B56085DE50C00CF158A /* indexed_block_struct.cc in Sources */ = {isa = PBXBuildFile; fileRef = DCC3156E076253A4008F7A48 /* indexed_block_struct.cc */; };
-		700E2B57085DE50C00CF158A /* init_file.cc in Sources */ = {isa = PBXBuildFile; fileRef = DCC31570076253A4008F7A48 /* init_file.cc */; };
-		700E2B58085DE50C00CF158A /* int_sum.cc in Sources */ = {isa = PBXBuildFile; fileRef = DCC31572076253A4008F7A48 /* int_sum.cc */; };
-		700E2B59085DE50C00CF158A /* integrated_schedule.cc in Sources */ = {isa = PBXBuildFile; fileRef = DCC31574076253A4008F7A48 /* integrated_schedule.cc */; };
-		700E2B5A085DE50C00CF158A /* integrated_schedule_node.cc in Sources */ = {isa = PBXBuildFile; fileRef = DCC31576076253A4008F7A48 /* integrated_schedule_node.cc */; };
-		700E2B5B085DE50C00CF158A /* merit.cc in Sources */ = {isa = PBXBuildFile; fileRef = DCC31579076253A4008F7A48 /* merit.cc */; };
-		700E2B5C085DE50C00CF158A /* message_display.cc in Sources */ = {isa = PBXBuildFile; fileRef = DCC3157D076253A4008F7A48 /* message_display.cc */; };
-		700E2B5D085DE50C00CF158A /* prob_schedule.cc in Sources */ = {isa = PBXBuildFile; fileRef = DCC31581076253A4008F7A48 /* prob_schedule.cc */; };
-		700E2B5E085DE50C00CF158A /* random.cc in Sources */ = {isa = PBXBuildFile; fileRef = DCC31583076253A4008F7A48 /* random.cc */; };
-		700E2B5F085DE50C00CF158A /* ref_block.cc in Sources */ = {isa = PBXBuildFile; fileRef = DCC31588076253A4008F7A48 /* ref_block.cc */; };
-		700E2B60085DE50C00CF158A /* running_average.cc in Sources */ = {isa = PBXBuildFile; fileRef = DCC3158A076253A4008F7A48 /* running_average.cc */; };
-		700E2B61085DE50C00CF158A /* scaled_block.cc in Sources */ = {isa = PBXBuildFile; fileRef = DCC3158C076253A4008F7A48 /* scaled_block.cc */; };
-		700E2B62085DE50C00CF158A /* schedule.cc in Sources */ = {isa = PBXBuildFile; fileRef = DCC3158E076253A4008F7A48 /* schedule.cc */; };
-		700E2B63085DE50C00CF158A /* string.cc in Sources */ = {isa = PBXBuildFile; fileRef = DCC31590076253A4008F7A48 /* string.cc */; };
-		700E2B64085DE50C00CF158A /* string_iterator.cc in Sources */ = {isa = PBXBuildFile; fileRef = DCC31592076253A4008F7A48 /* string_iterator.cc */; };
-		700E2B65085DE50C00CF158A /* string_list.cc in Sources */ = {isa = PBXBuildFile; fileRef = DCC31594076253A4008F7A48 /* string_list.cc */; };
-		700E2B66085DE50C00CF158A /* string_util.cc in Sources */ = {isa = PBXBuildFile; fileRef = DCC31596076253A4008F7A48 /* string_util.cc */; };
 		700E2B6F085DE50C00CF158A /* analyze.cfg in CopyFiles */ = {isa = PBXBuildFile; fileRef = DCC3114B0762539E008F7A48 /* analyze.cfg */; };
 		700E2B70085DE50C00CF158A /* environment.cfg in CopyFiles */ = {isa = PBXBuildFile; fileRef = DCC311800762539F008F7A48 /* environment.cfg */; };
 		700E2B71085DE50C00CF158A /* events.cfg in CopyFiles */ = {isa = PBXBuildFile; fileRef = DCC311810762539F008F7A48 /* events.cfg */; };
@@ -179,6 +158,40 @@
 		70B0888608F603D400FC65FE /* cGenesis.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B0888408F603D400FC65FE /* cGenesis.cc */; };
 		70B0888708F603D400FC65FE /* cFile.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B0888308F603D400FC65FE /* cFile.cc */; };
 		70B0888808F603D400FC65FE /* cGenesis.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B0888408F603D400FC65FE /* cGenesis.cc */; };
+		70B0892708F7630100FC65FE /* cHelpAlias.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B0891608F7630100FC65FE /* cHelpAlias.cc */; };
+		70B0892808F7630100FC65FE /* cHelpManager.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B0891708F7630100FC65FE /* cHelpManager.cc */; };
+		70B0892908F7630100FC65FE /* cHelpType.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B0891808F7630100FC65FE /* cHelpType.cc */; };
+		70B0892A08F7630100FC65FE /* cHistogram.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B0891908F7630100FC65FE /* cHistogram.cc */; };
+		70B0892B08F7630100FC65FE /* cInitFile.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B0891A08F7630100FC65FE /* cInitFile.cc */; };
+		70B0892C08F7630100FC65FE /* cIntegratedSchedule.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B0891B08F7630100FC65FE /* cIntegratedSchedule.cc */; };
+		70B0892D08F7630100FC65FE /* cIntegratedScheduleNode.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B0891C08F7630100FC65FE /* cIntegratedScheduleNode.cc */; };
+		70B0892E08F7630100FC65FE /* cIntSum.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B0891D08F7630100FC65FE /* cIntSum.cc */; };
+		70B0892F08F7630100FC65FE /* cMerit.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B0891E08F7630100FC65FE /* cMerit.cc */; };
+		70B0893008F7630100FC65FE /* cProbSchedule.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B0891F08F7630100FC65FE /* cProbSchedule.cc */; };
+		70B0893108F7630100FC65FE /* cRandom.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B0892008F7630100FC65FE /* cRandom.cc */; };
+		70B0893208F7630100FC65FE /* cRunningAverage.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B0892108F7630100FC65FE /* cRunningAverage.cc */; };
+		70B0893308F7630100FC65FE /* cSchedule.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B0892208F7630100FC65FE /* cSchedule.cc */; };
+		70B0893408F7630100FC65FE /* cString.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B0892308F7630100FC65FE /* cString.cc */; };
+		70B0893508F7630100FC65FE /* cStringIterator.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B0892408F7630100FC65FE /* cStringIterator.cc */; };
+		70B0893608F7630100FC65FE /* cStringList.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B0892508F7630100FC65FE /* cStringList.cc */; };
+		70B0893708F7630100FC65FE /* cStringUtil.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B0892608F7630100FC65FE /* cStringUtil.cc */; };
+		70B0893808F7630100FC65FE /* cHelpAlias.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B0891608F7630100FC65FE /* cHelpAlias.cc */; };
+		70B0893908F7630100FC65FE /* cHelpManager.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B0891708F7630100FC65FE /* cHelpManager.cc */; };
+		70B0893A08F7630100FC65FE /* cHelpType.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B0891808F7630100FC65FE /* cHelpType.cc */; };
+		70B0893B08F7630100FC65FE /* cHistogram.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B0891908F7630100FC65FE /* cHistogram.cc */; };
+		70B0893C08F7630100FC65FE /* cInitFile.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B0891A08F7630100FC65FE /* cInitFile.cc */; };
+		70B0893D08F7630100FC65FE /* cIntegratedSchedule.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B0891B08F7630100FC65FE /* cIntegratedSchedule.cc */; };
+		70B0893E08F7630100FC65FE /* cIntegratedScheduleNode.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B0891C08F7630100FC65FE /* cIntegratedScheduleNode.cc */; };
+		70B0893F08F7630100FC65FE /* cIntSum.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B0891D08F7630100FC65FE /* cIntSum.cc */; };
+		70B0894008F7630100FC65FE /* cMerit.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B0891E08F7630100FC65FE /* cMerit.cc */; };
+		70B0894108F7630100FC65FE /* cProbSchedule.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B0891F08F7630100FC65FE /* cProbSchedule.cc */; };
+		70B0894208F7630100FC65FE /* cRandom.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B0892008F7630100FC65FE /* cRandom.cc */; };
+		70B0894308F7630100FC65FE /* cRunningAverage.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B0892108F7630100FC65FE /* cRunningAverage.cc */; };
+		70B0894408F7630100FC65FE /* cSchedule.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B0892208F7630100FC65FE /* cSchedule.cc */; };
+		70B0894508F7630100FC65FE /* cString.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B0892308F7630100FC65FE /* cString.cc */; };
+		70B0894608F7630100FC65FE /* cStringIterator.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B0892408F7630100FC65FE /* cStringIterator.cc */; };
+		70B0894708F7630100FC65FE /* cStringList.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B0892508F7630100FC65FE /* cStringList.cc */; };
+		70B0894808F7630100FC65FE /* cStringUtil.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B0892608F7630100FC65FE /* cStringUtil.cc */; };
 		70C1EF4808C393BA00F50912 /* cCodeLabel.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70C1EF4608C393BA00F50912 /* cCodeLabel.cc */; };
 		70C1EF4A08C393BA00F50912 /* cCodeLabel.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70C1EF4608C393BA00F50912 /* cCodeLabel.cc */; };
 		70C1EF5908C3948C00F50912 /* cCPUMemory.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70C1EF5808C3948C00F50912 /* cCPUMemory.cc */; };
@@ -263,27 +276,6 @@
 		DCC3166107628531008F7A48 /* avida.cc in Sources */ = {isa = PBXBuildFile; fileRef = DCC3109C0762539E008F7A48 /* avida.cc */; };
 		DCC316B807628742008F7A48 /* weighted_index.cc in Sources */ = {isa = PBXBuildFile; fileRef = DCC315B3076253A5008F7A48 /* weighted_index.cc */; };
 		DCC316B907628744008F7A48 /* tools.cc in Sources */ = {isa = PBXBuildFile; fileRef = DCC315AA076253A4008F7A48 /* tools.cc */; };
-		DCC316C707628757008F7A48 /* help_alias.cc in Sources */ = {isa = PBXBuildFile; fileRef = DCC31564076253A4008F7A48 /* help_alias.cc */; };
-		DCC316C807628758008F7A48 /* help_manager.cc in Sources */ = {isa = PBXBuildFile; fileRef = DCC31568076253A4008F7A48 /* help_manager.cc */; };
-		DCC316C90762875A008F7A48 /* help_type.cc in Sources */ = {isa = PBXBuildFile; fileRef = DCC3156A076253A4008F7A48 /* help_type.cc */; };
-		DCC316CA0762875B008F7A48 /* histogram.cc in Sources */ = {isa = PBXBuildFile; fileRef = DCC3156C076253A4008F7A48 /* histogram.cc */; };
-		DCC316CB0762875C008F7A48 /* indexed_block_struct.cc in Sources */ = {isa = PBXBuildFile; fileRef = DCC3156E076253A4008F7A48 /* indexed_block_struct.cc */; };
-		DCC316CC0762875D008F7A48 /* init_file.cc in Sources */ = {isa = PBXBuildFile; fileRef = DCC31570076253A4008F7A48 /* init_file.cc */; };
-		DCC316CD0762875D008F7A48 /* int_sum.cc in Sources */ = {isa = PBXBuildFile; fileRef = DCC31572076253A4008F7A48 /* int_sum.cc */; };
-		DCC316CE0762875E008F7A48 /* integrated_schedule.cc in Sources */ = {isa = PBXBuildFile; fileRef = DCC31574076253A4008F7A48 /* integrated_schedule.cc */; };
-		DCC316CF0762875F008F7A48 /* integrated_schedule_node.cc in Sources */ = {isa = PBXBuildFile; fileRef = DCC31576076253A4008F7A48 /* integrated_schedule_node.cc */; };
-		DCC316D007628761008F7A48 /* merit.cc in Sources */ = {isa = PBXBuildFile; fileRef = DCC31579076253A4008F7A48 /* merit.cc */; };
-		DCC316D107628763008F7A48 /* message_display.cc in Sources */ = {isa = PBXBuildFile; fileRef = DCC3157D076253A4008F7A48 /* message_display.cc */; };
-		DCC316D207628764008F7A48 /* prob_schedule.cc in Sources */ = {isa = PBXBuildFile; fileRef = DCC31581076253A4008F7A48 /* prob_schedule.cc */; };
-		DCC316D307628765008F7A48 /* random.cc in Sources */ = {isa = PBXBuildFile; fileRef = DCC31583076253A4008F7A48 /* random.cc */; };
-		DCC316D407628766008F7A48 /* ref_block.cc in Sources */ = {isa = PBXBuildFile; fileRef = DCC31588076253A4008F7A48 /* ref_block.cc */; };
-		DCC316D507628767008F7A48 /* running_average.cc in Sources */ = {isa = PBXBuildFile; fileRef = DCC3158A076253A4008F7A48 /* running_average.cc */; };
-		DCC316D607628769008F7A48 /* scaled_block.cc in Sources */ = {isa = PBXBuildFile; fileRef = DCC3158C076253A4008F7A48 /* scaled_block.cc */; };
-		DCC316D70762876A008F7A48 /* schedule.cc in Sources */ = {isa = PBXBuildFile; fileRef = DCC3158E076253A4008F7A48 /* schedule.cc */; };
-		DCC316D80762876B008F7A48 /* string.cc in Sources */ = {isa = PBXBuildFile; fileRef = DCC31590076253A4008F7A48 /* string.cc */; };
-		DCC316D90762876C008F7A48 /* string_iterator.cc in Sources */ = {isa = PBXBuildFile; fileRef = DCC31592076253A4008F7A48 /* string_iterator.cc */; };
-		DCC316DA0762876E008F7A48 /* string_list.cc in Sources */ = {isa = PBXBuildFile; fileRef = DCC31594076253A4008F7A48 /* string_list.cc */; };
-		DCC316DB0762876F008F7A48 /* string_util.cc in Sources */ = {isa = PBXBuildFile; fileRef = DCC31596076253A4008F7A48 /* string_util.cc */; };
 /* End PBXBuildFile section */
 
 /* Begin PBXBuildStyle section */
@@ -501,6 +493,54 @@
 		70B0888208F603C600FC65FE /* functions.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = functions.h; sourceTree = "<group>"; };
 		70B0888308F603D400FC65FE /* cFile.cc */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = cFile.cc; sourceTree = "<group>"; };
 		70B0888408F603D400FC65FE /* cGenesis.cc */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = cGenesis.cc; sourceTree = "<group>"; };
+		70B088F708F762EA00FC65FE /* cHelpAlias.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = cHelpAlias.h; sourceTree = "<group>"; };
+		70B088F808F762EA00FC65FE /* cHelpEntry.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = cHelpEntry.h; sourceTree = "<group>"; };
+		70B088F908F762EA00FC65FE /* cHelpFullEntry.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = cHelpFullEntry.h; sourceTree = "<group>"; };
+		70B088FA08F762EA00FC65FE /* cHelpManager.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = cHelpManager.h; sourceTree = "<group>"; };
+		70B088FB08F762EA00FC65FE /* cHelpType.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = cHelpType.h; sourceTree = "<group>"; };
+		70B088FC08F762EA00FC65FE /* cHistogram.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = cHistogram.h; sourceTree = "<group>"; };
+		70B088FD08F762EA00FC65FE /* cIndexedBlockStruct.cc */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = cIndexedBlockStruct.cc; sourceTree = "<group>"; };
+		70B088FE08F762EA00FC65FE /* cIndexedBlockStruct.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = cIndexedBlockStruct.h; sourceTree = "<group>"; };
+		70B088FF08F762EA00FC65FE /* cInitFile.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = cInitFile.h; sourceTree = "<group>"; };
+		70B0890008F762EA00FC65FE /* cIntegratedSchedule.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = cIntegratedSchedule.h; sourceTree = "<group>"; };
+		70B0890108F762EA00FC65FE /* cIntegratedScheduleNode.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = cIntegratedScheduleNode.h; sourceTree = "<group>"; };
+		70B0890208F762EA00FC65FE /* cIntSum.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = cIntSum.h; sourceTree = "<group>"; };
+		70B0890308F762EA00FC65FE /* cMerit.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = cMerit.h; sourceTree = "<group>"; };
+		70B0890408F762EA00FC65FE /* cMessageClass.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = cMessageClass.h; sourceTree = "<group>"; };
+		70B0890508F762EA00FC65FE /* cMessageClosure.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = cMessageClosure.h; sourceTree = "<group>"; };
+		70B0890608F762EA00FC65FE /* cMessageDisplay_headers.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = cMessageDisplay_headers.h; sourceTree = "<group>"; };
+		70B0890708F762EA00FC65FE /* cMessageDisplay.cc */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = cMessageDisplay.cc; sourceTree = "<group>"; };
+		70B0890808F762EA00FC65FE /* cMessageDisplay.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = cMessageDisplay.h; sourceTree = "<group>"; };
+		70B0890908F762EA00FC65FE /* cMessageType.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = cMessageType.h; sourceTree = "<group>"; };
+		70B0890A08F762EA00FC65FE /* cProbSchedule.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = cProbSchedule.h; sourceTree = "<group>"; };
+		70B0890B08F762EA00FC65FE /* cRandom.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = cRandom.h; sourceTree = "<group>"; };
+		70B0890C08F762EA00FC65FE /* cRefBlock.cc */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = cRefBlock.cc; sourceTree = "<group>"; };
+		70B0890D08F762EA00FC65FE /* cRefBlock.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = cRefBlock.h; sourceTree = "<group>"; };
+		70B0890E08F762EA00FC65FE /* cRunningAverage.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = cRunningAverage.h; sourceTree = "<group>"; };
+		70B0890F08F762EA00FC65FE /* cScaledBlock.cc */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = cScaledBlock.cc; sourceTree = "<group>"; };
+		70B0891008F762EA00FC65FE /* cScaledBlock.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = cScaledBlock.h; sourceTree = "<group>"; };
+		70B0891108F762EA00FC65FE /* cSchedule.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = cSchedule.h; sourceTree = "<group>"; };
+		70B0891208F762EA00FC65FE /* cString.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = cString.h; sourceTree = "<group>"; };
+		70B0891308F762EA00FC65FE /* cStringIterator.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = cStringIterator.h; sourceTree = "<group>"; };
+		70B0891408F762EA00FC65FE /* cStringList.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = cStringList.h; sourceTree = "<group>"; };
+		70B0891508F762EA00FC65FE /* cStringUtil.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = cStringUtil.h; sourceTree = "<group>"; };
+		70B0891608F7630100FC65FE /* cHelpAlias.cc */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = cHelpAlias.cc; sourceTree = "<group>"; };
+		70B0891708F7630100FC65FE /* cHelpManager.cc */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = cHelpManager.cc; sourceTree = "<group>"; };
+		70B0891808F7630100FC65FE /* cHelpType.cc */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = cHelpType.cc; sourceTree = "<group>"; };
+		70B0891908F7630100FC65FE /* cHistogram.cc */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = cHistogram.cc; sourceTree = "<group>"; };
+		70B0891A08F7630100FC65FE /* cInitFile.cc */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = cInitFile.cc; sourceTree = "<group>"; };
+		70B0891B08F7630100FC65FE /* cIntegratedSchedule.cc */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = cIntegratedSchedule.cc; sourceTree = "<group>"; };
+		70B0891C08F7630100FC65FE /* cIntegratedScheduleNode.cc */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = cIntegratedScheduleNode.cc; sourceTree = "<group>"; };
+		70B0891D08F7630100FC65FE /* cIntSum.cc */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = cIntSum.cc; sourceTree = "<group>"; };
+		70B0891E08F7630100FC65FE /* cMerit.cc */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = cMerit.cc; sourceTree = "<group>"; };
+		70B0891F08F7630100FC65FE /* cProbSchedule.cc */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = cProbSchedule.cc; sourceTree = "<group>"; };
+		70B0892008F7630100FC65FE /* cRandom.cc */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = cRandom.cc; sourceTree = "<group>"; };
+		70B0892108F7630100FC65FE /* cRunningAverage.cc */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = cRunningAverage.cc; sourceTree = "<group>"; };
+		70B0892208F7630100FC65FE /* cSchedule.cc */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = cSchedule.cc; sourceTree = "<group>"; };
+		70B0892308F7630100FC65FE /* cString.cc */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = cString.cc; sourceTree = "<group>"; };
+		70B0892408F7630100FC65FE /* cStringIterator.cc */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = cStringIterator.cc; sourceTree = "<group>"; };
+		70B0892508F7630100FC65FE /* cStringList.cc */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = cStringList.cc; sourceTree = "<group>"; };
+		70B0892608F7630100FC65FE /* cStringUtil.cc */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = cStringUtil.cc; sourceTree = "<group>"; };
 		70C1EF4608C393BA00F50912 /* cCodeLabel.cc */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = cCodeLabel.cc; sourceTree = "<group>"; };
 		70C1EF4708C393BA00F50912 /* cCodeLabel.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = cCodeLabel.h; sourceTree = "<group>"; };
 		70C1EF5808C3948C00F50912 /* cCPUMemory.cc */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = cCPUMemory.cc; sourceTree = "<group>"; };
@@ -1300,57 +1340,9 @@
 		DCC314D7076253A2008F7A48 /* text_test_interpreter.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = text_test_interpreter.h; sourceTree = "<group>"; };
 		DCC31547076253A4008F7A48 /* cCycleCheck.cc */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = cCycleCheck.cc; sourceTree = "<group>"; };
 		DCC3154A076253A4008F7A48 /* CMakeLists.txt */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = "<group>"; };
-		DCC31564076253A4008F7A48 /* help_alias.cc */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = help_alias.cc; sourceTree = "<group>"; };
-		DCC31565076253A4008F7A48 /* help_alias.hh */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.h; path = help_alias.hh; sourceTree = "<group>"; };
-		DCC31566076253A4008F7A48 /* help_entry.hh */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.h; path = help_entry.hh; sourceTree = "<group>"; };
-		DCC31567076253A4008F7A48 /* help_full_entry.hh */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.h; path = help_full_entry.hh; sourceTree = "<group>"; };
-		DCC31568076253A4008F7A48 /* help_manager.cc */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = help_manager.cc; sourceTree = "<group>"; };
-		DCC31569076253A4008F7A48 /* help_manager.hh */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.h; path = help_manager.hh; sourceTree = "<group>"; };
-		DCC3156A076253A4008F7A48 /* help_type.cc */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = help_type.cc; sourceTree = "<group>"; };
-		DCC3156B076253A4008F7A48 /* help_type.hh */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.h; path = help_type.hh; sourceTree = "<group>"; };
-		DCC3156C076253A4008F7A48 /* histogram.cc */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = histogram.cc; sourceTree = "<group>"; };
-		DCC3156D076253A4008F7A48 /* histogram.hh */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.h; path = histogram.hh; sourceTree = "<group>"; };
-		DCC3156E076253A4008F7A48 /* indexed_block_struct.cc */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = indexed_block_struct.cc; sourceTree = "<group>"; };
-		DCC3156F076253A4008F7A48 /* indexed_block_struct.hh */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.h; path = indexed_block_struct.hh; sourceTree = "<group>"; };
-		DCC31570076253A4008F7A48 /* init_file.cc */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = init_file.cc; sourceTree = "<group>"; };
-		DCC31571076253A4008F7A48 /* init_file.hh */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.h; path = init_file.hh; sourceTree = "<group>"; };
-		DCC31572076253A4008F7A48 /* int_sum.cc */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = int_sum.cc; sourceTree = "<group>"; };
-		DCC31573076253A4008F7A48 /* int_sum.hh */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.h; path = int_sum.hh; sourceTree = "<group>"; };
-		DCC31574076253A4008F7A48 /* integrated_schedule.cc */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = integrated_schedule.cc; sourceTree = "<group>"; };
-		DCC31575076253A4008F7A48 /* integrated_schedule.hh */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.h; path = integrated_schedule.hh; sourceTree = "<group>"; };
-		DCC31576076253A4008F7A48 /* integrated_schedule_node.cc */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = integrated_schedule_node.cc; sourceTree = "<group>"; };
-		DCC31577076253A4008F7A48 /* integrated_schedule_node.hh */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.h; path = integrated_schedule_node.hh; sourceTree = "<group>"; };
-		DCC31579076253A4008F7A48 /* merit.cc */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = merit.cc; sourceTree = "<group>"; };
-		DCC3157A076253A4008F7A48 /* merit.hh */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.h; path = merit.hh; sourceTree = "<group>"; };
-		DCC3157B076253A4008F7A48 /* message_class.hh */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.h; path = message_class.hh; sourceTree = "<group>"; };
-		DCC3157C076253A4008F7A48 /* message_closure.hh */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.h; path = message_closure.hh; sourceTree = "<group>"; };
-		DCC3157D076253A4008F7A48 /* message_display.cc */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = message_display.cc; sourceTree = "<group>"; };
-		DCC3157E076253A4008F7A48 /* message_display.hh */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.h; path = message_display.hh; sourceTree = "<group>"; };
-		DCC3157F076253A4008F7A48 /* message_display_hdrs.hh */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.h; path = message_display_hdrs.hh; sourceTree = "<group>"; };
-		DCC31580076253A4008F7A48 /* message_type.hh */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.h; path = message_type.hh; sourceTree = "<group>"; };
-		DCC31581076253A4008F7A48 /* prob_schedule.cc */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = prob_schedule.cc; sourceTree = "<group>"; };
-		DCC31582076253A4008F7A48 /* prob_schedule.hh */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.h; path = prob_schedule.hh; sourceTree = "<group>"; };
-		DCC31583076253A4008F7A48 /* random.cc */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = random.cc; sourceTree = "<group>"; };
-		DCC31584076253A4008F7A48 /* random.hh */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.h; path = random.hh; sourceTree = "<group>"; };
 		DCC31585076253A4008F7A48 /* recursive_tests_decl_hdrs.hh */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.h; path = recursive_tests_decl_hdrs.hh; sourceTree = "<group>"; };
 		DCC31586076253A4008F7A48 /* recursive_tests_defn_hdrs.hh */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.h; path = recursive_tests_defn_hdrs.hh; sourceTree = "<group>"; };
 		DCC31587076253A4008F7A48 /* recursive_tests_macros.hh */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.h; path = recursive_tests_macros.hh; sourceTree = "<group>"; };
-		DCC31588076253A4008F7A48 /* ref_block.cc */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = ref_block.cc; sourceTree = "<group>"; };
-		DCC31589076253A4008F7A48 /* ref_block.hh */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.h; path = ref_block.hh; sourceTree = "<group>"; };
-		DCC3158A076253A4008F7A48 /* running_average.cc */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = running_average.cc; sourceTree = "<group>"; };
-		DCC3158B076253A4008F7A48 /* running_average.hh */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.h; path = running_average.hh; sourceTree = "<group>"; };
-		DCC3158C076253A4008F7A48 /* scaled_block.cc */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = scaled_block.cc; sourceTree = "<group>"; };
-		DCC3158D076253A4008F7A48 /* scaled_block.hh */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.h; path = scaled_block.hh; sourceTree = "<group>"; };
-		DCC3158E076253A4008F7A48 /* schedule.cc */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = schedule.cc; sourceTree = "<group>"; };
-		DCC3158F076253A4008F7A48 /* schedule.hh */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.h; path = schedule.hh; sourceTree = "<group>"; };
-		DCC31590076253A4008F7A48 /* string.cc */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = string.cc; sourceTree = "<group>"; };
-		DCC31591076253A4008F7A48 /* string.hh */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.h; path = string.hh; sourceTree = "<group>"; };
-		DCC31592076253A4008F7A48 /* string_iterator.cc */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = string_iterator.cc; sourceTree = "<group>"; };
-		DCC31593076253A4008F7A48 /* string_iterator.hh */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.h; path = string_iterator.hh; sourceTree = "<group>"; };
-		DCC31594076253A4008F7A48 /* string_list.cc */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = string_list.cc; sourceTree = "<group>"; };
-		DCC31595076253A4008F7A48 /* string_list.hh */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.h; path = string_list.hh; sourceTree = "<group>"; };
-		DCC31596076253A4008F7A48 /* string_util.cc */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = string_util.cc; sourceTree = "<group>"; };
-		DCC31597076253A4008F7A48 /* string_util.hh */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.h; path = string_util.hh; sourceTree = "<group>"; };
 		DCC31598076253A4008F7A48 /* tArgDataEntry.hh */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.h; path = tArgDataEntry.hh; sourceTree = "<group>"; };
 		DCC31599076253A4008F7A48 /* tArray.hh */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.h; path = tArray.hh; sourceTree = "<group>"; };
 		DCC3159A076253A4008F7A48 /* tBuffer.hh */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.h; path = tBuffer.hh; sourceTree = "<group>"; };
@@ -2713,6 +2705,54 @@
 		DCC314D8076253A2008F7A48 /* tools */ = {
 			isa = PBXGroup;
 			children = (
+				70B0891608F7630100FC65FE /* cHelpAlias.cc */,
+				70B0891708F7630100FC65FE /* cHelpManager.cc */,
+				70B0891808F7630100FC65FE /* cHelpType.cc */,
+				70B0891908F7630100FC65FE /* cHistogram.cc */,
+				70B0891A08F7630100FC65FE /* cInitFile.cc */,
+				70B0891B08F7630100FC65FE /* cIntegratedSchedule.cc */,
+				70B0891C08F7630100FC65FE /* cIntegratedScheduleNode.cc */,
+				70B0891D08F7630100FC65FE /* cIntSum.cc */,
+				70B0891E08F7630100FC65FE /* cMerit.cc */,
+				70B0891F08F7630100FC65FE /* cProbSchedule.cc */,
+				70B0892008F7630100FC65FE /* cRandom.cc */,
+				70B0892108F7630100FC65FE /* cRunningAverage.cc */,
+				70B0892208F7630100FC65FE /* cSchedule.cc */,
+				70B0892308F7630100FC65FE /* cString.cc */,
+				70B0892408F7630100FC65FE /* cStringIterator.cc */,
+				70B0892508F7630100FC65FE /* cStringList.cc */,
+				70B0892608F7630100FC65FE /* cStringUtil.cc */,
+				70B088F708F762EA00FC65FE /* cHelpAlias.h */,
+				70B088F808F762EA00FC65FE /* cHelpEntry.h */,
+				70B088F908F762EA00FC65FE /* cHelpFullEntry.h */,
+				70B088FA08F762EA00FC65FE /* cHelpManager.h */,
+				70B088FB08F762EA00FC65FE /* cHelpType.h */,
+				70B088FC08F762EA00FC65FE /* cHistogram.h */,
+				70B088FD08F762EA00FC65FE /* cIndexedBlockStruct.cc */,
+				70B088FE08F762EA00FC65FE /* cIndexedBlockStruct.h */,
+				70B088FF08F762EA00FC65FE /* cInitFile.h */,
+				70B0890008F762EA00FC65FE /* cIntegratedSchedule.h */,
+				70B0890108F762EA00FC65FE /* cIntegratedScheduleNode.h */,
+				70B0890208F762EA00FC65FE /* cIntSum.h */,
+				70B0890308F762EA00FC65FE /* cMerit.h */,
+				70B0890408F762EA00FC65FE /* cMessageClass.h */,
+				70B0890508F762EA00FC65FE /* cMessageClosure.h */,
+				70B0890608F762EA00FC65FE /* cMessageDisplay_headers.h */,
+				70B0890708F762EA00FC65FE /* cMessageDisplay.cc */,
+				70B0890808F762EA00FC65FE /* cMessageDisplay.h */,
+				70B0890908F762EA00FC65FE /* cMessageType.h */,
+				70B0890A08F762EA00FC65FE /* cProbSchedule.h */,
+				70B0890B08F762EA00FC65FE /* cRandom.h */,
+				70B0890C08F762EA00FC65FE /* cRefBlock.cc */,
+				70B0890D08F762EA00FC65FE /* cRefBlock.h */,
+				70B0890E08F762EA00FC65FE /* cRunningAverage.h */,
+				70B0890F08F762EA00FC65FE /* cScaledBlock.cc */,
+				70B0891008F762EA00FC65FE /* cScaledBlock.h */,
+				70B0891108F762EA00FC65FE /* cSchedule.h */,
+				70B0891208F762EA00FC65FE /* cString.h */,
+				70B0891308F762EA00FC65FE /* cStringIterator.h */,
+				70B0891408F762EA00FC65FE /* cStringList.h */,
+				70B0891508F762EA00FC65FE /* cStringUtil.h */,
 				70B0888308F603D400FC65FE /* cFile.cc */,
 				70B0888408F603D400FC65FE /* cGenesis.cc */,
 				70B0887D08F603C600FC65FE /* cFile.h */,
@@ -2747,57 +2787,9 @@
 				70FB868608BFA02D00BDF589 /* tHashTable.hh */,
 				DCC31547076253A4008F7A48 /* cCycleCheck.cc */,
 				DCC3154A076253A4008F7A48 /* CMakeLists.txt */,
-				DCC31564076253A4008F7A48 /* help_alias.cc */,
-				DCC31565076253A4008F7A48 /* help_alias.hh */,
-				DCC31566076253A4008F7A48 /* help_entry.hh */,
-				DCC31567076253A4008F7A48 /* help_full_entry.hh */,
-				DCC31568076253A4008F7A48 /* help_manager.cc */,
-				DCC31569076253A4008F7A48 /* help_manager.hh */,
-				DCC3156A076253A4008F7A48 /* help_type.cc */,
-				DCC3156B076253A4008F7A48 /* help_type.hh */,
-				DCC3156C076253A4008F7A48 /* histogram.cc */,
-				DCC3156D076253A4008F7A48 /* histogram.hh */,
-				DCC3156E076253A4008F7A48 /* indexed_block_struct.cc */,
-				DCC3156F076253A4008F7A48 /* indexed_block_struct.hh */,
-				DCC31570076253A4008F7A48 /* init_file.cc */,
-				DCC31571076253A4008F7A48 /* init_file.hh */,
-				DCC31572076253A4008F7A48 /* int_sum.cc */,
-				DCC31573076253A4008F7A48 /* int_sum.hh */,
-				DCC31574076253A4008F7A48 /* integrated_schedule.cc */,
-				DCC31575076253A4008F7A48 /* integrated_schedule.hh */,
-				DCC31576076253A4008F7A48 /* integrated_schedule_node.cc */,
-				DCC31577076253A4008F7A48 /* integrated_schedule_node.hh */,
-				DCC31579076253A4008F7A48 /* merit.cc */,
-				DCC3157A076253A4008F7A48 /* merit.hh */,
-				DCC3157B076253A4008F7A48 /* message_class.hh */,
-				DCC3157C076253A4008F7A48 /* message_closure.hh */,
-				DCC3157D076253A4008F7A48 /* message_display.cc */,
-				DCC3157E076253A4008F7A48 /* message_display.hh */,
-				DCC3157F076253A4008F7A48 /* message_display_hdrs.hh */,
-				DCC31580076253A4008F7A48 /* message_type.hh */,
-				DCC31581076253A4008F7A48 /* prob_schedule.cc */,
-				DCC31582076253A4008F7A48 /* prob_schedule.hh */,
-				DCC31583076253A4008F7A48 /* random.cc */,
-				DCC31584076253A4008F7A48 /* random.hh */,
 				DCC31585076253A4008F7A48 /* recursive_tests_decl_hdrs.hh */,
 				DCC31586076253A4008F7A48 /* recursive_tests_defn_hdrs.hh */,
 				DCC31587076253A4008F7A48 /* recursive_tests_macros.hh */,
-				DCC31588076253A4008F7A48 /* ref_block.cc */,
-				DCC31589076253A4008F7A48 /* ref_block.hh */,
-				DCC3158A076253A4008F7A48 /* running_average.cc */,
-				DCC3158B076253A4008F7A48 /* running_average.hh */,
-				DCC3158C076253A4008F7A48 /* scaled_block.cc */,
-				DCC3158D076253A4008F7A48 /* scaled_block.hh */,
-				DCC3158E076253A4008F7A48 /* schedule.cc */,
-				DCC3158F076253A4008F7A48 /* schedule.hh */,
-				DCC31590076253A4008F7A48 /* string.cc */,
-				DCC31591076253A4008F7A48 /* string.hh */,
-				DCC31592076253A4008F7A48 /* string_iterator.cc */,
-				DCC31593076253A4008F7A48 /* string_iterator.hh */,
-				DCC31594076253A4008F7A48 /* string_list.cc */,
-				DCC31595076253A4008F7A48 /* string_list.hh */,
-				DCC31596076253A4008F7A48 /* string_util.cc */,
-				DCC31597076253A4008F7A48 /* string_util.hh */,
 				DCC31598076253A4008F7A48 /* tArgDataEntry.hh */,
 				DCC31599076253A4008F7A48 /* tArray.hh */,
 				DCC3159A076253A4008F7A48 /* tBuffer.hh */,
@@ -3028,27 +3020,6 @@
 				700E2AF8085DE50C00CF158A /* avida.cc in Sources */,
 				700E2B43085DE50C00CF158A /* weighted_index.cc in Sources */,
 				700E2B44085DE50C00CF158A /* tools.cc in Sources */,
-				700E2B52085DE50C00CF158A /* help_alias.cc in Sources */,
-				700E2B53085DE50C00CF158A /* help_manager.cc in Sources */,
-				700E2B54085DE50C00CF158A /* help_type.cc in Sources */,
-				700E2B55085DE50C00CF158A /* histogram.cc in Sources */,
-				700E2B56085DE50C00CF158A /* indexed_block_struct.cc in Sources */,
-				700E2B57085DE50C00CF158A /* init_file.cc in Sources */,
-				700E2B58085DE50C00CF158A /* int_sum.cc in Sources */,
-				700E2B59085DE50C00CF158A /* integrated_schedule.cc in Sources */,
-				700E2B5A085DE50C00CF158A /* integrated_schedule_node.cc in Sources */,
-				700E2B5B085DE50C00CF158A /* merit.cc in Sources */,
-				700E2B5C085DE50C00CF158A /* message_display.cc in Sources */,
-				700E2B5D085DE50C00CF158A /* prob_schedule.cc in Sources */,
-				700E2B5E085DE50C00CF158A /* random.cc in Sources */,
-				700E2B5F085DE50C00CF158A /* ref_block.cc in Sources */,
-				700E2B60085DE50C00CF158A /* running_average.cc in Sources */,
-				700E2B61085DE50C00CF158A /* scaled_block.cc in Sources */,
-				700E2B62085DE50C00CF158A /* schedule.cc in Sources */,
-				700E2B63085DE50C00CF158A /* string.cc in Sources */,
-				700E2B64085DE50C00CF158A /* string_iterator.cc in Sources */,
-				700E2B65085DE50C00CF158A /* string_list.cc in Sources */,
-				700E2B66085DE50C00CF158A /* string_util.cc in Sources */,
 				70658C35085DE5D800486BED /* ansi.cc in Sources */,
 				70658C36085DE5D900486BED /* bar_screen.cc in Sources */,
 				70658C38085DE5DC00486BED /* environment_screen.cc in Sources */,
@@ -3153,6 +3124,23 @@
 				70B0885F08F5FE5800FC65FE /* cDoubleSum.cc in Sources */,
 				70B0888708F603D400FC65FE /* cFile.cc in Sources */,
 				70B0888808F603D400FC65FE /* cGenesis.cc in Sources */,
+				70B0893808F7630100FC65FE /* cHelpAlias.cc in Sources */,
+				70B0893908F7630100FC65FE /* cHelpManager.cc in Sources */,
+				70B0893A08F7630100FC65FE /* cHelpType.cc in Sources */,
+				70B0893B08F7630100FC65FE /* cHistogram.cc in Sources */,
+				70B0893C08F7630100FC65FE /* cInitFile.cc in Sources */,
+				70B0893D08F7630100FC65FE /* cIntegratedSchedule.cc in Sources */,
+				70B0893E08F7630100FC65FE /* cIntegratedScheduleNode.cc in Sources */,
+				70B0893F08F7630100FC65FE /* cIntSum.cc in Sources */,
+				70B0894008F7630100FC65FE /* cMerit.cc in Sources */,
+				70B0894108F7630100FC65FE /* cProbSchedule.cc in Sources */,
+				70B0894208F7630100FC65FE /* cRandom.cc in Sources */,
+				70B0894308F7630100FC65FE /* cRunningAverage.cc in Sources */,
+				70B0894408F7630100FC65FE /* cSchedule.cc in Sources */,
+				70B0894508F7630100FC65FE /* cString.cc in Sources */,
+				70B0894608F7630100FC65FE /* cStringIterator.cc in Sources */,
+				70B0894708F7630100FC65FE /* cStringList.cc in Sources */,
+				70B0894808F7630100FC65FE /* cStringUtil.cc in Sources */,
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 		};
@@ -3163,27 +3151,6 @@
 				DCC3166107628531008F7A48 /* avida.cc in Sources */,
 				DCC316B807628742008F7A48 /* weighted_index.cc in Sources */,
 				DCC316B907628744008F7A48 /* tools.cc in Sources */,
-				DCC316C707628757008F7A48 /* help_alias.cc in Sources */,
-				DCC316C807628758008F7A48 /* help_manager.cc in Sources */,
-				DCC316C90762875A008F7A48 /* help_type.cc in Sources */,
-				DCC316CA0762875B008F7A48 /* histogram.cc in Sources */,
-				DCC316CB0762875C008F7A48 /* indexed_block_struct.cc in Sources */,
-				DCC316CC0762875D008F7A48 /* init_file.cc in Sources */,
-				DCC316CD0762875D008F7A48 /* int_sum.cc in Sources */,
-				DCC316CE0762875E008F7A48 /* integrated_schedule.cc in Sources */,
-				DCC316CF0762875F008F7A48 /* integrated_schedule_node.cc in Sources */,
-				DCC316D007628761008F7A48 /* merit.cc in Sources */,
-				DCC316D107628763008F7A48 /* message_display.cc in Sources */,
-				DCC316D207628764008F7A48 /* prob_schedule.cc in Sources */,
-				DCC316D307628765008F7A48 /* random.cc in Sources */,
-				DCC316D407628766008F7A48 /* ref_block.cc in Sources */,
-				DCC316D507628767008F7A48 /* running_average.cc in Sources */,
-				DCC316D607628769008F7A48 /* scaled_block.cc in Sources */,
-				DCC316D70762876A008F7A48 /* schedule.cc in Sources */,
-				DCC316D80762876B008F7A48 /* string.cc in Sources */,
-				DCC316D90762876C008F7A48 /* string_iterator.cc in Sources */,
-				DCC316DA0762876E008F7A48 /* string_list.cc in Sources */,
-				DCC316DB0762876F008F7A48 /* string_util.cc in Sources */,
 				70658C44085DE5FF00486BED /* primitive.cc in Sources */,
 				70D46934085F61DA004C8409 /* trio.c in Sources */,
 				70D46935085F61DD004C8409 /* trionan.c in Sources */,
@@ -3278,6 +3245,23 @@
 				70B0885908F5FE5800FC65FE /* cDoubleSum.cc in Sources */,
 				70B0888508F603D400FC65FE /* cFile.cc in Sources */,
 				70B0888608F603D400FC65FE /* cGenesis.cc in Sources */,
+				70B0892708F7630100FC65FE /* cHelpAlias.cc in Sources */,
+				70B0892808F7630100FC65FE /* cHelpManager.cc in Sources */,
+				70B0892908F7630100FC65FE /* cHelpType.cc in Sources */,
+				70B0892A08F7630100FC65FE /* cHistogram.cc in Sources */,
+				70B0892B08F7630100FC65FE /* cInitFile.cc in Sources */,
+				70B0892C08F7630100FC65FE /* cIntegratedSchedule.cc in Sources */,
+				70B0892D08F7630100FC65FE /* cIntegratedScheduleNode.cc in Sources */,
+				70B0892E08F7630100FC65FE /* cIntSum.cc in Sources */,
+				70B0892F08F7630100FC65FE /* cMerit.cc in Sources */,
+				70B0893008F7630100FC65FE /* cProbSchedule.cc in Sources */,
+				70B0893108F7630100FC65FE /* cRandom.cc in Sources */,
+				70B0893208F7630100FC65FE /* cRunningAverage.cc in Sources */,
+				70B0893308F7630100FC65FE /* cSchedule.cc in Sources */,
+				70B0893408F7630100FC65FE /* cString.cc in Sources */,
+				70B0893508F7630100FC65FE /* cStringIterator.cc in Sources */,
+				70B0893608F7630100FC65FE /* cStringList.cc in Sources */,
+				70B0893708F7630100FC65FE /* cStringUtil.cc in Sources */,
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 		};

Modified: trunk/source/bindings/Boost.Python/avida_driver_analyze.pyste
===================================================================
--- trunk/source/bindings/Boost.Python/avida_driver_analyze.pyste	2005-10-07 01:02:35 UTC (rev 337)
+++ trunk/source/bindings/Boost.Python/avida_driver_analyze.pyste	2005-10-08 02:02:38 UTC (rev 338)
@@ -1,7 +1,7 @@
 Import("avida_driver_base.pyste")
 
 Include("cEnvironment.h")
-Include("string.hh")
+Include("cString.h")
 
 cAvidaDriver_Analyze = Class("cAvidaDriver_Analyze", "cAvidaDriver_Analyze.h")
 

Modified: trunk/source/bindings/Boost.Python/avida_driver_base.pyste
===================================================================
--- trunk/source/bindings/Boost.Python/avida_driver_base.pyste	2005-10-07 01:02:35 UTC (rev 337)
+++ trunk/source/bindings/Boost.Python/avida_driver_base.pyste	2005-10-08 02:02:38 UTC (rev 338)
@@ -1,6 +1,6 @@
 declaration_code("""
 #ifndef STRING_HH
-#include "string.hh"
+#include "cString.h"
 #endif
 """)
 

Modified: trunk/source/bindings/Boost.Python/const_schedule.pyste
===================================================================
--- trunk/source/bindings/Boost.Python/const_schedule.pyste	2005-10-07 01:02:35 UTC (rev 337)
+++ trunk/source/bindings/Boost.Python/const_schedule.pyste	2005-10-08 02:02:38 UTC (rev 338)
@@ -1,7 +1,7 @@
 
 Import("schedule.pyste")
 
-Include("merit.hh")
+Include("cMerit.h")
 
 cConstSchedule = Class("cConstSchedule", "cConstSchedule.h")
 

Modified: trunk/source/bindings/Boost.Python/data_file_manager.pyste
===================================================================
--- trunk/source/bindings/Boost.Python/data_file_manager.pyste	2005-10-07 01:02:35 UTC (rev 337)
+++ trunk/source/bindings/Boost.Python/data_file_manager.pyste	2005-10-08 02:02:38 UTC (rev 338)
@@ -1,6 +1,6 @@
 
 Include("cDataFile.h")
-Include("string.hh")
+Include("cString.h")
 
 cDataFileManager = Class("cDataFileManager", "cDataFileManager.h")
 exclude(cDataFileManager.GetOFStream)

Modified: trunk/source/bindings/Boost.Python/file-fixups.hh
===================================================================
--- trunk/source/bindings/Boost.Python/file-fixups.hh	2005-10-07 01:02:35 UTC (rev 337)
+++ trunk/source/bindings/Boost.Python/file-fixups.hh	2005-10-08 02:02:38 UTC (rev 338)
@@ -5,7 +5,7 @@
 #include "cFile.h"
 #endif
 #ifndef STRING_HH
-#include "string.hh"
+#include "cString.h"
 #endif
 
 int cFileOpenWrapper(cFile &file, cString _filename);

Modified: trunk/source/bindings/Boost.Python/genesis-fixups.hh
===================================================================
--- trunk/source/bindings/Boost.Python/genesis-fixups.hh	2005-10-07 01:02:35 UTC (rev 337)
+++ trunk/source/bindings/Boost.Python/genesis-fixups.hh	2005-10-08 02:02:38 UTC (rev 338)
@@ -5,7 +5,7 @@
 #include "cGenesis.h"
 #endif
 #ifndef STRING_HH
-#include "string.hh"
+#include "cString.h"
 #endif
 
 int cGenesisOpenWrapper(cGenesis &file, cString _filename);

Modified: trunk/source/bindings/Boost.Python/genotype.pyste
===================================================================
--- trunk/source/bindings/Boost.Python/genotype.pyste	2005-10-07 01:02:35 UTC (rev 337)
+++ trunk/source/bindings/Boost.Python/genotype.pyste	2005-10-08 02:02:38 UTC (rev 338)
@@ -1,5 +1,5 @@
 
-Include("merit.hh")
+Include("cMerit.h")
 Include("cSpecies.h")
 Include("cGenebank.h")
 

Modified: trunk/source/bindings/Boost.Python/hardware_tracer_test_cpu.pyste
===================================================================
--- trunk/source/bindings/Boost.Python/hardware_tracer_test_cpu.pyste	2005-10-07 01:02:35 UTC (rev 337)
+++ trunk/source/bindings/Boost.Python/hardware_tracer_test_cpu.pyste	2005-10-08 02:02:38 UTC (rev 338)
@@ -1,5 +1,5 @@
 
-Include("string.hh")
+Include("cString.h")
 
 cHardwareTracer_TestCPU = Class("cHardwareTracer_TestCPU", "cHardwareTracer_TestCPU.h")
 

Modified: trunk/source/bindings/Boost.Python/help_alias.pyste
===================================================================
--- trunk/source/bindings/Boost.Python/help_alias.pyste	2005-10-07 01:02:35 UTC (rev 337)
+++ trunk/source/bindings/Boost.Python/help_alias.pyste	2005-10-08 02:02:38 UTC (rev 338)
@@ -1,10 +1,10 @@
 
 Import("help_entry.pyste")
 
-Include("help_type.hh")
-Include("help_full_entry.hh")
+Include("cHelpType.h")
+Include("cHelpFullEntry.h")
 
-cHelpAlias = Class("cHelpAlias", "help_alias.hh")
+cHelpAlias = Class("cHelpAlias", "cHelpAlias.h")
 set_policy(cHelpAlias.GetType, return_internal_reference())
 
 # vim: set ft=python:

Modified: trunk/source/bindings/Boost.Python/help_entry.pyste
===================================================================
--- trunk/source/bindings/Boost.Python/help_entry.pyste	2005-10-07 01:02:35 UTC (rev 337)
+++ trunk/source/bindings/Boost.Python/help_entry.pyste	2005-10-08 02:02:38 UTC (rev 338)
@@ -1,7 +1,7 @@
 
-Include("help_type.hh")
+Include("cHelpType.h")
 
-cHelpEntry = Class("cHelpEntry", "help_entry.hh")
+cHelpEntry = Class("cHelpEntry", "cHelpEntry.h")
 set_policy(cHelpEntry.GetType, return_internal_reference())
 
 # vim: set ft=python:

Modified: trunk/source/bindings/Boost.Python/help_full_entry.pyste
===================================================================
--- trunk/source/bindings/Boost.Python/help_full_entry.pyste	2005-10-07 01:02:35 UTC (rev 337)
+++ trunk/source/bindings/Boost.Python/help_full_entry.pyste	2005-10-08 02:02:38 UTC (rev 338)
@@ -1,9 +1,9 @@
 
 Import("help_entry.pyste")
 
-Include("help_type.hh")
+Include("cHelpType.h")
 
-cHelpFullEntry = Class("cHelpFullEntry", "help_full_entry.hh")
+cHelpFullEntry = Class("cHelpFullEntry", "cHelpFullEntry.h")
 set_policy(cHelpFullEntry.GetType, return_internal_reference())
 
 # vim: set ft=python:

Modified: trunk/source/bindings/Boost.Python/help_manager.pyste
===================================================================
--- trunk/source/bindings/Boost.Python/help_manager.pyste	2005-10-07 01:02:35 UTC (rev 337)
+++ trunk/source/bindings/Boost.Python/help_manager.pyste	2005-10-08 02:02:38 UTC (rev 338)
@@ -1,7 +1,7 @@
 
-Include("help_entry.hh")
+Include("cHelpEntry.h")
 
-cHelpManager = Class("cHelpManager", "help_manager.hh")
+cHelpManager = Class("cHelpManager", "cHelpManager.h")
 set_policy(cHelpManager.FindEntry, return_internal_reference())
 
 # vim: set ft=python:

Modified: trunk/source/bindings/Boost.Python/help_type.pyste
===================================================================
--- trunk/source/bindings/Boost.Python/help_type.pyste	2005-10-07 01:02:35 UTC (rev 337)
+++ trunk/source/bindings/Boost.Python/help_type.pyste	2005-10-08 02:02:38 UTC (rev 338)
@@ -1,10 +1,10 @@
 
-Include("help_manager.hh")
-Include("help_full_entry.hh")
-Include("help_entry.hh")
-Include("help_alias.hh")
+Include("cHelpManager.h")
+Include("cHelpFullEntry.h")
+Include("cHelpEntry.h")
+Include("cHelpAlias.h")
 
-cHelpType = Class("cHelpType", "help_type.hh")
+cHelpType = Class("cHelpType", "cHelpType.h")
 set_policy(cHelpType.AddEntry, return_internal_reference())
 set_policy(cHelpType.AddAlias, return_internal_reference())
 set_policy(cHelpType.FindEntry, return_internal_reference())

Modified: trunk/source/bindings/Boost.Python/histogram.pyste
===================================================================
--- trunk/source/bindings/Boost.Python/histogram.pyste	2005-10-07 01:02:35 UTC (rev 337)
+++ trunk/source/bindings/Boost.Python/histogram.pyste	2005-10-08 02:02:38 UTC (rev 338)
@@ -1,4 +1,4 @@
 
-cHistogram = Class("cHistogram", "histogram.hh")
+cHistogram = Class("cHistogram", "cHistogram.h")
 
 # vim: set ft=python:

Modified: trunk/source/bindings/Boost.Python/indexed_block_struct.pyste
===================================================================
--- trunk/source/bindings/Boost.Python/indexed_block_struct.pyste	2005-10-07 01:02:35 UTC (rev 337)
+++ trunk/source/bindings/Boost.Python/indexed_block_struct.pyste	2005-10-08 02:02:38 UTC (rev 338)
@@ -1,4 +1,4 @@
 
-cIndexedBlockStruct = Class("cIndexedBlockStruct", "indexed_block_struct.hh")
+cIndexedBlockStruct = Class("cIndexedBlockStruct", "cIndexedBlockStruct.h")
 
 # vim: set ft=python:

Modified: trunk/source/bindings/Boost.Python/init_file.pyste
===================================================================
--- trunk/source/bindings/Boost.Python/init_file.pyste	2005-10-07 01:02:35 UTC (rev 337)
+++ trunk/source/bindings/Boost.Python/init_file.pyste	2005-10-08 02:02:38 UTC (rev 338)
@@ -1,7 +1,7 @@
 
 Import("file.pyste")
 
-cInitFile = Class("cInitFile", "init_file.hh")
+cInitFile = Class("cInitFile", "cInitFile.h")
 set_policy(cInitFile.GetFormat, return_internal_reference())
 
 # vim: set ft=python:

Modified: trunk/source/bindings/Boost.Python/inst_lib_base.pyste
===================================================================
--- trunk/source/bindings/Boost.Python/inst_lib_base.pyste	2005-10-07 01:02:35 UTC (rev 337)
+++ trunk/source/bindings/Boost.Python/inst_lib_base.pyste	2005-10-08 02:02:38 UTC (rev 338)
@@ -1,5 +1,5 @@
 
-Include("string.hh")
+Include("cString.h")
 
 cInstLibBase = Class("cInstLibBase", "cInstLibBase.h")
 set_policy(cInstLibBase.GetName, return_value_policy(reference_existing_object))

Modified: trunk/source/bindings/Boost.Python/inst_lib_cpu.pyste
===================================================================
--- trunk/source/bindings/Boost.Python/inst_lib_cpu.pyste	2005-10-07 01:02:35 UTC (rev 337)
+++ trunk/source/bindings/Boost.Python/inst_lib_cpu.pyste	2005-10-08 02:02:38 UTC (rev 338)
@@ -1,5 +1,5 @@
 
-Include("string.hh")
+Include("cString.h")
 
 Import("inst_lib_base.pyste")
 

Modified: trunk/source/bindings/Boost.Python/int_sum.pyste
===================================================================
--- trunk/source/bindings/Boost.Python/int_sum.pyste	2005-10-07 01:02:35 UTC (rev 337)
+++ trunk/source/bindings/Boost.Python/int_sum.pyste	2005-10-08 02:02:38 UTC (rev 338)
@@ -1,4 +1,4 @@
 
-cIntSum = Class("cIntSum", "int_sum.hh")
+cIntSum = Class("cIntSum", "cIntSum.h")
 
 # vim: set ft=python:

Modified: trunk/source/bindings/Boost.Python/integrated_schedule.pyste
===================================================================
--- trunk/source/bindings/Boost.Python/integrated_schedule.pyste	2005-10-07 01:02:35 UTC (rev 337)
+++ trunk/source/bindings/Boost.Python/integrated_schedule.pyste	2005-10-08 02:02:38 UTC (rev 338)
@@ -1,8 +1,8 @@
 
 Import("schedule.pyste")
 
-Include("merit.hh")
+Include("cMerit.h")
 
-cIntegratedSchedule = Class("cIntegratedSchedule", "integrated_schedule.hh")
+cIntegratedSchedule = Class("cIntegratedSchedule", "cIntegratedSchedule.h")
 
 # vim: set ft=python:

Modified: trunk/source/bindings/Boost.Python/integrated_schedule_node.pyste
===================================================================
--- trunk/source/bindings/Boost.Python/integrated_schedule_node.pyste	2005-10-07 01:02:35 UTC (rev 337)
+++ trunk/source/bindings/Boost.Python/integrated_schedule_node.pyste	2005-10-08 02:02:38 UTC (rev 338)
@@ -1,5 +1,5 @@
 
-cIntegratedScheduleNode = Class("cIntegratedScheduleNode", "integrated_schedule_node.hh")
+cIntegratedScheduleNode = Class("cIntegratedScheduleNode", "cIntegratedScheduleNode.h")
 set_policy(cIntegratedScheduleNode.GetNext, return_internal_reference())
 set_policy(cIntegratedScheduleNode.GetPrev, return_internal_reference())
 

Modified: trunk/source/bindings/Boost.Python/lineage_control.pyste
===================================================================
--- trunk/source/bindings/Boost.Python/lineage_control.pyste	2005-10-07 01:02:35 UTC (rev 337)
+++ trunk/source/bindings/Boost.Python/lineage_control.pyste	2005-10-08 02:02:38 UTC (rev 338)
@@ -1,7 +1,7 @@
 
 Include("cGenebank.h")
 Include("cStats.h")
-Include("string.hh")
+Include("cString.h")
 Include("cGenotype.h")
 Include("cLineage.h")
 Include("cOrganism.h")

Modified: trunk/source/bindings/Boost.Python/merit.pyste
===================================================================
--- trunk/source/bindings/Boost.Python/merit.pyste	2005-10-07 01:02:35 UTC (rev 337)
+++ trunk/source/bindings/Boost.Python/merit.pyste	2005-10-08 02:02:38 UTC (rev 338)
@@ -1,5 +1,5 @@
 
-cMerit = Class("cMerit", "merit.hh")
+cMerit = Class("cMerit", "cMerit.h")
 # BinaryPrint is meant for use with ostreams; ditch it.
 exclude(cMerit.BinaryPrint)
 # operator is for ostreams; ditch it.

Modified: trunk/source/bindings/Boost.Python/mutation_lib.pyste
===================================================================
--- trunk/source/bindings/Boost.Python/mutation_lib.pyste	2005-10-07 01:02:35 UTC (rev 337)
+++ trunk/source/bindings/Boost.Python/mutation_lib.pyste	2005-10-08 02:02:38 UTC (rev 338)
@@ -1,5 +1,5 @@
 
-Include("string.hh")
+Include("cString.h")
 Include("cMutation.h")
 
 cMutationLib = Class("cMutationLib", "cMutationLib.h")

Modified: trunk/source/bindings/Boost.Python/population_event_factory.pyste
===================================================================
--- trunk/source/bindings/Boost.Python/population_event_factory.pyste	2005-10-07 01:02:35 UTC (rev 337)
+++ trunk/source/bindings/Boost.Python/population_event_factory.pyste	2005-10-08 02:02:38 UTC (rev 338)
@@ -2,7 +2,7 @@
 Import("event_factory.pyste")
 
 Include("cEvent.h")
-Include("string.hh")
+Include("cString.h")
 Include("cPopulation.h")
 
 cPopulationEventFactory = Class("cPopulationEventFactory", "cPopulationEventFactory.h")

Modified: trunk/source/bindings/Boost.Python/prob_schedule.pyste
===================================================================
--- trunk/source/bindings/Boost.Python/prob_schedule.pyste	2005-10-07 01:02:35 UTC (rev 337)
+++ trunk/source/bindings/Boost.Python/prob_schedule.pyste	2005-10-08 02:02:38 UTC (rev 338)
@@ -1,8 +1,8 @@
 
 Import("schedule.pyste")
 
-Include("merit.hh")
+Include("cMerit.h")
 
-cProbSchedule = Class("cProbSchedule", "prob_schedule.hh")
+cProbSchedule = Class("cProbSchedule", "cProbSchedule.h")
 
 # vim: set ft=python:

Modified: trunk/source/bindings/Boost.Python/py_avida_driver-fixups.cc
===================================================================
--- trunk/source/bindings/Boost.Python/py_avida_driver-fixups.cc	2005-10-07 01:02:35 UTC (rev 337)
+++ trunk/source/bindings/Boost.Python/py_avida_driver-fixups.cc	2005-10-08 02:02:38 UTC (rev 338)
@@ -10,7 +10,7 @@
 #include "main/cPopulation.h"
 #include "main/cPopulationCell.h"
 #include "tools/cChangeList.h"
-#include "tools/string.hh"
+#include "tools/cString.h"
 
 
 #include <iostream>

Modified: trunk/source/bindings/Boost.Python/py_hardware_tracer.pyste
===================================================================
--- trunk/source/bindings/Boost.Python/py_hardware_tracer.pyste	2005-10-07 01:02:35 UTC (rev 337)
+++ trunk/source/bindings/Boost.Python/py_hardware_tracer.pyste	2005-10-08 02:02:38 UTC (rev 338)
@@ -1,7 +1,7 @@
 
 Include("cHardware4Stack.h")
 Include("cHardwareCPU.h")
-Include("string.hh")
+Include("cString.h")
 
 Import("hardware_tracer.pyste")
 Import("hardware_tracer_4stack.pyste")

Modified: trunk/source/bindings/Boost.Python/random.pyste
===================================================================
--- trunk/source/bindings/Boost.Python/random.pyste	2005-10-07 01:02:35 UTC (rev 337)
+++ trunk/source/bindings/Boost.Python/random.pyste	2005-10-08 02:02:38 UTC (rev 338)
@@ -1,6 +1,6 @@
 
 Include("tList.hh")
 
-cRandom = Class("cRandom", "random.hh")
+cRandom = Class("cRandom", "cRandom.h")
 
 # vim: set ft=python:

Modified: trunk/source/bindings/Boost.Python/reaction_lib.pyste
===================================================================
--- trunk/source/bindings/Boost.Python/reaction_lib.pyste	2005-10-07 01:02:35 UTC (rev 337)
+++ trunk/source/bindings/Boost.Python/reaction_lib.pyste	2005-10-08 02:02:38 UTC (rev 338)
@@ -1,5 +1,5 @@
 
-Include("string.hh")
+Include("cString.h")
 Include("cReaction.h")
 
 cReactionLib = Class("cReactionLib", "cReactionLib.h")

Modified: trunk/source/bindings/Boost.Python/ref_block.pyste
===================================================================
--- trunk/source/bindings/Boost.Python/ref_block.pyste	2005-10-07 01:02:35 UTC (rev 337)
+++ trunk/source/bindings/Boost.Python/ref_block.pyste	2005-10-08 02:02:38 UTC (rev 338)
@@ -1,4 +1,4 @@
 
-cRefBlock = Class("cRefBlock", "ref_block.hh")
+cRefBlock = Class("cRefBlock", "cRefBlock.h")
 
 # vim: set ft=python:

Modified: trunk/source/bindings/Boost.Python/resource_lib.pyste
===================================================================
--- trunk/source/bindings/Boost.Python/resource_lib.pyste	2005-10-07 01:02:35 UTC (rev 337)
+++ trunk/source/bindings/Boost.Python/resource_lib.pyste	2005-10-08 02:02:38 UTC (rev 338)
@@ -1,5 +1,5 @@
 
-Include("string.hh")
+Include("cString.h")
 Include("cResource.h")
 
 cResourceLib = Class("cResourceLib", "cResourceLib.h")

Modified: trunk/source/bindings/Boost.Python/running_average.pyste
===================================================================
--- trunk/source/bindings/Boost.Python/running_average.pyste	2005-10-07 01:02:35 UTC (rev 337)
+++ trunk/source/bindings/Boost.Python/running_average.pyste	2005-10-08 02:02:38 UTC (rev 338)
@@ -1,4 +1,4 @@
 
-cRunningAverage = Class("cRunningAverage", "running_average.hh")
+cRunningAverage = Class("cRunningAverage", "cRunningAverage.h")
 
 # vim: set ft=python:

Modified: trunk/source/bindings/Boost.Python/scaled_block.pyste
===================================================================
--- trunk/source/bindings/Boost.Python/scaled_block.pyste	2005-10-07 01:02:35 UTC (rev 337)
+++ trunk/source/bindings/Boost.Python/scaled_block.pyste	2005-10-08 02:02:38 UTC (rev 338)
@@ -1,5 +1,5 @@
 
-cScaledBlock = Class("cScaledBlock", "scaled_block.hh")
+cScaledBlock = Class("cScaledBlock", "cScaledBlock.h")
 set_policy(cScaledBlock.GetData, return_internal_reference())
 
 # vim: set ft=python:

Modified: trunk/source/bindings/Boost.Python/schedule.pyste
===================================================================
--- trunk/source/bindings/Boost.Python/schedule.pyste	2005-10-07 01:02:35 UTC (rev 337)
+++ trunk/source/bindings/Boost.Python/schedule.pyste	2005-10-08 02:02:38 UTC (rev 338)
@@ -1,8 +1,8 @@
 
 Include("cChangeList.h")
-Include("merit.hh")
+Include("cMerit.h")
 
-cSchedule = Class("cSchedule", "schedule.hh")
+cSchedule = Class("cSchedule", "cSchedule.h")
 
 exclude(cSchedule.GetChangeList)
 

Modified: trunk/source/bindings/Boost.Python/string.pyste
===================================================================
--- trunk/source/bindings/Boost.Python/string.pyste	2005-10-07 01:02:35 UTC (rev 337)
+++ trunk/source/bindings/Boost.Python/string.pyste	2005-10-08 02:02:38 UTC (rev 338)
@@ -1,5 +1,5 @@
 
-cString = Class("cString", "string.hh")
+cString = Class("cString", "cString.h")
 # Set(...) doesn't work with Pyste because Pyste doesn't grok varargs.
 exclude(cString.Set)
 # Pyste doesn't grok cpp strings.

Modified: trunk/source/bindings/Boost.Python/string_iterator.pyste
===================================================================
--- trunk/source/bindings/Boost.Python/string_iterator.pyste	2005-10-07 01:02:35 UTC (rev 337)
+++ trunk/source/bindings/Boost.Python/string_iterator.pyste	2005-10-08 02:02:38 UTC (rev 338)
@@ -1,6 +1,6 @@
 
-Include("string_list.hh")
+Include("cStringList.h")
 
-cStringIterator = Class("cStringIterator", "string_iterator.hh")
+cStringIterator = Class("cStringIterator", "cStringIterator.h")
 
 # vim: set ft=python:

Modified: trunk/source/bindings/Boost.Python/string_list.pyste
===================================================================
--- trunk/source/bindings/Boost.Python/string_list.pyste	2005-10-07 01:02:35 UTC (rev 337)
+++ trunk/source/bindings/Boost.Python/string_list.pyste	2005-10-08 02:02:38 UTC (rev 338)
@@ -1,5 +1,5 @@
 
-cStringList = Class("cStringList", "string_list.hh")
+cStringList = Class("cStringList", "cStringList.h")
 # disabled because it returns a tList, and I'm not wrapping tList yet
 # (it introduces memory management problems that I have't yet
 # approached).

Modified: trunk/source/bindings/Boost.Python/string_util.pyste
===================================================================
--- trunk/source/bindings/Boost.Python/string_util.pyste	2005-10-07 01:02:35 UTC (rev 337)
+++ trunk/source/bindings/Boost.Python/string_util.pyste	2005-10-08 02:02:38 UTC (rev 338)
@@ -1,4 +1,4 @@
 
-cStringUtil = Class("cStringUtil", "string_util.hh")
+cStringUtil = Class("cStringUtil", "cStringUtil.h")
 
 # vim: set ft=python:

Modified: trunk/source/bindings/Boost.Python/tArray_instantiations.hh
===================================================================
--- trunk/source/bindings/Boost.Python/tArray_instantiations.hh	2005-10-07 01:02:35 UTC (rev 337)
+++ trunk/source/bindings/Boost.Python/tArray_instantiations.hh	2005-10-08 02:02:38 UTC (rev 338)
@@ -1,7 +1,7 @@
 #include "cOrganism.h"
-#include "merit.hh"
+#include "cMerit.h"
 #include "cMutation.h"
-#include "int_sum.hh"
+#include "cIntSum.h"
 
 #include "tArray.hh"
 

Modified: trunk/source/bindings/Boost.Python/tList_instantiations.hh
===================================================================
--- trunk/source/bindings/Boost.Python/tList_instantiations.hh	2005-10-07 01:02:35 UTC (rev 337)
+++ trunk/source/bindings/Boost.Python/tList_instantiations.hh	2005-10-08 02:02:38 UTC (rev 338)
@@ -5,6 +5,6 @@
 #include "cReactionProcess.h"
 #include "cReactionRequisite.h"
 #include "cReaction.h"
-#include "string.hh"
+#include "cString.h"
 
 #include "tList.hh"

Modified: trunk/source/bindings/Boost.Python/tools.pyste
===================================================================
--- trunk/source/bindings/Boost.Python/tools.pyste	2005-10-07 01:02:35 UTC (rev 337)
+++ trunk/source/bindings/Boost.Python/tools.pyste	2005-10-08 02:02:38 UTC (rev 338)
@@ -1,5 +1,5 @@
 
-Include("string.hh")
+Include("cString.h")
 
 cTools = Class("cTools", "tools.hh")
 

Modified: trunk/source/cpu/cCPUStack.cc
===================================================================
--- trunk/source/cpu/cCPUStack.cc	2005-10-07 01:02:35 UTC (rev 337)
+++ trunk/source/cpu/cCPUStack.cc	2005-10-08 02:02:38 UTC (rev 338)
@@ -8,7 +8,7 @@
 #include "cCPUStack.h"
 
 #include <assert.h>
-#include "string.hh"
+#include "cString.h"
 
 using namespace std;
 

Modified: trunk/source/cpu/cCPUTestInfo.h
===================================================================
--- trunk/source/cpu/cCPUTestInfo.h	2005-10-07 01:02:35 UTC (rev 337)
+++ trunk/source/cpu/cCPUTestInfo.h	2005-10-08 02:02:38 UTC (rev 338)
@@ -12,7 +12,7 @@
 #include "nHardware.h"
 #endif
 #ifndef STRING_HH
-#include "string.hh"
+#include "cString.h"
 #endif
 #ifndef TARRAY_HH
 #include "tArray.hh"

Modified: trunk/source/cpu/cCodeLabel.h
===================================================================
--- trunk/source/cpu/cCodeLabel.h	2005-10-07 01:02:35 UTC (rev 337)
+++ trunk/source/cpu/cCodeLabel.h	2005-10-08 02:02:38 UTC (rev 338)
@@ -15,7 +15,7 @@
 #include "defs.hh"
 #endif
 #ifndef STRING_HH
-#include "string.hh"
+#include "cString.h"
 #endif
 #ifndef TARRAY_HH
 #include "tArray.hh"

Modified: trunk/source/cpu/cHardware4Stack.cc
===================================================================
--- trunk/source/cpu/cHardware4Stack.cc	2005-10-07 01:02:35 UTC (rev 337)
+++ trunk/source/cpu/cHardware4Stack.cc	2005-10-08 02:02:38 UTC (rev 338)
@@ -22,8 +22,8 @@
 #include "nMutation.h"
 #include "cOrganism.h"
 #include "cPhenotype.h"
-#include "random.hh"
-#include "string_util.hh"
+#include "cRandom.h"
+#include "cStringUtil.h"
 #include "cTestCPU.h"
 
 #include <limits.h>

Modified: trunk/source/cpu/cHardware4Stack.h
===================================================================
--- trunk/source/cpu/cHardware4Stack.h	2005-10-07 01:02:35 UTC (rev 337)
+++ trunk/source/cpu/cHardware4Stack.h	2005-10-08 02:02:38 UTC (rev 338)
@@ -32,7 +32,7 @@
 #include "cHardware4Stack_Thread.h"
 #endif
 #ifndef STRING_HH
-#include "string.hh"
+#include "cString.h"
 #endif
 #ifndef TARRAY_HH
 #include "tArray.hh"

Modified: trunk/source/cpu/cHardwareCPU.cc
===================================================================
--- trunk/source/cpu/cHardwareCPU.cc	2005-10-07 01:02:35 UTC (rev 337)
+++ trunk/source/cpu/cHardwareCPU.cc	2005-10-08 02:02:38 UTC (rev 338)
@@ -21,7 +21,7 @@
 #include "nMutation.h"
 #include "cOrganism.h"
 #include "cPhenotype.h"
-#include "string_util.hh"
+#include "cStringUtil.h"
 #include "cTestCPU.h"
 
 #include <limits.h>

Modified: trunk/source/cpu/cHardwareCPU.h
===================================================================
--- trunk/source/cpu/cHardwareCPU.h	2005-10-07 01:02:35 UTC (rev 337)
+++ trunk/source/cpu/cHardwareCPU.h	2005-10-08 02:02:38 UTC (rev 338)
@@ -39,7 +39,7 @@
 #include "cHardwareCPU_Thread.h"
 #endif
 #ifndef STRING_HH
-#include "string.hh"
+#include "cString.h"
 #endif
 #ifndef TARRAY_HH
 #include "tArray.hh"

Modified: trunk/source/cpu/cHardwareSMT.cc
===================================================================
--- trunk/source/cpu/cHardwareSMT.cc	2005-10-07 01:02:35 UTC (rev 337)
+++ trunk/source/cpu/cHardwareSMT.cc	2005-10-08 02:02:38 UTC (rev 338)
@@ -22,8 +22,8 @@
 #include "nMutation.h"
 #include "cOrganism.h"
 #include "cPhenotype.h"
-#include "random.hh"
-#include "string_util.hh"
+#include "cRandom.h"
+#include "cStringUtil.h"
 #include "cTestCPU.h"
 
 #include <limits.h>

Modified: trunk/source/cpu/cHardwareSMT.h
===================================================================
--- trunk/source/cpu/cHardwareSMT.h	2005-10-07 01:02:35 UTC (rev 337)
+++ trunk/source/cpu/cHardwareSMT.h	2005-10-08 02:02:38 UTC (rev 338)
@@ -34,7 +34,7 @@
 #include "cHardwareSMT_Thread.h"
 #endif
 #ifndef STRING_HH
-#include "string.hh"
+#include "cString.h"
 #endif
 #ifndef TARRAY_HH
 #include "tArray.hh"

Modified: trunk/source/cpu/cHardwareStatusPrinter.cc
===================================================================
--- trunk/source/cpu/cHardwareStatusPrinter.cc	2005-10-07 01:02:35 UTC (rev 337)
+++ trunk/source/cpu/cHardwareStatusPrinter.cc	2005-10-08 02:02:38 UTC (rev 338)
@@ -13,8 +13,8 @@
 #include "cHardwareStatusPrinter.h"
 #include "cInstSet.h"
 #include "cOrganism.h"
-#include "string.hh"
-#include "string_util.hh"
+#include "cString.h"
+#include "cStringUtil.h"
 
 #include <fstream>
 

Modified: trunk/source/cpu/cHardwareStatusPrinter.h
===================================================================
--- trunk/source/cpu/cHardwareStatusPrinter.h	2005-10-07 01:02:35 UTC (rev 337)
+++ trunk/source/cpu/cHardwareStatusPrinter.h	2005-10-08 02:02:38 UTC (rev 338)
@@ -26,7 +26,7 @@
 #include "cHardwareTracer_TestCPU.h"
 #endif
 #ifndef STRING_HH
-#include "string.hh"
+#include "cString.h"
 #endif
 
 

Modified: trunk/source/cpu/cHardwareUtil.cc
===================================================================
--- trunk/source/cpu/cHardwareUtil.cc	2005-10-07 01:02:35 UTC (rev 337)
+++ trunk/source/cpu/cHardwareUtil.cc	2005-10-08 02:02:38 UTC (rev 338)
@@ -25,7 +25,7 @@
 #include "cHardwareSMT.h"
 #endif
 #ifndef INIT_FILE_HH
-#include "init_file.hh"
+#include "cInitFile.h"
 #endif
 #ifndef INST_LIB_CPU_HH
 #include "cInstLibCPU.h"

Modified: trunk/source/cpu/cHardwareUtil.h
===================================================================
--- trunk/source/cpu/cHardwareUtil.h	2005-10-07 01:02:35 UTC (rev 337)
+++ trunk/source/cpu/cHardwareUtil.h	2005-10-08 02:02:38 UTC (rev 338)
@@ -9,7 +9,7 @@
 #define HARDWARE_UTIL_HH
 
 #ifndef STRING_HH
-#include "string.hh"
+#include "cString.h"
 #endif
 
 class cString; // aggregate

Modified: trunk/source/cpu/cTestCPU.cc
===================================================================
--- trunk/source/cpu/cTestCPU.cc	2005-10-07 01:02:35 UTC (rev 337)
+++ trunk/source/cpu/cTestCPU.cc	2005-10-08 02:02:38 UTC (rev 338)
@@ -21,7 +21,7 @@
 #include "cResourceCount.h"
 #include "cResourceLib.h"
 #include "cResource.h"
-#include "string_util.hh"
+#include "cStringUtil.h"
 #include "tMatrix.hh"
 
 #include <iomanip>

Modified: trunk/source/cpu/cTestCPU.h
===================================================================
--- trunk/source/cpu/cTestCPU.h	2005-10-07 01:02:35 UTC (rev 337)
+++ trunk/source/cpu/cTestCPU.h	2005-10-08 02:02:38 UTC (rev 338)
@@ -14,7 +14,7 @@
 #include "tArray.hh"
 #endif
 #ifndef STRING_HH
-#include "string.hh"
+#include "cString.h"
 #endif
 
 #ifndef RESOURCE_COUNT_HH

Modified: trunk/source/cpu/cTestUtil.h
===================================================================
--- trunk/source/cpu/cTestUtil.h	2005-10-07 01:02:35 UTC (rev 337)
+++ trunk/source/cpu/cTestUtil.h	2005-10-08 02:02:38 UTC (rev 338)
@@ -9,7 +9,7 @@
 #define TEST_UTIL_HH
 
 #ifndef STRING_HH
-#include "string.hh"
+#include "cString.h"
 #endif
 
 // ------------------------------------------------------------------------

Modified: trunk/source/cpu/tInstLib.h
===================================================================
--- trunk/source/cpu/tInstLib.h	2005-10-07 01:02:35 UTC (rev 337)
+++ trunk/source/cpu/tInstLib.h	2005-10-08 02:02:38 UTC (rev 338)
@@ -11,7 +11,7 @@
 #define TINSTLIB_H
 
 #ifndef STRING_HH
-#include "string.hh"
+#include "cString.h"
 #endif
 #ifndef INST_LIB_BASE_HH
 #include "cInstLibBase.h"

Modified: trunk/source/event/cEvent.h
===================================================================
--- trunk/source/event/cEvent.h	2005-10-07 01:02:35 UTC (rev 337)
+++ trunk/source/event/cEvent.h	2005-10-08 02:02:38 UTC (rev 338)
@@ -9,7 +9,7 @@
 #define EVENT_HH
 
 #ifndef STRING_HH
-#include "string.hh"
+#include "cString.h"
 #endif
 
 /**

Modified: trunk/source/event/cEventFactoryManager.cc
===================================================================
--- trunk/source/event/cEventFactoryManager.cc	2005-10-07 01:02:35 UTC (rev 337)
+++ trunk/source/event/cEventFactoryManager.cc	2005-10-08 02:02:38 UTC (rev 338)
@@ -2,7 +2,7 @@
 #include "cEventFactoryManager.h"
 
 #ifndef STRING_HH
-#include "string.hh"
+#include "cString.h"
 #endif
 
 #ifndef EVENT_HH

Modified: trunk/source/event/cEventFactoryManager.h
===================================================================
--- trunk/source/event/cEventFactoryManager.h	2005-10-07 01:02:35 UTC (rev 337)
+++ trunk/source/event/cEventFactoryManager.h	2005-10-08 02:02:38 UTC (rev 338)
@@ -17,7 +17,7 @@
 #endif
 
 #ifndef STRING_HH
-#include "string.hh"
+#include "cString.h"
 #endif
 
 /**

Modified: trunk/source/event/cEventList.cc
===================================================================
--- trunk/source/event/cEventList.cc	2005-10-07 01:02:35 UTC (rev 337)
+++ trunk/source/event/cEventList.cc	2005-10-08 02:02:38 UTC (rev 338)
@@ -22,7 +22,7 @@
 #include "cEventTriggers.h"
 #endif
 #ifndef STRING_HH
-#include "string.hh"
+#include "cString.h"
 #endif
 
 #include <float.h>           // for DBL_MIN

Modified: trunk/source/event/cPopulationEventFactory.cc
===================================================================
--- trunk/source/event/cPopulationEventFactory.cc	2005-10-07 01:02:35 UTC (rev 337)
+++ trunk/source/event/cPopulationEventFactory.cc	2005-10-08 02:02:38 UTC (rev 338)
@@ -70,7 +70,7 @@
 #include "cStats.h"
 #endif
 #ifndef STRING_UTIL_HH
-#include "string_util.hh"
+#include "cStringUtil.h"
 #endif
 #ifndef TEST_CPU_HH
 #include "cTestCPU.h"

Modified: trunk/source/main/cAnalyze.cc
===================================================================
--- trunk/source/main/cAnalyze.cc	2005-10-07 01:02:35 UTC (rev 337)
+++ trunk/source/main/cAnalyze.cc	2005-10-08 02:02:38 UTC (rev 338)
@@ -28,8 +28,8 @@
 #include "cHardwareBase.h"
 #include "cHardwareStatusPrinter.h"
 #include "cHardwareUtil.h"
-#include "help_manager.hh"
-#include "init_file.hh"
+#include "cHelpManager.h"
+#include "cInitFile.h"
 #include "cInstSet.h"
 #include "cInstUtil.h"
 #include "cLandscape.h"

Modified: trunk/source/main/cAnalyze.h
===================================================================
--- trunk/source/main/cAnalyze.h	2005-10-07 01:02:35 UTC (rev 337)
+++ trunk/source/main/cAnalyze.h	2005-10-08 02:02:38 UTC (rev 338)
@@ -17,13 +17,13 @@
 #include "cGenotypeBatch.h"
 #endif
 #ifndef RANDOM_HH
-#include "random.hh"
+#include "cRandom.h"
 #endif
 #ifndef STRING_HH
-#include "string.hh"
+#include "cString.h"
 #endif
 #ifndef STRING_LIST_HH
-#include "string_list.hh"
+#include "cStringList.h"
 #endif
 #ifndef TLIST_HH
 #include "tList.hh"

Modified: trunk/source/main/cAnalyzeCommand.h
===================================================================
--- trunk/source/main/cAnalyzeCommand.h	2005-10-07 01:02:35 UTC (rev 337)
+++ trunk/source/main/cAnalyzeCommand.h	2005-10-08 02:02:38 UTC (rev 338)
@@ -9,7 +9,7 @@
 #define ANALYZE_COMMAND_HH
 
 #ifndef STRING_HH
-#include "string.hh"
+#include "cString.h"
 #endif
 
 // cAnalyzeCommand     : A command in a loaded program

Modified: trunk/source/main/cAnalyzeCommandDef.h
===================================================================
--- trunk/source/main/cAnalyzeCommandDef.h	2005-10-07 01:02:35 UTC (rev 337)
+++ trunk/source/main/cAnalyzeCommandDef.h	2005-10-08 02:02:38 UTC (rev 338)
@@ -12,7 +12,7 @@
 #include "cAnalyzeCommandDefBase.h"
 #endif
 #ifndef STRING_HH
-#include "string.hh"
+#include "cString.h"
 #endif
 
 class cAnalyze;

Modified: trunk/source/main/cAnalyzeCommandDefBase.h
===================================================================
--- trunk/source/main/cAnalyzeCommandDefBase.h	2005-10-07 01:02:35 UTC (rev 337)
+++ trunk/source/main/cAnalyzeCommandDefBase.h	2005-10-08 02:02:38 UTC (rev 338)
@@ -9,7 +9,7 @@
 #define ANALYZE_COMMAND_DEF_BASE_HH
 
 #ifndef STRING_HH
-#include "string.hh"
+#include "cString.h"
 #endif
 
 class cString; // aggregate

Modified: trunk/source/main/cAnalyzeFlowCommandDef.h
===================================================================
--- trunk/source/main/cAnalyzeFlowCommandDef.h	2005-10-07 01:02:35 UTC (rev 337)
+++ trunk/source/main/cAnalyzeFlowCommandDef.h	2005-10-08 02:02:38 UTC (rev 338)
@@ -15,7 +15,7 @@
 #include "cAnalyzeCommandDefBase.h"
 #endif
 #ifndef STRING_HH
-#include "string.hh"
+#include "cString.h"
 #endif
 #ifndef TLIST_HH
 #include "tList.hh"

Modified: trunk/source/main/cAnalyzeFunction.h
===================================================================
--- trunk/source/main/cAnalyzeFunction.h	2005-10-07 01:02:35 UTC (rev 337)
+++ trunk/source/main/cAnalyzeFunction.h	2005-10-08 02:02:38 UTC (rev 338)
@@ -12,7 +12,7 @@
 #include "cAnalyzeCommand.h"
 #endif
 #ifndef STRING_HH
-#include "string.hh"
+#include "cString.h"
 #endif
 #ifndef TLIST_HH
 #include "tList.hh"

Modified: trunk/source/main/cAnalyzeGenotype.h
===================================================================
--- trunk/source/main/cAnalyzeGenotype.h	2005-10-07 01:02:35 UTC (rev 337)
+++ trunk/source/main/cAnalyzeGenotype.h	2005-10-08 02:02:38 UTC (rev 338)
@@ -17,13 +17,13 @@
 #include "cGenome.h"
 #endif
 #ifndef STRING_HH
-#include "string.hh"
+#include "cString.h"
 #endif
 #ifndef STRING_LIST_HH
-#include "string_list.hh"
+#include "cStringList.h"
 #endif
 #ifndef STRING_UTIL_HH
-#include "string_util.hh"
+#include "cStringUtil.h"
 #endif
 #ifndef TARRAY_HH
 #include "tArray.hh"

Modified: trunk/source/main/cAnalyzeUtil.cc
===================================================================
--- trunk/source/main/cAnalyzeUtil.cc	2005-10-07 01:02:35 UTC (rev 337)
+++ trunk/source/main/cAnalyzeUtil.cc	2005-10-08 02:02:38 UTC (rev 338)
@@ -34,7 +34,7 @@
 #include "cHardwareBase.h"
 #endif
 #ifndef HISTOGRAM_HH
-#include "histogram.hh"
+#include "cHistogram.h"
 #endif
 #ifndef INST_SET_HH
 #include "cInstSet.h"

Modified: trunk/source/main/cAvidaDriver_Base.cc
===================================================================
--- trunk/source/main/cAvidaDriver_Base.cc	2005-10-07 01:02:35 UTC (rev 337)
+++ trunk/source/main/cAvidaDriver_Base.cc	2005-10-08 02:02:38 UTC (rev 338)
@@ -10,7 +10,7 @@
 #endif
 
 #ifndef STRING_HH
-#include "string.hh"
+#include "cString.h"
 #endif
 
 #include <iostream>

Modified: trunk/source/main/cAvidaDriver_Population.cc
===================================================================
--- trunk/source/main/cAvidaDriver_Population.cc	2005-10-07 01:02:35 UTC (rev 337)
+++ trunk/source/main/cAvidaDriver_Population.cc	2005-10-08 02:02:38 UTC (rev 338)
@@ -17,13 +17,13 @@
 #include "cGenotype.h"
 #include "cHardwareBase.h"
 #include "cHardwareFactory.h"
-#include "init_file.hh"
+#include "cInitFile.h"
 #include "cOrganism.h"
 #include "cPopulation.h"
 #include "cPopulationCell.h"
 #include "cPopulationEventFactory.h"
 #include "cPopulationInterface.h"
-#include "string.hh"
+#include "cString.h"
 #include "tools.hh"
 
 #include <iostream>

Modified: trunk/source/main/cAvidaDriver_Population.h
===================================================================
--- trunk/source/main/cAvidaDriver_Population.h	2005-10-07 01:02:35 UTC (rev 337)
+++ trunk/source/main/cAvidaDriver_Population.h	2005-10-08 02:02:38 UTC (rev 338)
@@ -12,7 +12,7 @@
 #include "cAvidaDriver_Base.h"
 #endif
 #ifndef STRING_HH
-#include "string.hh"
+#include "cString.h"
 #endif
 
 class cEnvironment;

Modified: trunk/source/main/cBirthChamber.h
===================================================================
--- trunk/source/main/cBirthChamber.h	2005-10-07 01:02:35 UTC (rev 337)
+++ trunk/source/main/cBirthChamber.h	2005-10-08 02:02:38 UTC (rev 338)
@@ -12,7 +12,7 @@
 #include "cCPUMemory.h"
 #endif
 #ifndef MERIT_HH
-#include "merit.hh"
+#include "cMerit.h"
 #endif
 
 /**

Modified: trunk/source/main/cConfig.h
===================================================================
--- trunk/source/main/cConfig.h	2005-10-07 01:02:35 UTC (rev 337)
+++ trunk/source/main/cConfig.h	2005-10-08 02:02:38 UTC (rev 338)
@@ -12,7 +12,7 @@
 #include "cGenesis.h"
 #endif
 #ifndef STRING_LIST_HH
-#include "string_list.hh"
+#include "cStringList.h"
 #endif
 #ifndef TLIST_HH
 #include "tList.hh"

Modified: trunk/source/main/cEnvironment.cc
===================================================================
--- trunk/source/main/cEnvironment.cc	2005-10-07 01:02:35 UTC (rev 337)
+++ trunk/source/main/cEnvironment.cc	2005-10-08 02:02:38 UTC (rev 338)
@@ -10,13 +10,13 @@
 #endif
 
 #ifndef INIT_FILE_HH
-#include "init_file.hh"
+#include "cInitFile.h"
 #endif
 #ifndef nMutation_h
 #include "nMutation.h"
 #endif
 #ifndef RANDOM_HH
-#include "random.hh"
+#include "cRandom.h"
 #endif
 #ifndef REACTION_HH
 #include "cReaction.h"
@@ -37,7 +37,7 @@
 #include "cResource.h"
 #endif
 #ifndef STRING_UTIL_HH
-#include "string_util.hh"
+#include "cStringUtil.h"
 #endif
 #ifndef TASK_ENTRY_HH
 #include "cTaskEntry.h"

Modified: trunk/source/main/cEnvironment.h
===================================================================
--- trunk/source/main/cEnvironment.h	2005-10-07 01:02:35 UTC (rev 337)
+++ trunk/source/main/cEnvironment.h	2005-10-08 02:02:38 UTC (rev 338)
@@ -24,7 +24,7 @@
 #include "cResourceLib.h"
 #endif
 #ifndef STRING_HH
-#include "string.hh"
+#include "cString.h"
 #endif
 #ifndef TASK_LIB_HH
 #include "cTaskLib.h"

Modified: trunk/source/main/cFitnessMatrix.h
===================================================================
--- trunk/source/main/cFitnessMatrix.h	2005-10-07 01:02:35 UTC (rev 337)
+++ trunk/source/main/cFitnessMatrix.h	2005-10-08 02:02:38 UTC (rev 338)
@@ -33,7 +33,7 @@
 #include "cStats.h"
 #endif
 #ifndef STRING_UTIL_HH
-#include "string_util.hh"
+#include "cStringUtil.h"
 #endif
 #ifndef TOOLS_HH
 #include "tools.hh"

Modified: trunk/source/main/cGenebank.h
===================================================================
--- trunk/source/main/cGenebank.h	2005-10-07 01:02:35 UTC (rev 337)
+++ trunk/source/main/cGenebank.h	2005-10-08 02:02:38 UTC (rev 338)
@@ -20,7 +20,7 @@
 #include "cSpeciesControl.h"
 #endif
 #ifndef STRING_HH
-#include "string.hh"
+#include "cString.h"
 #endif
 #ifndef TLIST_HH
 #include "tList.hh"

Modified: trunk/source/main/cGenome.h
===================================================================
--- trunk/source/main/cGenome.h	2005-10-07 01:02:35 UTC (rev 337)
+++ trunk/source/main/cGenome.h	2005-10-08 02:02:38 UTC (rev 338)
@@ -14,7 +14,7 @@
 #include "cInstruction.h"
 #endif
 #ifndef STRING_HH
-#include "string.hh"
+#include "cString.h"
 #endif
 #ifndef TARRAY_HH
 #include "tArray.hh"

Modified: trunk/source/main/cGenotype.cc
===================================================================
--- trunk/source/main/cGenotype.cc	2005-10-07 01:02:35 UTC (rev 337)
+++ trunk/source/main/cGenotype.cc	2005-10-08 02:02:38 UTC (rev 338)
@@ -10,7 +10,7 @@
 #include "cConfig.h"
 #include "cCPUTestInfo.h"
 #include "cGenomeUtil.h"
-#include "merit.hh"
+#include "cMerit.h"
 #include "cOrganism.h"
 #include "cPhenotype.h"
 #include "cTestCPU.h"

Modified: trunk/source/main/cGenotype.h
===================================================================
--- trunk/source/main/cGenotype.h	2005-10-07 01:02:35 UTC (rev 337)
+++ trunk/source/main/cGenotype.h	2005-10-08 02:02:38 UTC (rev 338)
@@ -23,7 +23,7 @@
 #include "cGenotype_TestData.h"
 #endif
 #ifndef STRING_HH
-#include "string.hh"
+#include "cString.h"
 #endif
 
 class cSpecies;

Modified: trunk/source/main/cGenotypeBatch.h
===================================================================
--- trunk/source/main/cGenotypeBatch.h	2005-10-07 01:02:35 UTC (rev 337)
+++ trunk/source/main/cGenotypeBatch.h	2005-10-08 02:02:38 UTC (rev 338)
@@ -9,7 +9,7 @@
 #define GENOTYPE_BATCH_HH
 
 #ifndef STRING_HH
-#include "string.hh"
+#include "cString.h"
 #endif
 #ifndef TLIST_HH
 #include "tList.hh"

Modified: trunk/source/main/cInjectGenebank.h
===================================================================
--- trunk/source/main/cInjectGenebank.h	2005-10-07 01:02:35 UTC (rev 337)
+++ trunk/source/main/cInjectGenebank.h	2005-10-08 02:02:38 UTC (rev 338)
@@ -23,7 +23,7 @@
 #include "cInjectGenotypeQueue.h"
 #endif
 #ifndef STRING_HH
-#include "string.hh"
+#include "cString.h"
 #endif
 
 class cGenome;

Modified: trunk/source/main/cInjectGenotype.h
===================================================================
--- trunk/source/main/cInjectGenotype.h	2005-10-07 01:02:35 UTC (rev 337)
+++ trunk/source/main/cInjectGenotype.h	2005-10-08 02:02:38 UTC (rev 338)
@@ -17,7 +17,7 @@
 #include "cInjectGenotype_BirthData.h"
 #endif
 #ifndef STRING_HH
-#include "string.hh"
+#include "cString.h"
 #endif
 
 /*class cInjectGenotype_TestData {

Modified: trunk/source/main/cInstSet.cc
===================================================================
--- trunk/source/main/cInstSet.cc	2005-10-07 01:02:35 UTC (rev 337)
+++ trunk/source/main/cInstSet.cc	2005-10-08 02:02:38 UTC (rev 338)
@@ -10,7 +10,7 @@
 #endif
 
 #ifndef STRING_UTIL_HH
-#include "string_util.hh"
+#include "cStringUtil.h"
 #endif
 #ifndef TOOLS_HH
 #include "tools.hh"

Modified: trunk/source/main/cInstSet.h
===================================================================
--- trunk/source/main/cInstSet.h	2005-10-07 01:02:35 UTC (rev 337)
+++ trunk/source/main/cInstSet.h	2005-10-08 02:02:38 UTC (rev 338)
@@ -11,7 +11,7 @@
 #include <iostream>
 
 #ifndef STRING_HH
-#include "string.hh"
+#include "cString.h"
 #endif
 #ifndef TARRAY_HH
 #include "tArray.hh"

Modified: trunk/source/main/cInstUtil.cc
===================================================================
--- trunk/source/main/cInstUtil.cc	2005-10-07 01:02:35 UTC (rev 337)
+++ trunk/source/main/cInstUtil.cc	2005-10-08 02:02:38 UTC (rev 338)
@@ -7,11 +7,11 @@
 
 #include "cInstUtil.h"
 
-#include "string.hh"
+#include "cString.h"
 #include "cFile.h"
 
 #ifndef INIT_FILE_HH
-#include "init_file.hh"
+#include "cInitFile.h"
 #endif
 
 #include "cInstSet.h"

Modified: trunk/source/main/cLandscape.h
===================================================================
--- trunk/source/main/cLandscape.h	2005-10-07 01:02:35 UTC (rev 337)
+++ trunk/source/main/cLandscape.h	2005-10-08 02:02:38 UTC (rev 338)
@@ -15,7 +15,7 @@
 #include "cGenome.h"
 #endif
 #ifndef STRING_HH
-#include "string.hh"
+#include "cString.h"
 #endif
 #ifndef TMATRIX_HH
 #include "tMatrix.hh"

Modified: trunk/source/main/cLineageControl.cc
===================================================================
--- trunk/source/main/cLineageControl.cc	2005-10-07 01:02:35 UTC (rev 337)
+++ trunk/source/main/cLineageControl.cc	2005-10-08 02:02:38 UTC (rev 338)
@@ -7,7 +7,7 @@
 
 #include "cLineageControl.h"
 
-#include "string.hh"
+#include "cString.h"
 
 #include "cLineage.h"
 #include "cStats.h"

Modified: trunk/source/main/cMutation.h
===================================================================
--- trunk/source/main/cMutation.h	2005-10-07 01:02:35 UTC (rev 337)
+++ trunk/source/main/cMutation.h	2005-10-08 02:02:38 UTC (rev 338)
@@ -9,7 +9,7 @@
 #define MUTATION_HH
 
 #ifndef STRING_HH
-#include "string.hh"
+#include "cString.h"
 #endif
 
 class cMutation {

Modified: trunk/source/main/cMxCodeArray.h
===================================================================
--- trunk/source/main/cMxCodeArray.h	2005-10-07 01:02:35 UTC (rev 337)
+++ trunk/source/main/cMxCodeArray.h	2005-10-08 02:02:38 UTC (rev 338)
@@ -17,10 +17,10 @@
 #include "cInstruction.h"
 #endif
 #ifndef STRING_HH
-#include "string.hh"
+#include "cString.h"
 #endif
 #ifndef STRING_UTIL_HH
-#include "string_util.hh"
+#include "cStringUtil.h"
 #endif
 
 /**

Modified: trunk/source/main/cOrganism.cc
===================================================================
--- trunk/source/main/cOrganism.cc	2005-10-07 01:02:35 UTC (rev 337)
+++ trunk/source/main/cOrganism.cc	2005-10-08 02:02:38 UTC (rev 338)
@@ -18,7 +18,7 @@
 #include "cInstSet.h"
 #include "cInstUtil.h"
 #include "cOrgMessage.h"
-#include "string_util.hh"
+#include "cStringUtil.h"
 #include "tArray.hh"
 #include "tools.hh"
 #include "tList.hh"

Modified: trunk/source/main/cPhenotype.h
===================================================================
--- trunk/source/main/cPhenotype.h	2005-10-07 01:02:35 UTC (rev 337)
+++ trunk/source/main/cPhenotype.h	2005-10-08 02:02:38 UTC (rev 338)
@@ -11,10 +11,10 @@
 #include <fstream>
 
 #ifndef MERIT_HH
-#include "merit.hh"
+#include "cMerit.h"
 #endif
 #ifndef STRING_HH
-#include "string.hh"
+#include "cString.h"
 #endif
 #ifndef TARRAY_HH
 #include "tArray.hh"

Modified: trunk/source/main/cPopulation.cc
===================================================================
--- trunk/source/main/cPopulation.cc	2005-10-07 01:02:35 UTC (rev 337)
+++ trunk/source/main/cPopulation.cc	2005-10-08 02:02:38 UTC (rev 338)
@@ -20,17 +20,17 @@
 #include "cHardwareFactory.h"
 #include "cHardware4Stack.h"
 #include "cHardwareUtil.h"
-#include "init_file.hh"
+#include "cInitFile.h"
 #include "cInjectGenebank.h"
 #include "cInjectGenotype.h"
 #include "cInstUtil.h"
-#include "integrated_schedule.hh"
+#include "cIntegratedSchedule.h"
 #include "cLineage.h"
 #include "cLineageControl.h"
 #include "cOrganism.h"
 #include "cPhenotype.h"
 #include "cPopulationCell.h"
-#include "prob_schedule.hh"
+#include "cProbSchedule.h"
 #include "cResource.h"
 #include "cSpecies.h"
 #include "cStats.h"

Modified: trunk/source/main/cPopulation.h
===================================================================
--- trunk/source/main/cPopulation.h	2005-10-07 01:02:35 UTC (rev 337)
+++ trunk/source/main/cPopulation.h	2005-10-08 02:02:38 UTC (rev 338)
@@ -23,7 +23,7 @@
 #include "cStats.h"
 #endif
 #ifndef STRING_HH
-#include "string.hh"
+#include "cString.h"
 #endif
 #ifndef TARRAY_HH
 #include "tArray.hh"

Modified: trunk/source/main/cReaction.h
===================================================================
--- trunk/source/main/cReaction.h	2005-10-07 01:02:35 UTC (rev 337)
+++ trunk/source/main/cReaction.h	2005-10-08 02:02:38 UTC (rev 338)
@@ -9,7 +9,7 @@
 #define REACTION_HH
 
 #ifndef STRING_HH
-#include "string.hh"
+#include "cString.h"
 #endif
 #ifndef TLIST_HH
 #include "tList.hh"

Modified: trunk/source/main/cResource.h
===================================================================
--- trunk/source/main/cResource.h	2005-10-07 01:02:35 UTC (rev 337)
+++ trunk/source/main/cResource.h	2005-10-08 02:02:38 UTC (rev 338)
@@ -9,7 +9,7 @@
 #define RESOURCE_HH
 
 #ifndef STRING_HH
-#include "string.hh"
+#include "cString.h"
 #endif
 
 class cString; // aggregate

Modified: trunk/source/main/cResourceCount.h
===================================================================
--- trunk/source/main/cResourceCount.h	2005-10-07 01:02:35 UTC (rev 337)
+++ trunk/source/main/cResourceCount.h	2005-10-08 02:02:38 UTC (rev 338)
@@ -12,7 +12,7 @@
 #include "cSpatialResCount.h"
 #endif
 #ifndef STRING_HH
-#include "string.hh"
+#include "cString.h"
 #endif
 #ifndef TARRAY_HH
 #include "tArray.hh"

Modified: trunk/source/main/cStats.cc
===================================================================
--- trunk/source/main/cStats.cc	2005-10-07 01:02:35 UTC (rev 337)
+++ trunk/source/main/cStats.cc	2005-10-08 02:02:38 UTC (rev 338)
@@ -10,7 +10,7 @@
 #include "cConfig.h"
 #include "cDataFile.h"
 #include "functions.h"
-#include "string_util.hh"
+#include "cStringUtil.h"
 #include "tDataEntry.hh"
 
 #include <math.h>

Modified: trunk/source/main/cStats.h
===================================================================
--- trunk/source/main/cStats.h	2005-10-07 01:02:35 UTC (rev 337)
+++ trunk/source/main/cStats.h	2005-10-08 02:02:38 UTC (rev 338)
@@ -25,10 +25,10 @@
 #include "functions.h"
 #endif
 #ifndef INT_SUM_HH
-#include "int_sum.hh"
+#include "cIntSum.h"
 #endif
 #ifndef RUNNING_AVERAGE_HH
-#include "running_average.hh"
+#include "cRunningAverage.h"
 #endif
 #ifndef TARRAY_HH
 #include "tArray.hh"

Modified: trunk/source/main/cTaskEntry.h
===================================================================
--- trunk/source/main/cTaskEntry.h	2005-10-07 01:02:35 UTC (rev 337)
+++ trunk/source/main/cTaskEntry.h	2005-10-08 02:02:38 UTC (rev 338)
@@ -9,7 +9,7 @@
 #define TASK_ENTRY_HH
 
 #ifndef STRING_HH
-#include "string.hh"
+#include "cString.h"
 #endif
 #ifndef TASK_LIB_HH
 #include "cTaskLib.h"

Modified: trunk/source/testsuites/unit_testsuites/help_alias.t.cc
===================================================================
--- trunk/source/testsuites/unit_testsuites/help_alias.t.cc	2005-10-07 01:02:35 UTC (rev 337)
+++ trunk/source/testsuites/unit_testsuites/help_alias.t.cc	2005-10-08 02:02:38 UTC (rev 338)
@@ -1,7 +1,7 @@
 #include <iostream>
 
 #ifndef HELP_ALIAS_HH
-#include "tools/help_alias.hh"
+#include "tools/cHelpAlias.h"
 #endif
 #ifndef TEST_CASE_H
 #include "third-party/yaktest/cTestCase.hh"

Modified: trunk/source/testsuites/unit_testsuites/help_entry.t.cc
===================================================================
--- trunk/source/testsuites/unit_testsuites/help_entry.t.cc	2005-10-07 01:02:35 UTC (rev 337)
+++ trunk/source/testsuites/unit_testsuites/help_entry.t.cc	2005-10-08 02:02:38 UTC (rev 338)
@@ -1,7 +1,7 @@
 #include <iostream>
 
 #ifndef HELP_ENTRY_HH
-#include "tools/help_entry.hh"
+#include "tools/cHelpEntry.h"
 #endif
 #ifndef TEST_CASE_H
 #include "third-party/yaktest/cTestCase.hh"

Modified: trunk/source/testsuites/unit_testsuites/help_full_entry.t.cc
===================================================================
--- trunk/source/testsuites/unit_testsuites/help_full_entry.t.cc	2005-10-07 01:02:35 UTC (rev 337)
+++ trunk/source/testsuites/unit_testsuites/help_full_entry.t.cc	2005-10-08 02:02:38 UTC (rev 338)
@@ -1,7 +1,7 @@
 #include <iostream>
 
 #ifndef HELP_FULL_ENTRY_HH
-#include "tools/help_full_entry.hh"
+#include "tools/cHelpFullEntry.h"
 #endif
 #ifndef TEST_CASE_H
 #include "third-party/yaktest/cTestCase.hh"

Modified: trunk/source/testsuites/unit_testsuites/help_manager.t.cc
===================================================================
--- trunk/source/testsuites/unit_testsuites/help_manager.t.cc	2005-10-07 01:02:35 UTC (rev 337)
+++ trunk/source/testsuites/unit_testsuites/help_manager.t.cc	2005-10-08 02:02:38 UTC (rev 338)
@@ -1,7 +1,7 @@
 #include <iostream>
 
 #ifndef HELP_MANAGER_HH
-#include "tools/help_manager.hh"
+#include "tools/cHelpManager.h"
 #endif
 #ifndef TEST_CASE_H
 #include "third-party/yaktest/cTestCase.hh"

Modified: trunk/source/testsuites/unit_testsuites/help_type.t.cc
===================================================================
--- trunk/source/testsuites/unit_testsuites/help_type.t.cc	2005-10-07 01:02:35 UTC (rev 337)
+++ trunk/source/testsuites/unit_testsuites/help_type.t.cc	2005-10-08 02:02:38 UTC (rev 338)
@@ -1,7 +1,7 @@
 #include <iostream>
 
 #ifndef HELP_TYPE_HH
-#include "tools/help_type.hh"
+#include "tools/cHelpType.h"
 #endif
 #ifndef TEST_CASE_H
 #include "third-party/yaktest/cTestCase.hh"

Modified: trunk/source/testsuites/unit_testsuites/histogram.t.cc
===================================================================
--- trunk/source/testsuites/unit_testsuites/histogram.t.cc	2005-10-07 01:02:35 UTC (rev 337)
+++ trunk/source/testsuites/unit_testsuites/histogram.t.cc	2005-10-08 02:02:38 UTC (rev 338)
@@ -1,7 +1,7 @@
 #include <iostream>
 
 #ifndef HISTOGRAM_HH
-#include "histogram.hh"
+#include "cHistogram.h"
 #endif
 #ifndef TEST_CASE_H
 #include "third-party/yaktest/cTestCase.hh"

Modified: trunk/source/testsuites/unit_testsuites/indexed_block_struct.t.cc
===================================================================
--- trunk/source/testsuites/unit_testsuites/indexed_block_struct.t.cc	2005-10-07 01:02:35 UTC (rev 337)
+++ trunk/source/testsuites/unit_testsuites/indexed_block_struct.t.cc	2005-10-08 02:02:38 UTC (rev 338)
@@ -1,7 +1,7 @@
 #include <iostream>
 
 #ifndef INDEXED_BLOCK_STRUCT_HH
-#include "indexed_block_struct.hh"
+#include "cIndexedBlockStruct.h"
 #endif
 #ifndef TEST_CASE_H
 #include "third-party/yaktest/cTestCase.hh"

Modified: trunk/source/testsuites/unit_testsuites/init_file.t.cc
===================================================================
--- trunk/source/testsuites/unit_testsuites/init_file.t.cc	2005-10-07 01:02:35 UTC (rev 337)
+++ trunk/source/testsuites/unit_testsuites/init_file.t.cc	2005-10-08 02:02:38 UTC (rev 338)
@@ -1,7 +1,7 @@
 #include <iostream>
 
 #ifndef INIT_FILE_HH
-#include "init_file.hh"
+#include "cInitFile.h"
 #endif
 #ifndef TEST_CASE_H
 #include "third-party/yaktest/cTestCase.hh"

Modified: trunk/source/testsuites/unit_testsuites/integrated_schedule_node.t.cc
===================================================================
--- trunk/source/testsuites/unit_testsuites/integrated_schedule_node.t.cc	2005-10-07 01:02:35 UTC (rev 337)
+++ trunk/source/testsuites/unit_testsuites/integrated_schedule_node.t.cc	2005-10-08 02:02:38 UTC (rev 338)
@@ -1,7 +1,7 @@
 #include <iostream>
 
 #ifndef INTEGRATED_SCHEDULE_NODE_HH
-#include "integrated_schedule_node.hh"
+#include "cIntegratedScheduleNode.h"
 #endif
 #ifndef TEST_CASE_H
 #include "third-party/yaktest/cTestCase.hh"

Modified: trunk/source/testsuites/unit_testsuites/level_0/int_sum.t.cc
===================================================================
--- trunk/source/testsuites/unit_testsuites/level_0/int_sum.t.cc	2005-10-07 01:02:35 UTC (rev 337)
+++ trunk/source/testsuites/unit_testsuites/level_0/int_sum.t.cc	2005-10-08 02:02:38 UTC (rev 338)
@@ -1,5 +1,5 @@
 #ifndef INT_SUM_HH
-#include "int_sum.hh"
+#include "cIntSum.h"
 #endif
 
 #ifndef TEST_CASE_H

Modified: trunk/source/testsuites/unit_testsuites/level_0/merit.t.cc
===================================================================
--- trunk/source/testsuites/unit_testsuites/level_0/merit.t.cc	2005-10-07 01:02:35 UTC (rev 337)
+++ trunk/source/testsuites/unit_testsuites/level_0/merit.t.cc	2005-10-08 02:02:38 UTC (rev 338)
@@ -1,5 +1,5 @@
 #ifndef MERIT_HH
-#include "merit.hh"
+#include "cMerit.h"
 #endif
 
 #ifndef TEST_CASE_H

Modified: trunk/source/testsuites/unit_testsuites/message_class.t.cc
===================================================================
--- trunk/source/testsuites/unit_testsuites/message_class.t.cc	2005-10-07 01:02:35 UTC (rev 337)
+++ trunk/source/testsuites/unit_testsuites/message_class.t.cc	2005-10-08 02:02:38 UTC (rev 338)
@@ -1,7 +1,7 @@
 #include <iostream>
 
 #ifndef MESSAGE_CLASS_HH
-#include "message_class.hh"
+#include "cMessageClass.h"
 #endif
 #ifndef TEST_CASE_H
 #include "third-party/yaktest/cTestCase.hh"

Modified: trunk/source/testsuites/unit_testsuites/message_closure.t.cc
===================================================================
--- trunk/source/testsuites/unit_testsuites/message_closure.t.cc	2005-10-07 01:02:35 UTC (rev 337)
+++ trunk/source/testsuites/unit_testsuites/message_closure.t.cc	2005-10-08 02:02:38 UTC (rev 338)
@@ -1,7 +1,7 @@
 #include <iostream>
 
 #ifndef MESSAGE_CLOSURE_HH
-#include "message_closure.hh"
+#include "cMessageClosure.h"
 #endif
 #ifndef TEST_CASE_H
 #include "third-party/yaktest/cTestCase.hh"

Modified: trunk/source/testsuites/unit_testsuites/message_display.t.cc
===================================================================
--- trunk/source/testsuites/unit_testsuites/message_display.t.cc	2005-10-07 01:02:35 UTC (rev 337)
+++ trunk/source/testsuites/unit_testsuites/message_display.t.cc	2005-10-08 02:02:38 UTC (rev 338)
@@ -1,7 +1,7 @@
 #include <iostream>
 
 #ifndef MESSAGE_DISPLAY_HH
-#include "message_display.hh"
+#include "cMessageDisplay.h"
 #endif
 #ifndef TEST_CASE_H
 #include "third-party/yaktest/cTestCase.hh"

Modified: trunk/source/testsuites/unit_testsuites/message_type.t.cc
===================================================================
--- trunk/source/testsuites/unit_testsuites/message_type.t.cc	2005-10-07 01:02:35 UTC (rev 337)
+++ trunk/source/testsuites/unit_testsuites/message_type.t.cc	2005-10-08 02:02:38 UTC (rev 338)
@@ -1,7 +1,7 @@
 #include <iostream>
 
 #ifndef MESSAGE_CLASS_HH
-#include "message_type.hh"
+#include "cMessageType.h"
 #endif
 #ifndef TEST_CASE_H
 #include "third-party/yaktest/cTestCase.hh"

Modified: trunk/source/testsuites/unit_testsuites/prob_schedule.t.cc
===================================================================
--- trunk/source/testsuites/unit_testsuites/prob_schedule.t.cc	2005-10-07 01:02:35 UTC (rev 337)
+++ trunk/source/testsuites/unit_testsuites/prob_schedule.t.cc	2005-10-08 02:02:38 UTC (rev 338)
@@ -1,7 +1,7 @@
 #include <iostream>
 
 #ifndef PROB_SCHEDULE_HH
-#include "prob_schedule.hh"
+#include "cProbSchedule.h"
 #endif
 #ifndef TEST_CASE_H
 #include "third-party/yaktest/cTestCase.hh"

Modified: trunk/source/testsuites/unit_testsuites/random.t.cc
===================================================================
--- trunk/source/testsuites/unit_testsuites/random.t.cc	2005-10-07 01:02:35 UTC (rev 337)
+++ trunk/source/testsuites/unit_testsuites/random.t.cc	2005-10-08 02:02:38 UTC (rev 338)
@@ -1,7 +1,7 @@
 #include <iostream>
 
 #ifndef RANDOM_HH
-#include "random.hh"
+#include "cRandom.h"
 #endif
 #ifndef TEST_CASE_H
 #include "third-party/yaktest/cTestCase.hh"

Modified: trunk/source/testsuites/unit_testsuites/ref_block.t.cc
===================================================================
--- trunk/source/testsuites/unit_testsuites/ref_block.t.cc	2005-10-07 01:02:35 UTC (rev 337)
+++ trunk/source/testsuites/unit_testsuites/ref_block.t.cc	2005-10-08 02:02:38 UTC (rev 338)
@@ -1,7 +1,7 @@
 #include <iostream>
 
 #ifndef REF_BLOCK_HH
-#include "ref_block.hh"
+#include "cRefBlock.h"
 #endif
 #ifndef TEST_CASE_H
 #include "third-party/yaktest/cTestCase.hh"

Modified: trunk/source/testsuites/unit_testsuites/running_average.t.cc
===================================================================
--- trunk/source/testsuites/unit_testsuites/running_average.t.cc	2005-10-07 01:02:35 UTC (rev 337)
+++ trunk/source/testsuites/unit_testsuites/running_average.t.cc	2005-10-08 02:02:38 UTC (rev 338)
@@ -1,7 +1,7 @@
 #include <iostream>
 
 #ifndef RUNNING_AVERAGE_HH
-#include "running_average.hh"
+#include "cRunningAverage.h"
 #endif
 #ifndef TEST_CASE_H
 #include "third-party/yaktest/cTestCase.hh"

Modified: trunk/source/testsuites/unit_testsuites/scaled_block.t.cc
===================================================================
--- trunk/source/testsuites/unit_testsuites/scaled_block.t.cc	2005-10-07 01:02:35 UTC (rev 337)
+++ trunk/source/testsuites/unit_testsuites/scaled_block.t.cc	2005-10-08 02:02:38 UTC (rev 338)
@@ -1,7 +1,7 @@
 #include <iostream>
 
 #ifndef SCALED_BLOCK_HH
-#include "scaled_block.hh"
+#include "cScaledBlock.h"
 #endif
 #ifndef TEST_CASE_H
 #include "third-party/yaktest/cTestCase.hh"

Modified: trunk/source/testsuites/unit_testsuites/schedule.t.cc
===================================================================
--- trunk/source/testsuites/unit_testsuites/schedule.t.cc	2005-10-07 01:02:35 UTC (rev 337)
+++ trunk/source/testsuites/unit_testsuites/schedule.t.cc	2005-10-08 02:02:38 UTC (rev 338)
@@ -1,7 +1,7 @@
 #include <iostream>
 
 #ifndef SCHEDULE_HH
-#include "schedule.hh"
+#include "cSchedule.h"
 #endif
 #ifndef TEST_CASE_H
 #include "third-party/yaktest/cTestCase.hh"

Modified: trunk/source/testsuites/unit_testsuites/string.t.cc
===================================================================
--- trunk/source/testsuites/unit_testsuites/string.t.cc	2005-10-07 01:02:35 UTC (rev 337)
+++ trunk/source/testsuites/unit_testsuites/string.t.cc	2005-10-08 02:02:38 UTC (rev 338)
@@ -1,7 +1,7 @@
 #include <iostream>
 
 #ifndef STRING_HH
-#include "string.hh"
+#include "cString.h"
 #endif
 #ifndef TEST_CASE_H
 #include "third-party/yaktest/cTestCase.hh"

Modified: trunk/source/testsuites/unit_testsuites/string_iterator.t.cc
===================================================================
--- trunk/source/testsuites/unit_testsuites/string_iterator.t.cc	2005-10-07 01:02:35 UTC (rev 337)
+++ trunk/source/testsuites/unit_testsuites/string_iterator.t.cc	2005-10-08 02:02:38 UTC (rev 338)
@@ -1,7 +1,7 @@
 #include <iostream>
 
 #ifndef STRING_ITERATOR_HH
-#include "string_iterator.hh"
+#include "cStringIterator.h"
 #endif
 #ifndef TEST_CASE_H
 #include "third-party/yaktest/cTestCase.hh"

Modified: trunk/source/testsuites/unit_testsuites/string_list.t.cc
===================================================================
--- trunk/source/testsuites/unit_testsuites/string_list.t.cc	2005-10-07 01:02:35 UTC (rev 337)
+++ trunk/source/testsuites/unit_testsuites/string_list.t.cc	2005-10-08 02:02:38 UTC (rev 338)
@@ -1,7 +1,7 @@
 #include <iostream>
 
 #ifndef STRING_LIST_HH
-#include "string_list.hh"
+#include "cStringList.h"
 #endif
 #ifndef TEST_CASE_H
 #include "third-party/yaktest/cTestCase.hh"

Modified: trunk/source/testsuites/unit_testsuites/string_util.t.cc
===================================================================
--- trunk/source/testsuites/unit_testsuites/string_util.t.cc	2005-10-07 01:02:35 UTC (rev 337)
+++ trunk/source/testsuites/unit_testsuites/string_util.t.cc	2005-10-08 02:02:38 UTC (rev 338)
@@ -1,7 +1,7 @@
 #include <iostream>
 
 #ifndef STRING_UTIL_HH
-#include "string_util.hh"
+#include "cStringUtil.h"
 #endif
 #ifndef TEST_CASE_H
 #include "third-party/yaktest/cTestCase.hh"

Modified: trunk/source/tools/CMakeLists.txt
===================================================================
--- trunk/source/tools/CMakeLists.txt	2005-10-07 01:02:35 UTC (rev 337)
+++ trunk/source/tools/CMakeLists.txt	2005-10-08 02:02:38 UTC (rev 338)
@@ -12,27 +12,27 @@
   cFile.cc
   cFixedBlock.cc
 	cGenesis.cc
-  help_alias.cc
-  help_manager.cc
-  help_type.cc
-  histogram.cc
-  indexed_block_struct.cc
-	init_file.cc
-  int_sum.cc
-  integrated_schedule.cc
-  integrated_schedule_node.cc
-  message_display.cc
-  merit.cc
-  prob_schedule.cc
-  random.cc
-  ref_block.cc
-  running_average.cc
-  scaled_block.cc
-  schedule.cc
-  string.cc
-  string_iterator.cc
-  string_list.cc
-  string_util.cc
+  cHelpAlias.cc
+  cHelpManager.cc
+  cHelpType.cc
+  cHistogram.cc
+  cIndexedBlockStruct.cc
+	cInitFile.cc
+  cIntSum.cc
+  cIntegratedSchedule.cc
+  cIntegratedScheduleNode.cc
+  cMessageDisplay.cc
+  cMerit.cc
+  cProbSchedule.cc
+  cRandom.cc
+  cRefBlock.cc
+  cRunningAverage.cc
+  cScaledBlock.cc
+  cSchedule.cc
+  cString.cc
+  cStringIterator.cc
+  cStringList.cc
+  cStringUtil.cc
   tools.cc
   weighted_index.cc
 

Modified: trunk/source/tools/cBlockStruct.h
===================================================================
--- trunk/source/tools/cBlockStruct.h	2005-10-07 01:02:35 UTC (rev 337)
+++ trunk/source/tools/cBlockStruct.h	2005-10-08 02:02:38 UTC (rev 338)
@@ -15,7 +15,7 @@
 #include "cFixedCoords.h"
 #endif
 #ifndef SCALED_BLOCK_HH
-#include "scaled_block.hh"
+#include "cScaledBlock.h"
 #endif
 #ifndef UINT_HH
 #include "uint.hh"

Modified: trunk/source/tools/cConstSchedule.cc
===================================================================
--- trunk/source/tools/cConstSchedule.cc	2005-10-07 01:02:35 UTC (rev 337)
+++ trunk/source/tools/cConstSchedule.cc	2005-10-08 02:02:38 UTC (rev 338)
@@ -8,7 +8,7 @@
 #include "cConstSchedule.h"
 
 #include "cChangeList.h"
-#include "merit.hh"
+#include "cMerit.h"
 
 
 ////////////////////

Modified: trunk/source/tools/cConstSchedule.h
===================================================================
--- trunk/source/tools/cConstSchedule.h	2005-10-07 01:02:35 UTC (rev 337)
+++ trunk/source/tools/cConstSchedule.h	2005-10-08 02:02:38 UTC (rev 338)
@@ -9,7 +9,7 @@
 #define CONST_SCHEDULE_HH
 
 #ifndef SCHEDULE_HH
-#include "schedule.hh"
+#include "cSchedule.h"
 #endif
 #ifndef TARRAY_HH
 #include "tArray.hh"

Modified: trunk/source/tools/cDataEntry.h
===================================================================
--- trunk/source/tools/cDataEntry.h	2005-10-07 01:02:35 UTC (rev 337)
+++ trunk/source/tools/cDataEntry.h	2005-10-08 02:02:38 UTC (rev 338)
@@ -11,7 +11,7 @@
 #include <iostream>
 
 #ifndef STRING_HH
-#include "string.hh"
+#include "cString.h"
 #endif
 
 class cString; // aggregate

Modified: trunk/source/tools/cDataFile.cc
===================================================================
--- trunk/source/tools/cDataFile.cc	2005-10-07 01:02:35 UTC (rev 337)
+++ trunk/source/tools/cDataFile.cc	2005-10-08 02:02:38 UTC (rev 338)
@@ -10,7 +10,7 @@
 #endif
 
 #ifndef STRING_UTIL_HH
-#include "string_util.hh"
+#include "cStringUtil.h"
 #endif
 
 extern "C" {

Modified: trunk/source/tools/cDataFile.h
===================================================================
--- trunk/source/tools/cDataFile.h	2005-10-07 01:02:35 UTC (rev 337)
+++ trunk/source/tools/cDataFile.h	2005-10-08 02:02:38 UTC (rev 338)
@@ -20,7 +20,7 @@
 #include <fstream>
 
 #ifndef STRING_HH
-#include "string.hh"
+#include "cString.h"
 #endif
 
 /**

Modified: trunk/source/tools/cDataManager_Base.h
===================================================================
--- trunk/source/tools/cDataManager_Base.h	2005-10-07 01:02:35 UTC (rev 337)
+++ trunk/source/tools/cDataManager_Base.h	2005-10-08 02:02:38 UTC (rev 338)
@@ -11,7 +11,7 @@
 #include <iostream>
 
 #ifndef STRING_HH
-#include "string.hh"
+#include "cString.h"
 #endif
 
 class cDataFile;

Modified: trunk/source/tools/cDefaultMessageDisplay.cc
===================================================================
--- trunk/source/tools/cDefaultMessageDisplay.cc	2005-10-07 01:02:35 UTC (rev 337)
+++ trunk/source/tools/cDefaultMessageDisplay.cc	2005-10-08 02:02:38 UTC (rev 338)
@@ -10,7 +10,7 @@
 #endif
 
 #ifndef STRING_HH
-#include "string.hh"
+#include "cString.h"
 #endif
 
 using namespace std;

Modified: trunk/source/tools/cDefaultMessageDisplay.h
===================================================================
--- trunk/source/tools/cDefaultMessageDisplay.h	2005-10-07 01:02:35 UTC (rev 337)
+++ trunk/source/tools/cDefaultMessageDisplay.h	2005-10-08 02:02:38 UTC (rev 338)
@@ -11,7 +11,7 @@
 #include <iostream>
 
 #ifndef MESSAGE_DISPLAY_HH
-#include "message_display.hh"
+#include "cMessageDisplay.h"
 #endif
 
 /*

Modified: trunk/source/tools/cFile.cc
===================================================================
--- trunk/source/tools/cFile.cc	2005-10-07 01:02:35 UTC (rev 337)
+++ trunk/source/tools/cFile.cc	2005-10-08 02:02:38 UTC (rev 338)
@@ -10,13 +10,13 @@
 #endif
 
 #ifndef INIT_FILE_HH
-#include "init_file.hh"
+#include "cInitFile.h"
 #endif
 #ifndef GENESIS_HH
 #include "cGenesis.h"
 #endif
 #ifndef STRING_ITERATOR_HH
-#include "string_iterator.hh"
+#include "cStringIterator.h"
 #endif
 
 #ifndef TOOLS_HH

Modified: trunk/source/tools/cFile.h
===================================================================
--- trunk/source/tools/cFile.h	2005-10-07 01:02:35 UTC (rev 337)
+++ trunk/source/tools/cFile.h	2005-10-08 02:02:38 UTC (rev 338)
@@ -11,7 +11,7 @@
 #include <fstream>
 
 #ifndef STRING_HH
-#include "string.hh"
+#include "cString.h"
 #endif
 
 /**

Modified: trunk/source/tools/cGenesis.h
===================================================================
--- trunk/source/tools/cGenesis.h	2005-10-07 01:02:35 UTC (rev 337)
+++ trunk/source/tools/cGenesis.h	2005-10-08 02:02:38 UTC (rev 338)
@@ -9,10 +9,10 @@
 #define GENESIS_HH
 
 #ifndef INIT_FILE_HH
-#include "init_file.hh"
+#include "cInitFile.h"
 #endif
 #ifndef STRING_HH
-#include "string.hh"
+#include "cString.h"
 #endif
 
 /**

Copied: trunk/source/tools/cHelpAlias.cc (from rev 337, trunk/source/tools/help_alias.cc)
===================================================================
--- trunk/source/tools/help_alias.cc	2005-10-07 01:02:35 UTC (rev 337)
+++ trunk/source/tools/cHelpAlias.cc	2005-10-08 02:02:38 UTC (rev 338)
@@ -0,0 +1,13 @@
+//////////////////////////////////////////////////////////////////////////////
+// Copyright (C) 1993 - 2003 California Institute of Technology             //
+//                                                                          //
+// Read the COPYING and README files, or contact 'avida at alife.org',         //
+// before continuing.  SOME RESTRICTIONS MAY APPLY TO USE OF THIS FILE.     //
+//////////////////////////////////////////////////////////////////////////////
+
+#include "cHelpAlias.h"
+#include "cHelpFullEntry.h"
+
+const cString & cHelpAlias::GetKeyword() const { return full_entry->GetKeyword(); }
+const cString & cHelpAlias::GetDesc() const { return full_entry->GetDesc(); }
+cHelpType * cHelpAlias::GetType() const { return full_entry->GetType(); }

Copied: trunk/source/tools/cHelpAlias.h (from rev 337, trunk/source/tools/help_alias.hh)
===================================================================
--- trunk/source/tools/help_alias.hh	2005-10-07 01:02:35 UTC (rev 337)
+++ trunk/source/tools/cHelpAlias.h	2005-10-08 02:02:38 UTC (rev 338)
@@ -0,0 +1,34 @@
+//////////////////////////////////////////////////////////////////////////////
+// Copyright (C) 1993 - 2003 California Institute of Technology             //
+//                                                                          //
+// Read the COPYING and README files, or contact 'avida at alife.org',         //
+// before continuing.  SOME RESTRICTIONS MAY APPLY TO USE OF THIS FILE.     //
+//////////////////////////////////////////////////////////////////////////////
+
+#ifndef HELP_ALIAS_HH
+#define HELP_ALIAS_HH
+
+#ifndef HELP_ENTRY_HH
+#include "cHelpEntry.h"
+#endif
+
+class cHelpFullEntry;
+class cHelpType;
+class cString;
+
+class cHelpAlias : public cHelpEntry {
+private:
+  cHelpFullEntry * full_entry;
+public:
+  cHelpAlias(const cString & _alias, cHelpFullEntry * _full_entry)
+    : cHelpEntry(_alias), full_entry(_full_entry) { ; }
+  ~cHelpAlias() { ; }
+
+  const cString & GetKeyword() const;
+  const cString & GetDesc() const;
+  cHelpType * GetType() const;
+
+  bool IsAlias() const { return true; }
+};
+
+#endif

Copied: trunk/source/tools/cHelpEntry.h (from rev 337, trunk/source/tools/help_entry.hh)
===================================================================
--- trunk/source/tools/help_entry.hh	2005-10-07 01:02:35 UTC (rev 337)
+++ trunk/source/tools/cHelpEntry.h	2005-10-08 02:02:38 UTC (rev 338)
@@ -0,0 +1,40 @@
+//////////////////////////////////////////////////////////////////////////////
+// Copyright (C) 1993 - 2003 California Institute of Technology             //
+//                                                                          //
+// Read the COPYING and README files, or contact 'avida at alife.org',         //
+// before continuing.  SOME RESTRICTIONS MAY APPLY TO USE OF THIS FILE.     //
+//////////////////////////////////////////////////////////////////////////////
+
+#ifndef HELP_ENTRY_HH
+#define HELP_ENTRY_HH
+
+#ifndef STRING_HH
+#include "cString.h"
+#endif
+#ifndef STRING_UTIL_HH
+#include "cStringUtil.h"
+#endif
+
+class cHelpType;
+class cString; // aggregate
+class cStringUtil; // accessed
+
+class cHelpEntry {
+protected:
+  cString name;
+public:
+  cHelpEntry(const cString & _name) : name(_name) { ; }
+  virtual ~cHelpEntry() { ; }
+
+  const cString & GetName() const { return name; }
+  virtual const cString & GetKeyword() const = 0;
+  virtual const cString & GetDesc() const = 0;
+  virtual cHelpType * GetType() const = 0;
+
+  virtual bool IsAlias() const = 0;
+
+  cString GetHTMLFilename() const
+    { return cStringUtil::Stringf("help.%s.html", GetKeyword()()); }
+};
+
+#endif

Copied: trunk/source/tools/cHelpFullEntry.h (from rev 337, trunk/source/tools/help_full_entry.hh)
===================================================================
--- trunk/source/tools/help_full_entry.hh	2005-10-07 01:02:35 UTC (rev 337)
+++ trunk/source/tools/cHelpFullEntry.h	2005-10-08 02:02:38 UTC (rev 338)
@@ -0,0 +1,45 @@
+//////////////////////////////////////////////////////////////////////////////
+// Copyright (C) 1993 - 2003 California Institute of Technology             //
+//                                                                          //
+// Read the COPYING and README files, or contact 'avida at alife.org',         //
+// before continuing.  SOME RESTRICTIONS MAY APPLY TO USE OF THIS FILE.     //
+//////////////////////////////////////////////////////////////////////////////
+
+#ifndef HELP_FULL_ENTRY_HH
+#define HELP_FULL_ENTRY_HH
+
+#ifndef HELP_ENTRY_HH
+#include "cHelpEntry.h"
+#endif
+#ifndef STRING_HH
+#include "cString.h"
+#endif
+
+class cHelpType;
+class cString; // aggregate
+
+class cHelpFullEntry : public cHelpEntry {
+private:
+  cHelpType * type;
+  cString desc;
+public:
+  cHelpFullEntry(const cString & _name, cHelpType * _type, const cString _desc)
+    : cHelpEntry(_name), type(_type), desc(_desc) { ; }
+  cHelpFullEntry() : cHelpEntry(""), type(NULL) { ; }
+  ~cHelpFullEntry() { ; }
+
+  const cHelpFullEntry & operator=(const cHelpEntry & in_entry) {
+    name = in_entry.GetName();
+    type = in_entry.GetType();
+    desc = in_entry.GetDesc();
+    return *this;
+  }
+
+  const cString & GetKeyword() const { return name; }
+  const cString & GetDesc() const { return desc; }
+  cHelpType * GetType() const { return type; }
+
+  bool IsAlias() const { return false; }
+};
+
+#endif

Copied: trunk/source/tools/cHelpManager.cc (from rev 337, trunk/source/tools/help_manager.cc)
===================================================================
--- trunk/source/tools/help_manager.cc	2005-10-07 01:02:35 UTC (rev 337)
+++ trunk/source/tools/cHelpManager.cc	2005-10-08 02:02:38 UTC (rev 338)
@@ -0,0 +1,102 @@
+//////////////////////////////////////////////////////////////////////////////
+// Copyright (C) 1993 - 2003 California Institute of Technology             //
+//                                                                          //
+// Read the COPYING and README files, or contact 'avida at alife.org',         //
+// before continuing.  SOME RESTRICTIONS MAY APPLY TO USE OF THIS FILE.     //
+//////////////////////////////////////////////////////////////////////////////
+
+#ifndef HELP_MANAGER_HH
+#include "cHelpManager.h"
+#endif
+
+#ifndef HELP_TYPE_HH
+#include "cHelpType.h"
+#endif
+#ifndef INIT_FILE_HH
+#include "cInitFile.h"
+#endif
+#ifndef STRING_HH
+#include "cString.h"
+#endif
+#ifndef TLIST_HH
+#include "tList.hh"
+#endif
+
+#include <iostream>
+
+using namespace std;
+
+cHelpType * cHelpManager::GetType(const cString type_name)
+{
+  // See if we can find this type in the already existant list...
+  tListIterator<cHelpType> type_it(type_list);
+  while (type_it.Next() != NULL) {
+    if (type_it.Get()->GetName() == type_name) return type_it.Get();
+  }
+
+  // Otherwise, create it.
+  if (verbose == true) {
+    cout << "  Creating help type \"" << type_name << "\"." << endl;
+  }
+  cHelpType * type = new cHelpType(type_name, this);
+  type_list.Push(type);
+  return type;
+}
+
+void cHelpManager::LoadFile(const cString & filename)
+{
+  cInitFile help_file(filename);
+  help_file.Load();
+  help_file.Compress();
+  help_file.Close();
+
+  cHelpType * type = NULL;
+  cString keyword;
+
+  for (int line_id = 0; line_id < help_file.GetNumLines(); line_id++) {
+    cString cur_string = help_file.GetLine(line_id);
+    cString command = cur_string.PopWord();
+    command.ToLower();
+
+    if (command == "type:") {
+      type = GetType(cur_string);
+    }
+    else if (command == "keyword:") {
+      keyword = cur_string;
+    }
+    else if (command == "desc:") {
+      if (type == NULL) type = GetType("None"); // Make sure we have a type.
+      if (keyword == "") {
+	if (verbose == true) {
+	  cerr << "  Help description set without keyword;"
+	       << " setting keyword to \"None\"." << endl;
+	}
+	keyword = "None";
+      }
+      last_entry = type->AddEntry(keyword, cur_string);
+    }
+    else if (command == "alias:") {
+      if (last_entry == NULL) {
+	cerr << "  Warning: Setting aliases \"" << cur_string
+	     << "\" to incomplete entry!" << endl;
+      }
+      while (cur_string.GetSize() > 0) {
+	type->AddAlias(cur_string.PopWord(), last_entry);
+      }
+    }
+    else if (verbose == true) {
+      cerr << "Warning: Unknown command \"" << command
+	   << "\" in file " << filename << endl;
+    }
+  }
+
+}
+
+
+void cHelpManager::PrintHTML()
+{
+  tListIterator<cHelpType> type_it(type_list);
+  while (type_it.Next() != NULL) {
+    type_it.Get()->PrintHTML();
+  }
+}

Copied: trunk/source/tools/cHelpManager.h (from rev 337, trunk/source/tools/help_manager.hh)
===================================================================
--- trunk/source/tools/help_manager.hh	2005-10-07 01:02:35 UTC (rev 337)
+++ trunk/source/tools/cHelpManager.h	2005-10-08 02:02:38 UTC (rev 338)
@@ -0,0 +1,59 @@
+//////////////////////////////////////////////////////////////////////////////
+// Copyright (C) 1993 - 2003 California Institute of Technology             //
+//                                                                          //
+// Read the COPYING and README files, or contact 'avida at alife.org',         //
+// before continuing.  SOME RESTRICTIONS MAY APPLY TO USE OF THIS FILE.     //
+//////////////////////////////////////////////////////////////////////////////
+
+#ifndef HELP_MANAGER_HH
+#define HELP_MANAGER_HH
+
+#ifndef HELP_TYPE_HH
+#include "cHelpType.h"
+#endif
+#ifndef STRING_HH
+#include "cString.h"
+#endif
+#ifndef TLIST_HH
+#include "tList.hh"
+#endif
+
+class cHelpFullEntry;
+class cHelpType; // accessed
+class cString; // aggregate
+template <class T> class tList; // aggregate
+template <class T> class tListIterator; // aggregate
+
+class cHelpManager {
+private:
+  tList<cHelpType> type_list;
+  cHelpFullEntry * last_entry;
+  bool verbose;   // Should we print messages to the screen?
+
+  // Private methods...
+  cHelpType * GetType(const cString type_name);
+private:
+  // disabled copy constructor.
+  cHelpManager(const cHelpManager &);
+public:
+  cHelpManager() : last_entry(NULL), verbose (false) { ; }
+  ~cHelpManager() { while (type_list.GetSize() > 0) delete type_list.Pop(); }
+
+  void LoadFile(const cString & filename);
+  void PrintHTML();
+  cHelpEntry * FindEntry(cString entry_name) {
+    entry_name.ToLower();
+
+    tListIterator<cHelpType> type_it(type_list);
+    while (type_it.Next() != NULL) {
+      cHelpEntry * found_entry = type_it.Get()->FindEntry(entry_name);
+      if (found_entry != NULL) return found_entry;
+    }
+    return NULL;
+  }
+  
+  void SetVerbose(bool _verbose = true) { verbose = _verbose; }
+  bool GetVerbose() const { return verbose; }
+};
+
+#endif

Copied: trunk/source/tools/cHelpType.cc (from rev 337, trunk/source/tools/help_type.cc)
===================================================================
--- trunk/source/tools/help_type.cc	2005-10-07 01:02:35 UTC (rev 337)
+++ trunk/source/tools/cHelpType.cc	2005-10-08 02:02:38 UTC (rev 338)
@@ -0,0 +1,126 @@
+//////////////////////////////////////////////////////////////////////////////
+// Copyright (C) 1993 - 2003 California Institute of Technology             //
+//                                                                          //
+// Read the COPYING and README files, or contact 'avida at alife.org',         //
+// before continuing.  SOME RESTRICTIONS MAY APPLY TO USE OF THIS FILE.     //
+//////////////////////////////////////////////////////////////////////////////
+
+#ifndef HELP_TYPE_HH
+#include "cHelpType.h"
+#endif
+
+#ifndef HELP_ALIAS_HH
+#include "cHelpAlias.h"
+#endif
+#ifndef HELP_ENTRY_HH
+#include "cHelpEntry.h"
+#endif
+#ifndef HELP_FULL_ENTRY_HH
+#include "cHelpFullEntry.h"
+#endif
+#ifndef HELP_MANAGER_HH
+#include "cHelpManager.h"
+#endif
+
+#include <fstream>
+
+using namespace std;
+
+cHelpAlias * cHelpType::AddAlias(const cString & alias_name, cHelpFullEntry * entry) {
+  cHelpAlias * new_alias = new cHelpAlias(alias_name, entry);
+  entry_list.Push(new_alias);
+  return new_alias;
+}
+
+cHelpFullEntry * cHelpType::AddEntry(const cString & _name, const cString & _desc) {
+  cHelpFullEntry * new_entry = new cHelpFullEntry(_name, this, _desc);
+  entry_list.Push(new_entry);
+  num_entries++;
+  return new_entry;
+}
+
+cHelpEntry * cHelpType::FindEntry(const cString & entry_name) {
+  tListIterator<cHelpEntry> entry_it(entry_list);
+  while (entry_it.Next() != NULL) {
+    if (entry_it.Get()->GetName() == entry_name) {
+      return entry_it.Get(); // Found!
+    }
+  }
+  return NULL;  // Not found...
+}
+
+cHelpType::~cHelpType() { while (entry_list.GetSize() > 0) delete entry_list.Pop(); }
+
+void cHelpType::PrintHTML()
+{
+  if (manager->GetVerbose()) cout << "  Category: " << GetName() << endl;
+
+  cHelpEntry * cur_entry = NULL;
+  tListIterator<cHelpEntry> entry_it(entry_list);
+
+  while ( (cur_entry = entry_it.Next()) != NULL) {
+    // Only print non-alias entries...
+    if (cur_entry->IsAlias() == true) continue;
+    
+    ofstream fp(cur_entry->GetHTMLFilename());
+    
+    fp << "<html>" << endl
+       << "<title>" << GetName() << " : "
+       << cur_entry->GetName() << "</title>" << endl << endl
+       << "<h1>" << cur_entry->GetName() << "</h1>" << endl << endl;
+    
+    cString out_desc( cur_entry->GetDesc() );
+    int pos = 0;
+    while ((pos = out_desc.Find('!', pos)) != -1) {
+      // Grab the word we need to replace
+      cString found_word(out_desc.GetWordAt(pos));
+      cString new_word;
+      
+      // If we have a double '!' reduce it to a single one and continue...
+      if (found_word[1] == '!') {
+	out_desc.Replace("!!", "!", pos);
+	pos++;
+      }
+      
+      // Otherwise, do a proper replacement...
+      else {
+	// Find the root keyword...
+	cString keyword(found_word);
+	keyword.ClipFront(1); // Clip off the '!' on the string.
+	
+	// Clip end punctuation and save it if there is any.
+	char end_char = ' ';
+	const int last_pos = keyword.GetSize() - 1;
+	if (keyword.IsNumeric(last_pos) == false &&
+	    keyword.IsLetter(last_pos) == false) {
+	  end_char = keyword[keyword.GetSize() - 1];
+	  keyword.ClipEnd(1);
+	}
+	// User can end a word in a '!' to preserve other punctuation...
+	if (end_char == '!') end_char = ' ';
+
+	// Determine what filename contains the new word...
+	cHelpEntry * found_entry = manager->FindEntry(keyword);
+	if (found_entry == NULL) {
+	  if (manager->GetVerbose() == true) {
+	    cerr << "  Warning: unknown help keyword \""
+		 << keyword << "\"." << endl;
+	  }
+	  new_word.Set("<a href=\"help.%s.html\">%s</a>%c",
+		       keyword(), keyword(), end_char);
+	}
+	else {
+	  new_word.Set("<a href=\"%s\">%s</a>%c",
+		  found_entry->GetHTMLFilename()(), keyword(), end_char);
+	}
+
+	// Rebuild the description with the new word...
+	out_desc.Replace(found_word, new_word, pos);
+	pos += new_word.GetSize();
+      }
+    }
+
+    fp << out_desc << endl;
+  }
+}
+

Copied: trunk/source/tools/cHelpType.h (from rev 337, trunk/source/tools/help_type.hh)
===================================================================
--- trunk/source/tools/help_type.hh	2005-10-07 01:02:35 UTC (rev 337)
+++ trunk/source/tools/cHelpType.h	2005-10-08 02:02:38 UTC (rev 338)
@@ -0,0 +1,46 @@
+//////////////////////////////////////////////////////////////////////////////
+// Copyright (C) 1993 - 2003 California Institute of Technology             //
+//                                                                          //
+// Read the COPYING and README files, or contact 'avida at alife.org',         //
+// before continuing.  SOME RESTRICTIONS MAY APPLY TO USE OF THIS FILE.     //
+//////////////////////////////////////////////////////////////////////////////
+
+#ifndef HELP_TYPE_HH
+#define HELP_TYPE_HH
+
+#ifndef STRING_HH
+#include "cString.h"
+#endif
+#ifndef TLIST_HH
+#include "tList.hh"
+#endif
+
+class cHelpAlias;
+class cHelpEntry;
+class cHelpFullEntry;
+class cHelpManager;
+class cString; // aggregate
+template <class T> class tList; // aggregate
+
+class cHelpType {
+private:
+  cString name;
+  tList<cHelpEntry> entry_list;
+  cHelpManager * manager;
+  int num_entries;
+private:
+  // disabled copy constructor.
+  cHelpType(const cHelpType &);
+public:
+  cHelpType(const cString & _name, cHelpManager * _manager)
+    : name(_name), manager(_manager), num_entries(0) { ; }
+  ~cHelpType();
+  cHelpFullEntry * AddEntry(const cString & _name, const cString & _desc);
+  cHelpAlias * AddAlias(const cString & alias_name, cHelpFullEntry * entry);
+  const cString & GetName() const { return name; }
+  cHelpEntry * FindEntry(const cString & entry_name);
+
+  void PrintHTML();
+};
+
+#endif

Copied: trunk/source/tools/cHistogram.cc (from rev 337, trunk/source/tools/histogram.cc)
===================================================================
--- trunk/source/tools/histogram.cc	2005-10-07 01:02:35 UTC (rev 337)
+++ trunk/source/tools/cHistogram.cc	2005-10-08 02:02:38 UTC (rev 338)
@@ -0,0 +1,88 @@
+//////////////////////////////////////////////////////////////////////////////
+// Copyright (C) 1993 - 2003 California Institute of Technology             //
+//                                                                          //
+// Read the COPYING and README files, or contact 'avida at alife.org',         //
+// before continuing.  SOME RESTRICTIONS MAY APPLY TO USE OF THIS FILE.     //
+//////////////////////////////////////////////////////////////////////////////
+
+#ifndef HISTOGRAM_HH
+#include "cHistogram.h"
+#endif
+
+#ifndef FUNCTIONS_HH
+#include "functions.h"
+#endif
+
+extern "C" {
+#include <stdio.h>
+}
+
+#include <iostream>
+
+using namespace std;
+
+// cHistogram /////////////////////////////////////////////////////////////////
+
+cHistogram::cHistogram(int in_max, int in_min) {
+  max_bin = in_max;
+  min_bin = in_min;
+  entry_count = 0;
+  entry_total = 0;
+
+  int num_bins = max_bin - min_bin + 1;
+  bins = new int[num_bins];
+  for (int i = 0; i < num_bins; i++)   bins[i] = 0;
+}
+
+void cHistogram::Resize(int new_max, int new_min)
+{
+#ifdef DEBUG
+  if (new_max < new_min) {
+    cerr << "Error: Trying to resize histogram to [" << new_min << "," << new_max << "]" << endl;
+    return;
+  }
+#endif
+
+  // Calculate new num bins.
+  int new_num_bins = new_max - new_min + 1;
+
+  // Setup new bins, copying over information...
+  int cur_bin = 0;
+  int overlap_min = Max(min_bin, new_min);
+  int overlap_max = Min(max_bin, new_max);
+
+  int * new_bins = new int[new_num_bins];
+  for (cur_bin = new_min; cur_bin < min_bin; cur_bin++)
+    new_bins[cur_bin - new_min] = 0;
+  for (cur_bin = max_bin; cur_bin <= new_max; cur_bin++)
+    new_bins[cur_bin - new_min] = 0;
+  for (cur_bin = overlap_min; cur_bin <= overlap_max; cur_bin++)
+    new_bins[cur_bin - new_min] = bins[cur_bin - min_bin];
+
+  // Re-count bins...
+  int new_count = 0;
+  int new_total = 0;
+  for (int i = 0; i < new_num_bins; i++) {
+    new_count += new_bins[i];
+    new_total += new_bins[i] * (i + new_min);
+  }
+  entry_count = new_count;
+  entry_total = new_total;
+
+  delete [] bins;
+  bins = new_bins;
+  max_bin = new_max;
+  min_bin = new_min;
+}
+
+void cHistogram::Print()
+{
+  FILE * fp = fopen("test.dat", "w");
+  fprintf(fp, "Min = %d, Max = %d, Count = %d, Total = %d, Ave = %f\n",
+	  min_bin, max_bin, entry_count, entry_total, GetAverage());
+  for (int i = min_bin; i <= max_bin; i++) {
+    fprintf(fp, "%d : %d\n", i, bins[i - min_bin]);
+  }
+  fflush(fp);
+  fclose(fp);
+}

Copied: trunk/source/tools/cHistogram.h (from rev 337, trunk/source/tools/histogram.hh)

Copied: trunk/source/tools/cIndexedBlockStruct.cc (from rev 337, trunk/source/tools/indexed_block_struct.cc)
===================================================================
--- trunk/source/tools/indexed_block_struct.cc	2005-10-07 01:02:35 UTC (rev 337)
+++ trunk/source/tools/cIndexedBlockStruct.cc	2005-10-08 02:02:38 UTC (rev 338)
@@ -0,0 +1,266 @@
+//////////////////////////////////////////////////////////////////////////////
+// Copyright (C) 1993 - 2003 California Institute of Technology             //
+//                                                                          //
+// Read the COPYING and README files, or contact 'avida at alife.org',         //
+// before continuing.  SOME RESTRICTIONS MAY APPLY TO USE OF THIS FILE.     //
+//////////////////////////////////////////////////////////////////////////////
+
+#ifndef INDEXED_BLOCK_STRUCT_HH
+#include "cIndexedBlockStruct.h"
+#endif
+
+#include <iostream>
+
+using namespace std;
+
+//////////////////////////
+//  cIndexedBlockStruct
+//////////////////////////
+
+cIndexedBlockStruct::cIndexedBlockStruct(int in_num_scaled, int in_num_fixed,
+					 int in_num_ref)
+{
+  num_fixed = in_num_fixed;
+  num_scaled = in_num_scaled;
+  num_ref = in_num_ref;
+  num_data = 0;
+
+  fixed_array = new cFixedBlock[num_fixed];
+  scaled_array = new cRefBlock[num_scaled];
+  ref_array = new int[num_ref];
+
+  int i;
+  for (i = 0; i < num_ref; i++) {
+    ref_array[i] = -1;
+  }
+
+  fixed_used(0, 0);
+  scaled_used = 0;
+
+  total_size = 0;
+  fixed_size = 0;
+}
+
+cIndexedBlockStruct::~cIndexedBlockStruct()
+{
+  delete [] scaled_array;
+  delete [] fixed_array;
+  delete [] ref_array;
+}
+
+int cIndexedBlockStruct::AddData(int in_ref, int in_size)
+{
+  // Only allow positive sized data, and only if there is room.
+  if (in_size <= 0 || scaled_used >= num_scaled) return -1;    
+
+  // If this reference is already represented, combine them.
+  if (ref_array[in_ref] >= 0) {
+    in_size += scaled_array[ref_array[in_ref]].GetSize();
+    RemoveRef(in_ref);
+  }
+
+  scaled_array[scaled_used].SetRef(in_ref);
+  scaled_array[scaled_used].SetSize(in_size);
+  ref_array[in_ref] = scaled_used;
+  
+  total_size += in_size;
+  num_data++;
+
+  return scaled_used++;
+}
+
+int cIndexedBlockStruct::AddDataTo(int in_ref, int in_index)
+{
+  if (ref_array[in_ref] < 0) num_data++;
+
+  scaled_array[in_index].SetRef(in_ref);
+  ref_array[in_ref] = in_index;
+
+  return scaled_array[in_index].GetSize();
+}
+
+void cIndexedBlockStruct::Clear()
+{
+  for (int i = 0; i < num_ref; i++) {
+    ref_array[i] = -1;
+  }
+
+  fixed_used(0,0);
+  scaled_used = 0;
+
+  total_size = 0;
+  num_data = 0;
+}
+
+int cIndexedBlockStruct::Process()
+{
+  if (!fixed_size) {
+    CalcFixedSize();
+  }
+
+  int cur_scaled = 0;
+  int cur_fixed = 0;
+  int size_left = scaled_array[0].GetSize();
+
+  // Set up the internal data for the first scaled block.
+
+  scaled_array[0].SetStart(0, 0);
+
+  // Move through the fixed blocks assigning each to the corresponding scaled
+  // block.  This is done by keeping track of the current scaled block for
+  // a particular location, and keeping track the "size" until the next block.
+  
+  for(cur_fixed = 0; cur_fixed < num_fixed; cur_fixed++) {
+    // Set the current fixed block to point to whatever scaled block we are
+    // currently in.
+
+    fixed_array[cur_fixed].SetStart(cur_scaled);
+
+    // If the current scaled block covers the entire fixed block, then just
+    // adjust the size_left and move on.
+
+    if (size_left > fixed_size) {
+      size_left -= fixed_size;
+      continue;
+    }
+
+    // Otherwise, start moving through the scaled blocks until the size can
+    // be covered.
+
+    while (size_left <= fixed_size) {
+      // move onto the next scaled block...
+      cur_scaled++;
+
+      //  Check to see if we are finished...
+      if (cur_scaled == scaled_used) {
+	fixed_used(cur_fixed, size_left);  // Store max coord
+	return cur_fixed + 1;
+      }
+
+      // Setup the next cRefBlock...
+
+      scaled_array[cur_scaled].SetStart(cur_fixed, size_left);
+      if (size_left == fixed_size) {
+	scaled_array[cur_scaled].SetStart(cur_fixed + 1, 0);
+      }
+
+      // Add the size of the new cRefBlock onto the size_left.
+
+      size_left += scaled_array[cur_scaled].GetSize();
+    }
+
+    // Move onto the next fixed block.
+    size_left -= fixed_size;
+  }
+
+  return -1;
+}
+
+int cIndexedBlockStruct::Update()
+{
+  // @CAO make sure a process has been done at some point in the past?
+
+  // If the data to NULL ratio is too low, have the update fail.
+  // @CAO make this configurable!
+
+  if (num_data * 2 + 2 < scaled_used) {
+    return -1;
+  }
+
+  // Start out where the last Process() finished.
+
+  int cur_scaled = fixed_array[fixed_used.GetBlockNum()].GetStart();
+  int cur_fixed = scaled_array[cur_scaled].GetStart().GetBlockNum();
+  int cur_offset = scaled_array[cur_scaled].GetStart().GetOffset();
+  int size_left = scaled_array[cur_scaled].GetSize();
+
+  // Re-adjust to make sure we are starting at the begining of a fixed block.
+
+  if (cur_offset) {
+    size_left += cur_offset - fixed_size;
+    cur_fixed++;
+  }
+
+  // Move through the fixed blocks assigning each to the corresponding scaled
+  // block.  This is done by keeping track of the current scaled block for
+  // a particular location, and keeping track the "size" until the next block.
+  
+  for(; cur_fixed < num_fixed; cur_fixed++) {
+    // Set the current fixed block to point to whatever scaled block we are
+    // currently in.
+
+    fixed_array[cur_fixed].SetStart(cur_scaled);
+
+    // If the current scaled block covers the entire fixed block, then just
+    // adjust the size_left and move on.
+
+    if (size_left > fixed_size) {
+      size_left -= fixed_size;
+      continue;
+    }
+
+    // Otherwise, start moving through the scaled blocks until the size can
+    // be covered.
+
+    while (size_left <= fixed_size) {
+      // move onto the next scaled block...
+      cur_scaled++;
+
+      //  Check to see if we are finished...
+      if (cur_scaled == scaled_used) {
+	fixed_used(cur_fixed, size_left);  // Store max coord
+	return cur_fixed + 1;
+      }
+
+      // Setup the next cScaledBlock...
+
+      scaled_array[cur_scaled].SetStart(cur_fixed, size_left);
+      if (size_left == fixed_size) {
+	scaled_array[cur_scaled].SetStart(cur_fixed + 1, 0);
+      }
+
+      // Add the size of the new cScaledBlock onto the size_left.
+
+      size_left += scaled_array[cur_scaled].GetSize();
+    }
+
+    // Move onto the next fixed block.
+    size_left -= fixed_size;
+  }
+
+  return -1;
+}
+
+int cIndexedBlockStruct::Compress()
+{
+  int scan_loc;
+  int write_loc = 0;
+
+  total_size = 0;
+  for (scan_loc = 0; scan_loc < scaled_used; scan_loc++) {
+    if (scaled_array[scan_loc].GetRef() >= 0) {
+      if (scan_loc != write_loc) {
+	scaled_array[write_loc] = scaled_array[scan_loc];
+	scaled_array[scan_loc].SetRef(-1);
+	scaled_array[scan_loc].SetSize(0);
+	ref_array[scaled_array[write_loc].GetRef()] = write_loc;
+      }
+      total_size += scaled_array[write_loc].GetSize();
+      write_loc++;
+    }
+  }
+
+  scaled_used = write_loc;
+
+  if (scaled_used != num_data)
+    cout << "Warning: after Compress() scaled_used = " << scaled_used << ", while num_data = " << num_data << endl;
+
+  return scaled_used;
+}
+
+void cIndexedBlockStruct::RemoveRef(int in_ref)
+{
+  if (ref_array[in_ref] >= 0) num_data--;
+  scaled_array[ref_array[in_ref]].SetRef(-1);
+  ref_array[in_ref] = -1;
+}

Copied: trunk/source/tools/cIndexedBlockStruct.h (from rev 337, trunk/source/tools/indexed_block_struct.hh)
===================================================================
--- trunk/source/tools/indexed_block_struct.hh	2005-10-07 01:02:35 UTC (rev 337)
+++ trunk/source/tools/cIndexedBlockStruct.h	2005-10-08 02:02:38 UTC (rev 338)
@@ -0,0 +1,147 @@
+//////////////////////////////////////////////////////////////////////////////
+// Copyright (C) 1993 - 2003 California Institute of Technology             //
+//                                                                          //
+// Read the COPYING and README files, or contact 'avida at alife.org',         //
+// before continuing.  SOME RESTRICTIONS MAY APPLY TO USE OF THIS FILE.     //
+//////////////////////////////////////////////////////////////////////////////
+
+// See block_struct_proto.hh for a good description of this structure.
+
+// This file is a variation of the cBlockStruct data structure.  It uses
+// reference numbers (which it takes in and passed out) rather than void
+// pointers.  Additionally, it has a third array in which index i contains
+// the location in the scaled array for reference number i, so that 
+// reference numbers are not lost with compression.  The structure must be
+// initialized with the maximum reference number which will be passed into
+// it (so as to create the third array of that size.
+
+#ifndef INDEXED_BLOCK_STRUCT_HH
+#define INDEXED_BLOCK_STRUCT_HH
+
+#ifndef FIXED_BLOCK_HH
+#include "cFixedBlock.h"
+#endif
+#ifndef FIXED_COORDS_HH
+#include "cFixedCoords.h"
+#endif
+#ifndef REF_BLOCK_HH
+#include "cRefBlock.h"
+#endif
+#ifndef UINT_HH
+#include "uint.hh"
+#endif
+
+class cFixedBlock; // accessed
+class cRefBlock; // accessed
+class cFixedCoords; // aggregate
+class cUInt; // aggregate
+
+class cIndexedBlockStruct {
+private:
+  cFixedBlock * fixed_array;
+  cRefBlock * scaled_array;
+  int * ref_array;
+
+  int num_fixed;
+  int num_scaled;
+  int num_ref;
+  int num_data;
+
+  cFixedCoords fixed_used;
+  int scaled_used;
+
+  cUInt total_size;
+  int fixed_size;
+public:
+  cIndexedBlockStruct(int in_num_scaled = 1, int in_num_fixed = 1,
+		      int in_num_ref = 1);
+  ~cIndexedBlockStruct();
+
+  // The following functions add a single piece of data to the scaled array,
+  // but do not update the fixed array yet.  In the first, the data and its
+  // size are entered, and an index into the scaled block array returned, or
+  // else -1 if the array is full.  In the second, the data and the index
+  // into the array are entered, and the size at that location returned.
+  int AddData(int in_ref, int in_size);
+  int AddDataTo(int in_ref, int in_index);
+
+  // This function removes all of the data from the structure.
+  void Clear();
+
+  // This function takes the scaled array, and from it fully constructs the
+  // proper fixed array.  Any information  which was in the fixed array is
+  // completely erased and re-constructed.  The number of cFixedBlock's used
+  // is returned, or -1 if it overflows.
+  int Process();
+
+  // The next function looks at data which has been taken in since the last
+  // time the fixed array was built or updated, and the new info at the end.
+  // The total number of cFixedBlock's used is returned, or -1 if it overflows.
+  int Update();
+
+  // This function takes the scaled array, and removes any elements from it
+  // which no longer point to data, and compresses everything to the begining.
+  // This should always be followed shortly by adding any new data, and then
+  // a Process().  The new number of cRefBlock's used is returned.
+  int Compress();
+
+  // Two functions to retrieve data from the structure.
+  inline int Find(cFixedCoords & search_coords) const;
+  inline int Find(int in_block, int in_offset) const;
+  inline int Find(cUInt in_position) const;
+
+  // A function to remove data from the structure...
+  void RemoveRef(int in_ref);
+
+  // Finally, internal variable control...
+  inline int GetFixedSize() const { return fixed_size; }
+  inline int GetBlocksUsed() const { return fixed_used.GetBlockNum() + 1; }
+  inline void SetFixedSize(int in_fs) {
+    fixed_size = in_fs;
+  }
+  inline void CalcFixedSize() {
+    if (num_data && total_size.AsInt()) {
+      fixed_size = (total_size / num_data).AsInt();
+    }
+    else fixed_size = 1;
+  }
+};
+
+inline int cIndexedBlockStruct::Find(cFixedCoords & search_coords) const
+{
+  // Make sure the find is within range.
+  if (search_coords >= fixed_used) {
+    return -1;
+  }
+
+  // Find the starting point in the scaled array for the search.
+  int scaled_loc = fixed_array[search_coords.GetBlockNum()].GetStart();
+  cFixedCoords cur_coords = scaled_array[scaled_loc].GetStart();
+
+  // Starting at the starting point, move through the array until the entry
+  // which covers this area is found.
+  cur_coords.Add(0, scaled_array[scaled_loc].GetSize(), fixed_size);
+
+  while (cur_coords <= search_coords) {
+    scaled_loc++;
+    cur_coords.Add(0, scaled_array[scaled_loc].GetSize(), fixed_size);
+  }
+
+  // Return the data in the found entry.
+  return scaled_array[scaled_loc].GetRef();
+}
+
+inline int cIndexedBlockStruct::Find(int in_block, int in_offset) const
+{
+  cFixedCoords search_coords(in_block, in_offset);
+  return Find(search_coords);
+}
+
+inline int cIndexedBlockStruct::Find(cUInt in_position) const
+{
+  cFixedCoords search_coords((in_position /= fixed_size).AsInt(),
+			     (in_position %= fixed_size).AsInt());
+  return Find(search_coords);
+}
+
+#endif

Copied: trunk/source/tools/cInitFile.cc (from rev 337, trunk/source/tools/init_file.cc)
===================================================================
--- trunk/source/tools/init_file.cc	2005-10-07 01:02:35 UTC (rev 337)
+++ trunk/source/tools/cInitFile.cc	2005-10-08 02:02:38 UTC (rev 338)
@@ -0,0 +1,272 @@
+//////////////////////////////////////////////////////////////////////////////
+// Copyright (C) 1993 - 2003 California Institute of Technology             //
+//                                                                          //
+// Read the COPYING and README files, or contact 'avida at alife.org',         //
+// before continuing.  SOME RESTRICTIONS MAY APPLY TO USE OF THIS FILE.     //
+//////////////////////////////////////////////////////////////////////////////
+
+#ifndef INIT_FILE_HH
+#include "cInitFile.h"
+#endif
+
+#ifndef STRING_ITERATOR_HH
+#include "cStringIterator.h"
+#endif
+
+using namespace std;
+
+////////////////
+//  cInitFile
+////////////////
+
+cInitFile::cInitFile() : filetype("unknown"), active_line(0)
+{
+}
+
+cInitFile::cInitFile(cString in_filename)
+  : cFile(in_filename)
+  , filetype("unknown")
+  , active_line(0)
+{
+}
+
+cInitFile::~cInitFile()
+{
+}
+
+void cInitFile::Load()
+{
+  if (!IsOpen()) return;   // The file must be opened!
+  cStringList line_list;   // Create a list to load all of the lines into.
+
+  cString buf;
+  ReadLine(buf);
+
+  // If this file doesn't work properly, return!
+  if ( Eof() && !buf.GetSize() ) return;
+
+  line_list.PushRear(buf);
+
+  ReadLine(buf);
+  while( !Eof() || buf.GetSize() ){
+    line_list.PushRear(buf);
+    ReadLine(buf);
+  }
+
+  // Copy all of the lines into the line array.
+  const int file_size = line_list.GetSize();
+  line_array.Resize(file_size);
+
+  for (int i = 0; i < file_size; i++) {
+    line_array[i].line = line_list.Pop();
+    line_array[i].line_num = i;
+    line_array[i].used = false;
+  }
+}
+
+void cInitFile::LoadStream(istream & in_stream)
+{
+  if (in_stream.good() == false) {
+    cerr << "Bad stream sent to cInitFile::LoadStream()" << endl;
+    return;
+  }
+
+  cStringList line_list;   // Create a list to load all of the lines into.
+
+  char cur_line[MAX_STRING_LENGTH];
+  in_stream.getline(cur_line, MAX_STRING_LENGTH);
+
+  // If this file doesn't work properly, return.
+  if( !in_stream && !strlen(cur_line) )  return;
+
+  in_stream.getline(cur_line, MAX_STRING_LENGTH);
+  while ( in_stream ) {
+    line_list.PushRear(cur_line);
+    in_stream.getline(cur_line, MAX_STRING_LENGTH);
+  }
+
+  // Copy all of the lines into the line array.
+  const int file_size = line_list.GetSize();
+  line_array.Resize(file_size);
+
+  for (int i = 0; i < file_size; i++) {
+    line_array[i].line = line_list.Pop();
+    line_array[i].line_num = i;
+    line_array[i].used = false;
+  }
+}
+
+
+void cInitFile::Save(const cString & in_filename)
+{
+  cString save_filename(GetFilename());
+  if (in_filename != "") save_filename = in_filename;
+  
+  ofstream fp_save(save_filename());
+
+  // Go through the lines saving them...
+  for (int i = 0; i < line_array.GetSize(); i++) {
+    fp_save << line_array[i].line << endl;
+  }
+
+  fp_save.close();
+}
+
+
+void cInitFile::ReadHeader()
+{
+  cString type_line = GetLine(0);
+  cString format_line = GetLine(1);
+
+  if (type_line.PopWord() == "#filetype") filetype = type_line.PopWord();
+  if (format_line.PopWord() == "#format") file_format.Load(format_line);
+}
+
+
+void cInitFile::Compress()
+{
+  // We're going to handle this compression in multiple passes to make it
+  // clean and easy.
+
+  const int num_lines = line_array.GetSize();
+
+  // PASS 1: Remove all comments -- everything after a '#' sign -- and
+  // compress all whitespace into a single space.
+  for (int i = 0; i < num_lines; i++) {
+    cString & cur_line = line_array[i].line;
+
+    // Remove all characters past a comment mark and reduce whitespace.
+    int comment_pos = cur_line.Find('#');
+    if (comment_pos >= 0) cur_line.Clip(comment_pos);
+    cur_line.CompressWhitespace();
+  }
+
+  // PASS 2: Merge each line ending with a continue marker '\' with the
+  // next line.
+
+  int prev_line_id = -1;
+  bool continued = false;
+  for (int i = 0; i < num_lines; i++) {
+    // If the current line is a continuation, append it to the previous line.
+    if (continued == true) {
+      line_array[prev_line_id].line += line_array[i].line;
+      line_array[i].line = "";
+    }
+    else prev_line_id = i;
+
+    // See if the prev_line is continued, and if it is, take care of it.
+    cString & prev_line = line_array[prev_line_id].line;
+    if (prev_line.GetSize() > 0 &&
+	prev_line[prev_line.GetSize() - 1] == '\\') {
+      prev_line.ClipEnd(1);  // Remove continuation mark.
+      continued = true;
+    }
+    else continued = false;
+  }
+
+  // PASS 3: Remove now-empty lines.
+
+  int next_id = 0;
+  for (int i = 0; i < num_lines; i++) {
+    // If we should keep this line, compact it.
+    if (line_array[i].line.GetSize() > 0) {
+      if (next_id != i) line_array[next_id] = line_array[i];
+      next_id++;
+    }
+  }
+
+  // Clip any extra lines at the end of the array.
+
+  line_array.Resize(next_id);
+
+  // Move the active line back to the beginning to avoid confusion.
+  active_line = 0;
+}
+
+
+void cInitFile::AddLine(cString & in_string)
+{
+  extra_lines.Push(in_string);
+}
+
+cString cInitFile::GetLine(int line_num)
+{
+  if (line_num < 0 || line_num >= line_array.GetSize()) return "";
+  return line_array[line_num].line;
+}
+
+
+bool cInitFile::Find(cString & in_string, const cString & keyword,
+		     int col) const
+{
+  bool found = false;
+
+  // Loop through all of the lines looking for this keyword.  Start with
+  // the actual file...
+  for (int line_id = 0; line_id < line_array.GetSize(); line_id++) {
+    cString cur_string = line_array[line_id].line;
+
+    // If we found the keyword, return it and stop.    
+    if (cur_string.GetWord(col) == keyword) {
+      line_array[line_id].used = true;
+      in_string = cur_string;
+      found = true;
+    }
+  }
+
+  // Next, look through any extra lines appended to the file.
+  cStringIterator list_it(extra_lines);
+  while ( list_it.AtEnd() == false ) {
+    list_it.Next();
+    cString cur_string = list_it.Get();
+
+    // If we found the keyword, return it and stop.
+    if (cur_string.GetWord(col) == keyword) {
+      in_string = cur_string;
+      found = true;
+    }
+  }
+
+  return found;    // Not Found...
+}
+
+
+cString cInitFile::ReadString(const cString & name, cString def) const
+{
+  // See if we definately can't find the keyword.
+  if (name == "" || IsOpen() == false) return def;
+
+  // Search for the keyword.
+  cString cur_line;
+  if (Find(cur_line, name, 0) == false) {
+    if (verbose == true) {
+      cerr << "Warning: " << name << " not in \"" << GetFilename()
+	   << "\", defaulting to: " << def <<endl;
+    }
+    return def;
+  }
+
+  // Pop off the keyword, and return the remainder of the line.
+  cur_line.PopWord();
+  return cur_line;
+}
+
+
+bool cInitFile::WarnUnused() const
+{
+  bool found = false;
+
+  for (int i = 0; i < line_array.GetSize(); i++) {
+    if (line_array[i].used == false) {
+      if (found == false) {
+        found = true;
+        cerr << "Warning: unknown lines in input file '" << filename << "':" << endl;
+      }
+      cerr << " " << line_array[i].line_num + 1 << ": " << line_array[i].line << endl;
+    }
+  }
+  
+  if (found == true) cerr << endl;
+
+  return found;
+}

Copied: trunk/source/tools/cInitFile.h (from rev 337, trunk/source/tools/init_file.hh)
===================================================================
--- trunk/source/tools/init_file.hh	2005-10-07 01:02:35 UTC (rev 337)
+++ trunk/source/tools/cInitFile.h	2005-10-08 02:02:38 UTC (rev 338)
@@ -0,0 +1,165 @@
+//////////////////////////////////////////////////////////////////////////////
+// Copyright (C) 1993 - 2003 California Institute of Technology             //
+//                                                                          //
+// Read the COPYING and README files, or contact 'avida at alife.org',         //
+// before continuing.  SOME RESTRICTIONS MAY APPLY TO USE OF THIS FILE.     //
+//////////////////////////////////////////////////////////////////////////////
+
+#ifndef INIT_FILE_HH
+#define INIT_FILE_HH
+
+#include <iostream>
+
+#ifndef FILE_HH
+#include "cFile.h"
+#endif
+#ifndef STRING_HH
+#include "cString.h"
+#endif
+#ifndef STRING_LIST_HH
+#include "cStringList.h"
+#endif
+#ifndef TARRAY_HH
+#include "tArray.hh"
+#endif
+
+/**
+ * A class to handle initialization files.
+ **/
+
+class cString; // aggregate
+class cStringList; // aggregate
+template <class T> class tArray; // aggregate
+
+class cInitFile : public cFile {
+private:
+  cInitFile(const cInitFile &);
+private:
+  struct sFileLineInfo {
+    cString line;
+    int line_num;
+    mutable bool used;
+  };
+
+  tArray<sFileLineInfo> line_array;
+  cStringList extra_lines;
+  cString filetype;
+  cStringList file_format;
+
+  int active_line;
+public:
+  /**
+   * The empty constructor constructs an object that is in a clean
+   * state. You can set the file to open with @ref cFile::Open() later on.
+   **/
+  cInitFile();
+  
+  /**
+   * Opens the file with the given name.
+   * 
+   * @param in_filename Name of the initialization file to open.
+   **/
+  cInitFile(cString in_filename);
+  
+  ~cInitFile();
+  
+  /**
+   * Loads the file into memory.
+   **/
+  void Load();
+  
+  /**
+   * Loads a stream into memory rather than a file.
+   **/
+  void LoadStream(std::istream & in_steam);
+  
+  void Save(const cString & in_filename = "");
+  
+  /**
+   * Parse heading information about the contents of the file loaded into
+   * memory, if available.
+   **/
+  void ReadHeader();
+
+  /**
+   * Remove all comments and whitespace from a file loaded into memory.
+   * Comments are currently marked with the character '#'.
+   **/
+  void Compress();
+  
+  /** 
+   * Add a line to the beginning of the file in memory.
+   * This function is used by @ref cGenesis.
+   *
+   * @param in_string The string to be added.
+   **/
+  void AddLine(cString & in_string);
+  
+  /**
+   * Get a line from the file in memory. If called without parameters,
+   * the first line of the file is returned.
+   *
+   * @param line_num The line count of the line to be returned 
+   * (starting from 0).
+   **/
+  cString GetLine(int line_num=0);
+  
+
+  /**
+   * Get the active line and advance to the next line.
+   **/
+  cString GetNextLine() { return GetLine(active_line++); }
+
+
+  /**
+   * Reset the active line to the beginning (or the point specified...
+   **/
+  void ResetLine(int new_pos=0) { active_line = new_pos; }
+
+  /**
+   * Returns the line number that is active.
+   **/
+  int GetLineNum() { return active_line; }
+
+  /**
+   * Checks whether any line contains a given keyword in the specified 
+   * column. Stops when the first occurrence of the keyword is found.
+   *
+   * @return TRUE if keyword is found, FALSE otherwise.
+   * @param in_string A string variable that will contain the found line
+   * if search succeeds, and will have undefined contents otherwise.
+   * @param keyword The keyword to look for.
+   * @param col The column in which the keyword should be found.
+   **/
+  bool Find(cString & in_string, const cString & keyword, int col) const;
+  
+  /**
+   * Reads an entry in the initialization file that has a given keyword
+   * in the first column. The keyword is not part of the returned string.
+   *
+   * @return The entry that has been found.
+   * @param name The keyword to look for (the name of the entry).
+   * @param def If the keyword is not found, def is returned. This allows
+   * one to set standard values that are used if the user does not override
+   * them.
+   **/
+  cString ReadString(const cString & name, cString def = "") const;
+  
+  /**
+   * Looks over all lines loaded into the file, and warns if any of them
+   * have not been the targets of the Find() method.  All methods that
+   * search the file for a keyword use find, so this can be used to locate
+   * keywords that are not understood by the program.
+   **/
+  bool WarnUnused() const;
+
+  /**
+   * Return the number of lines in memory.
+   **/
+  int GetNumLines() const { return line_array.GetSize(); }
+
+  const cString & GetFiletype() { return filetype; }
+  cStringList & GetFormat() { return file_format; }
+};
+
+#endif

Copied: trunk/source/tools/cIntSum.cc (from rev 337, trunk/source/tools/int_sum.cc)
===================================================================
--- trunk/source/tools/int_sum.cc	2005-10-07 01:02:35 UTC (rev 337)
+++ trunk/source/tools/cIntSum.cc	2005-10-08 02:02:38 UTC (rev 338)
@@ -0,0 +1,14 @@
+//////////////////////////////////////////////////////////////////////////////
+// Copyright (C) 1993 - 2003 California Institute of Technology             //
+//                                                                          //
+// Read the COPYING and README files, or contact 'avida at alife.org',         //
+// before continuing.  SOME RESTRICTIONS MAY APPLY TO USE OF THIS FILE.     //
+//////////////////////////////////////////////////////////////////////////////
+
+#ifndef INT_SUM_HH
+#include "cIntSum.h"
+#endif
+
+// cIntSum ///////////////////////////////////////////////////////////////////
+
+const double cIntSum::INF_ERR = 0;

Copied: trunk/source/tools/cIntSum.h (from rev 337, trunk/source/tools/int_sum.hh)

Copied: trunk/source/tools/cIntegratedSchedule.cc (from rev 337, trunk/source/tools/integrated_schedule.cc)
===================================================================
--- trunk/source/tools/integrated_schedule.cc	2005-10-07 01:02:35 UTC (rev 337)
+++ trunk/source/tools/cIntegratedSchedule.cc	2005-10-08 02:02:38 UTC (rev 338)
@@ -0,0 +1,203 @@
+//////////////////////////////////////////////////////////////////////////////
+// Copyright (C) 1993 - 2003 California Institute of Technology             //
+//                                                                          //
+// Read the COPYING and README files, or contact 'avida at alife.org',         //
+// before continuing.  SOME RESTRICTIONS MAY APPLY TO USE OF THIS FILE.     //
+//////////////////////////////////////////////////////////////////////////////
+
+#include "cIntegratedSchedule.h"
+
+#include "cChangeList.h"
+#include "functions.h"
+#include "cIntegratedScheduleNode.h"
+#include "cMerit.h"
+
+#include <iostream>
+using namespace std;
+
+
+/////////////////////////
+//  cIntegratedSchedule
+/////////////////////////
+
+cIntegratedSchedule::cIntegratedSchedule(int _item_count)
+  : cSchedule(_item_count)
+{
+  num_active_nodes = 0;
+
+  // Create the merit_chart; they should all init to default value.
+  merit_chart = new cMerit[item_count];
+  for (int i = 0; i < item_count; i++) {
+    merit_chart[i] = 0;
+  }
+}
+
+cIntegratedSchedule::~cIntegratedSchedule()
+{
+  for (int i = 0; i < node_array.GetSize(); i++) {
+    if (node_array[i] != NULL) delete node_array[i];
+  }
+  delete [] merit_chart;
+}
+
+bool cIntegratedSchedule::OK()
+{
+  // Test that we have an acurate count of the number of active nodes.
+
+  int test_active_nodes = 0;
+  for (int i = 0; i < node_array.GetSize(); i++) {
+    if (node_array[i]) test_active_nodes++;
+  }
+
+  assert(test_active_nodes == num_active_nodes); // active_node count mismatch.
+
+  // Test each node to make sure it is OK.
+
+  for (int i = 0; i < node_array.GetSize(); i++) {
+    if (node_array[i] != NULL) node_array[i]->OK();
+  }
+
+  return true;
+}
+
+
+void cIntegratedSchedule::Adjust(int item_id, const cMerit & new_merit)
+{
+  if (cChangeList *change_list = GetChangeList()) {
+    change_list->MarkChange(item_id);
+  }
+  // Grab the old_merit, the new merit, and compare them.
+  const cMerit old_merit = merit_chart[item_id];
+
+  // If the merit is still the same, we're done here.
+  if (old_merit == new_merit) return;
+
+  // Save the new merit to the merit_chart.
+  merit_chart[item_id] = new_merit;
+
+  // Re-adjust the lists.
+  int merit_magnitude = Max( old_merit.GetNumBits(), new_merit.GetNumBits() );
+  for (int i = 0; i < merit_magnitude; i++) {
+    bool old_bit = old_merit.GetBit(i);
+    bool new_bit = new_merit.GetBit(i);
+
+    if (old_bit && !new_bit) {
+      // Remove the item from this node...
+      node_array[i]->Remove(item_id);
+      if (node_array[i]->GetSize() == 0) RemoveNode(i);
+    }
+
+    if (!old_bit && new_bit) {
+      // Add the item from this node...
+      if (i >= node_array.GetSize() || !node_array[i]) InsertNode(i);
+      node_array[i]->Insert(item_id);
+    }
+  }
+}
+
+
+int cIntegratedSchedule::GetNextID()
+{
+  assert(node_array.GetSize() > 0);  // Running scheduler w/ no entries!
+
+  const int last_id = node_array.GetSize() - 1;
+
+  // Make sure there are organisms in the scheduler!
+  if (node_array[last_id] == NULL) return -1;
+
+  int next_id = -1;
+  while (next_id < 0) {
+    next_id = node_array[last_id]->GetNextID();
+  }
+  
+  return next_id;
+}
+
+double cIntegratedSchedule::GetStatus(int id)
+{
+  return merit_chart[id].GetDouble();
+}
+
+
+///////// --- private //////////
+
+void cIntegratedSchedule::InsertNode(int node_id)
+{
+  // Test if trying to create node that already exists.
+  assert(node_id >= node_array.GetSize() || node_array[node_id] == NULL);
+
+  cIntegratedScheduleNode * new_node =
+    new cIntegratedScheduleNode(item_count, node_id);
+
+  if (node_id >= node_array.GetSize()) ResizeNodes(node_id);
+
+  node_array[node_id] = new_node;
+
+  // Find the node to mark as the 'prev'.
+  for (int prev_id = node_id + 1; prev_id < node_array.GetSize(); prev_id++) {
+    cIntegratedScheduleNode * prev_node = node_array[prev_id];
+    if (prev_node) {
+      new_node->SetPrev(prev_node);
+      prev_node->SetNext(new_node);
+      prev_node->SetProcessSize(1 << (prev_id - node_id - 1));
+      break;
+    }
+  }
+
+  // And find the node to mark as the 'next'.
+  for (int next_id = node_id - 1; next_id >= 0; next_id--) {
+    cIntegratedScheduleNode * next_node = node_array[next_id];
+    if (next_node) {
+      new_node->SetNext(next_node);
+      next_node->SetPrev(new_node);
+      new_node->SetProcessSize(1 << (node_id - next_id - 1));
+      break;
+    }
+  }
+
+  num_active_nodes++;
+}
+
+void cIntegratedSchedule::RemoveNode(int node_id)
+{
+  assert(node_array[node_id] != NULL); // Trying to remove non-existant node.
+
+  cIntegratedScheduleNode * old_node = node_array[node_id];
+  cIntegratedScheduleNode * next_node = old_node->GetNext();
+  cIntegratedScheduleNode * prev_node = old_node->GetPrev();
+  node_array[node_id] = NULL;
+
+  if (next_node) next_node->SetPrev(prev_node);
+  if (prev_node) {
+    prev_node->SetNext(next_node);
+    prev_node->SetProcessSize(old_node->GetProcessSize() *
+			      prev_node->GetProcessSize() * 2);
+  }
+
+  if (node_id == node_array.GetSize() - 1) {
+    if (!old_node->GetNext()) ResizeNodes(0);
+    else ResizeNodes(old_node->GetNext()->GetID());
+  }
+
+  delete old_node;
+
+  num_active_nodes--;
+}
+
+void cIntegratedSchedule::ResizeNodes(int new_max)
+{
+  int old_size = node_array.GetSize();
+  int new_size = new_max + 1;  // 0 to new_max...
+
+  // Clean up tail portions of the array being cut off.
+  for (int i = new_size; i < old_size; i++) {
+    if (node_array[i]) delete node_array[i];
+  }
+
+  node_array.Resize(new_size);
+
+  // Mark as NULL any new cells added to the array.
+  for (int i = old_size; i < new_size; i++) {
+    node_array[i] = NULL;
+  }
+}

Copied: trunk/source/tools/cIntegratedSchedule.h (from rev 337, trunk/source/tools/integrated_schedule.hh)
===================================================================
--- trunk/source/tools/integrated_schedule.hh	2005-10-07 01:02:35 UTC (rev 337)
+++ trunk/source/tools/cIntegratedSchedule.h	2005-10-08 02:02:38 UTC (rev 338)
@@ -0,0 +1,53 @@
+//////////////////////////////////////////////////////////////////////////////
+// Copyright (C) 1993 - 2003 California Institute of Technology             //
+//                                                                          //
+// Read the COPYING and README files, or contact 'avida at alife.org',         //
+// before continuing.  SOME RESTRICTIONS MAY APPLY TO USE OF THIS FILE.     //
+//////////////////////////////////////////////////////////////////////////////
+
+#ifndef INTEGRATED_SCHEDULE_HH
+#define INTEGRATED_SCHEDULE_HH
+
+#ifndef SCHEDULE_HH
+#include "cSchedule.h"
+#endif
+#ifndef TARRAY_HH
+#include "tArray.hh"
+#endif
+
+/**
+ * The cIntegratedSchedule method relies on breaking up all merits into
+ * sums of powers of 2 (i.e. using the binary representation of the merit).
+ * All items with merits in the highest power of two will get the most
+ * time, and subsequent merit components will have time divided,
+ * continuing recursively.  The simplest way of doing this while maximizing
+ * evenness of distribution of time slices is to simply alternate executing
+ * the best, and everything else (where in everything else we again alternate
+ * with the best of this sub-list recursively).
+ **/
+
+class cIntegratedScheduleNode;
+class cMerit;
+template <class T> class tArray; // aggregate
+
+class cIntegratedSchedule : public cSchedule {
+private:
+  tArray<cIntegratedScheduleNode *> node_array;
+  int num_active_nodes;
+  cMerit * merit_chart;
+
+  void InsertNode(int node_id);
+  void RemoveNode(int node_id);
+  void ResizeNodes(int new_size);
+public:
+  cIntegratedSchedule(int _item_count);
+  ~cIntegratedSchedule();
+
+  void Adjust(int item_id, const cMerit & new_merit);
+  int GetNextID();
+  double GetStatus(int id);
+
+  bool OK();
+};
+
+#endif

Copied: trunk/source/tools/cIntegratedScheduleNode.cc (from rev 337, trunk/source/tools/integrated_schedule_node.cc)
===================================================================
--- trunk/source/tools/integrated_schedule_node.cc	2005-10-07 01:02:35 UTC (rev 337)
+++ trunk/source/tools/cIntegratedScheduleNode.cc	2005-10-08 02:02:38 UTC (rev 338)
@@ -0,0 +1,175 @@
+//////////////////////////////////////////////////////////////////////////////
+// Copyright (C) 1993 - 2003 California Institute of Technology             //
+//                                                                          //
+// Read the COPYING and README files, or contact 'avida at alife.org',         //
+// before continuing.  SOME RESTRICTIONS MAY APPLY TO USE OF THIS FILE.     //
+//////////////////////////////////////////////////////////////////////////////
+
+#ifndef INTEGRATED_SCHEDULE_NODE_HH
+#include "cIntegratedScheduleNode.h"
+#endif
+
+/////////////////////////////
+//  cIntegratedScheduleNode
+/////////////////////////////
+
+cIntegratedScheduleNode::cIntegratedScheduleNode(int _item_count, int in_id)
+  : active_array(_item_count)
+{
+  // Store the input variables.
+
+  node_id = in_id;
+
+  // Initialize the remaining variables.
+
+  for (int i = 0; i < active_array.GetSize(); i++) {
+    active_array[i] = 0;
+  }
+  first_entry = -1;
+  active_entry = -1;
+  size = 0;
+  process_size = 1;
+  process_count = 0;
+  execute = true;
+  next = NULL;
+  prev = NULL;
+}
+
+cIntegratedScheduleNode::~cIntegratedScheduleNode()
+{
+}
+
+
+bool cIntegratedScheduleNode::OK()
+{
+  bool result = true;
+
+  // Make sure the active_array is setup correctly.
+
+  int size_check = 0;
+  int next_check = first_entry;
+  for (int i = 0; i < active_array.GetSize(); i++) {
+    if (active_array[i] != 0) {
+      size_check++;
+      assert(next_check == i);  //  Node entries do no match!
+      next_check = active_array[i];
+    }
+  }
+  assert(next_check == -1);  // Node array not properly terminated.
+
+  // Make sure the sizes line up...
+  assert(size == size_check);  // size and active node count mismatch.
+
+  return result;
+}
+
+void cIntegratedScheduleNode::Insert(int item_id)
+{
+  assert(item_id >= 0 && item_id < active_array.GetSize());  // Illegal ID
+
+  // If this item is already active in this node, ignore this call...
+  if (active_array[item_id] != 0) return;
+
+  // See if we're dealing with a new first_entry...
+  if (first_entry == -1 || item_id < first_entry) {
+    active_array[item_id] = first_entry;
+    first_entry = item_id;
+  }
+  else {
+    // Otherwise find the predecessor to this item in the list...
+    int prev_item;
+    for (prev_item = item_id - 1; prev_item >= 0; prev_item--) {
+      if (active_array[prev_item] != 0) break;
+    }
+    assert(prev_item >= 0);  // prev_item is first, but not identified.
+    
+    // Make the predecessor point to it, and have it point to the CPU that
+    // the old predecessor pointed to.
+    active_array[item_id] = active_array[prev_item];
+    active_array[prev_item] = item_id;
+  }
+
+  size++;
+}
+
+void cIntegratedScheduleNode::Remove(int item_id)
+{
+  assert(item_id >= 0 && item_id < active_array.GetSize()); // Illegal ID
+
+  // If this item is already inactive, ignore this call...
+  if (active_array[item_id] == 0) return;
+
+  // If this is the first_entry, adjust it!
+  if (first_entry == item_id) {
+    first_entry = active_array[item_id];
+  }
+  else {
+    // Find the predecessor to this item in the list...
+    int prev_item;
+    for (prev_item = item_id - 1; prev_item >= 0; prev_item--) {
+      if (active_array[prev_item] != 0) break;
+    }
+    assert(prev_item >= 0);  // prev_item is first, but not identified.
+
+    // Make the predecessor point to the item removed used to point to.
+    active_array[prev_item] = active_array[item_id];
+  }
+
+  active_array[item_id] = 0;
+  size--;
+}
+
+
+// Execute everything on list, and then shift to calling the next node.
+// Wait for the next node to return a -1 before shifting back to this one.
+
+int cIntegratedScheduleNode::GetNextID()
+{
+  // Alternate between this node's Process and the next's.
+  if (execute == false) {
+    // If there is a next node, we may be working on it... 
+    int next_id = -1;
+    if (next != NULL) next_id = next->GetNextID();
+   
+    // If next_id is a -1, either we don't have a next node, or else it
+    // is finished with its execution.
+
+    if (next_id == -1) {
+      execute = true;
+      process_count = 0;
+      active_entry = -1;
+    }
+
+    return next_id;
+  }
+
+  // Find the next active_entry...
+  
+  // If we were at the end of the list, start over...
+  if (active_entry == -1) active_entry = first_entry;
+
+  // If this entry no longer exists, hunt for the next active entry manually...
+  else if (active_array[active_entry] == 0) {
+    while (active_entry < active_array.GetSize() &&
+	   active_array[active_entry] == 0) {
+      active_entry++;
+    }
+    if (active_entry == active_array.GetSize()) active_entry = -1;
+  }
+  
+  // Otherwise, if the entry does exist, we can just look the next one up.
+  else active_entry = active_array[active_entry];
+
+
+  // If we have now hit the end of this list, move on to the next node.
+
+  if (active_entry == -1) {
+    process_count++;
+    if (process_count >= process_size) execute = false;
+  }
+
+//  cout << "Running " << active_entry << " from node " << node_id
+//       << " (size = " << size << ", first = " << first_entry << ")" << endl;
+
+  return active_entry;
+}

Copied: trunk/source/tools/cIntegratedScheduleNode.h (from rev 337, trunk/source/tools/integrated_schedule_node.hh)

Copied: trunk/source/tools/cMerit.cc (from rev 337, trunk/source/tools/merit.cc)
===================================================================
--- trunk/source/tools/merit.cc	2005-10-07 01:02:35 UTC (rev 337)
+++ trunk/source/tools/cMerit.cc	2005-10-08 02:02:38 UTC (rev 338)
@@ -0,0 +1,90 @@
+//////////////////////////////////////////////////////////////////////////////
+// Copyright (C) 1993 - 2001 California Institute of Technology             //
+//                                                                          //
+// Read the COPYING and README files, or contact 'avida at alife.org',         //
+// before continuing.  SOME RESTRICTIONS MAY APPLY TO USE OF THIS FILE.     //
+//////////////////////////////////////////////////////////////////////////////
+
+#include "cMerit.h"
+
+
+using namespace std;
+
+
+void cMerit::UpdateValue(double in_value){
+  const int max_bits = sizeof(unsigned int)*8;
+  static double mult[max_bits];
+  static bool mult_initilalized = false;
+
+  // Do not allow negative merits.
+  if (in_value < 0.0) in_value = 0.0;
+
+  // Initilize multipliers only once
+  if( mult_initilalized == false ){
+    //cout<<"initializing multipliers"<<endl;
+    mult_initilalized = true;
+    for( int i=0; i<max_bits; ++i ){
+      mult[i] = pow((double)2,i);
+      //cout<<"  mult["<<i<<"] = "<<mult[i]<<endl;
+    }
+  }
+
+
+  value = in_value;
+
+  double mant = frexp (value , &bits);
+
+  //cout<<value<<" = "<<mant<<" * 2 ^ "<<bits<<endl;
+
+  if( bits > max_bits ){
+    offset = bits - max_bits;
+  }else{
+    offset = 0;
+  }
+
+  base = (unsigned int) (mant * mult[bits-offset-1] * 2 );
+
+  //cout<<value<<" = "<<base<<" ["<<bits<<" bits] "<<" * 2 ^ "<<offset;
+  //cout<<" = "<<(base * pow((double)2,offset))<<endl;
+}
+
+
+ostream & cMerit::BinaryPrint(ostream & os) const {
+  for( int i=GetNumBits()-1; i>=0; --i ){
+    os<<GetBit(i);
+  }
+  return os;
+}
+
+
+bool cMerit::OK() const {
+  double test_value = (double)base * pow((double)2,(int)offset);
+  int test_bits = (int)(log(value)/log((double)2)) + 1;
+  if( base == 0 ) test_bits = 0;
+
+  // Uncomment block for debugging output and assertion of OK
+  /*
+  cout<<"cMerit Ok? ";
+  cout<<base<<" * 2^"<<offset<<" = "<<test_value<<" ~= "<<value<<endl;
+  cout<<"\tnum_bits="<<GetNumBits()<<" ?= "<<test_bits<<endl;
+  BinaryPrint(cout)<<endl;
+
+  */
+  assert ( test_bits == bits &&
+	   ( test_value <= value * (1 + 1/UINT_MAX) ||
+	     test_value >= value / (1 + 1/UINT_MAX) ) );
+
+  return ( test_bits == bits &&
+	   ( test_value <= value * (1 + 1/UINT_MAX) ||
+	     test_value >= value / (1 + 1/UINT_MAX) ) );
+}
+
+
+
+
+ostream & operator<<(ostream & os, const cMerit & merit){
+  os<<merit.GetDouble();
+  return os;
+}
+
+

Copied: trunk/source/tools/cMerit.h (from rev 337, trunk/source/tools/merit.hh)

Copied: trunk/source/tools/cMessageClass.h (from rev 337, trunk/source/tools/message_class.hh)

Copied: trunk/source/tools/cMessageClosure.h (from rev 337, trunk/source/tools/message_closure.hh)
===================================================================
--- trunk/source/tools/message_closure.hh	2005-10-07 01:02:35 UTC (rev 337)
+++ trunk/source/tools/cMessageClosure.h	2005-10-08 02:02:38 UTC (rev 338)
@@ -0,0 +1,131 @@
+//////////////////////////////////////////////////////////////////////////////
+// Copyright (C) 1993 - 2003 California Institute of Technology             //
+//                                                                          //
+// Read the COPYING and README files, or contact 'avida at alife.org',         //
+// before continuing.  SOME RESTRICTIONS MAY APPLY TO USE OF THIS FILE.     //
+//////////////////////////////////////////////////////////////////////////////
+
+#ifndef MESSAGE_CLOSURE_HH
+#define MESSAGE_CLOSURE_HH
+
+#ifndef STRING_HH
+#include "cString.h"
+#endif
+
+class cMessageType;
+class cString; // aggregate
+class QString;
+
+class cMessageClosure{
+private:
+  cMessageType &_type;
+  const char *_function;
+  const char *_file;
+  int _line;
+  int _error;
+  int _op_count;
+  cString _msg;
+public:
+  cMessageClosure(
+    cMessageType &type,
+    const char *function_name,
+    const char *file_name,
+    int line_number
+  );
+  ~cMessageClosure(void);
+public:
+  /*
+  operator<< and operator() definitions for cMessageClosure.
+
+  Any kind of input can be placed behind the operator<<, really, but try
+  to not (further) overcrowd the class...
+
+  The operator is meant to convert its input into a string for display.
+  If for example you implement
+    cMessageClosure &operator<<(const myClass &instance);
+  then you can write a message thus:
+    DemoDebug << "this is a myClass instance: " << my_instance;
+  with the result:
+    "Debug [Demo] this is a myClass instance: stuff in my_instance."
+  */
+  cMessageClosure &operator<<(char c);
+  cMessageClosure &operator<<(unsigned char c);
+  cMessageClosure &operator<<(int i);
+  cMessageClosure &operator<<(unsigned int i);
+  cMessageClosure &operator<<(long i);
+  cMessageClosure &operator<<(unsigned long i);
+  cMessageClosure &operator<<(float f);
+  cMessageClosure &operator<<(double f);
+  cMessageClosure &operator<<(const void *p);
+  cMessageClosure &operator<<(const char *s);
+  cMessageClosure &operator<<(const QString &s);
+  /*
+  QString support is implemented outside of core of avida, in qt gui, so
+  that QString can remain undefined in gui-less builds.  -- kgn
+  */
+
+  cMessageClosure &operator()(char c){ return operator<<(c); }
+  cMessageClosure &operator()(unsigned char c){ return operator<<(c); }
+  cMessageClosure &operator()(int i){ return operator<<(i); }
+  cMessageClosure &operator()(unsigned int i){ return operator<<(i); }
+  cMessageClosure &operator()(long i){ return operator<<(i); }
+  cMessageClosure &operator()(unsigned long i){ return operator<<(i); }
+  cMessageClosure &operator()(float f){ return operator<<(f); }
+  cMessageClosure &operator()(double f){ return operator<<(f); }
+  cMessageClosure &operator()(const void *p){ return operator<<(p); }
+  cMessageClosure &operator()(const char *s){ return operator<<(s); }
+  cMessageClosure &operator()(const QString &s){ return operator<<(s); }
+
+  /*
+  cMessageClosure::va():
+  
+  Support for cString-based operator<< and operator() definitions in
+  cMessageClosure.  Variable argument lists are formatted and printed, a
+  la printf, into a temporary buffer; the contents of this buffer are
+  then appended to the cString _msg.
+  */
+  cMessageClosure &va(const char *fmt, ...);
+private:
+  void prefix(void);
+};
+
+/*
+you probably don't need to change these macros...
+*/
+
+// window compatibility
+#ifdef WIN32
+# ifndef __PRETTY_FUNCTION__
+#  define __PRETTY_FUNCTION__ "<unknown on win32>"
+# endif
+#endif
+
+#define _MSG_CLOSURE_FL(x)\
+  cMessageClosure(\
+    x,\
+    __PRETTY_FUNCTION__,\
+    __FILE__,\
+    __LINE__\
+  )
+
+#define _INFO_MSG(type)\
+  if (Info_ ## type ## _Msg.m_is_active)\
+    _MSG_CLOSURE_FL(Info_ ## type ## _Msg)
+
+#define _DEBUG_MSG(type)\
+  if (Debug_ ## type ## _Msg.m_is_active)\
+    _MSG_CLOSURE_FL(Debug_ ## type ## _Msg)
+
+#define _ERROR_MSG(type)\
+  if (Error_ ## type ## _Msg.m_is_active)\
+    _MSG_CLOSURE_FL(Error_ ## type ## _Msg)
+
+#define _FATAL_MSG(type)\
+  if (Fatal_ ## type ## _Msg.m_is_active)\
+    _MSG_CLOSURE_FL(Fatal_ ## type ## _Msg)
+
+#define _PLAIN_MSG(type)\
+  if (type ## _Msg.m_is_active)\
+    _MSG_CLOSURE_FL(type ## _Msg)
+
+#endif

Copied: trunk/source/tools/cMessageDisplay.cc (from rev 337, trunk/source/tools/message_display.cc)
===================================================================
--- trunk/source/tools/message_display.cc	2005-10-07 01:02:35 UTC (rev 337)
+++ trunk/source/tools/cMessageDisplay.cc	2005-10-08 02:02:38 UTC (rev 338)
@@ -0,0 +1,352 @@
+
+#ifndef _LIMITS_H___
+#include <limits.h>
+#endif
+#ifndef _STDIO_H_
+#include <stdio.h>
+#endif
+#ifndef _STDARG_H
+#include <stdarg.h>
+#endif
+
+#ifndef TRIO_TRIO_H
+#include "../third-party/trio/trio.h"
+#endif
+
+#ifndef _CPP_IOSTREAM
+#include <iostream>
+#endif
+
+#ifndef MESSAGE_DISPLAY_HDRS_HH
+#include "cMessageDisplay_headers.h"
+#endif
+
+
+using namespace std;
+
+
+/*
+pointers to the cMessageDisplay instantiations actually in use.
+each of the message classes gets a handle to one of the cMessageDisplay
+instantiations, so that by using the manipulator functions
+  void setStandardOutDisplay(cMessageDisplay &out)
+and
+  void setStandardErrDisplay(cMessageDisplay &err),
+the output and error messages can be redirected from, say, the console
+to a graphical window and back again (if you want).
+*/
+static cMessageDisplay *s_info_display;
+static cMessageDisplay *s_debug_display;
+static cMessageDisplay *s_error_display;
+static cMessageDisplay *s_fatal_display;
+static cMessageDisplay *s_noprefix_display;
+
+
+
+void setInfoDisplay(cMessageDisplay &info){
+  cout << "<setInfoDisplay>" << endl;
+  s_info_display = &info;
+  cout << "<setInfoDisplay> done." << endl;
+}
+void setDebugDisplay(cMessageDisplay &debug){
+  cout << "<setDebugDisplay>" << endl;
+  s_debug_display = &debug;
+  cout << "<setDebugDisplay> done." << endl;
+}
+void setErrorDisplay(cMessageDisplay &error){
+  cout << "<setErrorDisplay>" << endl;
+  s_error_display = &error;
+  cout << "<setErrorDisplay> done." << endl;
+}
+void setFatalDisplay(cMessageDisplay &fatal){
+  cout << "<setFatalDisplay>" << endl;
+  s_fatal_display = &fatal;
+  cout << "<setFatalDisplay> done." << endl;
+}
+void setNoPrefixDisplay(cMessageDisplay &noprefix){
+  cout << "<setNoPrefixDisplay>" << endl;
+  s_noprefix_display = &noprefix;
+  cout << "<setNoPrefixDisplay> done." << endl;
+}
+
+
+/*
+These booleans determine whether to print the function, file, and line
+number containing the message call.  The booleans are reset according to
+the contents of the environment variable "DEBUG_MESSAGING", which should
+be a comma-delimited list containing any of the three words
+  "chatter,where,function".
+
+Message types in the classes MCFatal and MCNoPrefix are always
+displayed; the remaining messages will only be displayed if
+DEBUG_MESSAGING contains "chatter".
+
+The line number and file containing the message call are printed if
+DEBUG_MESSAGING contains "where".
+
+The function containing the message call is printed only if
+DEBUG_MESSAGING contains "function".
+
+Note that message types of class "MCNoPrefix" will not print the
+function, file, or line number.
+*/
+static bool show_function = false;
+static bool show_where = false;
+static bool be_quiet = true;
+
+
+/*
+Definition of the five message classes.
+*/
+cMessageClass MCInfo("Info:", &s_info_display, false, false, false);
+cMessageClass MCDebug("Debug:", &s_debug_display, false, false, false);
+cMessageClass MCError("Error:", &s_error_display, false, true, false);
+cMessageClass MCFatal("Fatal:", &s_fatal_display, true, true, false);
+cMessageClass MCNoPrefix("NoPrefix:", &s_noprefix_display, false, true, true);
+
+/*
+cMessageClass constructor.
+*/
+cMessageClass::cMessageClass(
+  const char *class_name,
+  cMessageDisplay **msg_display,
+  bool is_fatal,
+  bool is_prefix,
+  bool no_prefix
+):m_class_name(class_name),
+  m_msg_display(msg_display),
+  m_is_fatal(is_fatal),
+  m_is_prefix(is_prefix),
+  m_no_prefix(no_prefix),
+  _configured(false)
+{
+  *msg_display = 0;
+}
+
+
+/*
+This configures the behavior of each cMessageClass and cMessageType
+according the contents of the environment variable DEBUG_MESSAGING.
+this is affected by setting the static booleans "show_function,
+show_where, be_quiet".
+
+These booleans determine whether to print the function, file, and line
+number containing the message call.  the booleans are reset according to
+the contents of the environment variable "DEBUG_MESSAGING", which should
+be a comma-delimited list containing any of the three words
+  "chatter,where,function".
+
+Message types in the classes MCFatal and MCNoPrefix are always
+displayed; the remaining messages will only be displayed if
+DEBUG_MESSAGING contains "chatter".
+
+The line number and file containing the message call are printed if
+DEBUG_MESSAGING contains "where".
+
+The function containing the message call is printed only if
+DEBUG_MESSAGING contains "function".
+
+Message types of class "MCNoPrefix" will not print the function, file,
+or line number.
+*/
+void
+cMessageClass::configure(cMessageType *message_type){
+  if(!_configured){
+    _configured = true;
+    char *denv = getenv("DEBUG_MESSAGING");
+    if(denv){
+      denv = strdup(denv);
+      char *tok = strtok(denv, ",");
+      while(tok){
+        if(strcmp(tok,"where") == 0){
+          show_where = true;
+        } else if (strcmp(tok,"function") == 0){
+          show_function = true;
+        } else if (strcmp(tok,"chatter") == 0){
+          be_quiet = false;
+        }
+        tok = strtok(NULL,",");
+      }
+      free(denv);
+    }
+  }
+  if( (this == &MCInfo)
+    ||(this == &MCDebug)
+    ||(this == &MCError)
+  ) message_type->m_is_active = !be_quiet;
+}
+
+
+/*
+cMessageType constructor.
+*/
+cMessageType::cMessageType(
+  const char *type_name,
+  cMessageClass &message_class
+):m_type_name(type_name),
+  m_message_class(message_class),
+  m_is_active(true)
+{ message_class.configure(this); }
+
+
+/*
+cMessageClosure constructor and destructor.
+*/
+cMessageClosure::cMessageClosure(
+  cMessageType &type,
+  const char *function_name,
+  const char *file_name,
+  int line_number
+):_type(type),
+  _function(function_name),
+  _file(file_name),
+  _line(line_number),
+  _error(INT_MAX),
+  _op_count(0)
+{}
+
+cMessageClosure::~cMessageClosure(void){
+  if(!(*_type.m_message_class.m_msg_display)){
+    cerr << "<~cMessageClosure> Warning:" << endl;
+    cerr << "<~cMessageClosure> message display classes not fully initialized;" << endl;
+    cerr << "<~cMessageClosure> directing messages of class \""
+      << cString(_type.m_type_name)
+      << "\" to its default output device..." << endl;
+    if(&_type.m_message_class == &MCInfo) {
+      (*_type.m_message_class.m_msg_display) = &s_info_msg_cout;
+    } else if(&_type.m_message_class == &MCDebug) {
+      (*_type.m_message_class.m_msg_display) = &s_debug_msg_cerr;
+    } else if(&_type.m_message_class == &MCError) {
+      (*_type.m_message_class.m_msg_display) = &s_error_msg_cerr;
+    } else if(&_type.m_message_class == &MCFatal) {
+      (*_type.m_message_class.m_msg_display) = &s_fatal_msg_cerr;
+    } else if(&_type.m_message_class == &MCNoPrefix) {
+      (*_type.m_message_class.m_msg_display) = &s_noprefix_msg_cout;
+    } else {
+      (*_type.m_message_class.m_msg_display) = &s_noprefix_msg_cout;
+    }
+  }
+  (*_type.m_message_class.m_msg_display)->out(_msg);
+  if(_type.m_message_class.m_is_fatal) (*_type.m_message_class.m_msg_display)->abort();
+}
+
+
+/*
+Pretty-printing for cMessageClosure.
+*/
+void
+cMessageClosure::prefix(void){
+  if(_op_count++ == 0 && !_type.m_message_class.m_no_prefix){
+    if(_type.m_message_class.m_is_prefix){
+      _msg += _type.m_type_name;
+      _msg += '-';
+    }
+    _msg += _type.m_message_class.m_class_name;
+    if(!_type.m_message_class.m_is_prefix || show_function || show_where){
+      bool colon = false;
+      if(!_type.m_message_class.m_is_prefix){
+        _msg += _type.m_type_name;
+        _msg += ": ";
+      }
+      if(show_function || show_where){
+        _msg += "<";
+      }
+      if(show_function){
+        _msg += _function;
+        colon = true;
+      }
+      if(show_where){
+        if(colon){_msg += ':';}
+        _msg += _file;
+        _msg += ':';
+        // FIXME:  consider move this varargs gunk to cString.  -- kgn.
+        {
+          int size = trio_snprintf((char *) 0, 0, "%i", _line);
+          char *buf = new char[size + 1];
+          assert(buf != 0);
+          trio_snprintf(buf, size+1, "%i", _line);
+          _msg += buf;
+          delete[] buf;
+        }
+      }
+      if(show_function || show_where){
+        _msg += ">";
+      }
+      _msg += ' ';
+    } else {
+      _msg += ':';
+    }
+  }
+}
+
+
+/*
+cMessageClosure::va():
+
+Support for cString-based operator<< and operator() definitions in
+cMessageClosure.  Variable argument lists are formatted and then printed
+into a temporary buffer; the contents of this buffer are then appended
+to the cString _msg.
+*/
+
+// FIXME:  consider move this varargs gunk to cString.  -- kgn.
+cMessageClosure &
+cMessageClosure::va(const char *fmt, ...)
+{
+  va_list ap;
+
+  va_start(ap, fmt);
+  int size = trio_vsnprintf((char *) 0, 0, fmt, ap);
+  va_end(ap);
+
+  char *buf = new char[size + 1];
+  assert(buf != 0);
+
+  va_start(ap, fmt);
+  trio_vsnprintf(buf, size+1, fmt, ap);
+  va_end(ap);
+
+  prefix();
+  _msg += buf;
+  delete[] buf;
+
+  return *this;
+}
+
+/*
+operator<< and operator() definitions for cMessageClosure.
+
+Any kind of input can be placed behind the operator<<, really, but try
+to not (further) overcrowd the class...
+
+The operator is meant to convert its input into a string for display.
+If for example you implement
+  cMessageClosure &operator<<(const myClass &instance);
+then you can write a message thus:
+  DemoDebug << "this is a myClass instance: " << my_instance;
+with the result:
+  "Debug [Demo] this is a myClass instance: stuff in my_instance."
+*/
+cMessageClosure &cMessageClosure::operator<<(char c){ prefix(); _msg += c; return *this; }
+cMessageClosure &cMessageClosure::operator<<(unsigned char c){ prefix(); _msg += c; return *this; }
+cMessageClosure &cMessageClosure::operator<<(int i){ return va("%d", i); }
+cMessageClosure &cMessageClosure::operator<<(unsigned int i){ return va("%u", i); }
+cMessageClosure &cMessageClosure::operator<<(long i){ return va("%ld", i); }
+cMessageClosure &cMessageClosure::operator<<(unsigned long i){ return va("%lu", i); }
+cMessageClosure &cMessageClosure::operator<<(float f){ return va("%g", f); }
+cMessageClosure &cMessageClosure::operator<<(double f){ return va("%g", f); }
+cMessageClosure &cMessageClosure::operator<<(const void *p){ return va("%p", p); }
+cMessageClosure &cMessageClosure::operator<<(const char *s){ prefix(); _msg += s; return *this; }
+
+/*
+Definition of the message type "NoPrefix_Msg".
+*/
+cMessageType NoPrefix_Msg("NoPrefix", MCNoPrefix);
+cMessageType Info_GEN_Msg("General", MCInfo);
+cMessageType Debug_GEN_Msg("General", MCDebug);
+cMessageType Error_GEN_Msg("General", MCError);
+cMessageType Fatal_GEN_Msg("General", MCFatal);
+
+
+
+

Copied: trunk/source/tools/cMessageDisplay.h (from rev 337, trunk/source/tools/message_display.hh)

Copied: trunk/source/tools/cMessageDisplay_headers.h (from rev 337, trunk/source/tools/message_display_hdrs.hh)
===================================================================
--- trunk/source/tools/message_display_hdrs.hh	2005-10-07 01:02:35 UTC (rev 337)
+++ trunk/source/tools/cMessageDisplay_headers.h	2005-10-08 02:02:38 UTC (rev 338)
@@ -0,0 +1,41 @@
+#ifndef MESSAGE_DISPLAY_HDRS_HH
+#define MESSAGE_DISPLAY_HDRS_HH
+
+#ifndef _CPP_IOSTREAM
+#include <iostream>
+#endif
+#ifndef DEFAULT_MESSAGE_DISPLAY_HH
+#include "cDefaultMessageDisplay.h"
+#endif
+#ifndef MESSAGE_CLASS_HH
+#include "cMessageClass.h"
+#endif
+#ifndef MESSAGE_CLOSURE_HH
+#include "cMessageClosure.h"
+#endif
+#ifndef MESSAGE_DISPLAY_HH
+#include "cMessageDisplay.h"
+#endif
+#ifndef MESSAGE_TYPE_HH
+#include "cMessageType.h"
+#endif
+#ifndef STRING_HH
+#include "cString.h"
+#endif
+
+#ifndef MESSAGE_DISPLAY_HH
+#include "cMessageDisplay.h"
+#endif
+
+extern cMessageType NoPrefix_Msg;
+extern cMessageType Info_GEN_Msg;
+extern cMessageType Debug_GEN_Msg;
+extern cMessageType Error_GEN_Msg;
+extern cMessageType Fatal_GEN_Msg;
+#define Message _PLAIN_MSG(NoPrefix)
+#define GenInfo _INFO_MSG(GEN)
+#define GenDebug _DEBUG_MSG(GEN)
+#define GenError _ERROR_MSG(GEN)
+#define GenFatal _FATAL_MSG(GEN)
+
+#endif

Copied: trunk/source/tools/cMessageType.h (from rev 337, trunk/source/tools/message_type.hh)

Copied: trunk/source/tools/cProbSchedule.cc (from rev 337, trunk/source/tools/prob_schedule.cc)
===================================================================
--- trunk/source/tools/prob_schedule.cc	2005-10-07 01:02:35 UTC (rev 337)
+++ trunk/source/tools/cProbSchedule.cc	2005-10-08 02:02:38 UTC (rev 338)
@@ -0,0 +1,45 @@
+//////////////////////////////////////////////////////////////////////////////
+// Copyright (C) 1993 - 2003 California Institute of Technology             //
+//                                                                          //
+// Read the COPYING and README files, or contact 'avida at alife.org',         //
+// before continuing.  SOME RESTRICTIONS MAY APPLY TO USE OF THIS FILE.     //
+//////////////////////////////////////////////////////////////////////////////
+
+#include "cProbSchedule.h"
+
+#include "cChangeList.h"
+#include "cMerit.h"
+#include "tools.hh"
+
+
+///////////////////
+//  cProbSchedule
+///////////////////
+
+// The larger merits cause problems here; things need to be re-thought out.
+
+cProbSchedule::cProbSchedule(int _item_count)
+  : cSchedule(_item_count)
+  , chart(_item_count)
+{
+}
+
+cProbSchedule::~cProbSchedule()
+{
+}
+
+
+int cProbSchedule::GetNextID()
+{
+  assert(chart.GetTotalWeight() > 0);
+  const double position = g_random.GetDouble(chart.GetTotalWeight());
+  return chart.FindPosition(position);
+}
+
+void cProbSchedule::Adjust(int item_id, const cMerit & item_merit)
+{
+  if (cChangeList *change_list = GetChangeList()) {
+    change_list->MarkChange(item_id);
+  }
+  chart.SetWeight(item_id, item_merit.GetDouble());
+}

Copied: trunk/source/tools/cProbSchedule.h (from rev 337, trunk/source/tools/prob_schedule.hh)
===================================================================
--- trunk/source/tools/prob_schedule.hh	2005-10-07 01:02:35 UTC (rev 337)
+++ trunk/source/tools/cProbSchedule.h	2005-10-08 02:02:38 UTC (rev 338)
@@ -0,0 +1,37 @@
+//////////////////////////////////////////////////////////////////////////////
+// Copyright (C) 1993 - 2003 California Institute of Technology             //
+//                                                                          //
+// Read the COPYING and README files, or contact 'avida at alife.org',         //
+// before continuing.  SOME RESTRICTIONS MAY APPLY TO USE OF THIS FILE.     //
+//////////////////////////////////////////////////////////////////////////////
+
+#ifndef PROB_SCHEDULE_HH
+#define PROB_SCHEDULE_HH
+
+#ifndef SCHEDULE_HH
+#include "cSchedule.h"
+#endif
+#ifndef WEIGHTED_INDEX_HH
+#include "weighted_index.hh"
+#endif
+
+/**
+ * The Probiblistic Schedule has the chance for an item to
+ * be scheduled proportional to the merit of that item.
+ **/
+
+class cWeightedIndex; // aggregate
+class cMerit;
+
+class cProbSchedule : public cSchedule {
+private:
+  cWeightedIndex chart;
+public:
+  cProbSchedule(int num_cells);
+  ~cProbSchedule();
+
+  void Adjust(int item_id, const cMerit & merit);
+  int GetNextID();
+};
+
+#endif

Copied: trunk/source/tools/cRandom.cc (from rev 337, trunk/source/tools/random.cc)
===================================================================
--- trunk/source/tools/random.cc	2005-10-07 01:02:35 UTC (rev 337)
+++ trunk/source/tools/cRandom.cc	2005-10-08 02:02:38 UTC (rev 338)
@@ -0,0 +1,216 @@
+//////////////////////////////////////////////////////////////////////////////
+// Copyright (C) 1993 - 2000 California Institute of Technology             //
+//                                                                          //
+// Read the COPYING and README files, or contact 'avida at alife.org',         //
+// before continuing.  SOME RESTRICTIONS MAY APPLY TO USE OF THIS FILE.     //
+//////////////////////////////////////////////////////////////////////////////
+
+#ifndef RANDOM_HH
+#include "cRandom.h"
+#endif
+
+#ifndef TARRAY_HH
+#include "tArray.hh"
+#endif
+
+/* FIXME this is not defined in Visual Studio.net. -- kgn */
+//#ifdef MSVC_COMPILER
+/* FIXME find out what the VS.n macro might be. for now use WIN32 -- kgn */
+#ifdef WIN32
+#include <process.h>
+#else
+#include <unistd.h>
+#endif
+
+
+// Constants //////////////////////////////////////////////////////////////////
+
+// Statistical Approximation
+const unsigned int cRandom::_BINOMIAL_TO_NORMAL=50;    //if < n*p*(1-p)
+const unsigned int cRandom::_BINOMIAL_TO_POISSON=1000; //if < n
+
+// Engine
+const unsigned int cRandom::_RAND_MBIG=1000000000;
+const unsigned int cRandom::_RAND_MSEED=161803398;
+
+// Number Generation
+const double cRandom::_RAND_FAC=(1.0/_RAND_MBIG);
+const double cRandom::_RAND_mP_FAC=(_RAND_MBIG/1000);
+const double cRandom::_RAND_uP_FAC=(_RAND_MBIG/1000000);
+
+
+// Constructor and setup //////////////////////////////////////////////////////
+
+cRandom::cRandom(const int in_seed) :
+ seed(0),
+ original_seed(0),
+ inext(0),
+ inextp(0),
+ use_count(0),
+ expRV(0)
+  {
+    for( int i=0; i<56; ++i ){
+      ma[i] = 0;
+    }
+    ResetSeed(in_seed);  // Calls init()
+  }
+
+
+void cRandom::ResetSeed(const int in_seed){
+  //if( in_seed<0 ){  // @TCC - make 0 also be seeded with time * pid
+  original_seed = in_seed;
+  
+  if( in_seed<=0 ){
+    int seed_time = (int) time(NULL);
+#ifdef MSVC_COMPILER
+    int seed_pid = (int) _getpid(); 
+#else
+    int seed_pid = (int) getpid(); 
+#endif
+    seed = seed_time ^ (seed_pid << 8);
+  }
+  else {
+    seed = in_seed;
+  }
+  
+  if( seed < 0 ) seed*=-1;
+  seed%=_RAND_MSEED;
+
+  init();
+  initStatFunctions();
+}
+
+
+void cRandom::init(){
+  int mj, mk, ii, i;
+
+  // Clear variables
+  inext = 0;
+  inextp = 0;
+  expRV = 0;
+  for( i=0; i<56; ++i ){
+    ma[i] = 0;
+  }
+
+  mj = _RAND_MSEED - seed;
+  mj %= _RAND_MBIG;
+  ma[55] = mj;
+  mk = 1;
+
+  for (i = 1; i < 55; ++i) {
+    ii = (21 * i) % 55;
+    ma[ii] = mk;
+    mk = mj - mk;
+    if (mk < 0) mk += _RAND_MBIG;
+    mj = ma[ii];
+  }
+
+  for (int k = 0; k < 4; ++k) {
+    for (int j = 1; j < 55; ++j) {
+      ma[j] -= ma[1 + (j + 30) % 55];
+      if (ma[j] < 0) ma[j] += _RAND_MBIG;
+    }
+  }
+
+  inext = 0;
+  inextp = 31;
+}
+
+void cRandom::initStatFunctions(){
+  // Setup variables used by Statistical Distribution functions
+  expRV=-log(GetDouble());
+}
+  
+
+// Statistical functions //////////////////////////////////////////////////////
+
+double cRandom::GetRandNormal(){
+  // Draw from a Unit Normal Dist
+  // Using Rejection Method and saving of initial exponential random variable
+  double expRV2;
+  while( 1 ){
+    expRV2=-log(GetDouble());
+    expRV-=(expRV2-1)*(expRV2-1)/2;
+    if( expRV>0 ) break;  
+    expRV=-log(GetDouble());
+  }
+  if( P(.5) ) 
+    return expRV2;
+  else
+    return -expRV2;
+}
+
+unsigned int cRandom::GetRandPoisson(const double mean){
+  // Draw from a Poisson Dist with mean
+  // if cannot calculate, returns UINT_MAX
+  // Uses Rejection Method
+  unsigned int k=0;
+  double a=exp(-mean);
+  double u=GetDouble();
+  if( a <=0 ) return UINT_MAX; // cannot calculate, so return UINT_MAX
+  while( u>=a ){
+    u*=GetDouble();
+    ++k;
+  }
+  return k;
+}
+
+unsigned int cRandom::GetFullRandBinomial(const double n, const double p){
+  // Actually try n Bernoulli events with probability p
+  unsigned int k=0;
+  for( unsigned int i=0; i<n; ++i )
+    if( P(p) ) k++;
+  return k;
+}
+
+unsigned int cRandom::GetRandBinomial(const double n, const double p){
+  // Approximate Binomial if appropriate
+  // if np(1-p) is large, use a Normal approx
+  if( n*p*(1-p) >= _BINOMIAL_TO_NORMAL ){
+    return (unsigned int)(GetRandNormal(n*p,n*p*(1-p))+.5);
+  }
+  // elseif n is large, use a Poisson approx
+  if( n >= _BINOMIAL_TO_POISSON ){
+    unsigned int k=GetRandPoisson(n,p);
+    if( k < UINT_MAX ) // if approx worked
+      return k;
+  }
+  // otherwise, actually generate the randBinomial
+  return GetFullRandBinomial(n,p);
+}
+
+
+bool cRandom::Choose(int num_in, tArray<int> & out_array){
+  // If you ask for more than you pass in...
+  assert ( num_in >= out_array.GetSize() );
+
+  if (num_in == out_array.GetSize()) {
+    // init array to 0's
+    for(int i = 0; i < out_array.GetSize(); i++)  out_array[i] = i;
+    return true;
+  }
+
+  int choice_num = 0;
+  // @CAO this could be done a lot faster when choose size is close to
+  // full size.  However we need to rememebr to watch out for larger num_in
+  while (choice_num < out_array.GetSize()) {
+    int next = (int) GetUInt(num_in);
+
+    // See if this choice is ok to use...
+    bool ok = true;
+    for (int i = 0; i < choice_num; i++) {
+      if (out_array[i] == next) {
+	ok = false;
+	break;
+      }
+    }
+
+    // And if its good, record it.
+    if (ok == true) {
+      out_array[choice_num] = next;
+      choice_num++;
+    }
+  }
+
+  return true;
+}

Copied: trunk/source/tools/cRandom.h (from rev 337, trunk/source/tools/random.hh)

Copied: trunk/source/tools/cRefBlock.cc (from rev 337, trunk/source/tools/ref_block.cc)
===================================================================
--- trunk/source/tools/ref_block.cc	2005-10-07 01:02:35 UTC (rev 337)
+++ trunk/source/tools/cRefBlock.cc	2005-10-08 02:02:38 UTC (rev 338)
@@ -0,0 +1,25 @@
+//////////////////////////////////////////////////////////////////////////////
+// Copyright (C) 1993 - 2003 California Institute of Technology             //
+//                                                                          //
+// Read the COPYING and README files, or contact 'avida at alife.org',         //
+// before continuing.  SOME RESTRICTIONS MAY APPLY TO USE OF THIS FILE.     //
+//////////////////////////////////////////////////////////////////////////////
+
+#ifndef REF_BLOCK_HH
+#include "cRefBlock.h"
+#endif
+
+////////////////////
+//  cRefBlock
+////////////////////
+
+cRefBlock::cRefBlock(int in_ref, int in_size)
+{
+  ref_num = in_ref;
+  size = in_size;
+}
+
+cRefBlock::~cRefBlock()
+{
+  // nothing needed here...
+}

Copied: trunk/source/tools/cRefBlock.h (from rev 337, trunk/source/tools/ref_block.hh)

Copied: trunk/source/tools/cRunningAverage.cc (from rev 337, trunk/source/tools/running_average.cc)
===================================================================
--- trunk/source/tools/running_average.cc	2005-10-07 01:02:35 UTC (rev 337)
+++ trunk/source/tools/cRunningAverage.cc	2005-10-08 02:02:38 UTC (rev 338)
@@ -0,0 +1,54 @@
+//////////////////////////////////////////////////////////////////////////////
+// Copyright (C) 1993 - 2003 California Institute of Technology             //
+//                                                                          //
+// Read the COPYING and README files, or contact 'avida at alife.org',         //
+// before continuing.  SOME RESTRICTIONS MAY APPLY TO USE OF THIS FILE.     //
+//////////////////////////////////////////////////////////////////////////////
+
+#ifndef RUNNING_AVERAGE_HH
+#include "cRunningAverage.h"
+#endif
+
+#include <assert.h>
+
+// cRunningAverage ////////////////////////////////////////////////////////////
+
+cRunningAverage::cRunningAverage( int window_size ) : 
+  m_values(0), m_s1(0), m_s2(0), m_window_size( window_size ),
+  m_pointer(0), m_n(0) 
+{
+  assert( m_window_size > 1 );
+  m_values = new double[ m_window_size ];
+}
+
+
+cRunningAverage::~cRunningAverage() {
+  delete [] m_values;
+}
+
+
+void
+cRunningAverage::Add( double value ) {
+  m_s1 += value;
+  m_s2 += value*value;
+  if ( m_n < m_window_size ) {
+    m_values[ m_n ] = value;
+    m_n += 1;
+  }
+  else{
+    double out_v = m_values[ m_pointer ];
+    m_s1 -= out_v;
+    m_s2 -= out_v * out_v;
+    m_values[ m_pointer++ ] = value;
+    if ( m_pointer == m_window_size ) m_pointer = 0;
+  }
+}
+
+
+void
+cRunningAverage::Clear() {
+  m_s1 = 0;
+  m_s2 = 0;
+  m_pointer = 0;
+  m_n = 0;
+}

Copied: trunk/source/tools/cRunningAverage.h (from rev 337, trunk/source/tools/running_average.hh)

Copied: trunk/source/tools/cScaledBlock.cc (from rev 337, trunk/source/tools/scaled_block.cc)
===================================================================
--- trunk/source/tools/scaled_block.cc	2005-10-07 01:02:35 UTC (rev 337)
+++ trunk/source/tools/cScaledBlock.cc	2005-10-08 02:02:38 UTC (rev 338)
@@ -0,0 +1,26 @@
+//////////////////////////////////////////////////////////////////////////////
+// Copyright (C) 1993 - 2000 California Institute of Technology             //
+//                                                                          //
+// Read the COPYING and README files, or contact 'avida at alife.org',         //
+// before continuing.  SOME RESTRICTIONS MAY APPLY TO USE OF THIS FILE.     //
+//////////////////////////////////////////////////////////////////////////////
+
+#ifndef SCALED_BLOCK_HH
+#include "cScaledBlock.h"
+#endif
+
+////////////////////
+//  cScaledBlock
+////////////////////
+
+cScaledBlock::cScaledBlock(void * in_data, int in_size)
+{
+  data = in_data;
+  size = in_size;
+}
+
+cScaledBlock::~cScaledBlock()
+{
+}
+
+

Copied: trunk/source/tools/cScaledBlock.h (from rev 337, trunk/source/tools/scaled_block.hh)

Copied: trunk/source/tools/cSchedule.cc (from rev 337, trunk/source/tools/schedule.cc)
===================================================================
--- trunk/source/tools/schedule.cc	2005-10-07 01:02:35 UTC (rev 337)
+++ trunk/source/tools/cSchedule.cc	2005-10-08 02:02:38 UTC (rev 338)
@@ -0,0 +1,33 @@
+//////////////////////////////////////////////////////////////////////////////
+// Copyright (C) 1993 - 2003 California Institute of Technology             //
+//                                                                          //
+// Read the COPYING and README files, or contact 'avida at alife.org',         //
+// before continuing.  SOME RESTRICTIONS MAY APPLY TO USE OF THIS FILE.     //
+//////////////////////////////////////////////////////////////////////////////
+
+#include "cSchedule.h"
+
+#include "cChangeList.h"
+
+////////////////
+//  cSchedule
+////////////////
+
+cSchedule::cSchedule(int _item_count)
+: item_count(_item_count)
+, m_change_list(0)
+{
+}
+
+cSchedule::~cSchedule()
+{
+}
+
+void cSchedule::SetChangeList(cChangeList *change_list) {
+  m_change_list = change_list;
+  if (m_change_list) m_change_list->Resize(item_count);
+}
+void cSchedule::SetSize(int _item_count) {
+  item_count = _item_count;
+  if (m_change_list) m_change_list->Resize(_item_count);
+}

Copied: trunk/source/tools/cSchedule.h (from rev 337, trunk/source/tools/schedule.hh)

Copied: trunk/source/tools/cString.cc (from rev 337, trunk/source/tools/string.cc)
===================================================================
--- trunk/source/tools/string.cc	2005-10-07 01:02:35 UTC (rev 337)
+++ trunk/source/tools/cString.cc	2005-10-08 02:02:38 UTC (rev 338)
@@ -0,0 +1,641 @@
+//////////////////////////////////////////////////////////////////////////////
+// Copyright (C) 1993 - 2003 California Institute of Technology             //
+//                                                                          //
+// Read the COPYING and README files, or contact 'avida at alife.org',         //
+// before continuing.  SOME RESTRICTIONS MAY APPLY TO USE OF THIS FILE.     //
+//////////////////////////////////////////////////////////////////////////////
+
+#include "cString.h"
+
+extern "C"{
+#include <stdio.h>
+#include <stdarg.h>
+}
+
+
+using namespace std;
+
+
+// ** class cStringData **
+// -- Constructors --
+cString::cStringData::cStringData(short in_size)
+  : refs(1)
+  , size(in_size)
+  , data(new char[size+1])
+{
+  assert(data!=NULL); // Memory Allocation Error: Out of Memory
+  data[0] = '\0';
+  data[size] = '\0';
+}
+
+cString::cStringData::cStringData(short in_size, const char * in)
+  : refs(1)
+  , size(in_size)
+  , data(new char[size+1])
+{
+  assert(data!=NULL); // Memory Allocation Error: Out of Memory
+  for( short i = 0; i < size; i++ )  data[i]=in[i];
+  data[size] = '\0';
+}
+
+cString::cStringData::cStringData(const cStringData & in)
+  : refs(1)
+  , size(in.GetSize())
+  , data(new char[size+1])
+{
+  assert(data!=NULL); // Memory Allocation Error: Out of Memory
+  for( short i = 0; i < size; i++ )  data[i]=in[i];
+  data[size] = '\0';
+}
+
+
+
+// ** class cString **
+
+// -- Constants --
+const int cString::MAX_LENGTH = MAX_STRING_LENGTH;
+
+
+// -- Comparisons --
+
+bool cString::operator== (const cString & in) const {
+  // Compares sizes first since we have that info anyway
+  int i=-1;
+  if( GetSize() == in.GetSize() ){
+    for( i=0; i<GetSize() && (*this)[i]==in[i]; ++i );
+  }
+  return ( i == GetSize() );  // i == GetSize if all chars matched
+}
+
+
+int cString::Compare(const char * in) const
+{
+  // -1 (*this<in), 0 (*this==in), 1 (*this>in) ... just like strcmp()
+  assert(in!=NULL);  // NULL input string
+  int i;
+  for( i = 0;
+       i < GetSize() && in[i]!='\0' && (*this)[i] == in[i];
+       i++ );
+
+  if( i == GetSize()  &&  in[i] == '\0' ) {
+    return 0;                // *this == in
+  }
+
+  // They're not equal!
+  if ( i < GetSize() && (*this)[i] > in[i] )  return 1;  // *this > in
+  return -1;                                             // *this < in
+}
+
+bool cString::IsContinueLine()
+{
+  bool found = false;
+  bool goodstufffound = false;
+  int j = GetSize() - 1;
+
+  // Scan the line from the end.  If the last non-whitespace line is
+  // continueation character the line expects a line to be concatenated on
+  // to it
+
+  while ((j >= 0) && !found && !goodstufffound) {
+    if (!IsWhitespace(j)) {
+      if ((*this)[j] == CONTINUE_LINE_CHAR) {
+        found = true;
+        RemovePos(j);
+      } else {
+        goodstufffound = true;
+      }
+    }
+    j--;
+  }
+  return (found);
+}
+
+// -- Information --
+
+int cString::CountWhitespace(int start) const
+{
+  assert(start >= 0); // Negative Index into String
+  if (start >= GetSize()) return 0;
+  int count = 0;
+  while (start+count<GetSize() && IsWhitespace(start+count)) count++;
+  return count;
+}
+
+
+int cString::CountWordsize(int start) const {
+  assert(start >= 0); // Negative Index into String
+  if( start>=GetSize() )  return 0;
+  int count = 0;
+  while( start+count<GetSize() && !IsWhitespace(start+count) )
+    ++count;
+  return count;
+}
+
+
+int cString::CountLinesize(int start) const
+{
+  assert(start >= 0); // Negative Index into String
+  if( start>=GetSize() )  return 0;
+  int count = 0;
+  while( start+count<GetSize() && (*this)[start+count]!='\n' )
+    count++;
+  return count;
+}
+
+
+int cString::CountNumLines() const
+{
+  int num_lines = 1;
+  for( int i=0; i<GetSize(); ++i ){
+    if( (*this)[i] == '\n' )  num_lines++;
+  }
+  return num_lines;
+}
+
+
+int cString::CountNumWords() const
+{
+  int num_words = 0;
+  int pos = CountWhitespace();     // Skip initial whitespace.
+  while( pos<GetSize() ) {
+    pos += CountWordsize(pos);
+    pos += CountWhitespace(pos);
+    num_words++;
+  }
+  return num_words;
+}
+
+
+// -- Search --
+int cString::Find(char in_char, int start) const
+{
+  int pos = start;
+  assert (pos >= 0);         // Negative Position: setting to 0
+  assert (pos <= GetSize()); // Position Past End of String: setting to end.
+  if (pos <= 0) pos = 0;
+  else if (pos > GetSize()) pos = GetSize();
+
+  while( pos < GetSize() ) {
+    if( (*this)[pos] == in_char) return pos; // Found!
+    pos++;
+  }
+  return -1; // Not Found
+}
+
+
+int cString::FindWord(const cString & in, int pos) const
+{
+  assert (pos >= 0);         // Negative Position: setting to 0
+  assert (pos <= GetSize()); // Position Past End of String: setting to end.
+  if (pos <= 0) pos = 0;
+  else if (pos > GetSize()) pos = GetSize();
+
+  // While there is enough space to find
+  while (pos != -1 && pos + in.GetSize() < GetSize()) {
+    cerr << in << " " << pos << endl;
+    if( (pos=Find(in, pos)) >= 0 ){      // try to find it
+      // if it's got whitespace on both sides, it's a word
+      if( ( pos==0 || IsWhitespace(pos-1) )
+	  && ( pos==GetSize()-1 || IsWhitespace(pos+in.GetSize()) ) ){
+	return pos;
+      } else {
+	pos++; // go on and look further down
+      }
+    }
+  }
+  return -1;
+}
+	
+
+cString cString::GetWord(int word_id) const
+{
+  // Find positon of word
+  int pos = 0;
+  int cur_word = 0;
+  while( pos<GetSize() && cur_word<word_id ) {  // If this isn't the word
+    pos += CountWhitespace(pos);                 // Skip leading whitespace
+    pos += CountWordsize(pos);                   // Skip this word
+    cur_word++;
+  }
+  // Return GetWordAt position... (it will skip any leading whitespace)
+  return GetWordAt(pos);
+}
+
+
+cString cString::GetWordAt(int start) const
+{
+  int pos = start + CountWhitespace(start);  // Skip past initial whitespace.
+  int word_size = CountWordsize(pos);        // Get size of word
+  cString new_string(word_size);             // Allocate new_string that size
+  for (int i = 0; i < word_size; i++) {      // Copy the chars to new_string
+    new_string[i] = (*this)[pos + i];
+  }
+  return new_string;
+}
+
+bool cString::IsWhitespace() const
+{
+  for( int i=0; i < GetSize(); ++i){
+    if ( IsWhitespace(i) == false ) return false;
+  }
+  return true;
+}
+
+bool cString::IsUpperLetter() const
+{
+  for (int i = 0; i < GetSize(); ++i) {
+    if ( IsUpperLetter(i) == false ) return false;
+  }
+  return true;
+}
+
+bool cString::IsLowerLetter() const
+{
+  for (int i = 0; i < GetSize(); ++i) {
+    if ( IsLowerLetter(i) == false ) return false;
+  }
+  return true;
+}
+
+bool cString::IsLetter() const
+{
+  for (int i = 0; i < GetSize(); ++i) {
+    if ( IsLetter(i) == false ) return false;
+  }
+  return true;
+}
+
+bool cString::IsNumber() const
+{
+  for (int i = 0; i < GetSize(); ++i) {
+    if ( IsNumber(i) == false ) return false;
+  }
+  return true;
+}
+
+bool cString::IsNumeric() const
+{
+  for (int i = 0; i < GetSize(); ++i) {
+    if ( IsNumber(i) == false ) return false;
+  }
+  return true;
+}
+
+bool cString::IsAlphaNumeric() const
+{
+  for (int i = 0; i < GetSize(); ++i) {
+    if ( IsAlphaNumeric(i) == false ) return false;
+  }
+  return true;
+}
+
+
+
+cString cString::Substring(int start, int size) const
+{
+  assert(size > 0); // Non-Positive Size
+  assert(start >= 0); // Negative Position
+  assert(start + size <= GetSize()); // Position+Size Past End of String
+
+  cString new_string(size);
+  for (int i=0; i<size; i++) {
+    new_string[i] = (*this)[i+start];
+  }
+  return new_string;
+}
+
+bool cString::IsSubstring(const cString & in_string, int start) const
+{
+  assert (start >= 0); // Negative start position
+
+  // If the potential sub-string won't fit, return false;
+  if ( start + in_string.GetSize() > GetSize() ) return false;
+
+  // Otherwise, check character by character.
+  for (int i = 0; i < in_string.GetSize(); i++) {
+    if ( (*this)[i+start] != in_string[i] ) return false;
+  }
+
+  return true;
+}
+
+
+// -- Modifiers --
+
+cString & cString::Set(const char * fmt, ...)
+{
+  va_list argp;
+  char buf[MAX_LENGTH];
+  va_start(argp, fmt);
+  vsprintf(buf, fmt, argp);
+  va_end(argp);
+  (*this) = buf;
+  return *this;
+}
+
+
+int cString::Replace(const cString & old_st, const cString & new_st, int pos)
+{
+  int location;
+  if( (location=Find(old_st, pos)) >= 0 ){ // If we find the old_st
+    Insert(new_st, location, old_st.GetSize());
+  }
+  return location;
+}
+
+
+int cString::LeftJustify()
+{
+  int ws_count = CountWhitespace();
+  if( ws_count>0 )
+    InsertStr(0, NULL, 0, ws_count);
+  return ws_count;
+}
+
+
+int cString::RightJustify()
+{
+  int ws_count = 0;
+  while( GetSize()-ws_count-1>0 && IsWhitespace(GetSize()-ws_count-1) )
+    ws_count++;
+  if( ws_count>0 )
+    InsertStr(0, NULL, GetSize()-ws_count, ws_count);
+  return ws_count;
+}
+
+
+cString cString::Pop(const char delim)
+{
+  int pos;
+  cString rv("");
+  if( (pos=Find(delim)) >= 0 ){ // if it is found at all
+    if( pos > 0 ){  // if the first char is not delim, return substring
+      rv = Substring(0,pos);
+    }
+    // Trim off the front
+    InsertStr(0, NULL, 0, pos+1);
+  }
+
+  // If the deliminator is *not* found, return the whole string.
+  else {
+    rv = *this;
+    *this = "";
+  }
+  return rv;
+}
+
+
+cString cString::PopWord()
+{
+  // If there is nothing here, there is nothing to be popped.
+  if (GetSize() == 0) return "";
+
+  const int start_pos = CountWhitespace();
+  const int word_size = CountWordsize(start_pos);
+
+  // If the string is not all whitespace, save the word we cut off...
+  cString rv("");
+  if (word_size > 0) rv = Substring(start_pos, word_size);
+
+  // Trim off the front
+  const int word_end = start_pos + word_size;
+  const int new_start = word_end + CountWhitespace(word_end);
+  InsertStr(0, NULL, 0, new_start);  // Insert null in place of old word.
+
+  return rv;
+}
+
+
+cString & cString::ToLower()
+{
+  for (int pos = 0; pos < GetSize(); pos++) {
+    if( (*this)[pos] >= 'A' && (*this)[pos] <= 'Z' )
+      (*this)[pos] += 'a' - 'A';
+  }
+
+  return *this;
+}
+
+
+cString & cString::ToUpper()
+{
+  for (int pos = 0; pos < GetSize(); pos++) {
+    if( (*this)[pos] >= 'a' && (*this)[pos] <= 'z' )
+      (*this)[pos] += 'A' - 'a';
+  }
+
+  return *this;
+}
+
+
+void cString::Reverse()
+{
+  cString new_st(GetSize());
+  for( int i=0; i<GetSize(); ++i ){
+    // new_st[i] = (*this)[GetSize()-i-1];       // @CAO Problem in new gcc
+    new_st[i] = GetData()[GetSize()-i-1];
+  }
+  (*this) = new_st;
+}
+
+
+void cString::CompressWhitespace()
+{
+  // Eats initial whitespace
+  // 2 pass method...
+  int i;
+  int pos = 0;
+  int start_pos = CountWhitespace();
+  int new_size = 0;
+  bool ws = false;
+
+  // count the number of characters that we will need in the new string
+  for( i=start_pos; i<GetSize(); ++i ){
+    if( IsWhitespace(i) ){ // if it whitespace...
+      if( ws == false ){     // if we arn't already in a whitespace block
+	ws = true;             // we are now in a whitespace block
+      }
+    }else{                 // it isn't whitespace, so count
+      if( ws==true ){        // if there was a whitespace block
+	++new_size;            // inc once for the block
+	ws = false;
+      }
+      ++new_size;
+    }
+  }
+
+  cString new_st(new_size);  // Allocate new string
+
+  // Copy over the characters
+  // pos will be the location in new_st, while i is the index into this
+  ws = false;
+  for( i=start_pos; i<GetSize(); ++i ){
+    if( IsWhitespace(i) ){ // if it whitespace...
+      if( ws == false ){     // if we arn't already in a whitespace block
+	ws = true;             // we are now in a whitespace block
+      }
+    }else{                 // it isn't whitespace, so count
+      if( ws==true ){        // if there was a whitespace block
+	new_st[pos] = ' ';     // put a space in for the whitespace block
+	++pos;                 // inc once for the block
+	ws = false;
+      }
+      // new_st[pos] = (*this)[i]; // copy it & increment pos  @CAO prob in gcc
+      new_st[pos] = GetData()[i]; // copy it & increment pos
+      ++pos;
+    }
+  }
+
+  (*this) = new_st;  // assign the new_st to this
+}
+
+
+void cString::RemoveWhitespace(){
+  int i;
+  int new_size = 0;
+  for( i=0; i<GetSize(); ++i ){  // count new size
+    if( !IsWhitespace(i) )  ++new_size;
+  }
+  cString new_st(new_size);      // allocate new string
+  int pos = 0;
+  for( i=0; i<GetSize(); ++i ){  // count new size
+    if( !IsWhitespace(i) ){
+      new_st[pos] = GetData()[i]; // copy it & increment pos   @CAO prob in GCC
+      ++pos;
+    }
+  }
+  (*this) = new_st;  // assign the new_st to this
+}
+
+
+void cString::RemoveChar(char out_char){
+  int i;
+  int new_size = 0;
+  for( i=0; i<GetSize(); ++i ){  // count new size
+    if( GetData()[i] != out_char )  ++new_size;
+  }
+  cString new_st(new_size);      // allocate new string
+  int pos = 0;
+  for( i=0; i<GetSize(); ++i ){  // count new size
+    if( GetData()[i] != out_char ){
+      new_st[pos] = GetData()[i]; // copy it & increment pos   @CAO prob in GCC
+      ++pos;
+    }
+  }
+  (*this) = new_st;  // assign the new_st to this
+}
+
+void cString::RemovePos(int pos){
+  int i;
+  int new_size = GetSize() - 1;
+  cString new_st(new_size);      // allocate new string
+  int newpos = 0;
+  for( i=0; i<GetSize(); ++i ){  // count new size
+    if( i != pos ){
+      new_st[newpos++] = GetData()[i]; // copy it & increment pos
+    }
+  }
+  (*this) = new_st;  // assign the new_st to this
+}
+
+
+
+// -- Internal Methods --
+
+cString & cString::AppendStr(const int in_size, const char * in)
+{
+  assert (in_size == 0 || in != NULL); // NULL input string
+
+  // Allocate a new string
+  cStringData * new_value = new cStringData(GetSize()+in_size);
+  assert (new_value != NULL);       // Memory Allocation Error: Out of Memory
+  for(int i=0; i<GetSize(); ++i ) { // Copy self up to pos
+    (*new_value)[i] = this->operator[](i);
+  }
+  for(int i=0; i<in_size; ++i ) {   // Copy in
+    assert(in[i] != '\0');          // Input String Contains '\\0' or too Short
+    (*new_value)[i+GetSize()] = in[i];
+  }
+  TakeValue(new_value);             // Reassing data to new data
+  return(*this);
+}
+
+
+cString & cString::InsertStr(const int in_size, const char * in,
+			     int pos, int excise )
+{
+  // Inserts 'in' (of length 'in_size') at postition 'pos'
+  // Also excises 'excise' characters from 'pos'
+  // If 'in_size'==0 then 'in' can == NULL and only excise happens
+
+  // Validate inputs:
+  assert (in_size >= 0);               // Negative input size
+  assert (pos >= 0);                   // Negative position
+  assert (pos <= GetSize());           // Position past end of string
+  assert (excise >= 0);                // Negative excise
+  assert (excise <= GetSize()-pos);    // Excise number too large
+  assert (excise > 0 || in_size > 0);  // Make sure a change is made!
+  assert (in_size == 0 || in != NULL); // NULL input string
+
+  // Allocate a new string
+  const int new_size = GetSize() + in_size - excise;
+  cStringData * new_value = new cStringData(new_size);
+  assert (new_value != NULL);  // Memory Allocation Error: Out of Memory
+
+  for(int i = 0; i < pos; ++i ){             // Copy self up to pos
+    (*new_value)[i] = this->operator[](i);
+  }
+  for(int i = 0; i < in_size; ++i ){         // Copy in
+    assert( in[i] != '\0');  // Input String Contains '\\0' or too Short
+    (*new_value)[i+pos] = in[i];
+  }
+  for(int i=pos+excise; i<GetSize(); ++i ){  // Copy rest of self
+    (*new_value)[i+in_size-excise] = this->operator[](i);
+  }
+
+  TakeValue(new_value);                      // Reassing data to new data
+  return(*this);
+}
+
+
+int cString::FindStr(const char * in, const int in_size, int pos) const
+{
+  assert (pos>=0);         // Negative position
+  assert (pos<=GetSize()); // Position past end of string
+
+  while (pos < GetSize()) {
+    if( GetSize()-pos < in_size ) return -1; // Too near this string's end.
+    if( (*this)[pos] == in[0] ){
+      // see if we have found the string...
+      int i;
+      for( i = 1; i < in_size; i++ ){
+	assert (pos+i < GetSize()); // Reached end of (*this) in Find
+	assert (in[i] != '\0');     // Reached end of 'in' in Find
+	if( (*this)[pos + i] != in[i] ) break; // Match failure!
+      }
+      // If we have made it fully through the loop, we have found a match!
+      if( i == in_size ) return pos;
+    }
+    pos++;
+  }
+  return -1;
+}
+
+
+
+// {{{ ** External cString Functions **
+
+istream & operator >> (istream & in, cString & string)
+{
+  char buf[cString::MAX_LENGTH];
+  in>>buf;
+  string=buf;
+  return in;
+}
+
+ostream & operator << (ostream & out, const cString & string)
+{
+  out << string.GetData();
+  return out;
+}
+

Copied: trunk/source/tools/cString.h (from rev 337, trunk/source/tools/string.hh)

Copied: trunk/source/tools/cStringIterator.cc (from rev 337, trunk/source/tools/string_iterator.cc)
===================================================================
--- trunk/source/tools/string_iterator.cc	2005-10-07 01:02:35 UTC (rev 337)
+++ trunk/source/tools/cStringIterator.cc	2005-10-08 02:02:38 UTC (rev 338)
@@ -0,0 +1,25 @@
+//////////////////////////////////////////////////////////////////////////////
+// Copyright (C) 1993 - 2003 California Institute of Technology             //
+//                                                                          //
+// Read the COPYING and README files, or contact 'avida at alife.org',         //
+// before continuing.  SOME RESTRICTIONS MAY APPLY TO USE OF THIS FILE.     //
+//////////////////////////////////////////////////////////////////////////////
+
+#ifndef STRING_ITERATOR_HH
+#include "cStringIterator.h"
+#endif
+
+#ifndef STRING_HH
+#include "cString.h"
+#endif
+#ifndef STRING_LIST_HH
+#include "cStringList.h"
+#endif
+
+const cString cStringIterator::null_str("");
+
+cStringIterator::cStringIterator(const cStringList & in_list)
+  : list_it(in_list.GetList())
+{
+  Reset();
+}

Copied: trunk/source/tools/cStringIterator.h (from rev 337, trunk/source/tools/string_iterator.hh)
===================================================================
--- trunk/source/tools/string_iterator.hh	2005-10-07 01:02:35 UTC (rev 337)
+++ trunk/source/tools/cStringIterator.h	2005-10-08 02:02:38 UTC (rev 338)
@@ -0,0 +1,40 @@
+//////////////////////////////////////////////////////////////////////////////
+// Copyright (C) 1993 - 2003 California Institute of Technology             //
+//                                                                          //
+// Read the COPYING and README files, or contact 'avida at alife.org',         //
+// before continuing.  SOME RESTRICTIONS MAY APPLY TO USE OF THIS FILE.     //
+//////////////////////////////////////////////////////////////////////////////
+
+#ifndef STRING_ITERATOR_HH
+#define STRING_ITERATOR_HH
+
+#ifndef STRING_HH
+#include "cString.h"
+#endif
+#ifndef TLIST_HH
+#include "tList.hh"
+#endif
+
+class cString; // aggregate
+class cStringList;
+template <class T> class tConstListIterator; // aggregate
+
+class cStringIterator {
+private:
+  tConstListIterator<cString> list_it;
+  static const cString null_str;
+public:
+  cStringIterator(const cStringList & in_list);
+
+  void Reset() { list_it.Reset(); }
+  const cString & Get() {
+    if (list_it.Get() == NULL) return null_str;
+    return *(list_it.Get());
+  }
+  const cString & Next() { list_it.Next(); return Get(); }
+  const cString & Prev() { list_it.Prev(); return Get(); }
+  bool AtRoot() const { return list_it.AtRoot(); }
+  bool AtEnd() const { return list_it.AtEnd(); }
+};
+
+#endif

Copied: trunk/source/tools/cStringList.cc (from rev 337, trunk/source/tools/string_list.cc)
===================================================================
--- trunk/source/tools/string_list.cc	2005-10-07 01:02:35 UTC (rev 337)
+++ trunk/source/tools/cStringList.cc	2005-10-08 02:02:38 UTC (rev 338)
@@ -0,0 +1,75 @@
+//////////////////////////////////////////////////////////////////////////////
+// Copyright (C) 1993 - 2003 California Institute of Technology             //
+//                                                                          //
+// Read the COPYING and README files, or contact 'avida at alife.org',         //
+// before continuing.  SOME RESTRICTIONS MAY APPLY TO USE OF THIS FILE.     //
+//////////////////////////////////////////////////////////////////////////////
+
+#include "functions.h"
+#ifndef STRING_ITERATOR_HH
+#include "cStringIterator.h"
+#endif
+#ifndef STRING_LIST_HH
+#include "cStringList.h"
+#endif
+
+
+using namespace std;
+
+
+
+cStringList::cStringList(const cString & _list, char seperator)
+{
+  Load(_list, seperator);
+}
+
+cStringList::cStringList(const cStringList & _list)
+{
+  tConstListIterator<cString> list_it(_list.string_list);
+  while (list_it.Next() != NULL) {
+    string_list.PushRear(new cString( *(list_it.Get()) ));
+  }
+}
+
+cStringList::~cStringList()
+{
+  while (string_list.GetSize() > 0) delete string_list.Pop();
+}
+
+
+cStringList & cStringList::operator=(const cStringList & _list)
+{
+  // If this list already as anything in it, make sure to delete it.
+  Clear();
+
+  // Now add the new list into this one.
+  tConstListIterator<cString> list_it(_list.string_list);
+  while (list_it.Next() != NULL) {
+    string_list.PushRear(new cString( *(list_it.Get()) ));
+  }
+  return *this;
+}
+
+bool cStringList::HasString(const cString & test_string) const
+{
+  tConstListIterator<cString> string_it(string_list);
+  const cString * cur_string = NULL;
+  while ((cur_string = string_it.Next()) != NULL) {
+    if (test_string == *cur_string) {
+      return true;
+    }
+  }
+  return false;
+}
+
+cString cStringList::PopString(const cString & test_string)
+{
+  tListIterator<cString> string_it(string_list);
+  const cString * cur_string = NULL;
+  while ((cur_string = string_it.Next()) != NULL) {
+    if (test_string == *cur_string) {
+      return ReturnString(string_list.Remove(string_it));
+    }
+  }
+  return "";
+}

Copied: trunk/source/tools/cStringList.h (from rev 337, trunk/source/tools/string_list.hh)
===================================================================
--- trunk/source/tools/string_list.hh	2005-10-07 01:02:35 UTC (rev 337)
+++ trunk/source/tools/cStringList.h	2005-10-08 02:02:38 UTC (rev 338)
@@ -0,0 +1,58 @@
+//////////////////////////////////////////////////////////////////////////////
+// Copyright (C) 1993 - 2003 California Institute of Technology             //
+//                                                                          //
+// Read the COPYING and README files, or contact 'avida at alife.org',         //
+// before continuing.  SOME RESTRICTIONS MAY APPLY TO USE OF THIS FILE.     //
+//////////////////////////////////////////////////////////////////////////////
+
+#ifndef STRING_LIST_HH
+#define STRING_LIST_HH
+
+#ifndef STRING_HH
+#include "cString.h"
+#endif
+#ifndef TLIST_HH
+#include "tList.hh"
+#endif
+
+class cString; // aggregate
+template <class T> class tList; // aggregate
+
+class cStringList {
+private:
+  tList<cString> string_list;
+
+  inline cString ReturnString(cString * out_string) {
+    cString tmp_string(*out_string);
+    delete out_string;
+    return tmp_string;
+  }
+public:
+  cStringList() { ; }
+  cStringList(const cString & _list, char seperator=' ');
+  cStringList(const cStringList & _list);
+  ~cStringList();
+
+  cStringList & operator=(const cStringList & _list);
+
+  int GetSize() const { return string_list.GetSize(); }
+  cString GetLine(int line_num) const { return *(string_list.GetPos(line_num)); }
+  const tList<cString> & GetList() const { return string_list; }
+
+  bool HasString(const cString & test_string) const;
+  cString PopString(const cString & test_string);
+
+  void Push(const cString & _in) { string_list.Push(new cString(_in));}
+  void PushRear(const cString & _in) { string_list.PushRear(new cString(_in));}
+  cString Pop() { return ReturnString(string_list.Pop()); }
+  cString PopRear() { return ReturnString(string_list.PopRear()); }
+
+  void Load(cString _list, char seperator=' ') {
+    while (_list.GetSize() > 0) PushRear(_list.Pop(seperator));
+  }
+  void Clear() {
+    while (string_list.GetSize() > 0) delete string_list.Pop(); 
+  }
+};
+
+#endif

Copied: trunk/source/tools/cStringUtil.cc (from rev 337, trunk/source/tools/string_util.cc)
===================================================================
--- trunk/source/tools/string_util.cc	2005-10-07 01:02:35 UTC (rev 337)
+++ trunk/source/tools/cStringUtil.cc	2005-10-08 02:02:38 UTC (rev 338)
@@ -0,0 +1,290 @@
+//////////////////////////////////////////////////////////////////////////////
+// Copyright (C) 1993 - 2001 California Institute of Technology             //
+//                                                                          //
+// Read the COPYING and README files, or contact 'avida at alife.org',         //
+// before continuing.  SOME RESTRICTIONS MAY APPLY TO USE OF THIS FILE.     //
+//////////////////////////////////////////////////////////////////////////////
+
+#ifndef STRING_UTIL_HH
+#include "cStringUtil.h"
+#endif
+
+
+#include "functions.h"
+#include "tMatrix.hh"
+
+extern "C"{
+#include <stdio.h>
+#include <stdarg.h>
+}
+
+
+using namespace std;
+
+
+cString cStringUtil::Stringf(const char * fmt, ...) {
+  va_list argp;
+  char buf[MAX_STRING_LENGTH];
+
+  va_start(argp, fmt);
+  vsprintf(buf, fmt, argp);
+  va_end(argp);
+
+  return cString(buf);
+}
+
+
+cString cStringUtil::ToRomanNumeral(const int in_value) {
+  cString ret_string;
+  if (in_value < 0) {
+    ret_string = "-";
+    ret_string += ToRomanNumeral(-in_value);
+  } else if (in_value > 3999) {
+    // Out of bounds; return a blank;
+  } else if (in_value >= 1000) {
+    ret_string = "M";
+    ret_string += ToRomanNumeral(in_value - 1000);
+  } else if (in_value >= 900) {
+    ret_string = "CM";
+    ret_string += ToRomanNumeral(in_value - 900);
+  } else if (in_value >= 500) {
+    ret_string = "D";
+    ret_string += ToRomanNumeral(in_value - 500);
+  } else if (in_value >= 400) {
+    ret_string = "CD";
+    ret_string += ToRomanNumeral(in_value - 400);
+  } else if (in_value >= 100) {
+    ret_string = "C";
+    ret_string += ToRomanNumeral(in_value - 100);
+  } else if (in_value >= 90) {
+    ret_string = "XC";
+    ret_string += ToRomanNumeral(in_value - 90);
+  } else if (in_value >= 50) {
+    ret_string = "L";
+    ret_string += ToRomanNumeral(in_value - 50);
+  } else if (in_value >= 40) {
+    ret_string = "XL";
+    ret_string += ToRomanNumeral(in_value - 40);
+  } else if (in_value >= 10) {
+    ret_string = "X";
+    ret_string += ToRomanNumeral(in_value - 10);
+  } else if (in_value == 9) {
+    ret_string = "IX";
+  } else if (in_value >= 5) {
+    ret_string = "V";
+    ret_string += ToRomanNumeral(in_value - 5);
+  } else if (in_value == 4) {
+    ret_string = "IV";
+  } else if (in_value > 0) {
+    ret_string = "I";
+    ret_string += ToRomanNumeral(in_value - 1);
+  }
+  // else we already have it exactly and don't need to return anything.
+  return ret_string;
+}
+
+
+int cStringUtil::StrLength(const char * in){
+  // if 'in'==NULL return 0;
+  int size = 0;
+  if( in != NULL ){
+    while( in[size]!='\0' )  ++size; // Count chars in _in
+  }
+  return size;
+}
+
+
+int cStringUtil::Distance(const cString & string1, const cString & string2,
+			  int offset) 
+{
+  if (offset < 0) return cStringUtil::Distance(string2, string1, -offset);
+
+  const int size1 = string1.GetSize();
+  const int size2 = string2.GetSize();
+
+  // Calculate by how much the strings overlap.
+  int overlap = Min( size1 - offset,  size2 );
+
+  // Initialize the distance to that part of the strings which do not
+  // overlap.
+  int num_diffs = size1 + size2 - 2 * overlap;
+
+  // Step through the overlapped section and add on any additional differences.
+  for (int i = 0; i < overlap; i++) {
+    if (string1[i + offset] != string2[i]) num_diffs++;
+  }
+
+  return num_diffs;
+}
+
+
+int cStringUtil::EditDistance(const cString & string1, const cString & string2)
+{
+  const int size1 = string1.GetSize();
+  const int size2 = string2.GetSize();
+
+  if (size1 == 0) return size2;
+  if (size2 == 0) return size1;
+
+  int * cur_row  = new int[size1];  // The row we are calculating
+  int * prev_row = new int[size1];  // The last row we calculated
+
+  // Initialize the previous row to record the differece from nothing.
+  for (int i = 0; i < size1; i++) prev_row[i] = i + 1;
+
+  // Loop through all of the other rows
+  for (int i = 0; i < size2; i++) {
+    // Initialize the first entry in the current row.
+    if (string1[0] == string2[i]) cur_row[0] = i;
+    else cur_row[0] = (i < prev_row[0]) ? (i+1) : (prev_row[0] + 1);
+
+    // Move down the cur_row and fill it in.
+    for (int j = 1; j < size1; j++) {
+      // If the values are equal, keep the value in the upper left.
+      if (string1[j] == string2[i]) {
+	cur_row[j] = prev_row[j-1];
+      }
+
+      // Otherwise, set the current position the the minimal of the three
+      // numbers to the upper right in the chart plus one.
+      else {
+	cur_row[j] =
+	  (prev_row[j] < prev_row[j-1]) ? prev_row[j] : prev_row[j-1];
+	if (cur_row[j-1] < cur_row[j]) cur_row[j] = cur_row[j-1];
+	cur_row[j]++;
+      }
+    }
+
+    // Swap cur_row and prev_row. (we only really need to move the cur row
+    // over to prev, but this saves us from having to keep re-allocating
+    // new rows.  We recycle!
+    int * temp_row = cur_row;
+    cur_row = prev_row;
+    prev_row = temp_row;
+  }
+
+  // Now that we are done, return the bottom-right corner of the chart.
+
+  const int value = prev_row[size1 - 1];
+
+  delete [] cur_row;
+  delete [] prev_row;
+
+  return value;
+}
+
+
+int cStringUtil::EditDistance(const cString & string1, const cString & string2,
+			      cString & info, const char gap)
+{
+  const int size1 = string1.GetSize();
+  const int size2 = string2.GetSize();
+ 
+  if (!size1) return size2;
+  if (!size2) return size1;
+
+  tMatrix<double> dist_matrix(size2+1, size1+1);
+
+  // Keep track of changes in a mut_matrix.
+  //  N=None, M=Mutations, I=Insertion, D=Deletion
+  tMatrix<char> mut_matrix(size2+1, size1+1);
+
+  // Initialize the first row and col to record the differece from nothing.
+  for (int i = 0; i < size1+1; i++) {
+    dist_matrix(0,i) = (double) i;
+    mut_matrix(0,i) = 'I';
+  }
+  for (int i = 0; i < size2+1; i++) {
+    dist_matrix(i,0) = (double) i;
+    mut_matrix(i,0) = 'D';
+  }
+  mut_matrix(0,0) = 'N';
+
+  for (int i = 0; i < size2; i++) {
+    // Move down the cur_row and fill it out.
+    for (int j = 0; j < size1; j++) {
+      // If the values are equal, keep the value in the upper left.
+      if (string1[j] == string2[i]) {
+	dist_matrix(i+1,j+1) = dist_matrix(i,j);
+	mut_matrix(i+1,j+1) = 'N';
+	continue; // Move on to next entry...
+      }
+
+      // Otherwise, set the current position the the minimal of the three
+      // numbers above (insertion), to the left (deletion), or upper left
+      // (mutation) in the chart, plus one.
+      double mut_dist = dist_matrix(i,j) + 1;
+      if ((string1[j] == gap) || (string2[i] == gap)) mut_dist -= 0.0001;
+      const double ins_dist = dist_matrix(i+1,j) + (string1[j] != gap);
+      const double del_dist = dist_matrix(i,j+1) + (string2[i] != gap);
+
+      if (mut_dist < ins_dist && mut_dist < del_dist) {  // Mutation!
+	dist_matrix(i+1,j+1) = mut_dist;
+	mut_matrix(i+1,j+1) = 'M';
+      } else if (ins_dist < del_dist) {                  // Insertion!
+	dist_matrix(i+1,j+1) = ins_dist;
+	mut_matrix(i+1,j+1) = 'I';
+      } else {                                           // Deletion!
+	dist_matrix(i+1,j+1) = del_dist;
+	mut_matrix(i+1,j+1) = 'D';
+      }
+    }
+  }
+
+  // Construct the list of changes
+  int pos1 = size1;
+  int pos2 = size2;
+  info = "";
+
+  cString mut_string;
+  while (pos1 > 0 || pos2 > 0) {
+    if (mut_matrix(pos2, pos1) == 'N') {     
+      pos1--; pos2--;
+      continue;
+    }
+
+    // There is a mutation here; determine the type...
+    const char old_char = (pos2 > 0) ? string2[pos2-1] : '\0';
+    const char new_char = (pos1 > 0) ? string1[pos1-1] : '\0';
+
+    if (mut_matrix(pos2, pos1) == 'M') {
+      mut_string.Set("M%d%c%c", pos2-1, old_char, new_char);
+      pos1--; pos2--;
+    }
+    else if (mut_matrix(pos2, pos1) == 'D') {
+      mut_string.Set("D%d%c", pos2-1, old_char);
+      pos2--;
+    }
+    else { // if (mut_matrix(pos2, pos1) == 'I') {
+      mut_string.Set("I%d%c", pos1-1, new_char);
+      pos1--;
+    }
+
+    if (info.GetSize() > 0) mut_string += ",";
+    info.Insert(mut_string);
+  } 
+
+  // Now that we are done, return the bottom-right corner of the chart.
+  return (int) dist_matrix(size2, size1);
+}
+
+const cString & cStringUtil::Convert(const cString & in_string,
+				     const cString & out_string)
+{
+  return in_string;
+}
+
+bool cStringUtil::Convert(const cString & in_string, bool type_bool)
+{
+  return (in_string.AsInt() != 0);
+}
+
+int cStringUtil::Convert(const cString & in_string, int type_int)
+{
+  return in_string.AsInt();
+}
+
+double cStringUtil::Convert(const cString & in_string, double type_double)
+{
+  return in_string.AsDouble();
+}

Copied: trunk/source/tools/cStringUtil.h (from rev 337, trunk/source/tools/string_util.hh)
===================================================================
--- trunk/source/tools/string_util.hh	2005-10-07 01:02:35 UTC (rev 337)
+++ trunk/source/tools/cStringUtil.h	2005-10-08 02:02:38 UTC (rev 338)
@@ -0,0 +1,57 @@
+//////////////////////////////////////////////////////////////////////////////
+// Copyright (C) 1993 - 2003 California Institute of Technology             //
+//                                                                          //
+// Read the COPYING and README files, or contact 'avida at alife.org',         //
+// before continuing.  SOME RESTRICTIONS MAY APPLY TO USE OF THIS FILE.     //
+//////////////////////////////////////////////////////////////////////////////
+
+#ifndef STRING_UTIL_HH
+#define STRING_UTIL_HH
+
+#ifndef STRING_HH
+#include "cString.h"
+#endif
+
+class cString; // aggregate
+
+struct cStringUtil {
+  static cString Stringf(const char * fmt, ...);
+  static cString ToRomanNumeral(const int in_value);
+  static int StrLength(const char * _in);
+
+  /**
+   * Calculate the Hamming distance between two strings.
+   *
+   * @return The Hamming distance.
+   * @param string1 the first string to compare.
+   * @param string2 the second string to compare.
+   * @param offset This parameter determines how many characters the second
+   * string should be shifted wrt. the first before the comparison.
+   **/
+  static int Distance(const cString & string1, const cString & string2,
+	       int offset=0);
+  
+  /**
+   * Calculate the edit distance between two strings.
+   *
+   * @return The Edit (Levenstein) distance.
+   * @param string1 the first string to compare.
+   * @param string2 the second string to compare.
+   * @param description The string to write out the differences
+   **/
+  static int EditDistance(const cString & string1, const cString & string2);
+  static int EditDistance(const cString & string1, const cString & string2,
+			  cString & info, const char gap=' '); 
+
+  /**
+   * Various, overloaded conversion functions for use in templates.  Note
+   * that in all cases, the second argument is simply to set the return type.
+   **/
+  static const cString & Convert(const cString & in_string,
+				 const cString & out_string);
+  static bool   Convert(const cString & in_string, bool   type_bool);
+  static int    Convert(const cString & in_string, int    type_int);
+  static double Convert(const cString & in_string, double type_double);
+};
+
+#endif

Deleted: trunk/source/tools/help_alias.cc
===================================================================
--- trunk/source/tools/help_alias.cc	2005-10-07 01:02:35 UTC (rev 337)
+++ trunk/source/tools/help_alias.cc	2005-10-08 02:02:38 UTC (rev 338)
@@ -1,18 +0,0 @@
-//////////////////////////////////////////////////////////////////////////////
-// Copyright (C) 1993 - 2003 California Institute of Technology             //
-//                                                                          //
-// Read the COPYING and README files, or contact 'avida at alife.org',         //
-// before continuing.  SOME RESTRICTIONS MAY APPLY TO USE OF THIS FILE.     //
-//////////////////////////////////////////////////////////////////////////////
-
-#ifndef HELP_ALIAS_HH
-#include "help_alias.hh"
-#endif
-
-#ifndef HELP_FULL_ENTRY_HH
-#include "help_full_entry.hh"
-#endif
-
-const cString & cHelpAlias::GetKeyword() const { return full_entry->GetKeyword(); }
-const cString & cHelpAlias::GetDesc() const { return full_entry->GetDesc(); }
-cHelpType * cHelpAlias::GetType() const { return full_entry->GetType(); }

Deleted: trunk/source/tools/help_alias.hh
===================================================================
--- trunk/source/tools/help_alias.hh	2005-10-07 01:02:35 UTC (rev 337)
+++ trunk/source/tools/help_alias.hh	2005-10-08 02:02:38 UTC (rev 338)
@@ -1,34 +0,0 @@
-//////////////////////////////////////////////////////////////////////////////
-// Copyright (C) 1993 - 2003 California Institute of Technology             //
-//                                                                          //
-// Read the COPYING and README files, or contact 'avida at alife.org',         //
-// before continuing.  SOME RESTRICTIONS MAY APPLY TO USE OF THIS FILE.     //
-//////////////////////////////////////////////////////////////////////////////
-
-#ifndef HELP_ALIAS_HH
-#define HELP_ALIAS_HH
-
-#ifndef HELP_ENTRY_HH
-#include "help_entry.hh"
-#endif
-
-class cHelpFullEntry;
-class cHelpType;
-class cString;
-
-class cHelpAlias : public cHelpEntry {
-private:
-  cHelpFullEntry * full_entry;
-public:
-  cHelpAlias(const cString & _alias, cHelpFullEntry * _full_entry)
-    : cHelpEntry(_alias), full_entry(_full_entry) { ; }
-  ~cHelpAlias() { ; }
-
-  const cString & GetKeyword() const;
-  const cString & GetDesc() const;
-  cHelpType * GetType() const;
-
-  bool IsAlias() const { return true; }
-};
-
-#endif

Deleted: trunk/source/tools/help_entry.hh
===================================================================
--- trunk/source/tools/help_entry.hh	2005-10-07 01:02:35 UTC (rev 337)
+++ trunk/source/tools/help_entry.hh	2005-10-08 02:02:38 UTC (rev 338)
@@ -1,40 +0,0 @@
-//////////////////////////////////////////////////////////////////////////////
-// Copyright (C) 1993 - 2003 California Institute of Technology             //
-//                                                                          //
-// Read the COPYING and README files, or contact 'avida at alife.org',         //
-// before continuing.  SOME RESTRICTIONS MAY APPLY TO USE OF THIS FILE.     //
-//////////////////////////////////////////////////////////////////////////////
-
-#ifndef HELP_ENTRY_HH
-#define HELP_ENTRY_HH
-
-#ifndef STRING_HH
-#include "string.hh"
-#endif
-#ifndef STRING_UTIL_HH
-#include "string_util.hh"
-#endif
-
-class cHelpType;
-class cString; // aggregate
-class cStringUtil; // accessed
-
-class cHelpEntry {
-protected:
-  cString name;
-public:
-  cHelpEntry(const cString & _name) : name(_name) { ; }
-  virtual ~cHelpEntry() { ; }
-
-  const cString & GetName() const { return name; }
-  virtual const cString & GetKeyword() const = 0;
-  virtual const cString & GetDesc() const = 0;
-  virtual cHelpType * GetType() const = 0;
-
-  virtual bool IsAlias() const = 0;
-
-  cString GetHTMLFilename() const
-    { return cStringUtil::Stringf("help.%s.html", GetKeyword()()); }
-};
-
-#endif

Deleted: trunk/source/tools/help_full_entry.hh
===================================================================
--- trunk/source/tools/help_full_entry.hh	2005-10-07 01:02:35 UTC (rev 337)
+++ trunk/source/tools/help_full_entry.hh	2005-10-08 02:02:38 UTC (rev 338)
@@ -1,45 +0,0 @@
-//////////////////////////////////////////////////////////////////////////////
-// Copyright (C) 1993 - 2003 California Institute of Technology             //
-//                                                                          //
-// Read the COPYING and README files, or contact 'avida at alife.org',         //
-// before continuing.  SOME RESTRICTIONS MAY APPLY TO USE OF THIS FILE.     //
-//////////////////////////////////////////////////////////////////////////////
-
-#ifndef HELP_FULL_ENTRY_HH
-#define HELP_FULL_ENTRY_HH
-
-#ifndef HELP_ENTRY_HH
-#include "help_entry.hh"
-#endif
-#ifndef STRING_HH
-#include "string.hh"
-#endif
-
-class cHelpType;
-class cString; // aggregate
-
-class cHelpFullEntry : public cHelpEntry {
-private:
-  cHelpType * type;
-  cString desc;
-public:
-  cHelpFullEntry(const cString & _name, cHelpType * _type, const cString _desc)
-    : cHelpEntry(_name), type(_type), desc(_desc) { ; }
-  cHelpFullEntry() : cHelpEntry(""), type(NULL) { ; }
-  ~cHelpFullEntry() { ; }
-
-  const cHelpFullEntry & operator=(const cHelpEntry & in_entry) {
-    name = in_entry.GetName();
-    type = in_entry.GetType();
-    desc = in_entry.GetDesc();
-    return *this;
-  }
-
-  const cString & GetKeyword() const { return name; }
-  const cString & GetDesc() const { return desc; }
-  cHelpType * GetType() const { return type; }
-
-  bool IsAlias() const { return false; }
-};
-
-#endif

Deleted: trunk/source/tools/help_manager.cc
===================================================================
--- trunk/source/tools/help_manager.cc	2005-10-07 01:02:35 UTC (rev 337)
+++ trunk/source/tools/help_manager.cc	2005-10-08 02:02:38 UTC (rev 338)
@@ -1,102 +0,0 @@
-//////////////////////////////////////////////////////////////////////////////
-// Copyright (C) 1993 - 2003 California Institute of Technology             //
-//                                                                          //
-// Read the COPYING and README files, or contact 'avida at alife.org',         //
-// before continuing.  SOME RESTRICTIONS MAY APPLY TO USE OF THIS FILE.     //
-//////////////////////////////////////////////////////////////////////////////
-
-#ifndef HELP_MANAGER_HH
-#include "help_manager.hh"
-#endif
-
-#ifndef HELP_TYPE_HH
-#include "help_type.hh"
-#endif
-#ifndef INIT_FILE_HH
-#include "init_file.hh"
-#endif
-#ifndef STRING_HH
-#include "string.hh"
-#endif
-#ifndef TLIST_HH
-#include "tList.hh"
-#endif
-
-#include <iostream>
-
-using namespace std;
-
-cHelpType * cHelpManager::GetType(const cString type_name)
-{
-  // See if we can find this type in the already existant list...
-  tListIterator<cHelpType> type_it(type_list);
-  while (type_it.Next() != NULL) {
-    if (type_it.Get()->GetName() == type_name) return type_it.Get();
-  }
-
-  // Otherwise, create it.
-  if (verbose == true) {
-    cout << "  Creating help type \"" << type_name << "\"." << endl;
-  }
-  cHelpType * type = new cHelpType(type_name, this);
-  type_list.Push(type);
-  return type;
-}
-
-void cHelpManager::LoadFile(const cString & filename)
-{
-  cInitFile help_file(filename);
-  help_file.Load();
-  help_file.Compress();
-  help_file.Close();
-
-  cHelpType * type = NULL;
-  cString keyword;
-
-  for (int line_id = 0; line_id < help_file.GetNumLines(); line_id++) {
-    cString cur_string = help_file.GetLine(line_id);
-    cString command = cur_string.PopWord();
-    command.ToLower();
-
-    if (command == "type:") {
-      type = GetType(cur_string);
-    }
-    else if (command == "keyword:") {
-      keyword = cur_string;
-    }
-    else if (command == "desc:") {
-      if (type == NULL) type = GetType("None"); // Make sure we have a type.
-      if (keyword == "") {
-	if (verbose == true) {
-	  cerr << "  Help description set without keyword;"
-	       << " setting keyword to \"None\"." << endl;
-	}
-	keyword = "None";
-      }
-      last_entry = type->AddEntry(keyword, cur_string);
-    }
-    else if (command == "alias:") {
-      if (last_entry == NULL) {
-	cerr << "  Warning: Setting aliases \"" << cur_string
-	     << "\" to incomplete entry!" << endl;
-      }
-      while (cur_string.GetSize() > 0) {
-	type->AddAlias(cur_string.PopWord(), last_entry);
-      }
-    }
-    else if (verbose == true) {
-      cerr << "Warning: Unknown command \"" << command
-	   << "\" in file " << filename << endl;
-    }
-  }
-
-}
-
-
-void cHelpManager::PrintHTML()
-{
-  tListIterator<cHelpType> type_it(type_list);
-  while (type_it.Next() != NULL) {
-    type_it.Get()->PrintHTML();
-  }
-}

Deleted: trunk/source/tools/help_manager.hh
===================================================================
--- trunk/source/tools/help_manager.hh	2005-10-07 01:02:35 UTC (rev 337)
+++ trunk/source/tools/help_manager.hh	2005-10-08 02:02:38 UTC (rev 338)
@@ -1,59 +0,0 @@
-//////////////////////////////////////////////////////////////////////////////
-// Copyright (C) 1993 - 2003 California Institute of Technology             //
-//                                                                          //
-// Read the COPYING and README files, or contact 'avida at alife.org',         //
-// before continuing.  SOME RESTRICTIONS MAY APPLY TO USE OF THIS FILE.     //
-//////////////////////////////////////////////////////////////////////////////
-
-#ifndef HELP_MANAGER_HH
-#define HELP_MANAGER_HH
-
-#ifndef HELP_TYPE_HH
-#include "help_type.hh"
-#endif
-#ifndef STRING_HH
-#include "string.hh"
-#endif
-#ifndef TLIST_HH
-#include "tList.hh"
-#endif
-
-class cHelpFullEntry;
-class cHelpType; // accessed
-class cString; // aggregate
-template <class T> class tList; // aggregate
-template <class T> class tListIterator; // aggregate
-
-class cHelpManager {
-private:
-  tList<cHelpType> type_list;
-  cHelpFullEntry * last_entry;
-  bool verbose;   // Should we print messages to the screen?
-
-  // Private methods...
-  cHelpType * GetType(const cString type_name);
-private:
-  // disabled copy constructor.
-  cHelpManager(const cHelpManager &);
-public:
-  cHelpManager() : last_entry(NULL), verbose (false) { ; }
-  ~cHelpManager() { while (type_list.GetSize() > 0) delete type_list.Pop(); }
-
-  void LoadFile(const cString & filename);
-  void PrintHTML();
-  cHelpEntry * FindEntry(cString entry_name) {
-    entry_name.ToLower();
-
-    tListIterator<cHelpType> type_it(type_list);
-    while (type_it.Next() != NULL) {
-      cHelpEntry * found_entry = type_it.Get()->FindEntry(entry_name);
-      if (found_entry != NULL) return found_entry;
-    }
-    return NULL;
-  }
-  
-  void SetVerbose(bool _verbose = true) { verbose = _verbose; }
-  bool GetVerbose() const { return verbose; }
-};
-
-#endif

Deleted: trunk/source/tools/help_type.cc
===================================================================
--- trunk/source/tools/help_type.cc	2005-10-07 01:02:35 UTC (rev 337)
+++ trunk/source/tools/help_type.cc	2005-10-08 02:02:38 UTC (rev 338)
@@ -1,126 +0,0 @@
-//////////////////////////////////////////////////////////////////////////////
-// Copyright (C) 1993 - 2003 California Institute of Technology             //
-//                                                                          //
-// Read the COPYING and README files, or contact 'avida at alife.org',         //
-// before continuing.  SOME RESTRICTIONS MAY APPLY TO USE OF THIS FILE.     //
-//////////////////////////////////////////////////////////////////////////////
-
-#ifndef HELP_TYPE_HH
-#include "help_type.hh"
-#endif
-
-#ifndef HELP_ALIAS_HH
-#include "help_alias.hh"
-#endif
-#ifndef HELP_ENTRY_HH
-#include "help_entry.hh"
-#endif
-#ifndef HELP_FULL_ENTRY_HH
-#include "help_full_entry.hh"
-#endif
-#ifndef HELP_MANAGER_HH
-#include "help_manager.hh"
-#endif
-
-#include <fstream>
-
-using namespace std;
-
-cHelpAlias * cHelpType::AddAlias(const cString & alias_name, cHelpFullEntry * entry) {
-  cHelpAlias * new_alias = new cHelpAlias(alias_name, entry);
-  entry_list.Push(new_alias);
-  return new_alias;
-}
-
-cHelpFullEntry * cHelpType::AddEntry(const cString & _name, const cString & _desc) {
-  cHelpFullEntry * new_entry = new cHelpFullEntry(_name, this, _desc);
-  entry_list.Push(new_entry);
-  num_entries++;
-  return new_entry;
-}
-
-cHelpEntry * cHelpType::FindEntry(const cString & entry_name) {
-  tListIterator<cHelpEntry> entry_it(entry_list);
-  while (entry_it.Next() != NULL) {
-    if (entry_it.Get()->GetName() == entry_name) {
-      return entry_it.Get(); // Found!
-    }
-  }
-  return NULL;  // Not found...
-}
-
-cHelpType::~cHelpType() { while (entry_list.GetSize() > 0) delete entry_list.Pop(); }
-
-void cHelpType::PrintHTML()
-{
-  if (manager->GetVerbose()) cout << "  Category: " << GetName() << endl;
-
-  cHelpEntry * cur_entry = NULL;
-  tListIterator<cHelpEntry> entry_it(entry_list);
-
-  while ( (cur_entry = entry_it.Next()) != NULL) {
-    // Only print non-alias entries...
-    if (cur_entry->IsAlias() == true) continue;
-    
-    ofstream fp(cur_entry->GetHTMLFilename());
-    
-    fp << "<html>" << endl
-       << "<title>" << GetName() << " : "
-       << cur_entry->GetName() << "</title>" << endl << endl
-       << "<h1>" << cur_entry->GetName() << "</h1>" << endl << endl;
-    
-    cString out_desc( cur_entry->GetDesc() );
-    int pos = 0;
-    while ((pos = out_desc.Find('!', pos)) != -1) {
-      // Grab the word we need to replace
-      cString found_word(out_desc.GetWordAt(pos));
-      cString new_word;
-      
-      // If we have a double '!' reduce it to a single one and continue...
-      if (found_word[1] == '!') {
-	out_desc.Replace("!!", "!", pos);
-	pos++;
-      }
-      
-      // Otherwise, do a proper replacement...
-      else {
-	// Find the root keyword...
-	cString keyword(found_word);
-	keyword.ClipFront(1); // Clip off the '!' on the string.
-	
-	// Clip end punctuation and save it if there is any.
-	char end_char = ' ';
-	const int last_pos = keyword.GetSize() - 1;
-	if (keyword.IsNumeric(last_pos) == false &&
-	    keyword.IsLetter(last_pos) == false) {
-	  end_char = keyword[keyword.GetSize() - 1];
-	  keyword.ClipEnd(1);
-	}
-	// User can end a word in a '!' to preserve other punctuation...
-	if (end_char == '!') end_char = ' ';
-
-	// Determine what filename contains the new word...
-	cHelpEntry * found_entry = manager->FindEntry(keyword);
-	if (found_entry == NULL) {
-	  if (manager->GetVerbose() == true) {
-	    cerr << "  Warning: unknown help keyword \""
-		 << keyword << "\"." << endl;
-	  }
-	  new_word.Set("<a href=\"help.%s.html\">%s</a>%c",
-		       keyword(), keyword(), end_char);
-	}
-	else {
-	  new_word.Set("<a href=\"%s\">%s</a>%c",
-		  found_entry->GetHTMLFilename()(), keyword(), end_char);
-	}
-
-	// Rebuild the description with the new word...
-	out_desc.Replace(found_word, new_word, pos);
-	pos += new_word.GetSize();
-      }
-    }
-
-    fp << out_desc << endl;
-  }
-}
-

Deleted: trunk/source/tools/help_type.hh
===================================================================
--- trunk/source/tools/help_type.hh	2005-10-07 01:02:35 UTC (rev 337)
+++ trunk/source/tools/help_type.hh	2005-10-08 02:02:38 UTC (rev 338)
@@ -1,46 +0,0 @@
-//////////////////////////////////////////////////////////////////////////////
-// Copyright (C) 1993 - 2003 California Institute of Technology             //
-//                                                                          //
-// Read the COPYING and README files, or contact 'avida at alife.org',         //
-// before continuing.  SOME RESTRICTIONS MAY APPLY TO USE OF THIS FILE.     //
-//////////////////////////////////////////////////////////////////////////////
-
-#ifndef HELP_TYPE_HH
-#define HELP_TYPE_HH
-
-#ifndef STRING_HH
-#include "string.hh"
-#endif
-#ifndef TLIST_HH
-#include "tList.hh"
-#endif
-
-class cHelpAlias;
-class cHelpEntry;
-class cHelpFullEntry;
-class cHelpManager;
-class cString; // aggregate
-template <class T> class tList; // aggregate
-
-class cHelpType {
-private:
-  cString name;
-  tList<cHelpEntry> entry_list;
-  cHelpManager * manager;
-  int num_entries;
-private:
-  // disabled copy constructor.
-  cHelpType(const cHelpType &);
-public:
-  cHelpType(const cString & _name, cHelpManager * _manager)
-    : name(_name), manager(_manager), num_entries(0) { ; }
-  ~cHelpType();
-  cHelpFullEntry * AddEntry(const cString & _name, const cString & _desc);
-  cHelpAlias * AddAlias(const cString & alias_name, cHelpFullEntry * entry);
-  const cString & GetName() const { return name; }
-  cHelpEntry * FindEntry(const cString & entry_name);
-
-  void PrintHTML();
-};
-
-#endif

Deleted: trunk/source/tools/histogram.cc
===================================================================
--- trunk/source/tools/histogram.cc	2005-10-07 01:02:35 UTC (rev 337)
+++ trunk/source/tools/histogram.cc	2005-10-08 02:02:38 UTC (rev 338)
@@ -1,88 +0,0 @@
-//////////////////////////////////////////////////////////////////////////////
-// Copyright (C) 1993 - 2003 California Institute of Technology             //
-//                                                                          //
-// Read the COPYING and README files, or contact 'avida at alife.org',         //
-// before continuing.  SOME RESTRICTIONS MAY APPLY TO USE OF THIS FILE.     //
-//////////////////////////////////////////////////////////////////////////////
-
-#ifndef HISTOGRAM_HH
-#include "histogram.hh"
-#endif
-
-#ifndef FUNCTIONS_HH
-#include "functions.h"
-#endif
-
-extern "C" {
-#include <stdio.h>
-}
-
-#include <iostream>
-
-using namespace std;
-
-// cHistogram /////////////////////////////////////////////////////////////////
-
-cHistogram::cHistogram(int in_max, int in_min) {
-  max_bin = in_max;
-  min_bin = in_min;
-  entry_count = 0;
-  entry_total = 0;
-
-  int num_bins = max_bin - min_bin + 1;
-  bins = new int[num_bins];
-  for (int i = 0; i < num_bins; i++)   bins[i] = 0;
-}
-
-void cHistogram::Resize(int new_max, int new_min)
-{
-#ifdef DEBUG
-  if (new_max < new_min) {
-    cerr << "Error: Trying to resize histogram to [" << new_min << "," << new_max << "]" << endl;
-    return;
-  }
-#endif
-
-  // Calculate new num bins.
-  int new_num_bins = new_max - new_min + 1;
-
-  // Setup new bins, copying over information...
-  int cur_bin = 0;
-  int overlap_min = Max(min_bin, new_min);
-  int overlap_max = Min(max_bin, new_max);
-
-  int * new_bins = new int[new_num_bins];
-  for (cur_bin = new_min; cur_bin < min_bin; cur_bin++)
-    new_bins[cur_bin - new_min] = 0;
-  for (cur_bin = max_bin; cur_bin <= new_max; cur_bin++)
-    new_bins[cur_bin - new_min] = 0;
-  for (cur_bin = overlap_min; cur_bin <= overlap_max; cur_bin++)
-    new_bins[cur_bin - new_min] = bins[cur_bin - min_bin];
-
-  // Re-count bins...
-  int new_count = 0;
-  int new_total = 0;
-  for (int i = 0; i < new_num_bins; i++) {
-    new_count += new_bins[i];
-    new_total += new_bins[i] * (i + new_min);
-  }
-  entry_count = new_count;
-  entry_total = new_total;
-
-  delete [] bins;
-  bins = new_bins;
-  max_bin = new_max;
-  min_bin = new_min;
-}
-
-void cHistogram::Print()
-{
-  FILE * fp = fopen("test.dat", "w");
-  fprintf(fp, "Min = %d, Max = %d, Count = %d, Total = %d, Ave = %f\n",
-	  min_bin, max_bin, entry_count, entry_total, GetAverage());
-  for (int i = min_bin; i <= max_bin; i++) {
-    fprintf(fp, "%d : %d\n", i, bins[i - min_bin]);
-  }
-  fflush(fp);
-  fclose(fp);
-}

Deleted: trunk/source/tools/histogram.hh
===================================================================
--- trunk/source/tools/histogram.hh	2005-10-07 01:02:35 UTC (rev 337)
+++ trunk/source/tools/histogram.hh	2005-10-08 02:02:38 UTC (rev 338)
@@ -1,203 +0,0 @@
-//////////////////////////////////////////////////////////////////////////////
-// Copyright (C) 1993 - 2003 California Institute of Technology             //
-//                                                                          //
-// Read the COPYING and README files, or contact 'avida at alife.org',         //
-// before continuing.  SOME RESTRICTIONS MAY APPLY TO USE OF THIS FILE.     //
-//////////////////////////////////////////////////////////////////////////////
-
-#ifndef HISTOGRAM_HH
-#define HISTOGRAM_HH
-
-#include <iostream>
-
-extern "C" {
-#include <math.h>
-}
-
-class cHistogram {
-private:
-  int * bins;
-  int min_bin;
-  int max_bin;
-  int entry_count;
-  int entry_total;
-public:
-  cHistogram(int in_max=1, int in_min=0);
-  inline ~cHistogram() { delete [] bins; }
-
-  void Resize(int new_max, int new_min=0);
-  void Print();
-  inline void Clear();
-  inline void Insert(int value, int count=1);
-  inline void Remove(int value);
-  inline void RemoveBin(int value);
-
-  inline double GetAverage()
-    { return ((double)entry_total) / (double)entry_count; }
-  inline double GetCountAverage()
-    { return (double) entry_count / (double) GetNumBins(); }
-  inline int GetMode();
-  inline double GetVariance();
-  inline double GetCountVariance();
-  inline double GetStdDev();
-  inline double GetCountStdDev();
-  inline double GetEntropy();
-  inline double GetNormEntropy();
-
-  inline int GetCount() { return entry_count; }
-  inline int GetCount(int value) { return bins[value - min_bin]; }
-  inline int GetTotal() { return entry_total; }
-  inline int GetMinBin() { return min_bin; }
-  inline int GetMaxBin() { return max_bin; }
-  inline int GetNumBins() { return max_bin - min_bin + 1; }
-};
-
-inline void cHistogram::Clear()
-{
-  int num_bins = GetNumBins();
-  for (int i = 0; i < num_bins; i++) {
-    bins[i] = 0;
-  }
-  entry_count = 0;
-  entry_total = 0;
-}
-
-
-inline void cHistogram::Insert(int value, int count)
-{
-  if (value > max_bin || value < min_bin) {
-    std::cerr << "Trying to insert " << value << " into Histogram of range ["
-	 << min_bin << "," << max_bin << "]" << std::endl;
-  }
-
-  bins[value - min_bin] += count;
-  entry_count += count;
-  entry_total += value * count;
-}
-
-inline void cHistogram::Remove(int value)
-{
-#ifdef DEBUG
-  if (value > max_bin || value < min_bin) {
-    std::cerr << "Trying to remove " << value << " into Histogram of range ["
-	 << min_bin << "," << max_bin << "]" << std::endl;
-    return;
-  }
-  if (bins[value] <= 1) {
-    std::cerr << "Warning: Trying to remove " << value << " from bin with "
-	 << bins[value] << " entries" << std::endl;
-    return;
-  }
-#endif
-
-  bins[value - min_bin]--;
-  entry_count--;
-  entry_total -= value;
-}
-
-inline void cHistogram::RemoveBin(int value)
-{
-#ifdef DEBUG
-  if (value > max_bin || value < min_bin) {
-    std::cerr << "Warning: Trying to remove " << value
-	 << " in histogram of range [" << min_bin << "," <<  max_bin
-	 << "]" << std::endl;
-    return;
-  }
-#endif
-
-  int old_size = bins[value - min_bin];
-  bins[value - min_bin] = 0;
-
-  entry_count -= old_size;
-  entry_total -= value * old_size;
-}
-
-inline int cHistogram::GetMode()
-{
-  int num_bins = GetNumBins();
-  int mode = 0;
-  for (int i = 1; i < num_bins; i++) {
-    if (bins[i] > bins[mode]) mode = i;
-  }
-
-  return mode + min_bin;
-}
-
-inline double cHistogram::GetVariance()
-{
-  if (entry_count < 2) return 0;
-
-  double mean = GetAverage();
-  double var = 0;
-  double value = 0;
-
-  int num_bins = GetNumBins();
-  for (int i = 0; i < num_bins; i++) {
-    value = (double) (i + min_bin) - mean;
-    var += bins[i] * value * value;
-  }
-  var /= entry_count - 1;
-
-  return var;
-}
-
-inline double cHistogram::GetCountVariance()
-{
-  int num_bins = GetNumBins();
-  if (num_bins < 2) return 0;
-
-  double mean = GetCountAverage();
-  double var = 0;
-  double value = 0;
-
-  for (int i = 0; i < num_bins; i++) {
-    value = (double) bins[i] - mean;
-    var += value * value;
-  }
-  var /= num_bins - 1;
-
-  return var;
-}
-
-inline double cHistogram::GetStdDev()
-{
-  return sqrt(GetVariance());
-}
-
-inline double cHistogram::GetCountStdDev()
-{
-  return sqrt(GetCountVariance());
-}
-
-inline double cHistogram::GetEntropy()
-{
-  int num_bins = GetNumBins();
-
-  double entropy = 0.0;
-  double prob = 0.0;
-
-  for (int i = 0; i < num_bins; i++) {
-    prob = (double) bins[i] / (double) entry_count;
-    entropy -= prob * log(prob);
-  }
-
-  return entropy;
-}
-
-inline double cHistogram::GetNormEntropy()
-{
-  int num_bins = GetNumBins();
-
-  double entropy = 0.0;
-  double prob = 0.0;
-
-  for (int i = 0; i < num_bins; i++) {
-    prob = ((double) bins[i]) / (double) entry_count;
-    if (prob != 0.0) entropy -= prob * log(prob);
-  }
-
-  return entropy / log((double) num_bins);
-}
-
-#endif

Deleted: trunk/source/tools/indexed_block_struct.cc
===================================================================
--- trunk/source/tools/indexed_block_struct.cc	2005-10-07 01:02:35 UTC (rev 337)
+++ trunk/source/tools/indexed_block_struct.cc	2005-10-08 02:02:38 UTC (rev 338)
@@ -1,266 +0,0 @@
-//////////////////////////////////////////////////////////////////////////////
-// Copyright (C) 1993 - 2003 California Institute of Technology             //
-//                                                                          //
-// Read the COPYING and README files, or contact 'avida at alife.org',         //
-// before continuing.  SOME RESTRICTIONS MAY APPLY TO USE OF THIS FILE.     //
-//////////////////////////////////////////////////////////////////////////////
-
-#ifndef INDEXED_BLOCK_STRUCT_HH
-#include "indexed_block_struct.hh"
-#endif
-
-#include <iostream>
-
-using namespace std;
-
-//////////////////////////
-//  cIndexedBlockStruct
-//////////////////////////
-
-cIndexedBlockStruct::cIndexedBlockStruct(int in_num_scaled, int in_num_fixed,
-					 int in_num_ref)
-{
-  num_fixed = in_num_fixed;
-  num_scaled = in_num_scaled;
-  num_ref = in_num_ref;
-  num_data = 0;
-
-  fixed_array = new cFixedBlock[num_fixed];
-  scaled_array = new cRefBlock[num_scaled];
-  ref_array = new int[num_ref];
-
-  int i;
-  for (i = 0; i < num_ref; i++) {
-    ref_array[i] = -1;
-  }
-
-  fixed_used(0, 0);
-  scaled_used = 0;
-
-  total_size = 0;
-  fixed_size = 0;
-}
-
-cIndexedBlockStruct::~cIndexedBlockStruct()
-{
-  delete [] scaled_array;
-  delete [] fixed_array;
-  delete [] ref_array;
-}
-
-int cIndexedBlockStruct::AddData(int in_ref, int in_size)
-{
-  // Only allow positive sized data, and only if there is room.
-  if (in_size <= 0 || scaled_used >= num_scaled) return -1;    
-
-  // If this reference is already represented, combine them.
-  if (ref_array[in_ref] >= 0) {
-    in_size += scaled_array[ref_array[in_ref]].GetSize();
-    RemoveRef(in_ref);
-  }
-
-  scaled_array[scaled_used].SetRef(in_ref);
-  scaled_array[scaled_used].SetSize(in_size);
-  ref_array[in_ref] = scaled_used;
-  
-  total_size += in_size;
-  num_data++;
-
-  return scaled_used++;
-}
-
-int cIndexedBlockStruct::AddDataTo(int in_ref, int in_index)
-{
-  if (ref_array[in_ref] < 0) num_data++;
-
-  scaled_array[in_index].SetRef(in_ref);
-  ref_array[in_ref] = in_index;
-
-  return scaled_array[in_index].GetSize();
-}
-
-void cIndexedBlockStruct::Clear()
-{
-  for (int i = 0; i < num_ref; i++) {
-    ref_array[i] = -1;
-  }
-
-  fixed_used(0,0);
-  scaled_used = 0;
-
-  total_size = 0;
-  num_data = 0;
-}
-
-int cIndexedBlockStruct::Process()
-{
-  if (!fixed_size) {
-    CalcFixedSize();
-  }
-
-  int cur_scaled = 0;
-  int cur_fixed = 0;
-  int size_left = scaled_array[0].GetSize();
-
-  // Set up the internal data for the first scaled block.
-
-  scaled_array[0].SetStart(0, 0);
-
-  // Move through the fixed blocks assigning each to the corresponding scaled
-  // block.  This is done by keeping track of the current scaled block for
-  // a particular location, and keeping track the "size" until the next block.
-  
-  for(cur_fixed = 0; cur_fixed < num_fixed; cur_fixed++) {
-    // Set the current fixed block to point to whatever scaled block we are
-    // currently in.
-
-    fixed_array[cur_fixed].SetStart(cur_scaled);
-
-    // If the current scaled block covers the entire fixed block, then just
-    // adjust the size_left and move on.
-
-    if (size_left > fixed_size) {
-      size_left -= fixed_size;
-      continue;
-    }
-
-    // Otherwise, start moving through the scaled blocks until the size can
-    // be covered.
-
-    while (size_left <= fixed_size) {
-      // move onto the next scaled block...
-      cur_scaled++;
-
-      //  Check to see if we are finished...
-      if (cur_scaled == scaled_used) {
-	fixed_used(cur_fixed, size_left);  // Store max coord
-	return cur_fixed + 1;
-      }
-
-      // Setup the next cRefBlock...
-
-      scaled_array[cur_scaled].SetStart(cur_fixed, size_left);
-      if (size_left == fixed_size) {
-	scaled_array[cur_scaled].SetStart(cur_fixed + 1, 0);
-      }
-
-      // Add the size of the new cRefBlock onto the size_left.
-
-      size_left += scaled_array[cur_scaled].GetSize();
-    }
-
-    // Move onto the next fixed block.
-    size_left -= fixed_size;
-  }
-
-  return -1;
-}
-
-int cIndexedBlockStruct::Update()
-{
-  // @CAO make sure a process has been done at some point in the past?
-
-  // If the data to NULL ratio is too low, have the update fail.
-  // @CAO make this configurable!
-
-  if (num_data * 2 + 2 < scaled_used) {
-    return -1;
-  }
-
-  // Start out where the last Process() finished.
-
-  int cur_scaled = fixed_array[fixed_used.GetBlockNum()].GetStart();
-  int cur_fixed = scaled_array[cur_scaled].GetStart().GetBlockNum();
-  int cur_offset = scaled_array[cur_scaled].GetStart().GetOffset();
-  int size_left = scaled_array[cur_scaled].GetSize();
-
-  // Re-adjust to make sure we are starting at the begining of a fixed block.
-
-  if (cur_offset) {
-    size_left += cur_offset - fixed_size;
-    cur_fixed++;
-  }
-
-  // Move through the fixed blocks assigning each to the corresponding scaled
-  // block.  This is done by keeping track of the current scaled block for
-  // a particular location, and keeping track the "size" until the next block.
-  
-  for(; cur_fixed < num_fixed; cur_fixed++) {
-    // Set the current fixed block to point to whatever scaled block we are
-    // currently in.
-
-    fixed_array[cur_fixed].SetStart(cur_scaled);
-
-    // If the current scaled block covers the entire fixed block, then just
-    // adjust the size_left and move on.
-
-    if (size_left > fixed_size) {
-      size_left -= fixed_size;
-      continue;
-    }
-
-    // Otherwise, start moving through the scaled blocks until the size can
-    // be covered.
-
-    while (size_left <= fixed_size) {
-      // move onto the next scaled block...
-      cur_scaled++;
-
-      //  Check to see if we are finished...
-      if (cur_scaled == scaled_used) {
-	fixed_used(cur_fixed, size_left);  // Store max coord
-	return cur_fixed + 1;
-      }
-
-      // Setup the next cScaledBlock...
-
-      scaled_array[cur_scaled].SetStart(cur_fixed, size_left);
-      if (size_left == fixed_size) {
-	scaled_array[cur_scaled].SetStart(cur_fixed + 1, 0);
-      }
-
-      // Add the size of the new cScaledBlock onto the size_left.
-
-      size_left += scaled_array[cur_scaled].GetSize();
-    }
-
-    // Move onto the next fixed block.
-    size_left -= fixed_size;
-  }
-
-  return -1;
-}
-
-int cIndexedBlockStruct::Compress()
-{
-  int scan_loc;
-  int write_loc = 0;
-
-  total_size = 0;
-  for (scan_loc = 0; scan_loc < scaled_used; scan_loc++) {
-    if (scaled_array[scan_loc].GetRef() >= 0) {
-      if (scan_loc != write_loc) {
-	scaled_array[write_loc] = scaled_array[scan_loc];
-	scaled_array[scan_loc].SetRef(-1);
-	scaled_array[scan_loc].SetSize(0);
-	ref_array[scaled_array[write_loc].GetRef()] = write_loc;
-      }
-      total_size += scaled_array[write_loc].GetSize();
-      write_loc++;
-    }
-  }
-
-  scaled_used = write_loc;
-
-  if (scaled_used != num_data)
-    cout << "Warning: after Compress() scaled_used = " << scaled_used << ", while num_data = " << num_data << endl;
-
-  return scaled_used;
-}
-
-void cIndexedBlockStruct::RemoveRef(int in_ref)
-{
-  if (ref_array[in_ref] >= 0) num_data--;
-  scaled_array[ref_array[in_ref]].SetRef(-1);
-  ref_array[in_ref] = -1;
-}

Deleted: trunk/source/tools/indexed_block_struct.hh
===================================================================
--- trunk/source/tools/indexed_block_struct.hh	2005-10-07 01:02:35 UTC (rev 337)
+++ trunk/source/tools/indexed_block_struct.hh	2005-10-08 02:02:38 UTC (rev 338)
@@ -1,147 +0,0 @@
-//////////////////////////////////////////////////////////////////////////////
-// Copyright (C) 1993 - 2003 California Institute of Technology             //
-//                                                                          //
-// Read the COPYING and README files, or contact 'avida at alife.org',         //
-// before continuing.  SOME RESTRICTIONS MAY APPLY TO USE OF THIS FILE.     //
-//////////////////////////////////////////////////////////////////////////////
-
-// See block_struct_proto.hh for a good description of this structure.
-
-// This file is a variation of the cBlockStruct data structure.  It uses
-// reference numbers (which it takes in and passed out) rather than void
-// pointers.  Additionally, it has a third array in which index i contains
-// the location in the scaled array for reference number i, so that 
-// reference numbers are not lost with compression.  The structure must be
-// initialized with the maximum reference number which will be passed into
-// it (so as to create the third array of that size.
-
-#ifndef INDEXED_BLOCK_STRUCT_HH
-#define INDEXED_BLOCK_STRUCT_HH
-
-#ifndef FIXED_BLOCK_HH
-#include "cFixedBlock.h"
-#endif
-#ifndef FIXED_COORDS_HH
-#include "cFixedCoords.h"
-#endif
-#ifndef REF_BLOCK_HH
-#include "ref_block.hh"
-#endif
-#ifndef UINT_HH
-#include "uint.hh"
-#endif
-
-class cFixedBlock; // accessed
-class cRefBlock; // accessed
-class cFixedCoords; // aggregate
-class cUInt; // aggregate
-
-class cIndexedBlockStruct {
-private:
-  cFixedBlock * fixed_array;
-  cRefBlock * scaled_array;
-  int * ref_array;
-
-  int num_fixed;
-  int num_scaled;
-  int num_ref;
-  int num_data;
-
-  cFixedCoords fixed_used;
-  int scaled_used;
-
-  cUInt total_size;
-  int fixed_size;
-public:
-  cIndexedBlockStruct(int in_num_scaled = 1, int in_num_fixed = 1,
-		      int in_num_ref = 1);
-  ~cIndexedBlockStruct();
-
-  // The following functions add a single piece of data to the scaled array,
-  // but do not update the fixed array yet.  In the first, the data and its
-  // size are entered, and an index into the scaled block array returned, or
-  // else -1 if the array is full.  In the second, the data and the index
-  // into the array are entered, and the size at that location returned.
-  int AddData(int in_ref, int in_size);
-  int AddDataTo(int in_ref, int in_index);
-
-  // This function removes all of the data from the structure.
-  void Clear();
-
-  // This function takes the scaled array, and from it fully constructs the
-  // proper fixed array.  Any information  which was in the fixed array is
-  // completely erased and re-constructed.  The number of cFixedBlock's used
-  // is returned, or -1 if it overflows.
-  int Process();
-
-  // The next function looks at data which has been taken in since the last
-  // time the fixed array was built or updated, and the new info at the end.
-  // The total number of cFixedBlock's used is returned, or -1 if it overflows.
-  int Update();
-
-  // This function takes the scaled array, and removes any elements from it
-  // which no longer point to data, and compresses everything to the begining.
-  // This should always be followed shortly by adding any new data, and then
-  // a Process().  The new number of cRefBlock's used is returned.
-  int Compress();
-
-  // Two functions to retrieve data from the structure.
-  inline int Find(cFixedCoords & search_coords) const;
-  inline int Find(int in_block, int in_offset) const;
-  inline int Find(cUInt in_position) const;
-
-  // A function to remove data from the structure...
-  void RemoveRef(int in_ref);
-
-  // Finally, internal variable control...
-  inline int GetFixedSize() const { return fixed_size; }
-  inline int GetBlocksUsed() const { return fixed_used.GetBlockNum() + 1; }
-  inline void SetFixedSize(int in_fs) {
-    fixed_size = in_fs;
-  }
-  inline void CalcFixedSize() {
-    if (num_data && total_size.AsInt()) {
-      fixed_size = (total_size / num_data).AsInt();
-    }
-    else fixed_size = 1;
-  }
-};
-
-inline int cIndexedBlockStruct::Find(cFixedCoords & search_coords) const
-{
-  // Make sure the find is within range.
-  if (search_coords >= fixed_used) {
-    return -1;
-  }
-
-  // Find the starting point in the scaled array for the search.
-  int scaled_loc = fixed_array[search_coords.GetBlockNum()].GetStart();
-  cFixedCoords cur_coords = scaled_array[scaled_loc].GetStart();
-
-  // Starting at the starting point, move through the array until the entry
-  // which covers this area is found.
-  cur_coords.Add(0, scaled_array[scaled_loc].GetSize(), fixed_size);
-
-  while (cur_coords <= search_coords) {
-    scaled_loc++;
-    cur_coords.Add(0, scaled_array[scaled_loc].GetSize(), fixed_size);
-  }
-
-  // Return the data in the found entry.
-  return scaled_array[scaled_loc].GetRef();
-}
-
-inline int cIndexedBlockStruct::Find(int in_block, int in_offset) const
-{
-  cFixedCoords search_coords(in_block, in_offset);
-  return Find(search_coords);
-}
-
-inline int cIndexedBlockStruct::Find(cUInt in_position) const
-{
-  cFixedCoords search_coords((in_position /= fixed_size).AsInt(),
-			     (in_position %= fixed_size).AsInt());
-  return Find(search_coords);
-}
-
-#endif

Deleted: trunk/source/tools/init_file.cc
===================================================================
--- trunk/source/tools/init_file.cc	2005-10-07 01:02:35 UTC (rev 337)
+++ trunk/source/tools/init_file.cc	2005-10-08 02:02:38 UTC (rev 338)
@@ -1,272 +0,0 @@
-//////////////////////////////////////////////////////////////////////////////
-// Copyright (C) 1993 - 2003 California Institute of Technology             //
-//                                                                          //
-// Read the COPYING and README files, or contact 'avida at alife.org',         //
-// before continuing.  SOME RESTRICTIONS MAY APPLY TO USE OF THIS FILE.     //
-//////////////////////////////////////////////////////////////////////////////
-
-#ifndef INIT_FILE_HH
-#include "init_file.hh"
-#endif
-
-#ifndef STRING_ITERATOR_HH
-#include "string_iterator.hh"
-#endif
-
-using namespace std;
-
-////////////////
-//  cInitFile
-////////////////
-
-cInitFile::cInitFile() : filetype("unknown"), active_line(0)
-{
-}
-
-cInitFile::cInitFile(cString in_filename)
-  : cFile(in_filename)
-  , filetype("unknown")
-  , active_line(0)
-{
-}
-
-cInitFile::~cInitFile()
-{
-}
-
-void cInitFile::Load()
-{
-  if (!IsOpen()) return;   // The file must be opened!
-  cStringList line_list;   // Create a list to load all of the lines into.
-
-  cString buf;
-  ReadLine(buf);
-
-  // If this file doesn't work properly, return!
-  if ( Eof() && !buf.GetSize() ) return;
-
-  line_list.PushRear(buf);
-
-  ReadLine(buf);
-  while( !Eof() || buf.GetSize() ){
-    line_list.PushRear(buf);
-    ReadLine(buf);
-  }
-
-  // Copy all of the lines into the line array.
-  const int file_size = line_list.GetSize();
-  line_array.Resize(file_size);
-
-  for (int i = 0; i < file_size; i++) {
-    line_array[i].line = line_list.Pop();
-    line_array[i].line_num = i;
-    line_array[i].used = false;
-  }
-}
-
-void cInitFile::LoadStream(istream & in_stream)
-{
-  if (in_stream.good() == false) {
-    cerr << "Bad stream sent to cInitFile::LoadStream()" << endl;
-    return;
-  }
-
-  cStringList line_list;   // Create a list to load all of the lines into.
-
-  char cur_line[MAX_STRING_LENGTH];
-  in_stream.getline(cur_line, MAX_STRING_LENGTH);
-
-  // If this file doesn't work properly, return.
-  if( !in_stream && !strlen(cur_line) )  return;
-
-  in_stream.getline(cur_line, MAX_STRING_LENGTH);
-  while ( in_stream ) {
-    line_list.PushRear(cur_line);
-    in_stream.getline(cur_line, MAX_STRING_LENGTH);
-  }
-
-  // Copy all of the lines into the line array.
-  const int file_size = line_list.GetSize();
-  line_array.Resize(file_size);
-
-  for (int i = 0; i < file_size; i++) {
-    line_array[i].line = line_list.Pop();
-    line_array[i].line_num = i;
-    line_array[i].used = false;
-  }
-}
-
-
-void cInitFile::Save(const cString & in_filename)
-{
-  cString save_filename(GetFilename());
-  if (in_filename != "") save_filename = in_filename;
-  
-  ofstream fp_save(save_filename());
-
-  // Go through the lines saving them...
-  for (int i = 0; i < line_array.GetSize(); i++) {
-    fp_save << line_array[i].line << endl;
-  }
-
-  fp_save.close();
-}
-
-
-void cInitFile::ReadHeader()
-{
-  cString type_line = GetLine(0);
-  cString format_line = GetLine(1);
-
-  if (type_line.PopWord() == "#filetype") filetype = type_line.PopWord();
-  if (format_line.PopWord() == "#format") file_format.Load(format_line);
-}
-
-
-void cInitFile::Compress()
-{
-  // We're going to handle this compression in multiple passes to make it
-  // clean and easy.
-
-  const int num_lines = line_array.GetSize();
-
-  // PASS 1: Remove all comments -- everything after a '#' sign -- and
-  // compress all whitespace into a single space.
-  for (int i = 0; i < num_lines; i++) {
-    cString & cur_line = line_array[i].line;
-
-    // Remove all characters past a comment mark and reduce whitespace.
-    int comment_pos = cur_line.Find('#');
-    if (comment_pos >= 0) cur_line.Clip(comment_pos);
-    cur_line.CompressWhitespace();
-  }
-
-  // PASS 2: Merge each line ending with a continue marker '\' with the
-  // next line.
-
-  int prev_line_id = -1;
-  bool continued = false;
-  for (int i = 0; i < num_lines; i++) {
-    // If the current line is a continuation, append it to the previous line.
-    if (continued == true) {
-      line_array[prev_line_id].line += line_array[i].line;
-      line_array[i].line = "";
-    }
-    else prev_line_id = i;
-
-    // See if the prev_line is continued, and if it is, take care of it.
-    cString & prev_line = line_array[prev_line_id].line;
-    if (prev_line.GetSize() > 0 &&
-	prev_line[prev_line.GetSize() - 1] == '\\') {
-      prev_line.ClipEnd(1);  // Remove continuation mark.
-      continued = true;
-    }
-    else continued = false;
-  }
-
-  // PASS 3: Remove now-empty lines.
-
-  int next_id = 0;
-  for (int i = 0; i < num_lines; i++) {
-    // If we should keep this line, compact it.
-    if (line_array[i].line.GetSize() > 0) {
-      if (next_id != i) line_array[next_id] = line_array[i];
-      next_id++;
-    }
-  }
-
-  // Clip any extra lines at the end of the array.
-
-  line_array.Resize(next_id);
-
-  // Move the active line back to the beginning to avoid confusion.
-  active_line = 0;
-}
-
-
-void cInitFile::AddLine(cString & in_string)
-{
-  extra_lines.Push(in_string);
-}
-
-cString cInitFile::GetLine(int line_num)
-{
-  if (line_num < 0 || line_num >= line_array.GetSize()) return "";
-  return line_array[line_num].line;
-}
-
-
-bool cInitFile::Find(cString & in_string, const cString & keyword,
-		     int col) const
-{
-  bool found = false;
-
-  // Loop through all of the lines looking for this keyword.  Start with
-  // the actual file...
-  for (int line_id = 0; line_id < line_array.GetSize(); line_id++) {
-    cString cur_string = line_array[line_id].line;
-
-    // If we found the keyword, return it and stop.    
-    if (cur_string.GetWord(col) == keyword) {
-      line_array[line_id].used = true;
-      in_string = cur_string;
-      found = true;
-    }
-  }
-
-  // Next, look through any extra lines appended to the file.
-  cStringIterator list_it(extra_lines);
-  while ( list_it.AtEnd() == false ) {
-    list_it.Next();
-    cString cur_string = list_it.Get();
-
-    // If we found the keyword, return it and stop.
-    if (cur_string.GetWord(col) == keyword) {
-      in_string = cur_string;
-      found = true;
-    }
-  }
-
-  return found;    // Not Found...
-}
-
-
-cString cInitFile::ReadString(const cString & name, cString def) const
-{
-  // See if we definately can't find the keyword.
-  if (name == "" || IsOpen() == false) return def;
-
-  // Search for the keyword.
-  cString cur_line;
-  if (Find(cur_line, name, 0) == false) {
-    if (verbose == true) {
-      cerr << "Warning: " << name << " not in \"" << GetFilename()
-	   << "\", defaulting to: " << def <<endl;
-    }
-    return def;
-  }
-
-  // Pop off the keyword, and return the remainder of the line.
-  cur_line.PopWord();
-  return cur_line;
-}
-
-
-bool cInitFile::WarnUnused() const
-{
-  bool found = false;
-
-  for (int i = 0; i < line_array.GetSize(); i++) {
-    if (line_array[i].used == false) {
-      if (found == false) {
-        found = true;
-        cerr << "Warning: unknown lines in input file '" << filename << "':" << endl;
-      }
-      cerr << " " << line_array[i].line_num + 1 << ": " << line_array[i].line << endl;
-    }
-  }
-  
-  if (found == true) cerr << endl;
-
-  return found;
-}

Deleted: trunk/source/tools/init_file.hh
===================================================================
--- trunk/source/tools/init_file.hh	2005-10-07 01:02:35 UTC (rev 337)
+++ trunk/source/tools/init_file.hh	2005-10-08 02:02:38 UTC (rev 338)
@@ -1,165 +0,0 @@
-//////////////////////////////////////////////////////////////////////////////
-// Copyright (C) 1993 - 2003 California Institute of Technology             //
-//                                                                          //
-// Read the COPYING and README files, or contact 'avida at alife.org',         //
-// before continuing.  SOME RESTRICTIONS MAY APPLY TO USE OF THIS FILE.     //
-//////////////////////////////////////////////////////////////////////////////
-
-#ifndef INIT_FILE_HH
-#define INIT_FILE_HH
-
-#include <iostream>
-
-#ifndef FILE_HH
-#include "cFile.h"
-#endif
-#ifndef STRING_HH
-#include "string.hh"
-#endif
-#ifndef STRING_LIST_HH
-#include "string_list.hh"
-#endif
-#ifndef TARRAY_HH
-#include "tArray.hh"
-#endif
-
-/**
- * A class to handle initialization files.
- **/
-
-class cString; // aggregate
-class cStringList; // aggregate
-template <class T> class tArray; // aggregate
-
-class cInitFile : public cFile {
-private:
-  cInitFile(const cInitFile &);
-private:
-  struct sFileLineInfo {
-    cString line;
-    int line_num;
-    mutable bool used;
-  };
-
-  tArray<sFileLineInfo> line_array;
-  cStringList extra_lines;
-  cString filetype;
-  cStringList file_format;
-
-  int active_line;
-public:
-  /**
-   * The empty constructor constructs an object that is in a clean
-   * state. You can set the file to open with @ref cFile::Open() later on.
-   **/
-  cInitFile();
-  
-  /**
-   * Opens the file with the given name.
-   * 
-   * @param in_filename Name of the initialization file to open.
-   **/
-  cInitFile(cString in_filename);
-  
-  ~cInitFile();
-  
-  /**
-   * Loads the file into memory.
-   **/
-  void Load();
-  
-  /**
-   * Loads a stream into memory rather than a file.
-   **/
-  void LoadStream(std::istream & in_steam);
-  
-  void Save(const cString & in_filename = "");
-  
-  /**
-   * Parse heading information about the contents of the file loaded into
-   * memory, if available.
-   **/
-  void ReadHeader();
-
-  /**
-   * Remove all comments and whitespace from a file loaded into memory.
-   * Comments are currently marked with the character '#'.
-   **/
-  void Compress();
-  
-  /** 
-   * Add a line to the beginning of the file in memory.
-   * This function is used by @ref cGenesis.
-   *
-   * @param in_string The string to be added.
-   **/
-  void AddLine(cString & in_string);
-  
-  /**
-   * Get a line from the file in memory. If called without parameters,
-   * the first line of the file is returned.
-   *
-   * @param line_num The line count of the line to be returned 
-   * (starting from 0).
-   **/
-  cString GetLine(int line_num=0);
-  
-
-  /**
-   * Get the active line and advance to the next line.
-   **/
-  cString GetNextLine() { return GetLine(active_line++); }
-
-
-  /**
-   * Reset the active line to the beginning (or the point specified...
-   **/
-  void ResetLine(int new_pos=0) { active_line = new_pos; }
-
-  /**
-   * Returns the line number that is active.
-   **/
-  int GetLineNum() { return active_line; }
-
-  /**
-   * Checks whether any line contains a given keyword in the specified 
-   * column. Stops when the first occurrence of the keyword is found.
-   *
-   * @return TRUE if keyword is found, FALSE otherwise.
-   * @param in_string A string variable that will contain the found line
-   * if search succeeds, and will have undefined contents otherwise.
-   * @param keyword The keyword to look for.
-   * @param col The column in which the keyword should be found.
-   **/
-  bool Find(cString & in_string, const cString & keyword, int col) const;
-  
-  /**
-   * Reads an entry in the initialization file that has a given keyword
-   * in the first column. The keyword is not part of the returned string.
-   *
-   * @return The entry that has been found.
-   * @param name The keyword to look for (the name of the entry).
-   * @param def If the keyword is not found, def is returned. This allows
-   * one to set standard values that are used if the user does not override
-   * them.
-   **/
-  cString ReadString(const cString & name, cString def = "") const;
-  
-  /**
-   * Looks over all lines loaded into the file, and warns if any of them
-   * have not been the targets of the Find() method.  All methods that
-   * search the file for a keyword use find, so this can be used to locate
-   * keywords that are not understood by the program.
-   **/
-  bool WarnUnused() const;
-
-  /**
-   * Return the number of lines in memory.
-   **/
-  int GetNumLines() const { return line_array.GetSize(); }
-
-  const cString & GetFiletype() { return filetype; }
-  cStringList & GetFormat() { return file_format; }
-};
-
-#endif

Deleted: trunk/source/tools/int_sum.cc
===================================================================
--- trunk/source/tools/int_sum.cc	2005-10-07 01:02:35 UTC (rev 337)
+++ trunk/source/tools/int_sum.cc	2005-10-08 02:02:38 UTC (rev 338)
@@ -1,14 +0,0 @@
-//////////////////////////////////////////////////////////////////////////////
-// Copyright (C) 1993 - 2003 California Institute of Technology             //
-//                                                                          //
-// Read the COPYING and README files, or contact 'avida at alife.org',         //
-// before continuing.  SOME RESTRICTIONS MAY APPLY TO USE OF THIS FILE.     //
-//////////////////////////////////////////////////////////////////////////////
-
-#ifndef INT_SUM_HH
-#include "int_sum.hh"
-#endif
-
-// cIntSum ///////////////////////////////////////////////////////////////////
-
-const double cIntSum::INF_ERR = 0;

Deleted: trunk/source/tools/int_sum.hh
===================================================================
--- trunk/source/tools/int_sum.hh	2005-10-07 01:02:35 UTC (rev 337)
+++ trunk/source/tools/int_sum.hh	2005-10-08 02:02:38 UTC (rev 338)
@@ -1,86 +0,0 @@
-//////////////////////////////////////////////////////////////////////////////
-// Copyright (C) 1993 - 2003 California Institute of Technology             //
-//                                                                          //
-// Read the COPYING and README files, or contact 'avida at alife.org',         //
-// before continuing.  SOME RESTRICTIONS MAY APPLY TO USE OF THIS FILE.     //
-//////////////////////////////////////////////////////////////////////////////
-
-#ifndef INT_SUM_HH
-#define INT_SUM_HH
-
-#include <math.h>
-#include <limits.h>
-
-class cIntSum {
-private:
-  long s1;  // Sum (x)
-  long s2;  // Sum of squares (x^2)
-  long s3;  // Sum of cubes (x^3)
-  long s4;  // Sum of x^4
-  long n;
-
-public:
-  static const double INF_ERR;  // Value Returned by StdError if Infinate
-
-  cIntSum(){ Clear(); }
-
-  void Clear(){ s1=0; s2=0; s3=0; s4=0; n=0; }
-
-  long Count()        const { return n; }
-  long N()            const { return n; }
-  long Sum()          const { return s1; }
-  long S1()           const { return s1; }
-  long SumOfSquares() const { return s2; }
-  long S2()           const { return s2; }
-  long SumOfCubes()   const { return s3; }
-  long S3()           const { return s3; }
-  long S4()           const { return s4; }
-
-  double Average() const { return ( n >1 ) ? ((double)s1/n) : 0; }
-
-  double Variance() const { return ( n > 1 ) ?
-      (s2 - s1*s1/(double)n) / (double)(n-1) : INF_ERR; }
-    //n*(s2/n - s1/n*s1/n) / (n-1) : INF_ERR; }
-  double StdDeviation() const { return sqrt(Variance()); }
-  double StdError()  const { return (n > 1) ?
-       sqrt(s2 / (double)(n * (n-1))) : INF_ERR; }
-
-  double Skewness() const { return ( n > 2 ) ?
-   (n*s3 - 3*s2*s1 + 2*s1*s1*s1/(double)n) / (double)((n-1)*(n-2)) : INF_ERR; }
-     //n*n*(s3/n - 3*s2/n*s1/n + 2*s1/n*s1/n*s1/n)/((n-1)*(n-2)) : INF_ERR; }
-
-  double Kurtosis() const { return ( n > 3 ) ?
-     //n*n*(n+1)*(s4/n - 4*s3/n*s1/n + 6*s2/n*s1/n*s1/n -
-     //3*s1/n*s1/n*s1/n*s1/n)/((n-1)*(n-2)*(n-3)) :
-       (n+1)*(n*s4 - 4*s3*s1 + 6*s2*s1*s1/(double)n -
-	      3*s1*s1*s1/(double)n*s1/(double)n) /
-			      (double)((n-1)*(n-2)*(n-3)) :
-    INF_ERR; }
-
-  // Notation Shortcuts
-  double Ave() const { return Average(); }
-  double Var() const { return Variance(); }
-  double Kur() const { return Kurtosis(); }
-  double Skw() const { return Skewness(); }
-
-
-  void Add(long value, long weight=1){
-    long w_val = value * weight;
-    n += weight;
-    s1 += w_val;
-    s2 += w_val * w_val;
-    s3 += w_val * w_val * w_val;
-    s4 += w_val * w_val * w_val * w_val;
-  }
-
-  void Subtract(long value, long weight=1){
-    long w_val = value * weight;
-    n -= weight;
-    s1 -= w_val;
-    s2 -= w_val * w_val;
-    s3 -= w_val * w_val * w_val;
-    s4 -= w_val * w_val * w_val * w_val;
-  }
-};
-
-#endif

Deleted: trunk/source/tools/integrated_schedule.cc
===================================================================
--- trunk/source/tools/integrated_schedule.cc	2005-10-07 01:02:35 UTC (rev 337)
+++ trunk/source/tools/integrated_schedule.cc	2005-10-08 02:02:38 UTC (rev 338)
@@ -1,203 +0,0 @@
-//////////////////////////////////////////////////////////////////////////////
-// Copyright (C) 1993 - 2003 California Institute of Technology             //
-//                                                                          //
-// Read the COPYING and README files, or contact 'avida at alife.org',         //
-// before continuing.  SOME RESTRICTIONS MAY APPLY TO USE OF THIS FILE.     //
-//////////////////////////////////////////////////////////////////////////////
-
-#include "integrated_schedule.hh"
-
-#include "cChangeList.h"
-#include "functions.h"
-#include "integrated_schedule_node.hh"
-#include "merit.hh"
-
-#include <iostream>
-using namespace std;
-
-
-/////////////////////////
-//  cIntegratedSchedule
-/////////////////////////
-
-cIntegratedSchedule::cIntegratedSchedule(int _item_count)
-  : cSchedule(_item_count)
-{
-  num_active_nodes = 0;
-
-  // Create the merit_chart; they should all init to default value.
-  merit_chart = new cMerit[item_count];
-  for (int i = 0; i < item_count; i++) {
-    merit_chart[i] = 0;
-  }
-}
-
-cIntegratedSchedule::~cIntegratedSchedule()
-{
-  for (int i = 0; i < node_array.GetSize(); i++) {
-    if (node_array[i] != NULL) delete node_array[i];
-  }
-  delete [] merit_chart;
-}
-
-bool cIntegratedSchedule::OK()
-{
-  // Test that we have an acurate count of the number of active nodes.
-
-  int test_active_nodes = 0;
-  for (int i = 0; i < node_array.GetSize(); i++) {
-    if (node_array[i]) test_active_nodes++;
-  }
-
-  assert(test_active_nodes == num_active_nodes); // active_node count mismatch.
-
-  // Test each node to make sure it is OK.
-
-  for (int i = 0; i < node_array.GetSize(); i++) {
-    if (node_array[i] != NULL) node_array[i]->OK();
-  }
-
-  return true;
-}
-
-
-void cIntegratedSchedule::Adjust(int item_id, const cMerit & new_merit)
-{
-  if (cChangeList *change_list = GetChangeList()) {
-    change_list->MarkChange(item_id);
-  }
-  // Grab the old_merit, the new merit, and compare them.
-  const cMerit old_merit = merit_chart[item_id];
-
-  // If the merit is still the same, we're done here.
-  if (old_merit == new_merit) return;
-
-  // Save the new merit to the merit_chart.
-  merit_chart[item_id] = new_merit;
-
-  // Re-adjust the lists.
-  int merit_magnitude = Max( old_merit.GetNumBits(), new_merit.GetNumBits() );
-  for (int i = 0; i < merit_magnitude; i++) {
-    bool old_bit = old_merit.GetBit(i);
-    bool new_bit = new_merit.GetBit(i);
-
-    if (old_bit && !new_bit) {
-      // Remove the item from this node...
-      node_array[i]->Remove(item_id);
-      if (node_array[i]->GetSize() == 0) RemoveNode(i);
-    }
-
-    if (!old_bit && new_bit) {
-      // Add the item from this node...
-      if (i >= node_array.GetSize() || !node_array[i]) InsertNode(i);
-      node_array[i]->Insert(item_id);
-    }
-  }
-}
-
-
-int cIntegratedSchedule::GetNextID()
-{
-  assert(node_array.GetSize() > 0);  // Running scheduler w/ no entries!
-
-  const int last_id = node_array.GetSize() - 1;
-
-  // Make sure there are organisms in the scheduler!
-  if (node_array[last_id] == NULL) return -1;
-
-  int next_id = -1;
-  while (next_id < 0) {
-    next_id = node_array[last_id]->GetNextID();
-  }
-  
-  return next_id;
-}
-
-double cIntegratedSchedule::GetStatus(int id)
-{
-  return merit_chart[id].GetDouble();
-}
-
-
-///////// --- private //////////
-
-void cIntegratedSchedule::InsertNode(int node_id)
-{
-  // Test if trying to create node that already exists.
-  assert(node_id >= node_array.GetSize() || node_array[node_id] == NULL);
-
-  cIntegratedScheduleNode * new_node =
-    new cIntegratedScheduleNode(item_count, node_id);
-
-  if (node_id >= node_array.GetSize()) ResizeNodes(node_id);
-
-  node_array[node_id] = new_node;
-
-  // Find the node to mark as the 'prev'.
-  for (int prev_id = node_id + 1; prev_id < node_array.GetSize(); prev_id++) {
-    cIntegratedScheduleNode * prev_node = node_array[prev_id];
-    if (prev_node) {
-      new_node->SetPrev(prev_node);
-      prev_node->SetNext(new_node);
-      prev_node->SetProcessSize(1 << (prev_id - node_id - 1));
-      break;
-    }
-  }
-
-  // And find the node to mark as the 'next'.
-  for (int next_id = node_id - 1; next_id >= 0; next_id--) {
-    cIntegratedScheduleNode * next_node = node_array[next_id];
-    if (next_node) {
-      new_node->SetNext(next_node);
-      next_node->SetPrev(new_node);
-      new_node->SetProcessSize(1 << (node_id - next_id - 1));
-      break;
-    }
-  }
-
-  num_active_nodes++;
-}
-
-void cIntegratedSchedule::RemoveNode(int node_id)
-{
-  assert(node_array[node_id] != NULL); // Trying to remove non-existant node.
-
-  cIntegratedScheduleNode * old_node = node_array[node_id];
-  cIntegratedScheduleNode * next_node = old_node->GetNext();
-  cIntegratedScheduleNode * prev_node = old_node->GetPrev();
-  node_array[node_id] = NULL;
-
-  if (next_node) next_node->SetPrev(prev_node);
-  if (prev_node) {
-    prev_node->SetNext(next_node);
-    prev_node->SetProcessSize(old_node->GetProcessSize() *
-			      prev_node->GetProcessSize() * 2);
-  }
-
-  if (node_id == node_array.GetSize() - 1) {
-    if (!old_node->GetNext()) ResizeNodes(0);
-    else ResizeNodes(old_node->GetNext()->GetID());
-  }
-
-  delete old_node;
-
-  num_active_nodes--;
-}
-
-void cIntegratedSchedule::ResizeNodes(int new_max)
-{
-  int old_size = node_array.GetSize();
-  int new_size = new_max + 1;  // 0 to new_max...
-
-  // Clean up tail portions of the array being cut off.
-  for (int i = new_size; i < old_size; i++) {
-    if (node_array[i]) delete node_array[i];
-  }
-
-  node_array.Resize(new_size);
-
-  // Mark as NULL any new cells added to the array.
-  for (int i = old_size; i < new_size; i++) {
-    node_array[i] = NULL;
-  }
-}

Deleted: trunk/source/tools/integrated_schedule.hh
===================================================================
--- trunk/source/tools/integrated_schedule.hh	2005-10-07 01:02:35 UTC (rev 337)
+++ trunk/source/tools/integrated_schedule.hh	2005-10-08 02:02:38 UTC (rev 338)
@@ -1,53 +0,0 @@
-//////////////////////////////////////////////////////////////////////////////
-// Copyright (C) 1993 - 2003 California Institute of Technology             //
-//                                                                          //
-// Read the COPYING and README files, or contact 'avida at alife.org',         //
-// before continuing.  SOME RESTRICTIONS MAY APPLY TO USE OF THIS FILE.     //
-//////////////////////////////////////////////////////////////////////////////
-
-#ifndef INTEGRATED_SCHEDULE_HH
-#define INTEGRATED_SCHEDULE_HH
-
-#ifndef SCHEDULE_HH
-#include "schedule.hh"
-#endif
-#ifndef TARRAY_HH
-#include "tArray.hh"
-#endif
-
-/**
- * The cIntegratedSchedule method relies on breaking up all merits into
- * sums of powers of 2 (i.e. using the binary representation of the merit).
- * All items with merits in the highest power of two will get the most
- * time, and subsequent merit components will have time divided,
- * continuing recursively.  The simplest way of doing this while maximizing
- * evenness of distribution of time slices is to simply alternate executing
- * the best, and everything else (where in everything else we again alternate
- * with the best of this sub-list recursively).
- **/
-
-class cIntegratedScheduleNode;
-class cMerit;
-template <class T> class tArray; // aggregate
-
-class cIntegratedSchedule : public cSchedule {
-private:
-  tArray<cIntegratedScheduleNode *> node_array;
-  int num_active_nodes;
-  cMerit * merit_chart;
-
-  void InsertNode(int node_id);
-  void RemoveNode(int node_id);
-  void ResizeNodes(int new_size);
-public:
-  cIntegratedSchedule(int _item_count);
-  ~cIntegratedSchedule();
-
-  void Adjust(int item_id, const cMerit & new_merit);
-  int GetNextID();
-  double GetStatus(int id);
-
-  bool OK();
-};
-
-#endif

Deleted: trunk/source/tools/integrated_schedule_node.cc
===================================================================
--- trunk/source/tools/integrated_schedule_node.cc	2005-10-07 01:02:35 UTC (rev 337)
+++ trunk/source/tools/integrated_schedule_node.cc	2005-10-08 02:02:38 UTC (rev 338)
@@ -1,175 +0,0 @@
-//////////////////////////////////////////////////////////////////////////////
-// Copyright (C) 1993 - 2003 California Institute of Technology             //
-//                                                                          //
-// Read the COPYING and README files, or contact 'avida at alife.org',         //
-// before continuing.  SOME RESTRICTIONS MAY APPLY TO USE OF THIS FILE.     //
-//////////////////////////////////////////////////////////////////////////////
-
-#ifndef INTEGRATED_SCHEDULE_NODE_HH
-#include "integrated_schedule_node.hh"
-#endif
-
-/////////////////////////////
-//  cIntegratedScheduleNode
-/////////////////////////////
-
-cIntegratedScheduleNode::cIntegratedScheduleNode(int _item_count, int in_id)
-  : active_array(_item_count)
-{
-  // Store the input variables.
-
-  node_id = in_id;
-
-  // Initialize the remaining variables.
-
-  for (int i = 0; i < active_array.GetSize(); i++) {
-    active_array[i] = 0;
-  }
-  first_entry = -1;
-  active_entry = -1;
-  size = 0;
-  process_size = 1;
-  process_count = 0;
-  execute = true;
-  next = NULL;
-  prev = NULL;
-}
-
-cIntegratedScheduleNode::~cIntegratedScheduleNode()
-{
-}
-
-
-bool cIntegratedScheduleNode::OK()
-{
-  bool result = true;
-
-  // Make sure the active_array is setup correctly.
-
-  int size_check = 0;
-  int next_check = first_entry;
-  for (int i = 0; i < active_array.GetSize(); i++) {
-    if (active_array[i] != 0) {
-      size_check++;
-      assert(next_check == i);  //  Node entries do no match!
-      next_check = active_array[i];
-    }
-  }
-  assert(next_check == -1);  // Node array not properly terminated.
-
-  // Make sure the sizes line up...
-  assert(size == size_check);  // size and active node count mismatch.
-
-  return result;
-}
-
-void cIntegratedScheduleNode::Insert(int item_id)
-{
-  assert(item_id >= 0 && item_id < active_array.GetSize());  // Illegal ID
-
-  // If this item is already active in this node, ignore this call...
-  if (active_array[item_id] != 0) return;
-
-  // See if we're dealing with a new first_entry...
-  if (first_entry == -1 || item_id < first_entry) {
-    active_array[item_id] = first_entry;
-    first_entry = item_id;
-  }
-  else {
-    // Otherwise find the predecessor to this item in the list...
-    int prev_item;
-    for (prev_item = item_id - 1; prev_item >= 0; prev_item--) {
-      if (active_array[prev_item] != 0) break;
-    }
-    assert(prev_item >= 0);  // prev_item is first, but not identified.
-    
-    // Make the predecessor point to it, and have it point to the CPU that
-    // the old predecessor pointed to.
-    active_array[item_id] = active_array[prev_item];
-    active_array[prev_item] = item_id;
-  }
-
-  size++;
-}
-
-void cIntegratedScheduleNode::Remove(int item_id)
-{
-  assert(item_id >= 0 && item_id < active_array.GetSize()); // Illegal ID
-
-  // If this item is already inactive, ignore this call...
-  if (active_array[item_id] == 0) return;
-
-  // If this is the first_entry, adjust it!
-  if (first_entry == item_id) {
-    first_entry = active_array[item_id];
-  }
-  else {
-    // Find the predecessor to this item in the list...
-    int prev_item;
-    for (prev_item = item_id - 1; prev_item >= 0; prev_item--) {
-      if (active_array[prev_item] != 0) break;
-    }
-    assert(prev_item >= 0);  // prev_item is first, but not identified.
-
-    // Make the predecessor point to the item removed used to point to.
-    active_array[prev_item] = active_array[item_id];
-  }
-
-  active_array[item_id] = 0;
-  size--;
-}
-
-
-// Execute everything on list, and then shift to calling the next node.
-// Wait for the next node to return a -1 before shifting back to this one.
-
-int cIntegratedScheduleNode::GetNextID()
-{
-  // Alternate between this node's Process and the next's.
-  if (execute == false) {
-    // If there is a next node, we may be working on it... 
-    int next_id = -1;
-    if (next != NULL) next_id = next->GetNextID();
-   
-    // If next_id is a -1, either we don't have a next node, or else it
-    // is finished with its execution.
-
-    if (next_id == -1) {
-      execute = true;
-      process_count = 0;
-      active_entry = -1;
-    }
-
-    return next_id;
-  }
-
-  // Find the next active_entry...
-  
-  // If we were at the end of the list, start over...
-  if (active_entry == -1) active_entry = first_entry;
-
-  // If this entry no longer exists, hunt for the next active entry manually...
-  else if (active_array[active_entry] == 0) {
-    while (active_entry < active_array.GetSize() &&
-	   active_array[active_entry] == 0) {
-      active_entry++;
-    }
-    if (active_entry == active_array.GetSize()) active_entry = -1;
-  }
-  
-  // Otherwise, if the entry does exist, we can just look the next one up.
-  else active_entry = active_array[active_entry];
-
-
-  // If we have now hit the end of this list, move on to the next node.
-
-  if (active_entry == -1) {
-    process_count++;
-    if (process_count >= process_size) execute = false;
-  }
-
-//  cout << "Running " << active_entry << " from node " << node_id
-//       << " (size = " << size << ", first = " << first_entry << ")" << endl;
-
-  return active_entry;
-}

Deleted: trunk/source/tools/integrated_schedule_node.hh
===================================================================
--- trunk/source/tools/integrated_schedule_node.hh	2005-10-07 01:02:35 UTC (rev 337)
+++ trunk/source/tools/integrated_schedule_node.hh	2005-10-08 02:02:38 UTC (rev 338)
@@ -1,74 +0,0 @@
-//////////////////////////////////////////////////////////////////////////////
-// Copyright (C) 1993 - 2003 California Institute of Technology             //
-//                                                                          //
-// Read the COPYING and README files, or contact 'avida at alife.org',         //
-// before continuing.  SOME RESTRICTIONS MAY APPLY TO USE OF THIS FILE.     //
-//////////////////////////////////////////////////////////////////////////////
-
-#ifndef INTEGRATED_SCHEDULE_NODE_HH
-#define INTEGRATED_SCHEDULE_NODE_HH
-
-#ifndef TARRAY_HH
-#include "tArray.hh"
-#endif
-
-/**
- * The cIntegratedScheduleNode object manages bundlings of item's for the
- * integrated time slicing object (cIntegratedSchedule).  When GetNextID()
- * is called on one of these nodes, it must either choose from itself, or
- * pass the call down to the nodes below it (by running the GetNextID()
- * method of the next node).  If the node alternates between everything in
- * its own list the next node's list, then we have a perfect Logrithmic
- * (base 2) decrease in activity.  Sometimes a merit will be skipped in the
- * list, so the next node should only be called one out of every four times,
- * etc.
- *
- * This allows binary representations of merits to determine which nodes
- * each item should be included in.
- **/
-
-template <class T> class tArray; // aggregate
-
-class cIntegratedScheduleNode {
-private:
-  tArray<int> active_array; // Each cell in this array corressponds to the
-                      //  item with the same ID.  If creature is not in the
-                      //  list, its value in the array will be 0. If it is in
-                      //  the list, it will  point to the cell of the next
-                      //  included creature.  The last included creature has
-                      //  a -1 in its cell.
-  int first_entry;    // ID of first active creature.
-  int active_entry;   // ID of next scheduled entry.
-  int node_id;        // A unique id (representing the relative merit bit).
-
-  int size;           // Number of active items in this node.
-  int process_size;   // Number of times this node should be executed before
-                      //   the next node is.
-  int process_count;  // Number of times this node has been executed.
-  bool execute;       // Should this node execute or pass?
-
-  cIntegratedScheduleNode * next;
-  cIntegratedScheduleNode * prev;
-public:
-  cIntegratedScheduleNode(int _item_count = 0, int in_id = -1);
-  ~cIntegratedScheduleNode();
-
-  void Insert(int item_id);
-  void Remove(int item_id);
-  int GetNextID();
-
-  bool OK();
-
-  inline void SetProcessSize(int in_p_size) { process_size = in_p_size; }
-  inline void SetNext(cIntegratedScheduleNode * in_next) { next = in_next; }
-  inline void SetPrev(cIntegratedScheduleNode * in_prev) { prev = in_prev; }
-
-  inline int GetID() { return node_id; }
-  inline int GetSize() { return size; }
-  inline int GetProcessSize() { return process_size; }
-  inline int GetProcessCount() { return process_count; }
-  inline cIntegratedScheduleNode * GetNext() { return next; }
-  inline cIntegratedScheduleNode * GetPrev() { return prev; }
-};
-
-#endif

Deleted: trunk/source/tools/merit.cc
===================================================================
--- trunk/source/tools/merit.cc	2005-10-07 01:02:35 UTC (rev 337)
+++ trunk/source/tools/merit.cc	2005-10-08 02:02:38 UTC (rev 338)
@@ -1,90 +0,0 @@
-//////////////////////////////////////////////////////////////////////////////
-// Copyright (C) 1993 - 2001 California Institute of Technology             //
-//                                                                          //
-// Read the COPYING and README files, or contact 'avida at alife.org',         //
-// before continuing.  SOME RESTRICTIONS MAY APPLY TO USE OF THIS FILE.     //
-//////////////////////////////////////////////////////////////////////////////
-
-#include "merit.hh"
-
-
-using namespace std;
-
-
-void cMerit::UpdateValue(double in_value){
-  const int max_bits = sizeof(unsigned int)*8;
-  static double mult[max_bits];
-  static bool mult_initilalized = false;
-
-  // Do not allow negative merits.
-  if (in_value < 0.0) in_value = 0.0;
-
-  // Initilize multipliers only once
-  if( mult_initilalized == false ){
-    //cout<<"initializing multipliers"<<endl;
-    mult_initilalized = true;
-    for( int i=0; i<max_bits; ++i ){
-      mult[i] = pow((double)2,i);
-      //cout<<"  mult["<<i<<"] = "<<mult[i]<<endl;
-    }
-  }
-
-
-  value = in_value;
-
-  double mant = frexp (value , &bits);
-
-  //cout<<value<<" = "<<mant<<" * 2 ^ "<<bits<<endl;
-
-  if( bits > max_bits ){
-    offset = bits - max_bits;
-  }else{
-    offset = 0;
-  }
-
-  base = (unsigned int) (mant * mult[bits-offset-1] * 2 );
-
-  //cout<<value<<" = "<<base<<" ["<<bits<<" bits] "<<" * 2 ^ "<<offset;
-  //cout<<" = "<<(base * pow((double)2,offset))<<endl;
-}
-
-
-ostream & cMerit::BinaryPrint(ostream & os) const {
-  for( int i=GetNumBits()-1; i>=0; --i ){
-    os<<GetBit(i);
-  }
-  return os;
-}
-
-
-bool cMerit::OK() const {
-  double test_value = (double)base * pow((double)2,(int)offset);
-  int test_bits = (int)(log(value)/log((double)2)) + 1;
-  if( base == 0 ) test_bits = 0;
-
-  // Uncomment block for debugging output and assertion of OK
-  /*
-  cout<<"cMerit Ok? ";
-  cout<<base<<" * 2^"<<offset<<" = "<<test_value<<" ~= "<<value<<endl;
-  cout<<"\tnum_bits="<<GetNumBits()<<" ?= "<<test_bits<<endl;
-  BinaryPrint(cout)<<endl;
-
-  */
-  assert ( test_bits == bits &&
-	   ( test_value <= value * (1 + 1/UINT_MAX) ||
-	     test_value >= value / (1 + 1/UINT_MAX) ) );
-
-  return ( test_bits == bits &&
-	   ( test_value <= value * (1 + 1/UINT_MAX) ||
-	     test_value >= value / (1 + 1/UINT_MAX) ) );
-}
-
-
-
-
-ostream & operator<<(ostream & os, const cMerit & merit){
-  os<<merit.GetDouble();
-  return os;
-}
-
-

Deleted: trunk/source/tools/merit.hh
===================================================================
--- trunk/source/tools/merit.hh	2005-10-07 01:02:35 UTC (rev 337)
+++ trunk/source/tools/merit.hh	2005-10-08 02:02:38 UTC (rev 338)
@@ -1,83 +0,0 @@
-//////////////////////////////////////////////////////////////////////////////
-// Copyright (C) 1993 - 2003 California Institute of Technology             //
-//                                                                          //
-// Read the COPYING and README files, or contact 'avida at alife.org',         //
-// before continuing.  SOME RESTRICTIONS MAY APPLY TO USE OF THIS FILE.     //
-//////////////////////////////////////////////////////////////////////////////
-
-#ifndef MERIT_HH
-#define MERIT_HH
-
-#include <iostream>
-#include <math.h>
-#include <limits.h>
-#include <assert.h>
-
-#ifndef UINT
-#define UINT unsigned int
-#endif
-
-class cMerit {
-protected:
-  int bits;
-  UINT base;
-  UINT offset;
-  double value;
-
-  void UpdateValue(double in_value);
-
-public:
-  cMerit() : bits(0), base(0), offset(0), value(0) {;}
-
-  explicit cMerit(const int    in_value){ UpdateValue(in_value); }
-  explicit cMerit(const UINT   in_value){ UpdateValue(in_value); }
-  explicit cMerit(const double in_value){ UpdateValue(in_value); }
-
-  bool OK() const ;
-
-  void operator=(const cMerit & _merit){
-    bits   = _merit.bits;
-    base   = _merit.base;
-    offset = _merit.offset;
-    value  = _merit.value; }
-
-  void operator=(double _merit){ UpdateValue(_merit); }
-  void operator+=(const cMerit & _m){ UpdateValue(value + _m.GetDouble()); }
-
-  int  operator>(const cMerit & _m)  const { return value >  _m.GetDouble(); }
-  int  operator<(const cMerit & _m)  const { return value <  _m.GetDouble(); }
-  int  operator>=(const cMerit & _m) const { return value >= _m.GetDouble(); }
-  int  operator<=(const cMerit & _m) const { return value <= _m.GetDouble(); }
-
-  int  operator==(const cMerit & _m) const { return value == _m.GetDouble(); }
-  int  operator==(const double _m) const { return value == _m; }
-  int  operator==(const UINT _m)   const { return (offset==0 && base==_m); }
-
-  int  operator!=(const cMerit & _m) const { return value != _m.GetDouble(); }
-  int  operator!=(const double _m) const { return value != _m; }
-  int  operator!=(const UINT _m)   const { return (offset!=0 || base!=_m); }
-
-  void Clear() { value = 0; base = 0; offset = 0; bits = 0; }
-
-  // @TCC - This function fails for values > UINT_MAX...
-  UINT GetUInt()   const {
-    assert(value < UINT_MAX);  // Fails for merit values > UINT_MAX.
-    return (UINT) value; }
-
-  double GetDouble()      const { return value; }
-
-  int GetBit(UINT bit_num)  const {
-    return ( bit_num >= offset && bit_num < (UINT)bits ) ?
-			( base >> (bit_num-offset) ) & 1 : 0; }
-
-  int GetNumBits() const { return bits; }
-
-  double CalcFitness(int gestation_time) const {
-    return ( gestation_time != 0 ) ? value / ((double) gestation_time) : 0; }
-
-  std::ostream & BinaryPrint(std::ostream & os = std::cout) const ;
-};
-
-std::ostream & operator<<(std::ostream & os, const cMerit & merit);
-
-#endif

Deleted: trunk/source/tools/message_class.hh
===================================================================
--- trunk/source/tools/message_class.hh	2005-10-07 01:02:35 UTC (rev 337)
+++ trunk/source/tools/message_class.hh	2005-10-08 02:02:38 UTC (rev 338)
@@ -1,44 +0,0 @@
-//////////////////////////////////////////////////////////////////////////////
-// Copyright (C) 1993 - 2003 California Institute of Technology             //
-//                                                                          //
-// Read the COPYING and README files, or contact 'avida at alife.org',         //
-// before continuing.  SOME RESTRICTIONS MAY APPLY TO USE OF THIS FILE.     //
-//////////////////////////////////////////////////////////////////////////////
-
-#ifndef MESSAGE_CLASS_HH
-#define MESSAGE_CLASS_HH
-
-class cMessageDisplay;
-class cMessageType;
-
-class cMessageClass{
-public:
-  cMessageClass(
-    const char *class_name,
-    cMessageDisplay **msg_display,
-    bool is_fatal,
-    bool is_prefix,
-    bool no_prefix
-  );
-public:
-  void configure(cMessageType *message_type);
-public:
-  const char *const m_class_name;
-  cMessageDisplay **m_msg_display;
-  bool const m_is_fatal;
-  bool const m_is_prefix;
-  bool const m_no_prefix;
-private:
-  bool _configured;
-};
-
-/*
-Declaration of the five message classes.
-*/
-extern cMessageClass MCInfo;
-extern cMessageClass MCDebug;
-extern cMessageClass MCError;
-extern cMessageClass MCFatal;
-extern cMessageClass MCNoPrefix;
-
-#endif

Deleted: trunk/source/tools/message_closure.hh
===================================================================
--- trunk/source/tools/message_closure.hh	2005-10-07 01:02:35 UTC (rev 337)
+++ trunk/source/tools/message_closure.hh	2005-10-08 02:02:38 UTC (rev 338)
@@ -1,131 +0,0 @@
-//////////////////////////////////////////////////////////////////////////////
-// Copyright (C) 1993 - 2003 California Institute of Technology             //
-//                                                                          //
-// Read the COPYING and README files, or contact 'avida at alife.org',         //
-// before continuing.  SOME RESTRICTIONS MAY APPLY TO USE OF THIS FILE.     //
-//////////////////////////////////////////////////////////////////////////////
-
-#ifndef MESSAGE_CLOSURE_HH
-#define MESSAGE_CLOSURE_HH
-
-#ifndef STRING_HH
-#include "string.hh"
-#endif
-
-class cMessageType;
-class cString; // aggregate
-class QString;
-
-class cMessageClosure{
-private:
-  cMessageType &_type;
-  const char *_function;
-  const char *_file;
-  int _line;
-  int _error;
-  int _op_count;
-  cString _msg;
-public:
-  cMessageClosure(
-    cMessageType &type,
-    const char *function_name,
-    const char *file_name,
-    int line_number
-  );
-  ~cMessageClosure(void);
-public:
-  /*
-  operator<< and operator() definitions for cMessageClosure.
-
-  Any kind of input can be placed behind the operator<<, really, but try
-  to not (further) overcrowd the class...
-
-  The operator is meant to convert its input into a string for display.
-  If for example you implement
-    cMessageClosure &operator<<(const myClass &instance);
-  then you can write a message thus:
-    DemoDebug << "this is a myClass instance: " << my_instance;
-  with the result:
-    "Debug [Demo] this is a myClass instance: stuff in my_instance."
-  */
-  cMessageClosure &operator<<(char c);
-  cMessageClosure &operator<<(unsigned char c);
-  cMessageClosure &operator<<(int i);
-  cMessageClosure &operator<<(unsigned int i);
-  cMessageClosure &operator<<(long i);
-  cMessageClosure &operator<<(unsigned long i);
-  cMessageClosure &operator<<(float f);
-  cMessageClosure &operator<<(double f);
-  cMessageClosure &operator<<(const void *p);
-  cMessageClosure &operator<<(const char *s);
-  cMessageClosure &operator<<(const QString &s);
-  /*
-  QString support is implemented outside of core of avida, in qt gui, so
-  that QString can remain undefined in gui-less builds.  -- kgn
-  */
-
-  cMessageClosure &operator()(char c){ return operator<<(c); }
-  cMessageClosure &operator()(unsigned char c){ return operator<<(c); }
-  cMessageClosure &operator()(int i){ return operator<<(i); }
-  cMessageClosure &operator()(unsigned int i){ return operator<<(i); }
-  cMessageClosure &operator()(long i){ return operator<<(i); }
-  cMessageClosure &operator()(unsigned long i){ return operator<<(i); }
-  cMessageClosure &operator()(float f){ return operator<<(f); }
-  cMessageClosure &operator()(double f){ return operator<<(f); }
-  cMessageClosure &operator()(const void *p){ return operator<<(p); }
-  cMessageClosure &operator()(const char *s){ return operator<<(s); }
-  cMessageClosure &operator()(const QString &s){ return operator<<(s); }
-
-  /*
-  cMessageClosure::va():
-  
-  Support for cString-based operator<< and operator() definitions in
-  cMessageClosure.  Variable argument lists are formatted and printed, a
-  la printf, into a temporary buffer; the contents of this buffer are
-  then appended to the cString _msg.
-  */
-  cMessageClosure &va(const char *fmt, ...);
-private:
-  void prefix(void);
-};
-
-/*
-you probably don't need to change these macros...
-*/
-
-// window compatibility
-#ifdef WIN32
-# ifndef __PRETTY_FUNCTION__
-#  define __PRETTY_FUNCTION__ "<unknown on win32>"
-# endif
-#endif
-
-#define _MSG_CLOSURE_FL(x)\
-  cMessageClosure(\
-    x,\
-    __PRETTY_FUNCTION__,\
-    __FILE__,\
-    __LINE__\
-  )
-
-#define _INFO_MSG(type)\
-  if (Info_ ## type ## _Msg.m_is_active)\
-    _MSG_CLOSURE_FL(Info_ ## type ## _Msg)
-
-#define _DEBUG_MSG(type)\
-  if (Debug_ ## type ## _Msg.m_is_active)\
-    _MSG_CLOSURE_FL(Debug_ ## type ## _Msg)
-
-#define _ERROR_MSG(type)\
-  if (Error_ ## type ## _Msg.m_is_active)\
-    _MSG_CLOSURE_FL(Error_ ## type ## _Msg)
-
-#define _FATAL_MSG(type)\
-  if (Fatal_ ## type ## _Msg.m_is_active)\
-    _MSG_CLOSURE_FL(Fatal_ ## type ## _Msg)
-
-#define _PLAIN_MSG(type)\
-  if (type ## _Msg.m_is_active)\
-    _MSG_CLOSURE_FL(type ## _Msg)
-
-#endif

Deleted: trunk/source/tools/message_display.cc
===================================================================
--- trunk/source/tools/message_display.cc	2005-10-07 01:02:35 UTC (rev 337)
+++ trunk/source/tools/message_display.cc	2005-10-08 02:02:38 UTC (rev 338)
@@ -1,352 +0,0 @@
-
-#ifndef _LIMITS_H___
-#include <limits.h>
-#endif
-#ifndef _STDIO_H_
-#include <stdio.h>
-#endif
-#ifndef _STDARG_H
-#include <stdarg.h>
-#endif
-
-#ifndef TRIO_TRIO_H
-#include "../third-party/trio/trio.h"
-#endif
-
-#ifndef _CPP_IOSTREAM
-#include <iostream>
-#endif
-
-#ifndef MESSAGE_DISPLAY_HDRS_HH
-#include "message_display_hdrs.hh"
-#endif
-
-
-using namespace std;
-
-
-/*
-pointers to the cMessageDisplay instantiations actually in use.
-each of the message classes gets a handle to one of the cMessageDisplay
-instantiations, so that by using the manipulator functions
-  void setStandardOutDisplay(cMessageDisplay &out)
-and
-  void setStandardErrDisplay(cMessageDisplay &err),
-the output and error messages can be redirected from, say, the console
-to a graphical window and back again (if you want).
-*/
-static cMessageDisplay *s_info_display;
-static cMessageDisplay *s_debug_display;
-static cMessageDisplay *s_error_display;
-static cMessageDisplay *s_fatal_display;
-static cMessageDisplay *s_noprefix_display;
-
-
-
-void setInfoDisplay(cMessageDisplay &info){
-  cout << "<setInfoDisplay>" << endl;
-  s_info_display = &info;
-  cout << "<setInfoDisplay> done." << endl;
-}
-void setDebugDisplay(cMessageDisplay &debug){
-  cout << "<setDebugDisplay>" << endl;
-  s_debug_display = &debug;
-  cout << "<setDebugDisplay> done." << endl;
-}
-void setErrorDisplay(cMessageDisplay &error){
-  cout << "<setErrorDisplay>" << endl;
-  s_error_display = &error;
-  cout << "<setErrorDisplay> done." << endl;
-}
-void setFatalDisplay(cMessageDisplay &fatal){
-  cout << "<setFatalDisplay>" << endl;
-  s_fatal_display = &fatal;
-  cout << "<setFatalDisplay> done." << endl;
-}
-void setNoPrefixDisplay(cMessageDisplay &noprefix){
-  cout << "<setNoPrefixDisplay>" << endl;
-  s_noprefix_display = &noprefix;
-  cout << "<setNoPrefixDisplay> done." << endl;
-}
-
-
-/*
-These booleans determine whether to print the function, file, and line
-number containing the message call.  The booleans are reset according to
-the contents of the environment variable "DEBUG_MESSAGING", which should
-be a comma-delimited list containing any of the three words
-  "chatter,where,function".
-
-Message types in the classes MCFatal and MCNoPrefix are always
-displayed; the remaining messages will only be displayed if
-DEBUG_MESSAGING contains "chatter".
-
-The line number and file containing the message call are printed if
-DEBUG_MESSAGING contains "where".
-
-The function containing the message call is printed only if
-DEBUG_MESSAGING contains "function".
-
-Note that message types of class "MCNoPrefix" will not print the
-function, file, or line number.
-*/
-static bool show_function = false;
-static bool show_where = false;
-static bool be_quiet = true;
-
-
-/*
-Definition of the five message classes.
-*/
-cMessageClass MCInfo("Info:", &s_info_display, false, false, false);
-cMessageClass MCDebug("Debug:", &s_debug_display, false, false, false);
-cMessageClass MCError("Error:", &s_error_display, false, true, false);
-cMessageClass MCFatal("Fatal:", &s_fatal_display, true, true, false);
-cMessageClass MCNoPrefix("NoPrefix:", &s_noprefix_display, false, true, true);
-
-/*
-cMessageClass constructor.
-*/
-cMessageClass::cMessageClass(
-  const char *class_name,
-  cMessageDisplay **msg_display,
-  bool is_fatal,
-  bool is_prefix,
-  bool no_prefix
-):m_class_name(class_name),
-  m_msg_display(msg_display),
-  m_is_fatal(is_fatal),
-  m_is_prefix(is_prefix),
-  m_no_prefix(no_prefix),
-  _configured(false)
-{
-  *msg_display = 0;
-}
-
-
-/*
-This configures the behavior of each cMessageClass and cMessageType
-according the contents of the environment variable DEBUG_MESSAGING.
-this is affected by setting the static booleans "show_function,
-show_where, be_quiet".
-
-These booleans determine whether to print the function, file, and line
-number containing the message call.  the booleans are reset according to
-the contents of the environment variable "DEBUG_MESSAGING", which should
-be a comma-delimited list containing any of the three words
-  "chatter,where,function".
-
-Message types in the classes MCFatal and MCNoPrefix are always
-displayed; the remaining messages will only be displayed if
-DEBUG_MESSAGING contains "chatter".
-
-The line number and file containing the message call are printed if
-DEBUG_MESSAGING contains "where".
-
-The function containing the message call is printed only if
-DEBUG_MESSAGING contains "function".
-
-Message types of class "MCNoPrefix" will not print the function, file,
-or line number.
-*/
-void
-cMessageClass::configure(cMessageType *message_type){
-  if(!_configured){
-    _configured = true;
-    char *denv = getenv("DEBUG_MESSAGING");
-    if(denv){
-      denv = strdup(denv);
-      char *tok = strtok(denv, ",");
-      while(tok){
-        if(strcmp(tok,"where") == 0){
-          show_where = true;
-        } else if (strcmp(tok,"function") == 0){
-          show_function = true;
-        } else if (strcmp(tok,"chatter") == 0){
-          be_quiet = false;
-        }
-        tok = strtok(NULL,",");
-      }
-      free(denv);
-    }
-  }
-  if( (this == &MCInfo)
-    ||(this == &MCDebug)
-    ||(this == &MCError)
-  ) message_type->m_is_active = !be_quiet;
-}
-
-
-/*
-cMessageType constructor.
-*/
-cMessageType::cMessageType(
-  const char *type_name,
-  cMessageClass &message_class
-):m_type_name(type_name),
-  m_message_class(message_class),
-  m_is_active(true)
-{ message_class.configure(this); }
-
-
-/*
-cMessageClosure constructor and destructor.
-*/
-cMessageClosure::cMessageClosure(
-  cMessageType &type,
-  const char *function_name,
-  const char *file_name,
-  int line_number
-):_type(type),
-  _function(function_name),
-  _file(file_name),
-  _line(line_number),
-  _error(INT_MAX),
-  _op_count(0)
-{}
-
-cMessageClosure::~cMessageClosure(void){
-  if(!(*_type.m_message_class.m_msg_display)){
-    cerr << "<~cMessageClosure> Warning:" << endl;
-    cerr << "<~cMessageClosure> message display classes not fully initialized;" << endl;
-    cerr << "<~cMessageClosure> directing messages of class \""
-      << cString(_type.m_type_name)
-      << "\" to its default output device..." << endl;
-    if(&_type.m_message_class == &MCInfo) {
-      (*_type.m_message_class.m_msg_display) = &s_info_msg_cout;
-    } else if(&_type.m_message_class == &MCDebug) {
-      (*_type.m_message_class.m_msg_display) = &s_debug_msg_cerr;
-    } else if(&_type.m_message_class == &MCError) {
-      (*_type.m_message_class.m_msg_display) = &s_error_msg_cerr;
-    } else if(&_type.m_message_class == &MCFatal) {
-      (*_type.m_message_class.m_msg_display) = &s_fatal_msg_cerr;
-    } else if(&_type.m_message_class == &MCNoPrefix) {
-      (*_type.m_message_class.m_msg_display) = &s_noprefix_msg_cout;
-    } else {
-      (*_type.m_message_class.m_msg_display) = &s_noprefix_msg_cout;
-    }
-  }
-  (*_type.m_message_class.m_msg_display)->out(_msg);
-  if(_type.m_message_class.m_is_fatal) (*_type.m_message_class.m_msg_display)->abort();
-}
-
-
-/*
-Pretty-printing for cMessageClosure.
-*/
-void
-cMessageClosure::prefix(void){
-  if(_op_count++ == 0 && !_type.m_message_class.m_no_prefix){
-    if(_type.m_message_class.m_is_prefix){
-      _msg += _type.m_type_name;
-      _msg += '-';
-    }
-    _msg += _type.m_message_class.m_class_name;
-    if(!_type.m_message_class.m_is_prefix || show_function || show_where){
-      bool colon = false;
-      if(!_type.m_message_class.m_is_prefix){
-        _msg += _type.m_type_name;
-        _msg += ": ";
-      }
-      if(show_function || show_where){
-        _msg += "<";
-      }
-      if(show_function){
-        _msg += _function;
-        colon = true;
-      }
-      if(show_where){
-        if(colon){_msg += ':';}
-        _msg += _file;
-        _msg += ':';
-        // FIXME:  consider move this varargs gunk to cString.  -- kgn.
-        {
-          int size = trio_snprintf((char *) 0, 0, "%i", _line);
-          char *buf = new char[size + 1];
-          assert(buf != 0);
-          trio_snprintf(buf, size+1, "%i", _line);
-          _msg += buf;
-          delete[] buf;
-        }
-      }
-      if(show_function || show_where){
-        _msg += ">";
-      }
-      _msg += ' ';
-    } else {
-      _msg += ':';
-    }
-  }
-}
-
-
-/*
-cMessageClosure::va():
-
-Support for cString-based operator<< and operator() definitions in
-cMessageClosure.  Variable argument lists are formatted and then printed
-into a temporary buffer; the contents of this buffer are then appended
-to the cString _msg.
-*/
-
-// FIXME:  consider move this varargs gunk to cString.  -- kgn.
-cMessageClosure &
-cMessageClosure::va(const char *fmt, ...)
-{
-  va_list ap;
-
-  va_start(ap, fmt);
-  int size = trio_vsnprintf((char *) 0, 0, fmt, ap);
-  va_end(ap);
-
-  char *buf = new char[size + 1];
-  assert(buf != 0);
-
-  va_start(ap, fmt);
-  trio_vsnprintf(buf, size+1, fmt, ap);
-  va_end(ap);
-
-  prefix();
-  _msg += buf;
-  delete[] buf;
-
-  return *this;
-}
-
-/*
-operator<< and operator() definitions for cMessageClosure.
-
-Any kind of input can be placed behind the operator<<, really, but try
-to not (further) overcrowd the class...
-
-The operator is meant to convert its input into a string for display.
-If for example you implement
-  cMessageClosure &operator<<(const myClass &instance);
-then you can write a message thus:
-  DemoDebug << "this is a myClass instance: " << my_instance;
-with the result:
-  "Debug [Demo] this is a myClass instance: stuff in my_instance."
-*/
-cMessageClosure &cMessageClosure::operator<<(char c){ prefix(); _msg += c; return *this; }
-cMessageClosure &cMessageClosure::operator<<(unsigned char c){ prefix(); _msg += c; return *this; }
-cMessageClosure &cMessageClosure::operator<<(int i){ return va("%d", i); }
-cMessageClosure &cMessageClosure::operator<<(unsigned int i){ return va("%u", i); }
-cMessageClosure &cMessageClosure::operator<<(long i){ return va("%ld", i); }
-cMessageClosure &cMessageClosure::operator<<(unsigned long i){ return va("%lu", i); }
-cMessageClosure &cMessageClosure::operator<<(float f){ return va("%g", f); }
-cMessageClosure &cMessageClosure::operator<<(double f){ return va("%g", f); }
-cMessageClosure &cMessageClosure::operator<<(const void *p){ return va("%p", p); }
-cMessageClosure &cMessageClosure::operator<<(const char *s){ prefix(); _msg += s; return *this; }
-
-/*
-Definition of the message type "NoPrefix_Msg".
-*/
-cMessageType NoPrefix_Msg("NoPrefix", MCNoPrefix);
-cMessageType Info_GEN_Msg("General", MCInfo);
-cMessageType Debug_GEN_Msg("General", MCDebug);
-cMessageType Error_GEN_Msg("General", MCError);
-cMessageType Fatal_GEN_Msg("General", MCFatal);
-
-
-
-

Deleted: trunk/source/tools/message_display.hh
===================================================================
--- trunk/source/tools/message_display.hh	2005-10-07 01:02:35 UTC (rev 337)
+++ trunk/source/tools/message_display.hh	2005-10-08 02:02:38 UTC (rev 338)
@@ -1,40 +0,0 @@
-//////////////////////////////////////////////////////////////////////////////
-// Copyright (C) 1993 - 2003 California Institute of Technology             //
-//                                                                          //
-// Read the COPYING and README files, or contact 'avida at alife.org',         //
-// before continuing.  SOME RESTRICTIONS MAY APPLY TO USE OF THIS FILE.     //
-//////////////////////////////////////////////////////////////////////////////
-
-#ifndef MESSAGE_DISPLAY_HH
-#define MESSAGE_DISPLAY_HH
-
-/*
-cMessageDisplay displays the message "final_msg" to the user/programmer.
-cMessageDisplay is meant to be subclassed, where
-  out(string final_msg)
-is reimplemented to display "final_msg" in the desired manner. 
-
-Instances of the subclass may then be passed to
-  setStandardOutDisplay(cMessageDisplay &)
-and
-  setStandardErrDisplay(cMessageDisplay &)
-with expected results.
-*/
-
-class cString;
-
-class cMessageDisplay{
-public:
-  virtual ~cMessageDisplay() { ; }
-  
-  virtual void out(cString &final_msg){}
-  virtual void abort(){ abort(); }
-};
-
-void setInfoDisplay(cMessageDisplay &info);
-void setDebugDisplay(cMessageDisplay &debug);
-void setErrorDisplay(cMessageDisplay &error);
-void setFatalDisplay(cMessageDisplay &fatal);
-void setNoPrefixDisplay(cMessageDisplay &noprefix);
-
-#endif

Deleted: trunk/source/tools/message_display_hdrs.hh
===================================================================
--- trunk/source/tools/message_display_hdrs.hh	2005-10-07 01:02:35 UTC (rev 337)
+++ trunk/source/tools/message_display_hdrs.hh	2005-10-08 02:02:38 UTC (rev 338)
@@ -1,41 +0,0 @@
-#ifndef MESSAGE_DISPLAY_HDRS_HH
-#define MESSAGE_DISPLAY_HDRS_HH
-
-#ifndef _CPP_IOSTREAM
-#include <iostream>
-#endif
-#ifndef DEFAULT_MESSAGE_DISPLAY_HH
-#include "cDefaultMessageDisplay.h"
-#endif
-#ifndef MESSAGE_CLASS_HH
-#include "message_class.hh"
-#endif
-#ifndef MESSAGE_CLOSURE_HH
-#include "message_closure.hh"
-#endif
-#ifndef MESSAGE_DISPLAY_HH
-#include "message_display.hh"
-#endif
-#ifndef MESSAGE_TYPE_HH
-#include "message_type.hh"
-#endif
-#ifndef STRING_HH
-#include "string.hh"
-#endif
-
-#ifndef MESSAGE_DISPLAY_HH
-#include "message_display.hh"
-#endif
-
-extern cMessageType NoPrefix_Msg;
-extern cMessageType Info_GEN_Msg;
-extern cMessageType Debug_GEN_Msg;
-extern cMessageType Error_GEN_Msg;
-extern cMessageType Fatal_GEN_Msg;
-#define Message _PLAIN_MSG(NoPrefix)
-#define GenInfo _INFO_MSG(GEN)
-#define GenDebug _DEBUG_MSG(GEN)
-#define GenError _ERROR_MSG(GEN)
-#define GenFatal _FATAL_MSG(GEN)
-
-#endif

Deleted: trunk/source/tools/message_type.hh
===================================================================
--- trunk/source/tools/message_type.hh	2005-10-07 01:02:35 UTC (rev 337)
+++ trunk/source/tools/message_type.hh	2005-10-08 02:02:38 UTC (rev 338)
@@ -1,25 +0,0 @@
-//////////////////////////////////////////////////////////////////////////////
-// Copyright (C) 1993 - 2003 California Institute of Technology             //
-//                                                                          //
-// Read the COPYING and README files, or contact 'avida at alife.org',         //
-// before continuing.  SOME RESTRICTIONS MAY APPLY TO USE OF THIS FILE.     //
-//////////////////////////////////////////////////////////////////////////////
-
-#ifndef MESSAGE_TYPE_HH
-#define MESSAGE_TYPE_HH
-
-class cMessageClass;
-
-class cMessageType{
-public:
-  cMessageType(
-    const char *type_name,
-    cMessageClass &message_class
-  );
-public:
-  const char *m_type_name;
-  const cMessageClass &m_message_class;
-  bool m_is_active;
-};
-
-#endif

Deleted: trunk/source/tools/prob_schedule.cc
===================================================================
--- trunk/source/tools/prob_schedule.cc	2005-10-07 01:02:35 UTC (rev 337)
+++ trunk/source/tools/prob_schedule.cc	2005-10-08 02:02:38 UTC (rev 338)
@@ -1,45 +0,0 @@
-//////////////////////////////////////////////////////////////////////////////
-// Copyright (C) 1993 - 2003 California Institute of Technology             //
-//                                                                          //
-// Read the COPYING and README files, or contact 'avida at alife.org',         //
-// before continuing.  SOME RESTRICTIONS MAY APPLY TO USE OF THIS FILE.     //
-//////////////////////////////////////////////////////////////////////////////
-
-#include "prob_schedule.hh"
-
-#include "cChangeList.h"
-#include "merit.hh"
-#include "tools.hh"
-
-
-///////////////////
-//  cProbSchedule
-///////////////////
-
-// The larger merits cause problems here; things need to be re-thought out.
-
-cProbSchedule::cProbSchedule(int _item_count)
-  : cSchedule(_item_count)
-  , chart(_item_count)
-{
-}
-
-cProbSchedule::~cProbSchedule()
-{
-}
-
-
-int cProbSchedule::GetNextID()
-{
-  assert(chart.GetTotalWeight() > 0);
-  const double position = g_random.GetDouble(chart.GetTotalWeight());
-  return chart.FindPosition(position);
-}
-
-void cProbSchedule::Adjust(int item_id, const cMerit & item_merit)
-{
-  if (cChangeList *change_list = GetChangeList()) {
-    change_list->MarkChange(item_id);
-  }
-  chart.SetWeight(item_id, item_merit.GetDouble());
-}

Deleted: trunk/source/tools/prob_schedule.hh
===================================================================
--- trunk/source/tools/prob_schedule.hh	2005-10-07 01:02:35 UTC (rev 337)
+++ trunk/source/tools/prob_schedule.hh	2005-10-08 02:02:38 UTC (rev 338)
@@ -1,37 +0,0 @@
-//////////////////////////////////////////////////////////////////////////////
-// Copyright (C) 1993 - 2003 California Institute of Technology             //
-//                                                                          //
-// Read the COPYING and README files, or contact 'avida at alife.org',         //
-// before continuing.  SOME RESTRICTIONS MAY APPLY TO USE OF THIS FILE.     //
-//////////////////////////////////////////////////////////////////////////////
-
-#ifndef PROB_SCHEDULE_HH
-#define PROB_SCHEDULE_HH
-
-#ifndef SCHEDULE_HH
-#include "schedule.hh"
-#endif
-#ifndef WEIGHTED_INDEX_HH
-#include "weighted_index.hh"
-#endif
-
-/**
- * The Probiblistic Schedule has the chance for an item to
- * be scheduled proportional to the merit of that item.
- **/
-
-class cWeightedIndex; // aggregate
-class cMerit;
-
-class cProbSchedule : public cSchedule {
-private:
-  cWeightedIndex chart;
-public:
-  cProbSchedule(int num_cells);
-  ~cProbSchedule();
-
-  void Adjust(int item_id, const cMerit & merit);
-  int GetNextID();
-};
-
-#endif

Deleted: trunk/source/tools/random.cc
===================================================================
--- trunk/source/tools/random.cc	2005-10-07 01:02:35 UTC (rev 337)
+++ trunk/source/tools/random.cc	2005-10-08 02:02:38 UTC (rev 338)
@@ -1,216 +0,0 @@
-//////////////////////////////////////////////////////////////////////////////
-// Copyright (C) 1993 - 2000 California Institute of Technology             //
-//                                                                          //
-// Read the COPYING and README files, or contact 'avida at alife.org',         //
-// before continuing.  SOME RESTRICTIONS MAY APPLY TO USE OF THIS FILE.     //
-//////////////////////////////////////////////////////////////////////////////
-
-#ifndef RANDOM_HH
-#include "random.hh"
-#endif
-
-#ifndef TARRAY_HH
-#include "tArray.hh"
-#endif
-
-/* FIXME this is not defined in Visual Studio.net. -- kgn */
-//#ifdef MSVC_COMPILER
-/* FIXME find out what the VS.n macro might be. for now use WIN32 -- kgn */
-#ifdef WIN32
-#include <process.h>
-#else
-#include <unistd.h>
-#endif
-
-
-// Constants //////////////////////////////////////////////////////////////////
-
-// Statistical Approximation
-const unsigned int cRandom::_BINOMIAL_TO_NORMAL=50;    //if < n*p*(1-p)
-const unsigned int cRandom::_BINOMIAL_TO_POISSON=1000; //if < n
-
-// Engine
-const unsigned int cRandom::_RAND_MBIG=1000000000;
-const unsigned int cRandom::_RAND_MSEED=161803398;
-
-// Number Generation
-const double cRandom::_RAND_FAC=(1.0/_RAND_MBIG);
-const double cRandom::_RAND_mP_FAC=(_RAND_MBIG/1000);
-const double cRandom::_RAND_uP_FAC=(_RAND_MBIG/1000000);
-
-
-// Constructor and setup //////////////////////////////////////////////////////
-
-cRandom::cRandom(const int in_seed) :
- seed(0),
- original_seed(0),
- inext(0),
- inextp(0),
- use_count(0),
- expRV(0)
-  {
-    for( int i=0; i<56; ++i ){
-      ma[i] = 0;
-    }
-    ResetSeed(in_seed);  // Calls init()
-  }
-
-
-void cRandom::ResetSeed(const int in_seed){
-  //if( in_seed<0 ){  // @TCC - make 0 also be seeded with time * pid
-  original_seed = in_seed;
-  
-  if( in_seed<=0 ){
-    int seed_time = (int) time(NULL);
-#ifdef MSVC_COMPILER
-    int seed_pid = (int) _getpid(); 
-#else
-    int seed_pid = (int) getpid(); 
-#endif
-    seed = seed_time ^ (seed_pid << 8);
-  }
-  else {
-    seed = in_seed;
-  }
-  
-  if( seed < 0 ) seed*=-1;
-  seed%=_RAND_MSEED;
-
-  init();
-  initStatFunctions();
-}
-
-
-void cRandom::init(){
-  int mj, mk, ii, i;
-
-  // Clear variables
-  inext = 0;
-  inextp = 0;
-  expRV = 0;
-  for( i=0; i<56; ++i ){
-    ma[i] = 0;
-  }
-
-  mj = _RAND_MSEED - seed;
-  mj %= _RAND_MBIG;
-  ma[55] = mj;
-  mk = 1;
-
-  for (i = 1; i < 55; ++i) {
-    ii = (21 * i) % 55;
-    ma[ii] = mk;
-    mk = mj - mk;
-    if (mk < 0) mk += _RAND_MBIG;
-    mj = ma[ii];
-  }
-
-  for (int k = 0; k < 4; ++k) {
-    for (int j = 1; j < 55; ++j) {
-      ma[j] -= ma[1 + (j + 30) % 55];
-      if (ma[j] < 0) ma[j] += _RAND_MBIG;
-    }
-  }
-
-  inext = 0;
-  inextp = 31;
-}
-
-void cRandom::initStatFunctions(){
-  // Setup variables used by Statistical Distribution functions
-  expRV=-log(GetDouble());
-}
-  
-
-// Statistical functions //////////////////////////////////////////////////////
-
-double cRandom::GetRandNormal(){
-  // Draw from a Unit Normal Dist
-  // Using Rejection Method and saving of initial exponential random variable
-  double expRV2;
-  while( 1 ){
-    expRV2=-log(GetDouble());
-    expRV-=(expRV2-1)*(expRV2-1)/2;
-    if( expRV>0 ) break;  
-    expRV=-log(GetDouble());
-  }
-  if( P(.5) ) 
-    return expRV2;
-  else
-    return -expRV2;
-}
-
-unsigned int cRandom::GetRandPoisson(const double mean){
-  // Draw from a Poisson Dist with mean
-  // if cannot calculate, returns UINT_MAX
-  // Uses Rejection Method
-  unsigned int k=0;
-  double a=exp(-mean);
-  double u=GetDouble();
-  if( a <=0 ) return UINT_MAX; // cannot calculate, so return UINT_MAX
-  while( u>=a ){
-    u*=GetDouble();
-    ++k;
-  }
-  return k;
-}
-
-unsigned int cRandom::GetFullRandBinomial(const double n, const double p){
-  // Actually try n Bernoulli events with probability p
-  unsigned int k=0;
-  for( unsigned int i=0; i<n; ++i )
-    if( P(p) ) k++;
-  return k;
-}
-
-unsigned int cRandom::GetRandBinomial(const double n, const double p){
-  // Approximate Binomial if appropriate
-  // if np(1-p) is large, use a Normal approx
-  if( n*p*(1-p) >= _BINOMIAL_TO_NORMAL ){
-    return (unsigned int)(GetRandNormal(n*p,n*p*(1-p))+.5);
-  }
-  // elseif n is large, use a Poisson approx
-  if( n >= _BINOMIAL_TO_POISSON ){
-    unsigned int k=GetRandPoisson(n,p);
-    if( k < UINT_MAX ) // if approx worked
-      return k;
-  }
-  // otherwise, actually generate the randBinomial
-  return GetFullRandBinomial(n,p);
-}
-
-
-bool cRandom::Choose(int num_in, tArray<int> & out_array){
-  // If you ask for more than you pass in...
-  assert ( num_in >= out_array.GetSize() );
-
-  if (num_in == out_array.GetSize()) {
-    // init array to 0's
-    for(int i = 0; i < out_array.GetSize(); i++)  out_array[i] = i;
-    return true;
-  }
-
-  int choice_num = 0;
-  // @CAO this could be done a lot faster when choose size is close to
-  // full size.  However we need to rememebr to watch out for larger num_in
-  while (choice_num < out_array.GetSize()) {
-    int next = (int) GetUInt(num_in);
-
-    // See if this choice is ok to use...
-    bool ok = true;
-    for (int i = 0; i < choice_num; i++) {
-      if (out_array[i] == next) {
-	ok = false;
-	break;
-      }
-    }
-
-    // And if its good, record it.
-    if (ok == true) {
-      out_array[choice_num] = next;
-      choice_num++;
-    }
-  }
-
-  return true;
-}

Deleted: trunk/source/tools/random.hh
===================================================================
--- trunk/source/tools/random.hh	2005-10-07 01:02:35 UTC (rev 337)
+++ trunk/source/tools/random.hh	2005-10-08 02:02:38 UTC (rev 338)
@@ -1,270 +0,0 @@
-//////////////////////////////////////////////////////////////////////////////
-// Copyright (C) 1993 - 2003 California Institute of Technology             //
-//                                                                          //
-// Read the COPYING and README files, or contact 'avida at alife.org',         //
-// before continuing.  SOME RESTRICTIONS MAY APPLY TO USE OF THIS FILE.     //
-//////////////////////////////////////////////////////////////////////////////
-
-/******************************************************************************
-
-cRandom
-
-Random number generator
-Random variables from various statistical distributions
-
-******************************************************************************/
-
-#ifndef RANDOM_HH
-#define RANDOM_HH
-
-#include <time.h>
-#include <limits.h>
-#include <math.h>
-
-#ifndef UINT
-#define UINT unsigned int
-#endif
-
-/**
- * A versatile and fast pseudo random number generator.
- **/
-
-template <class T> class tArray;
-
-class cRandom{
-public:
-  /**
-   * Set up the random generator object.
-   * @param in_seed The seed of the random number generator. 
-   * A negative seed means that the random number generator gets its
-   * seed from the actual system time.
-   **/
-  cRandom(const int in_seed=-1);
-  
-  inline int GetUseCount() { return use_count; }
-  
-  
-  /**
-   * @return The seed that was actually used to start the random sequence.
-   **/
-  inline int GetSeed(){ return seed; }
-  
-  /**
-   * @return The seed that was originally provided by the user.
-   **/
-  inline int GetOriginalSeed(){ return original_seed; }
-  
-  /**
-   * Starts a new sequence of pseudo random numbers.
-   *
-   * @param new_seed The seed for the new sequence.
-   * A negative seed means that the random number generator gets its
-   * seed from the actual system time.
-   **/
-  void ResetSeed(const int new_seed);
-  
-  
-  // Random Number Generation /////////////////////////////////////////////////
-  
-  /**
-   * Generate a double between 0 and 1.
-   *
-   * @return The pseudo random number.
-   **/
-  inline double GetDouble(){ return Get()*_RAND_FAC; }
-  
-  /**
-   * Generate a double between 0 and a given number.
-   *
-   * @return The pseudo random number.
-   * @param max The upper bound for the random numbers (will never be returned).
-   **/
-  inline double GetDouble(const double max){ return GetDouble() * max;}
-  
-  /**
-   * Generate a double out of a given interval.
-   *
-   * @return The pseudo random number.
-   * @param min The lower bound for the random numbers.
-   * @param max The upper bound for the random numbers (will never be returned).
-   **/
-  inline double GetDouble(const double min, const double max){
-    return GetDouble()*(max-min)+min;}
-  
-  /**
-   * Generate an unsigned int.
-   *
-   * @return The pseudo random number.
-   * @param max The upper bound for the random numbers (will never be returned).
-   **/
-  inline unsigned int GetUInt(const unsigned int max){
-    return (int) (GetDouble()*max);}
-  
-  /**
-   * Generate an unsigned int out of an interval.
-   *
-   * @return The pseudo random number.
-   * @param min The lower bound for the random numbers.
-   * @param max The upper bound for the random numbers (will never be returned).
-     **/
-  inline unsigned int GetUInt(const unsigned int min, const unsigned int max){
-    return GetUInt(max - min) + min; }
-  
-  /**
-   * Generate an int out of an interval.
-   *
-   * @return The pseudo random number.
-   * @param min The lower bound for the random numbers.
-   * @param max The upper bound for the random numbers (will never be returned).
-   **/
-  inline int GetInt(const int max){
-    return (int)GetUInt(max); }
-  inline int GetInt(const int min, const int max){
-    return ((int)GetUInt(max - min)) + min; }
-  
-  
-  // Random Event Generation //////////////////////////////////////////////////
-  
-  // P(p) => if p < [0,1) random variable
-  inline bool P(const double _p){
-    return (Get()<(_p*_RAND_MBIG));}
-  inline bool mP(const double _p){	// p = _p*10^-3
-    return (Get()<_RAND_mP_FAC && Get()<(_p*_RAND_MBIG));}
-  inline bool uP(const double _p){	// p = _p*10^-6
-    return (Get()<_RAND_uP_FAC && Get()<(_p*_RAND_MBIG));}
-  inline bool pP(const double _p){	// p = _p*10^-6
-    return (Get()<_RAND_uP_FAC && Get()<_RAND_uP_FAC &&
-	    Get()<(_p*_RAND_MBIG));}
-
-
-  // Other neat stuff /////////////////////////////////////////////////////////
-  inline UINT MutateByte(UINT value);
-  inline UINT ClearByte(UINT value);
-  inline UINT MutateBit(UINT value);
-  inline UINT MutateBit(UINT value, int in_byte);
-
-  bool Choose(int num_in, tArray<int> & out_array);
-
-
-  // Statistical functions ////////////////////////////////////////////////////
-
-  // Distributions //
-
-  /**
-   * Generate a random variable drawn from a unit normal distribution.
-   **/
-  double GetRandNormal();
-  /**
-   * Generate a random variable drawn from a distribution with given
-   * mean and variance.
-   **/
-  inline double GetRandNormal(const double mean, const double variance){
-    return mean+GetRandNormal()*sqrt(variance);
-  }
-  
-  /**
-   * Generate a random variable drawn from a Poisson distribution.
-   **/
-  inline unsigned int GetRandPoisson(const double n, double p) {
-    // Optimizes for speed and calculability using symetry of the distribution
-    if( p>.5 ) return (unsigned int)n-GetRandPoisson(n*(1-p));
-    else return GetRandPoisson(n*p);
-  }
-  
-  /**
-   * Generate a random variable drawn from a Poisson distribution.
-   *
-   * @param mean The mean of the distribution.
-   **/
-  unsigned int GetRandPoisson(const double mean);
-  
-  /**
-   * Generate a random variable drawn from a Binomial distribution.
-   * 
-   * This function is exact, but slow. 
-   * @see cRandom::GetRandBinomial
-   **/
-  unsigned int GetFullRandBinomial(const double n, const double p); // Exact
-  
-  /**
-   * Generate a random variable drawn from a Binomial distribution.
-   * 
-   * This function is faster than @ref cRandom::GetFullRandBinomial(), but 
-   * uses some approximations.
-   *
-   * @see cRandom::GetFullRandBinomial
-   **/  
-  unsigned int GetRandBinomial(const double n, const double p); // Approx
-  
-  
-  // Internals ////////////////////////////////////////////////////////////////
-private:
-  // Internal memebers
-  int seed;
-  int original_seed;
-  int inext;
-  int inextp;
-  int ma[56];
-  int use_count;
-
-  // Constants ////////////////////////////////////////////////////////////////
-  // Statistical Approximation
-  static const unsigned int _BINOMIAL_TO_NORMAL;  //if < n*p*(1-p)
-  static const unsigned int _BINOMIAL_TO_POISSON; //if < n && !Normal approx
-  // Engine
-  static const unsigned int _RAND_MBIG;
-  static const unsigned int _RAND_MSEED;
-  // Number Generation
-  static const double _RAND_FAC;
-  static const double _RAND_mP_FAC;
-  static const double _RAND_uP_FAC;
-
-  // Members & functions for stat functions
-  double expRV; // Exponential Random Variable for the randNormal function
-
-  // Internal functions
-  void init();	// Setup  (called by ResetSeed(in_seed);
-  void initStatFunctions();
-
-  // Basic Random number
-  // Returns a random number [0,_RAND_MBIG)
-  inline unsigned int Get(){
-    // use_count++;  // Turn this on if random uses need to be tracked.
-
-    if (++inext == 56) inext = 0;
-    if (++inextp == 56) inextp = 0;
-    int mj = ma[inext] - ma[inextp];
-    if (mj < 0) mj += _RAND_MBIG;
-    ma[inext] = mj;
-    return mj;
-  }
-
-};
-
-inline UINT cRandom::MutateByte(UINT value) {
-  int byte_pos = 8 * GetUInt(4);
-  int new_byte = GetUInt(256);
-  value &= ~(255 << byte_pos);
-  value |= new_byte << byte_pos;
-  return value;
-}
-
-inline UINT cRandom::ClearByte(UINT value) {
-  int byte_pos = 8 * GetUInt(4);
-  value &= ~(255 << byte_pos);
-  return value;
-}
-
-inline UINT cRandom::MutateBit(UINT value) {
-  int bit_pos = GetUInt(32);
-  value ^= (1 << bit_pos);
-  return value;
-}
-
-inline UINT cRandom::MutateBit(UINT value, int in_byte) {
-  int bit_pos = (in_byte) * 8 + GetUInt(8);
-  value ^= (1 << bit_pos);
-  return value;
-}
-
-#endif

Deleted: trunk/source/tools/ref_block.cc
===================================================================
--- trunk/source/tools/ref_block.cc	2005-10-07 01:02:35 UTC (rev 337)
+++ trunk/source/tools/ref_block.cc	2005-10-08 02:02:38 UTC (rev 338)
@@ -1,25 +0,0 @@
-//////////////////////////////////////////////////////////////////////////////
-// Copyright (C) 1993 - 2003 California Institute of Technology             //
-//                                                                          //
-// Read the COPYING and README files, or contact 'avida at alife.org',         //
-// before continuing.  SOME RESTRICTIONS MAY APPLY TO USE OF THIS FILE.     //
-//////////////////////////////////////////////////////////////////////////////
-
-#ifndef REF_BLOCK_HH
-#include "ref_block.hh"
-#endif
-
-////////////////////
-//  cRefBlock
-////////////////////
-
-cRefBlock::cRefBlock(int in_ref, int in_size)
-{
-  ref_num = in_ref;
-  size = in_size;
-}
-
-cRefBlock::~cRefBlock()
-{
-  // nothing needed here...
-}

Deleted: trunk/source/tools/ref_block.hh
===================================================================
--- trunk/source/tools/ref_block.hh	2005-10-07 01:02:35 UTC (rev 337)
+++ trunk/source/tools/ref_block.hh	2005-10-08 02:02:38 UTC (rev 338)
@@ -1,43 +0,0 @@
-//////////////////////////////////////////////////////////////////////////////
-// Copyright (C) 1993 - 2003 California Institute of Technology             //
-//                                                                          //
-// Read the COPYING and README files, or contact 'avida at alife.org',         //
-// before continuing.  SOME RESTRICTIONS MAY APPLY TO USE OF THIS FILE.     //
-//////////////////////////////////////////////////////////////////////////////
-
-#ifndef REF_BLOCK_HH
-#define REF_BLOCK_HH
-
-#ifndef FIXED_COORDS_HH
-#include "cFixedCoords.h"
-#endif
-
-class cFixedCoords; // aggregate
-
-class cRefBlock {
-private:
-  int ref_num;
-  int size;
-  cFixedCoords start_coords;
-public:
-  cRefBlock(int in_ref = 0, int in_size = 0);
-  ~cRefBlock();
-
-  inline int GetRef() const { return ref_num; }
-  inline int GetSize() const { return size; }
-  inline cFixedCoords GetStart() const { return start_coords; }
-
-  inline void SetRef(int in_ref) { ref_num = in_ref; }
-  inline void SetSize(int in_size) { size = in_size; }
-  inline void SetStart(cFixedCoords &in_coords) { start_coords = in_coords; }
-  inline void SetStart(int in_block, int in_offset) {
-    start_coords(in_block, in_offset);
-  }
-
-  inline void operator=(const cRefBlock & in_block) {
-    ref_num = in_block.GetRef();
-    size = in_block.GetSize();
-  }
-};
-
-#endif

Deleted: trunk/source/tools/running_average.cc
===================================================================
--- trunk/source/tools/running_average.cc	2005-10-07 01:02:35 UTC (rev 337)
+++ trunk/source/tools/running_average.cc	2005-10-08 02:02:38 UTC (rev 338)
@@ -1,54 +0,0 @@
-//////////////////////////////////////////////////////////////////////////////
-// Copyright (C) 1993 - 2003 California Institute of Technology             //
-//                                                                          //
-// Read the COPYING and README files, or contact 'avida at alife.org',         //
-// before continuing.  SOME RESTRICTIONS MAY APPLY TO USE OF THIS FILE.     //
-//////////////////////////////////////////////////////////////////////////////
-
-#ifndef RUNNING_AVERAGE_HH
-#include "running_average.hh"
-#endif
-
-#include <assert.h>
-
-// cRunningAverage ////////////////////////////////////////////////////////////
-
-cRunningAverage::cRunningAverage( int window_size ) : 
-  m_values(0), m_s1(0), m_s2(0), m_window_size( window_size ),
-  m_pointer(0), m_n(0) 
-{
-  assert( m_window_size > 1 );
-  m_values = new double[ m_window_size ];
-}
-
-
-cRunningAverage::~cRunningAverage() {
-  delete [] m_values;
-}
-
-
-void
-cRunningAverage::Add( double value ) {
-  m_s1 += value;
-  m_s2 += value*value;
-  if ( m_n < m_window_size ) {
-    m_values[ m_n ] = value;
-    m_n += 1;
-  }
-  else{
-    double out_v = m_values[ m_pointer ];
-    m_s1 -= out_v;
-    m_s2 -= out_v * out_v;
-    m_values[ m_pointer++ ] = value;
-    if ( m_pointer == m_window_size ) m_pointer = 0;
-  }
-}
-
-
-void
-cRunningAverage::Clear() {
-  m_s1 = 0;
-  m_s2 = 0;
-  m_pointer = 0;
-  m_n = 0;
-}

Deleted: trunk/source/tools/running_average.hh
===================================================================
--- trunk/source/tools/running_average.hh	2005-10-07 01:02:35 UTC (rev 337)
+++ trunk/source/tools/running_average.hh	2005-10-08 02:02:38 UTC (rev 338)
@@ -1,56 +0,0 @@
-//////////////////////////////////////////////////////////////////////////////
-// Copyright (C) 1993 - 2003 California Institute of Technology             //
-//                                                                          //
-// Read the COPYING and README files, or contact 'avida at alife.org',         //
-// before continuing.  SOME RESTRICTIONS MAY APPLY TO USE OF THIS FILE.     //
-//////////////////////////////////////////////////////////////////////////////
-
-#ifndef RUNNING_AVERAGE_HH
-#define RUNNING_AVERAGE_HH
-
-#include <math.h>
-
-class cRunningAverage {
-private:
-  double *m_values;  // Array of actual values
-  double m_s1;       // average
-  double m_s2;       // sum of squares
-  int m_window_size;        // Size of sliding window
-  int m_pointer;
-  int m_n;
-  
-  
-  cRunningAverage();
-  cRunningAverage( const cRunningAverage & );
-  cRunningAverage & operator=( const cRunningAverage & );
-public:
-  cRunningAverage( int window_size );
-  ~cRunningAverage();
-  
-  
-  //manipulators
-  void Add( double value );
-  void Clear();
-  
-  
-  //accessors
-  double Sum()          const { return m_s1; }
-  double S1()           const { return m_s1; }
-  double SumOfSquares() const { return m_s2; }
-  double S2()           const { return m_s2; }
-  
-  double Average() const { return ( m_n == m_window_size ) ? (m_s1/m_n) : 0; }
-
-  double Variance() const { return ( m_n == m_window_size ) ?
-      (m_s2 - m_s1*m_s1/m_n) / (m_n-1) : 0; }
-    
-  double StdDeviation() const { return sqrt(Variance()); }
-  double StdError()  const { return ( m_n == m_window_size ) ?
-       sqrt(m_s2 - m_s1*m_s1/m_n / (m_n * (m_n-1))) : 0; }
-
-  // Notation Shortcuts
-  double Ave() const { return Average(); }
-  double Var() const { return Variance(); }
-};
-
-#endif

Deleted: trunk/source/tools/scaled_block.cc
===================================================================
--- trunk/source/tools/scaled_block.cc	2005-10-07 01:02:35 UTC (rev 337)
+++ trunk/source/tools/scaled_block.cc	2005-10-08 02:02:38 UTC (rev 338)
@@ -1,26 +0,0 @@
-//////////////////////////////////////////////////////////////////////////////
-// Copyright (C) 1993 - 2000 California Institute of Technology             //
-//                                                                          //
-// Read the COPYING and README files, or contact 'avida at alife.org',         //
-// before continuing.  SOME RESTRICTIONS MAY APPLY TO USE OF THIS FILE.     //
-//////////////////////////////////////////////////////////////////////////////
-
-#ifndef SCALED_BLOCK_HH
-#include "scaled_block.hh"
-#endif
-
-////////////////////
-//  cScaledBlock
-////////////////////
-
-cScaledBlock::cScaledBlock(void * in_data, int in_size)
-{
-  data = in_data;
-  size = in_size;
-}
-
-cScaledBlock::~cScaledBlock()
-{
-}
-
-

Deleted: trunk/source/tools/scaled_block.hh
===================================================================
--- trunk/source/tools/scaled_block.hh	2005-10-07 01:02:35 UTC (rev 337)
+++ trunk/source/tools/scaled_block.hh	2005-10-08 02:02:38 UTC (rev 338)
@@ -1,48 +0,0 @@
-//////////////////////////////////////////////////////////////////////////////
-// Copyright (C) 1993 - 2003 California Institute of Technology             //
-//                                                                          //
-// Read the COPYING and README files, or contact 'avida at alife.org',         //
-// before continuing.  SOME RESTRICTIONS MAY APPLY TO USE OF THIS FILE.     //
-//////////////////////////////////////////////////////////////////////////////
-
-#ifndef SCALED_BLOCK_HH
-#define SCALED_BLOCK_HH
-
-#ifndef FIXED_COORDS_HH
-#include "cFixedCoords.h"
-#endif
-
-/**
- * Class used by @ref cBlockStruct.
- **/
-
-class cFixedCoords; // aggregate
-
-class cScaledBlock {
-private:
-  void * data;
-  int size;
-  cFixedCoords start_coords;
-public:
-  cScaledBlock(void * in_data = NULL, int in_size = 0);
-  ~cScaledBlock();
-
-  inline void * GetData() const { return data; }
-  inline int GetSize() const { return size; }
-  inline cFixedCoords GetStart() const { return start_coords; }
-
-  inline void SetData(void * in_data) { data = in_data; }
-  inline void SetSize(int in_size) { size = in_size; }
-  inline void SetStart(const cFixedCoords &in_coords)
-    { start_coords = in_coords; }
-  inline void SetStart(int in_block, int in_offset) {
-    start_coords(in_block, in_offset);
-  }
-
-  inline void operator=(const cScaledBlock & in_block) {
-    data = in_block.GetData();
-    size = in_block.GetSize();
-  }
-};
-
-#endif

Deleted: trunk/source/tools/schedule.cc
===================================================================
--- trunk/source/tools/schedule.cc	2005-10-07 01:02:35 UTC (rev 337)
+++ trunk/source/tools/schedule.cc	2005-10-08 02:02:38 UTC (rev 338)
@@ -1,33 +0,0 @@
-//////////////////////////////////////////////////////////////////////////////
-// Copyright (C) 1993 - 2003 California Institute of Technology             //
-//                                                                          //
-// Read the COPYING and README files, or contact 'avida at alife.org',         //
-// before continuing.  SOME RESTRICTIONS MAY APPLY TO USE OF THIS FILE.     //
-//////////////////////////////////////////////////////////////////////////////
-
-#include "schedule.hh"
-
-#include "cChangeList.h"
-
-////////////////
-//  cSchedule
-////////////////
-
-cSchedule::cSchedule(int _item_count)
-: item_count(_item_count)
-, m_change_list(0)
-{
-}
-
-cSchedule::~cSchedule()
-{
-}
-
-void cSchedule::SetChangeList(cChangeList *change_list) {
-  m_change_list = change_list;
-  if (m_change_list) m_change_list->Resize(item_count);
-}
-void cSchedule::SetSize(int _item_count) {
-  item_count = _item_count;
-  if (m_change_list) m_change_list->Resize(_item_count);
-}

Deleted: trunk/source/tools/schedule.hh
===================================================================
--- trunk/source/tools/schedule.hh	2005-10-07 01:02:35 UTC (rev 337)
+++ trunk/source/tools/schedule.hh	2005-10-08 02:02:38 UTC (rev 338)
@@ -1,37 +0,0 @@
-//////////////////////////////////////////////////////////////////////////////
-// Copyright (C) 1993 - 2003 California Institute of Technology             //
-//                                                                          //
-// Read the COPYING and README files, or contact 'avida at alife.org',         //
-// before continuing.  SOME RESTRICTIONS MAY APPLY TO USE OF THIS FILE.     //
-//////////////////////////////////////////////////////////////////////////////
-
-#ifndef SCHEDULE_HH
-#define SCHEDULE_HH
-
-/**
- * This class is the base object to handle time-slicing. All other schedulers
- * are derived from this class.  This is a pure virtual class.
- *
- **/
-
-class cMerit;
-class cChangeList;
-class cSchedule {
-protected:
-  int item_count;
-  cChangeList *m_change_list;
-public:
-  cSchedule(int _item_count);
-  virtual ~cSchedule();
-
-  virtual bool OK() { return true; }
-  virtual void Adjust(int item_id, const cMerit & merit) { ; }
-  virtual int GetNextID() = 0;
-  virtual double GetStatus(int id) { return 0.0; }
-  void SetChangeList(cChangeList *change_list);
-  cChangeList *GetChangeList() { return m_change_list; }
-
-  void SetSize(int _item_count);
-};
-
-#endif

Deleted: trunk/source/tools/string.cc
===================================================================
--- trunk/source/tools/string.cc	2005-10-07 01:02:35 UTC (rev 337)
+++ trunk/source/tools/string.cc	2005-10-08 02:02:38 UTC (rev 338)
@@ -1,641 +0,0 @@
-//////////////////////////////////////////////////////////////////////////////
-// Copyright (C) 1993 - 2003 California Institute of Technology             //
-//                                                                          //
-// Read the COPYING and README files, or contact 'avida at alife.org',         //
-// before continuing.  SOME RESTRICTIONS MAY APPLY TO USE OF THIS FILE.     //
-//////////////////////////////////////////////////////////////////////////////
-
-#include "string.hh"
-
-extern "C"{
-#include <stdio.h>
-#include <stdarg.h>
-}
-
-
-using namespace std;
-
-
-// ** class cStringData **
-// -- Constructors --
-cString::cStringData::cStringData(short in_size)
-  : refs(1)
-  , size(in_size)
-  , data(new char[size+1])
-{
-  assert(data!=NULL); // Memory Allocation Error: Out of Memory
-  data[0] = '\0';
-  data[size] = '\0';
-}
-
-cString::cStringData::cStringData(short in_size, const char * in)
-  : refs(1)
-  , size(in_size)
-  , data(new char[size+1])
-{
-  assert(data!=NULL); // Memory Allocation Error: Out of Memory
-  for( short i = 0; i < size; i++ )  data[i]=in[i];
-  data[size] = '\0';
-}
-
-cString::cStringData::cStringData(const cStringData & in)
-  : refs(1)
-  , size(in.GetSize())
-  , data(new char[size+1])
-{
-  assert(data!=NULL); // Memory Allocation Error: Out of Memory
-  for( short i = 0; i < size; i++ )  data[i]=in[i];
-  data[size] = '\0';
-}
-
-
-
-// ** class cString **
-
-// -- Constants --
-const int cString::MAX_LENGTH = MAX_STRING_LENGTH;
-
-
-// -- Comparisons --
-
-bool cString::operator== (const cString & in) const {
-  // Compares sizes first since we have that info anyway
-  int i=-1;
-  if( GetSize() == in.GetSize() ){
-    for( i=0; i<GetSize() && (*this)[i]==in[i]; ++i );
-  }
-  return ( i == GetSize() );  // i == GetSize if all chars matched
-}
-
-
-int cString::Compare(const char * in) const
-{
-  // -1 (*this<in), 0 (*this==in), 1 (*this>in) ... just like strcmp()
-  assert(in!=NULL);  // NULL input string
-  int i;
-  for( i = 0;
-       i < GetSize() && in[i]!='\0' && (*this)[i] == in[i];
-       i++ );
-
-  if( i == GetSize()  &&  in[i] == '\0' ) {
-    return 0;                // *this == in
-  }
-
-  // They're not equal!
-  if ( i < GetSize() && (*this)[i] > in[i] )  return 1;  // *this > in
-  return -1;                                             // *this < in
-}
-
-bool cString::IsContinueLine()
-{
-  bool found = false;
-  bool goodstufffound = false;
-  int j = GetSize() - 1;
-
-  // Scan the line from the end.  If the last non-whitespace line is
-  // continueation character the line expects a line to be concatenated on
-  // to it
-
-  while ((j >= 0) && !found && !goodstufffound) {
-    if (!IsWhitespace(j)) {
-      if ((*this)[j] == CONTINUE_LINE_CHAR) {
-        found = true;
-        RemovePos(j);
-      } else {
-        goodstufffound = true;
-      }
-    }
-    j--;
-  }
-  return (found);
-}
-
-// -- Information --
-
-int cString::CountWhitespace(int start) const
-{
-  assert(start >= 0); // Negative Index into String
-  if (start >= GetSize()) return 0;
-  int count = 0;
-  while (start+count<GetSize() && IsWhitespace(start+count)) count++;
-  return count;
-}
-
-
-int cString::CountWordsize(int start) const {
-  assert(start >= 0); // Negative Index into String
-  if( start>=GetSize() )  return 0;
-  int count = 0;
-  while( start+count<GetSize() && !IsWhitespace(start+count) )
-    ++count;
-  return count;
-}
-
-
-int cString::CountLinesize(int start) const
-{
-  assert(start >= 0); // Negative Index into String
-  if( start>=GetSize() )  return 0;
-  int count = 0;
-  while( start+count<GetSize() && (*this)[start+count]!='\n' )
-    count++;
-  return count;
-}
-
-
-int cString::CountNumLines() const
-{
-  int num_lines = 1;
-  for( int i=0; i<GetSize(); ++i ){
-    if( (*this)[i] == '\n' )  num_lines++;
-  }
-  return num_lines;
-}
-
-
-int cString::CountNumWords() const
-{
-  int num_words = 0;
-  int pos = CountWhitespace();     // Skip initial whitespace.
-  while( pos<GetSize() ) {
-    pos += CountWordsize(pos);
-    pos += CountWhitespace(pos);
-    num_words++;
-  }
-  return num_words;
-}
-
-
-// -- Search --
-int cString::Find(char in_char, int start) const
-{
-  int pos = start;
-  assert (pos >= 0);         // Negative Position: setting to 0
-  assert (pos <= GetSize()); // Position Past End of String: setting to end.
-  if (pos <= 0) pos = 0;
-  else if (pos > GetSize()) pos = GetSize();
-
-  while( pos < GetSize() ) {
-    if( (*this)[pos] == in_char) return pos; // Found!
-    pos++;
-  }
-  return -1; // Not Found
-}
-
-
-int cString::FindWord(const cString & in, int pos) const
-{
-  assert (pos >= 0);         // Negative Position: setting to 0
-  assert (pos <= GetSize()); // Position Past End of String: setting to end.
-  if (pos <= 0) pos = 0;
-  else if (pos > GetSize()) pos = GetSize();
-
-  // While there is enough space to find
-  while (pos != -1 && pos + in.GetSize() < GetSize()) {
-    cerr << in << " " << pos << endl;
-    if( (pos=Find(in, pos)) >= 0 ){      // try to find it
-      // if it's got whitespace on both sides, it's a word
-      if( ( pos==0 || IsWhitespace(pos-1) )
-	  && ( pos==GetSize()-1 || IsWhitespace(pos+in.GetSize()) ) ){
-	return pos;
-      } else {
-	pos++; // go on and look further down
-      }
-    }
-  }
-  return -1;
-}
-	
-
-cString cString::GetWord(int word_id) const
-{
-  // Find positon of word
-  int pos = 0;
-  int cur_word = 0;
-  while( pos<GetSize() && cur_word<word_id ) {  // If this isn't the word
-    pos += CountWhitespace(pos);                 // Skip leading whitespace
-    pos += CountWordsize(pos);                   // Skip this word
-    cur_word++;
-  }
-  // Return GetWordAt position... (it will skip any leading whitespace)
-  return GetWordAt(pos);
-}
-
-
-cString cString::GetWordAt(int start) const
-{
-  int pos = start + CountWhitespace(start);  // Skip past initial whitespace.
-  int word_size = CountWordsize(pos);        // Get size of word
-  cString new_string(word_size);             // Allocate new_string that size
-  for (int i = 0; i < word_size; i++) {      // Copy the chars to new_string
-    new_string[i] = (*this)[pos + i];
-  }
-  return new_string;
-}
-
-bool cString::IsWhitespace() const
-{
-  for( int i=0; i < GetSize(); ++i){
-    if ( IsWhitespace(i) == false ) return false;
-  }
-  return true;
-}
-
-bool cString::IsUpperLetter() const
-{
-  for (int i = 0; i < GetSize(); ++i) {
-    if ( IsUpperLetter(i) == false ) return false;
-  }
-  return true;
-}
-
-bool cString::IsLowerLetter() const
-{
-  for (int i = 0; i < GetSize(); ++i) {
-    if ( IsLowerLetter(i) == false ) return false;
-  }
-  return true;
-}
-
-bool cString::IsLetter() const
-{
-  for (int i = 0; i < GetSize(); ++i) {
-    if ( IsLetter(i) == false ) return false;
-  }
-  return true;
-}
-
-bool cString::IsNumber() const
-{
-  for (int i = 0; i < GetSize(); ++i) {
-    if ( IsNumber(i) == false ) return false;
-  }
-  return true;
-}
-
-bool cString::IsNumeric() const
-{
-  for (int i = 0; i < GetSize(); ++i) {
-    if ( IsNumber(i) == false ) return false;
-  }
-  return true;
-}
-
-bool cString::IsAlphaNumeric() const
-{
-  for (int i = 0; i < GetSize(); ++i) {
-    if ( IsAlphaNumeric(i) == false ) return false;
-  }
-  return true;
-}
-
-
-
-cString cString::Substring(int start, int size) const
-{
-  assert(size > 0); // Non-Positive Size
-  assert(start >= 0); // Negative Position
-  assert(start + size <= GetSize()); // Position+Size Past End of String
-
-  cString new_string(size);
-  for (int i=0; i<size; i++) {
-    new_string[i] = (*this)[i+start];
-  }
-  return new_string;
-}
-
-bool cString::IsSubstring(const cString & in_string, int start) const
-{
-  assert (start >= 0); // Negative start position
-
-  // If the potential sub-string won't fit, return false;
-  if ( start + in_string.GetSize() > GetSize() ) return false;
-
-  // Otherwise, check character by character.
-  for (int i = 0; i < in_string.GetSize(); i++) {
-    if ( (*this)[i+start] != in_string[i] ) return false;
-  }
-
-  return true;
-}
-
-
-// -- Modifiers --
-
-cString & cString::Set(const char * fmt, ...)
-{
-  va_list argp;
-  char buf[MAX_LENGTH];
-  va_start(argp, fmt);
-  vsprintf(buf, fmt, argp);
-  va_end(argp);
-  (*this) = buf;
-  return *this;
-}
-
-
-int cString::Replace(const cString & old_st, const cString & new_st, int pos)
-{
-  int location;
-  if( (location=Find(old_st, pos)) >= 0 ){ // If we find the old_st
-    Insert(new_st, location, old_st.GetSize());
-  }
-  return location;
-}
-
-
-int cString::LeftJustify()
-{
-  int ws_count = CountWhitespace();
-  if( ws_count>0 )
-    InsertStr(0, NULL, 0, ws_count);
-  return ws_count;
-}
-
-
-int cString::RightJustify()
-{
-  int ws_count = 0;
-  while( GetSize()-ws_count-1>0 && IsWhitespace(GetSize()-ws_count-1) )
-    ws_count++;
-  if( ws_count>0 )
-    InsertStr(0, NULL, GetSize()-ws_count, ws_count);
-  return ws_count;
-}
-
-
-cString cString::Pop(const char delim)
-{
-  int pos;
-  cString rv("");
-  if( (pos=Find(delim)) >= 0 ){ // if it is found at all
-    if( pos > 0 ){  // if the first char is not delim, return substring
-      rv = Substring(0,pos);
-    }
-    // Trim off the front
-    InsertStr(0, NULL, 0, pos+1);
-  }
-
-  // If the deliminator is *not* found, return the whole string.
-  else {
-    rv = *this;
-    *this = "";
-  }
-  return rv;
-}
-
-
-cString cString::PopWord()
-{
-  // If there is nothing here, there is nothing to be popped.
-  if (GetSize() == 0) return "";
-
-  const int start_pos = CountWhitespace();
-  const int word_size = CountWordsize(start_pos);
-
-  // If the string is not all whitespace, save the word we cut off...
-  cString rv("");
-  if (word_size > 0) rv = Substring(start_pos, word_size);
-
-  // Trim off the front
-  const int word_end = start_pos + word_size;
-  const int new_start = word_end + CountWhitespace(word_end);
-  InsertStr(0, NULL, 0, new_start);  // Insert null in place of old word.
-
-  return rv;
-}
-
-
-cString & cString::ToLower()
-{
-  for (int pos = 0; pos < GetSize(); pos++) {
-    if( (*this)[pos] >= 'A' && (*this)[pos] <= 'Z' )
-      (*this)[pos] += 'a' - 'A';
-  }
-
-  return *this;
-}
-
-
-cString & cString::ToUpper()
-{
-  for (int pos = 0; pos < GetSize(); pos++) {
-    if( (*this)[pos] >= 'a' && (*this)[pos] <= 'z' )
-      (*this)[pos] += 'A' - 'a';
-  }
-
-  return *this;
-}
-
-
-void cString::Reverse()
-{
-  cString new_st(GetSize());
-  for( int i=0; i<GetSize(); ++i ){
-    // new_st[i] = (*this)[GetSize()-i-1];       // @CAO Problem in new gcc
-    new_st[i] = GetData()[GetSize()-i-1];
-  }
-  (*this) = new_st;
-}
-
-
-void cString::CompressWhitespace()
-{
-  // Eats initial whitespace
-  // 2 pass method...
-  int i;
-  int pos = 0;
-  int start_pos = CountWhitespace();
-  int new_size = 0;
-  bool ws = false;
-
-  // count the number of characters that we will need in the new string
-  for( i=start_pos; i<GetSize(); ++i ){
-    if( IsWhitespace(i) ){ // if it whitespace...
-      if( ws == false ){     // if we arn't already in a whitespace block
-	ws = true;             // we are now in a whitespace block
-      }
-    }else{                 // it isn't whitespace, so count
-      if( ws==true ){        // if there was a whitespace block
-	++new_size;            // inc once for the block
-	ws = false;
-      }
-      ++new_size;
-    }
-  }
-
-  cString new_st(new_size);  // Allocate new string
-
-  // Copy over the characters
-  // pos will be the location in new_st, while i is the index into this
-  ws = false;
-  for( i=start_pos; i<GetSize(); ++i ){
-    if( IsWhitespace(i) ){ // if it whitespace...
-      if( ws == false ){     // if we arn't already in a whitespace block
-	ws = true;             // we are now in a whitespace block
-      }
-    }else{                 // it isn't whitespace, so count
-      if( ws==true ){        // if there was a whitespace block
-	new_st[pos] = ' ';     // put a space in for the whitespace block
-	++pos;                 // inc once for the block
-	ws = false;
-      }
-      // new_st[pos] = (*this)[i]; // copy it & increment pos  @CAO prob in gcc
-      new_st[pos] = GetData()[i]; // copy it & increment pos
-      ++pos;
-    }
-  }
-
-  (*this) = new_st;  // assign the new_st to this
-}
-
-
-void cString::RemoveWhitespace(){
-  int i;
-  int new_size = 0;
-  for( i=0; i<GetSize(); ++i ){  // count new size
-    if( !IsWhitespace(i) )  ++new_size;
-  }
-  cString new_st(new_size);      // allocate new string
-  int pos = 0;
-  for( i=0; i<GetSize(); ++i ){  // count new size
-    if( !IsWhitespace(i) ){
-      new_st[pos] = GetData()[i]; // copy it & increment pos   @CAO prob in GCC
-      ++pos;
-    }
-  }
-  (*this) = new_st;  // assign the new_st to this
-}
-
-
-void cString::RemoveChar(char out_char){
-  int i;
-  int new_size = 0;
-  for( i=0; i<GetSize(); ++i ){  // count new size
-    if( GetData()[i] != out_char )  ++new_size;
-  }
-  cString new_st(new_size);      // allocate new string
-  int pos = 0;
-  for( i=0; i<GetSize(); ++i ){  // count new size
-    if( GetData()[i] != out_char ){
-      new_st[pos] = GetData()[i]; // copy it & increment pos   @CAO prob in GCC
-      ++pos;
-    }
-  }
-  (*this) = new_st;  // assign the new_st to this
-}
-
-void cString::RemovePos(int pos){
-  int i;
-  int new_size = GetSize() - 1;
-  cString new_st(new_size);      // allocate new string
-  int newpos = 0;
-  for( i=0; i<GetSize(); ++i ){  // count new size
-    if( i != pos ){
-      new_st[newpos++] = GetData()[i]; // copy it & increment pos
-    }
-  }
-  (*this) = new_st;  // assign the new_st to this
-}
-
-
-
-// -- Internal Methods --
-
-cString & cString::AppendStr(const int in_size, const char * in)
-{
-  assert (in_size == 0 || in != NULL); // NULL input string
-
-  // Allocate a new string
-  cStringData * new_value = new cStringData(GetSize()+in_size);
-  assert (new_value != NULL);       // Memory Allocation Error: Out of Memory
-  for(int i=0; i<GetSize(); ++i ) { // Copy self up to pos
-    (*new_value)[i] = this->operator[](i);
-  }
-  for(int i=0; i<in_size; ++i ) {   // Copy in
-    assert(in[i] != '\0');          // Input String Contains '\\0' or too Short
-    (*new_value)[i+GetSize()] = in[i];
-  }
-  TakeValue(new_value);             // Reassing data to new data
-  return(*this);
-}
-
-
-cString & cString::InsertStr(const int in_size, const char * in,
-			     int pos, int excise )
-{
-  // Inserts 'in' (of length 'in_size') at postition 'pos'
-  // Also excises 'excise' characters from 'pos'
-  // If 'in_size'==0 then 'in' can == NULL and only excise happens
-
-  // Validate inputs:
-  assert (in_size >= 0);               // Negative input size
-  assert (pos >= 0);                   // Negative position
-  assert (pos <= GetSize());           // Position past end of string
-  assert (excise >= 0);                // Negative excise
-  assert (excise <= GetSize()-pos);    // Excise number too large
-  assert (excise > 0 || in_size > 0);  // Make sure a change is made!
-  assert (in_size == 0 || in != NULL); // NULL input string
-
-  // Allocate a new string
-  const int new_size = GetSize() + in_size - excise;
-  cStringData * new_value = new cStringData(new_size);
-  assert (new_value != NULL);  // Memory Allocation Error: Out of Memory
-
-  for(int i = 0; i < pos; ++i ){             // Copy self up to pos
-    (*new_value)[i] = this->operator[](i);
-  }
-  for(int i = 0; i < in_size; ++i ){         // Copy in
-    assert( in[i] != '\0');  // Input String Contains '\\0' or too Short
-    (*new_value)[i+pos] = in[i];
-  }
-  for(int i=pos+excise; i<GetSize(); ++i ){  // Copy rest of self
-    (*new_value)[i+in_size-excise] = this->operator[](i);
-  }
-
-  TakeValue(new_value);                      // Reassing data to new data
-  return(*this);
-}
-
-
-int cString::FindStr(const char * in, const int in_size, int pos) const
-{
-  assert (pos>=0);         // Negative position
-  assert (pos<=GetSize()); // Position past end of string
-
-  while (pos < GetSize()) {
-    if( GetSize()-pos < in_size ) return -1; // Too near this string's end.
-    if( (*this)[pos] == in[0] ){
-      // see if we have found the string...
-      int i;
-      for( i = 1; i < in_size; i++ ){
-	assert (pos+i < GetSize()); // Reached end of (*this) in Find
-	assert (in[i] != '\0');     // Reached end of 'in' in Find
-	if( (*this)[pos + i] != in[i] ) break; // Match failure!
-      }
-      // If we have made it fully through the loop, we have found a match!
-      if( i == in_size ) return pos;
-    }
-    pos++;
-  }
-  return -1;
-}
-
-
-
-// {{{ ** External cString Functions **
-
-istream & operator >> (istream & in, cString & string)
-{
-  char buf[cString::MAX_LENGTH];
-  in>>buf;
-  string=buf;
-  return in;
-}
-
-ostream & operator << (ostream & out, const cString & string)
-{
-  out << string.GetData();
-  return out;
-}
-

Deleted: trunk/source/tools/string.hh
===================================================================
--- trunk/source/tools/string.hh	2005-10-07 01:02:35 UTC (rev 337)
+++ trunk/source/tools/string.hh	2005-10-08 02:02:38 UTC (rev 338)
@@ -1,627 +0,0 @@
-//////////////////////////////////////////////////////////////////////////////
-// Copyright (C) 1993 - 2003 California Institute of Technology             //
-//                                                                          //
-// Read the COPYING and README files, or contact 'avida at alife.org',         //
-// before continuing.  SOME RESTRICTIONS MAY APPLY TO USE OF THIS FILE.     //
-//////////////////////////////////////////////////////////////////////////////
-
-#ifndef STRING_HH
-#define STRING_HH
-
-#include <stdlib.h>
-#include <iostream>
-#include <string.h>
-#include <assert.h>
-
-#define MAX_STRING_LENGTH 4096
-#define MAX_STRING_REF_COUNT 32767
-#define CONTINUE_LINE_CHAR '\\'
-
-/**
- * A multipurpose string class with many convenient methods of
- * manipulating and comparing strings.
- **/
-
-class cString {
-protected:
-  void CopyOnWrite(){
-    if( value->IsShared() ){  // if it is shared
-      value->RemoveRef();     // remove our reference count
-      value = new cStringData(*value);  // make own copy of value
-    }
-  }
-
-  // -- Contained Classes --
-private:
-  // Declarations (only needed)
-  class cStringData;
-
-  // {{{ -- cCharProxy -- To detect rvalue vs lvalue ---------------------
-
-  class cCharProxy{
-  private:
-    cString & string;
-    short index;
-
-  public:
-    cCharProxy( cString & _string, short _index) :
-     string(_string), index(_index) {;}
-
-    inline cCharProxy & operator= (char c);     // lvalue
-    inline cCharProxy & operator+= (char c);    // lvalue
-    inline cCharProxy & operator-= (char c);    // lvalue
-    inline cCharProxy & operator++ ();          // lvalue (prefix)
-    inline char         operator++ (int dummy); // lvalue (postfix)
-    inline cCharProxy & operator-- ();          // lvalue (prefix)
-    inline char         operator-- (int dummy); // lvalue (postfix)
-    inline operator char () const ;             // rvalue
-  };
-
-  //friend cCharProxy;  // Telling rvalue vs lvalue ....
-  // porting to gcc 3.1 -- k
-  friend class cCharProxy;  // Telling rvalue vs lvalue ....
-
-  // }}}  End cCharProxy
-  // {{{ -- cStringData -- Holds the actual data and is reference count --
-  class cStringData{
-    // NOTE: Terminating NULL is always there (you can't assign!!)
-
-  private:
-    short refs;   // Number of references
-    short size;   // size of data (NOT INCLUDING TRAILING NULL)
-    char * data;
-
-  public:
-    explicit cStringData(short in_size);
-    cStringData(short in_size, const char * in);
-    cStringData(const cStringData & in);
-
-    ~cStringData(){
-      assert(refs == 0);  // Deleting cStringData with References!!
-      delete [] data;
-    }
-
-
-    cStringData & operator= (const cStringData & in) {
-      delete [] data;
-      size = in.GetSize();
-      data = new char [size+1];
-      assert(data != NULL);   // Memory Allocation Error: Out of Memory
-      for( short i=0; i<size; ++i )  data[i]=in[i];
-      data[size] = '\0';
-      return (*this);
-    }
-
-
-    short GetSize() const { return size; }
-
-    const char * GetData() const { return data; }
-
-    char operator[] (int index) const {
-      assert(index >= 0);    // Lower Bounds Error
-      assert(index <= size); // Upper Bounds Error
-      return data[index];
-    }
-
-    char & operator[](int index) {
-      assert(index >= 0);     // Lower Bounds Error
-      assert(index <= size);  // Upper Bounds Error
-      assert(index != size);  // Cannot Change Terminating NULL
-      return data[index];
-    }
-
-
-    bool IsShared() { return (refs > 1); }
-    bool AtMaxRefs() { return (refs >= MAX_STRING_REF_COUNT); }
-
-    short RemoveRef() {
-      assert( refs > 0 );  // Reference count corrupted
-      return(--refs);
-    }
-
-    cStringData * NewRef() { ++refs; return this; }
-
-  };
-  // }}} End cStringData
-
-  // -- Constants --
-public:
-  static const int MAX_LENGTH;
-
-
-
-  //  -- INTERFACE -----------------------------------------------------------
-public:
-
-  // -- Constructors --
-  cString(const char * in = "") : value(new cStringData(strlen(in), in)) {
-    assert( in != NULL );     // NULL input string
-    assert( value != NULL );  // Memory Allocation Error: Out of Memory
-  }
-  explicit cString(const int size) : value(new cStringData(size)) {
-    assert( value!=NULL );    // Memory Allocation Error: Out of Memory
-  }
-  cString(const cString & in) { CopyString(in); }
-
-
-  // -- Destructor --
-  virtual ~cString() { if( value->RemoveRef() == 0 )  delete value; }
-
-
-  // Cast to const char *
-  operator const char * () const { return value->GetData(); }
-  const char * operator() () const { return value->GetData(); } // Depricated
-  const char * GetData() const { return value->GetData(); } // Depricated
-
-
-  // Assignment Operators
-  cString & operator= (const cString & in){
-    if( value->RemoveRef() == 0 ) delete value;
-    CopyString(in);
-    return *this; 
-  }
-  cString & operator= (const char * in){
-    assert( in != NULL ); // NULL input string
-    if( value->RemoveRef() == 0 ) delete value;
-    value = new cStringData(strlen(in),in);
-    assert(value != NULL);  // Memory Allocation Error: Out of Memory
-    return *this;
-  }
-  
-  
-  /**
-   * Get the size of the string (not including the terminating '\0').
-   **/
-  int GetSize() const { return value->GetSize(); }
-
-
-  // Comparisons
-  int Compare(const char * in) const;  // strcmp like function
-  bool operator== (const char * in)    const { return (Compare(in)==0); }
-  bool operator== (const cString & in) const;  // A bit optimized
-  bool operator!= (const char * in)    const { return !(*this==in); }
-  bool operator<  (const char * in)    const { return (Compare(in)<0); }
-  bool operator>  (const char * in)    const { return (Compare(in)>0); }
-  bool operator<= (const char * in)    const { return (Compare(in)<=0); }
-  bool operator>= (const char * in)    const { return (Compare(in)>=0); }
-
-  // Concatenation
-  cString & operator+= (const char in)  { return AppendStr(1,&in); }
-  cString & operator+= (const char * in){ return AppendStr(strlen(in),in); }
-  cString & operator+= (const cString & in){return AppendStr(in.GetSize(),in);}
-  cString operator+ (const char in_char){ return (cString(*this) += in_char); }
-  cString operator+ (const char * in)   { return (cString(*this) += in); }
-  cString operator+ (const cString & in){ return (cString(*this) += in); }
-
-
-  // Additional modifiers
-  cString & Set(const char * fmt, ...);
-
-  cString & Insert(const char in, int pos=0, int excise=0){
-    return InsertStr(1, &in, pos, excise); }
-  cString & Insert(const char * in, int pos=0, int excise=0){
-    return InsertStr(strlen(in), in, pos, excise); }
-  cString & Insert(const cString & in, int pos=0, int excise=0){
-    return InsertStr(in.GetSize(), in, pos, excise); }
-
-
-  // Removes 'size' characters from 'pos' (default size = to end of string)
-  cString & Clip(int pos, int size = -1 /*end of string*/ ){
-    if( size < 0 ) size = GetSize()-pos;
-    return InsertStr(0, NULL, pos, size); }
-  cString & ClipFront(int size){  // Clip off first 'clip_size' chars
-    return InsertStr(0, NULL, 0, size); }
-  cString & ClipEnd(int size){    // Clip off last 'clip_size' chars
-    return InsertStr(0, NULL, GetSize()-size, size); }
-  
-  /**
-   * Find and replace a substring in the string with a different substring.
-   * If the substring is not found, the string object is not changed.
-   *
-   * @return The position at which the substring was found, or -1 if it wasn't found.
-   * @param old_string The substring that is going to be replaced.
-   * @param new_string The replacement.
-   * @param pos The position at which the search should start.
-   **/
-  int Replace(const cString & old_st, const cString & new_st, int pos=0);
-
-  cString Pop(const char delim);  // Remove and return up to delim char
-  
-  /**
-   * Remove the first word.
-   *
-   * @return The removed word.
-   **/
-  cString PopWord();
-  
-  /**
-   * Remove the first line.
-   *
-   * @return The removed line.
-   **/
-  cString PopLine(){ return Pop('\n'); } 
-  
-  /**
-   * Remove begining whitespace.
-   *
-   * @return The number of characters removed.
-   **/
-  int LeftJustify(); 
-  
-  /**
-   * Remove ending whitespace.
-   *
-   * @return The number of characters removed.
-   **/
-  int RightJustify(); 
-  
-  /**
-   * Reverse the order of the characters in the string.
-   **/
-  void Reverse(); 
-  
-  /**
-   * Convert the string to lowercase.
-   **/
-  cString & ToLower(); 
-  
-  /** 
-   * Convert the string to uppercase.
-   **/
-  cString & ToUpper();
-  
-  /**
-   * Replace all blocks of whitespace with a single space (' ').
-   *
-   * @see cString::IsWhitespace()
-   **/
-  void CompressWhitespace();  
-  
-  /**
-   * Get rid of all(!) whitespace. 
-   *
-   * @see cString::IsWhitespace()
-   **/
-  void RemoveWhitespace(); 
-
-  /**
-   * Get rid of all occurances of a specific character.
-   *
-   * @see cString::RemoveWhitespace()
-   **/
-  void RemoveChar(char out_char); 
-  
-  /**
-   * Get rid of one character at a specific location
-   **/
-  void RemovePos(int pos);
-
-  // Individal Char Access
-  inline char operator[] (int index) const {
-    return (char)((*value)[index]);
-    // Below should work, but fails in HP CC -- TCC
-    //    return const_cast(const cStringData&, *value)[index];
-  }
-  cCharProxy operator[] (int index) { return cCharProxy(*this,index); }
-
-
-  /**
-   * Convert string to int.
-   *
-   * @return The integer value corresponding to the string.
-   **/
-  int AsInt() const { return atoi(*this); }
-  
-  /**
-   * Convert string to double.
-   *
-   * @return The double value corresponding to the string.
-   **/
-  double AsDouble() const { return atof(*this); }
-
-  // Accessors & Information
-  /**
-   * Tests whether the string is empty.
-   **/
-  bool IsEmpty() const { return GetSize()==0; } // Can just call GetSize
-    
-  /**
-   * Test if the continuation character is at the end of the line
-   * if it is strip off the charecter and return true else return 
-   * false
-   **/
-  bool IsContinueLine();
-
-  /**
-   * Counts whitespace, beginning at the given position.
-   *
-   * @param start The index at which counting should begin.
-   **/
-  int CountWhitespace(int start=0) const; 
-  
-  /**
-   * Counts non-whitespace, beginning at the given position.
-   *
-   * @param start The index at which counting should begin.
-   **/
-  int CountWordsize(int start=0) const;
-    
-  /**
-   * Counts until the first occurrence of '\n', beginning at the 
-   * given position.
-   *
-   * @param start The index at which counting should begin.
-   **/
-  int CountLinesize(int start=0) const; 
-  
-  /**
-   * Counts the number of lines in a string.
-   **/
-  int CountNumLines() const;           
-  
-  /**
-   * Counts the number of separate words in a string.
-   **/
-  int CountNumWords() const;         
-    
-  /**
-   * Get a specific word from a string.
-   *
-   * @param word_id The number of the word, counted from the beginning of 
-   * the string, starting with 0.
-   **/
-  cString GetWord(int word_id=0) const;
-    
-  /**
-   * Get the next word after the specified position. Any leading whitespace 
-   * is removed.
-   *
-   * @param start The position at which the function should start 
-   * searching for a word.
-   **/
-  cString GetWordAt(int start=0) const; 
-
-  /**
-   * Test if a character is whitespace. Currently, as whitespace count
-   * ' ', '\r', '\t', '\n'.
-   *
-   * @param pos The position of the character to test.
-   **/
-  bool IsWhitespace(int pos) const {
-    return ( (*this)[pos] == ' '  || (*this)[pos] == '\t' ||
-	     (*this)[pos] == '\r' || (*this)[pos] == '\n' );
-  }
-  
-  /**
-   * Test if a character is a capital letter.
-   *
-   * @param pos The position of the character to test.
-   **/
-  bool IsUpperLetter(int pos) const {
-    return ((*this)[pos] >= 'A' && (*this)[pos] <= 'Z');
-  }
-  
-  /**
-   * Test if a character is not a capital letter.
-   *
-   * @param pos The position of the character to test.
-   **/
-  bool IsLowerLetter(int pos) const {
-    return ((*this)[pos] >= 'a' && (*this)[pos] <= 'z');
-  }
-  
-  /**
-   * Test if a character is a letter.
-   *
-   * @param pos The position of the character to test.
-   **/
-  bool IsLetter(int pos) const {
-    return IsUpperLetter(pos) || IsLowerLetter(pos);
-  }
-  
-  /**
-   * Test if a character is a number (this includes expressions
-   * such as -3.4e5).
-   *
-   * @param pos The position of the character to test.
-   **/
-  bool IsNumber(int pos) const {
-    return ( ( (*this)[pos] >= '0' && (*this)[pos] <= '9' ) ||
-	     (*this)[pos] == '-' || (*this)[pos] == '+' ||
-	     (*this)[pos] == '.' || (*this)[pos] == 'e' ||
-	     (*this)[pos] == 'E' );
-  }
-  
-  /**
-   * Test if a character is a numeral (0, 1, ..., 9).
-   *
-   * @param pos The position of the character to test.
-   **/
-  bool IsNumeric(int pos) const {
-    return ((*this)[pos] >= '0' && (*this)[pos] <= '9');
-  }
-  
-  /**
-   * Test if a character is either a numeral or a letter.
-   *
-   * @param pos The position of the character to test.
-   **/
-  bool IsAlphaNumeric(int pos) const {
-    return IsLetter(pos) || IsNumber(pos);
-  }
-  
-  /**
-   * Test whether the complete string consits only of whitespace.
-   **/
-  bool IsWhitespace() const;
-  
-  /**
-   * Test whether the complete string consits only of uppercase letters.
-   **/
-  bool IsUpperLetter() const;
-  
-  /**
-   * Test whether the complete string consits only of lowercase letters.
-   **/
-  bool IsLowerLetter() const;
-  
-  /**
-   * Test whether the complete string consits only of letters.
-   **/
-  bool IsLetter() const;
-  
-  /**
-   * Test whether the complete string can be seen as a number.
-   **/
-  bool IsNumber() const;
-  
-  /**
-   * Test whether the complete string consits only of numerals.
-   **/
-  bool IsNumeric() const;
-  
-  /**
-   * Test whether the complete string consits only of letters or numerals.
-   **/
-  bool IsAlphaNumeric() const;
-  
-  /**
-   * Search for a single character.
-   *
-   * @return The first occurence after pos, or -1 if not found
-   **/
-  int Find(char in_char, int pos=0) const;
-  
-  /**
-   * Search for a substring.
-   *
-   * @return The first occurence after pos, or -1 if not found
-   **/
-  int Find(const char * in, int pos=0) const{
-    return FindStr(in, strlen(in), pos); }
-  
-  /**
-   * Search for a substring.
-   *
-   * @return The first occurence after pos, or -1 if not found
-   **/
-  int Find(const cString & in, int pos=0) const{
-    return FindStr(in, in.GetSize(), pos); }
-  
-  /**
-   * Search for a word.
-   *
-   * @return The first occurence after pos, or -1 if not found
-   **/
-  int FindWord(const cString & in, int pos=0) const;
-  
-  
-  /**
-   * Cut out a substring.
-   *
-   * @return The substring.
-   * @param start The beginning of the substring in the string.
-   * @param size The number of characters in the substring.
-   **/
-  cString Substring(int start, int size) const ;
-  
-  bool IsSubstring(const cString & in_string, int start) const;
-  
-  
-  // {{{ -- INTERNALS -------------------------------------------------------
-protected:
-  // -- Internal Functions --
-
-  void CopyString(const cString & in) {
-    if (in.value->AtMaxRefs() == true) {
-      cStringData * old_data = in.value;
-      old_data->RemoveRef();  // remove our reference count
-      // Copy the _value_ of the old reference. (we need to const-cast here...)
-      ( (cString &) in ).value = new cStringData(*old_data);
-    }
-    value = in.value->NewRef();
-  }
-
-  void TakeValue(cStringData * new_ref){     // If you made new_value!
-    if( value->RemoveRef() == 0 ) delete value;
-    value = new_ref;
-  }
-
-  // Methods that take input string size (unsafe to call from outside)
-  cString & AppendStr(const int in_size, const char * in);  // Optimized
-  cString & InsertStr(const int in_size, const char * in,
-		      int pos, int excise=0);
-  int FindStr(const char * in_string, const int in_size, int pos) const;
-
-  // -- Internal Data --
-protected:
-  cStringData * value;
-
-// }}} End Internals
-
-};
-
-
-// {{{ ** External cString Functions **
-
-// iostream input
-std::istream & operator >> (std::istream & in, cString & string);
-std::ostream & operator << (std::ostream & out, const cString & string);
-
-// }}}
-
-// -- INLINE INCLUDES --
-
-cString::cCharProxy & cString::cCharProxy::operator= (char c){  // lvalue
-  string.CopyOnWrite();
-  (*(string.value))[index] = c;
-  return *this;
-}
-
-cString::cCharProxy & cString::cCharProxy::operator+= (char c){  // lvalue
-  string.CopyOnWrite();
-  (*(string.value))[index] += c;
-  return *this;
-}
-
-cString::cCharProxy & cString::cCharProxy::operator-= (char c){  // lvalue
-  string.CopyOnWrite();
-  (*(string.value))[index] -= c;
-  return *this;
-}
-
-cString::cCharProxy & cString::cCharProxy::operator++ (){  // lvalue (prefix)
-  string.CopyOnWrite();
-  ++(*(string.value))[index];
-  return *this;
-}
-
-char cString::cCharProxy::operator++ (int dummy){  // lvalue (postfix)
-  (void)dummy;
-  char rv = (*(string.value))[index];
-  string.CopyOnWrite();
-  ++(*(string.value))[index];
-  return rv;
-}
-
-cString::cCharProxy & cString::cCharProxy::operator-- (){  // lvalue (prefix)
-  string.CopyOnWrite();
-  --(*(string.value))[index];
-  return *this;
-}
-
-char cString::cCharProxy::operator-- (int dummy){  // lvalue (postfix)
-  (void)dummy;
-  char rv = (*(string.value))[index];
-  string.CopyOnWrite();
-  --(*(string.value))[index];
-  return rv;
-}
-
-cString::cCharProxy::operator char () const {  // rvalue
-  return (char)((*(string.value))[index]);
-  // Below should work, but fails in HP CC -- TCC
-  //   return const_cast(const cStringData&, *(string.value))[index];
-}
-
-#endif

Deleted: trunk/source/tools/string_iterator.cc
===================================================================
--- trunk/source/tools/string_iterator.cc	2005-10-07 01:02:35 UTC (rev 337)
+++ trunk/source/tools/string_iterator.cc	2005-10-08 02:02:38 UTC (rev 338)
@@ -1,25 +0,0 @@
-//////////////////////////////////////////////////////////////////////////////
-// Copyright (C) 1993 - 2003 California Institute of Technology             //
-//                                                                          //
-// Read the COPYING and README files, or contact 'avida at alife.org',         //
-// before continuing.  SOME RESTRICTIONS MAY APPLY TO USE OF THIS FILE.     //
-//////////////////////////////////////////////////////////////////////////////
-
-#ifndef STRING_ITERATOR_HH
-#include "string_iterator.hh"
-#endif
-
-#ifndef STRING_HH
-#include "string.hh"
-#endif
-#ifndef STRING_LIST_HH
-#include "string_list.hh"
-#endif
-
-const cString cStringIterator::null_str("");
-
-cStringIterator::cStringIterator(const cStringList & in_list)
-  : list_it(in_list.GetList())
-{
-  Reset();
-}

Deleted: trunk/source/tools/string_iterator.hh
===================================================================
--- trunk/source/tools/string_iterator.hh	2005-10-07 01:02:35 UTC (rev 337)
+++ trunk/source/tools/string_iterator.hh	2005-10-08 02:02:38 UTC (rev 338)
@@ -1,40 +0,0 @@
-//////////////////////////////////////////////////////////////////////////////
-// Copyright (C) 1993 - 2003 California Institute of Technology             //
-//                                                                          //
-// Read the COPYING and README files, or contact 'avida at alife.org',         //
-// before continuing.  SOME RESTRICTIONS MAY APPLY TO USE OF THIS FILE.     //
-//////////////////////////////////////////////////////////////////////////////
-
-#ifndef STRING_ITERATOR_HH
-#define STRING_ITERATOR_HH
-
-#ifndef STRING_HH
-#include "string.hh"
-#endif
-#ifndef TLIST_HH
-#include "tList.hh"
-#endif
-
-class cString; // aggregate
-class cStringList;
-template <class T> class tConstListIterator; // aggregate
-
-class cStringIterator {
-private:
-  tConstListIterator<cString> list_it;
-  static const cString null_str;
-public:
-  cStringIterator(const cStringList & in_list);
-
-  void Reset() { list_it.Reset(); }
-  const cString & Get() {
-    if (list_it.Get() == NULL) return null_str;
-    return *(list_it.Get());
-  }
-  const cString & Next() { list_it.Next(); return Get(); }
-  const cString & Prev() { list_it.Prev(); return Get(); }
-  bool AtRoot() const { return list_it.AtRoot(); }
-  bool AtEnd() const { return list_it.AtEnd(); }
-};
-
-#endif

Deleted: trunk/source/tools/string_list.cc
===================================================================
--- trunk/source/tools/string_list.cc	2005-10-07 01:02:35 UTC (rev 337)
+++ trunk/source/tools/string_list.cc	2005-10-08 02:02:38 UTC (rev 338)
@@ -1,75 +0,0 @@
-//////////////////////////////////////////////////////////////////////////////
-// Copyright (C) 1993 - 2003 California Institute of Technology             //
-//                                                                          //
-// Read the COPYING and README files, or contact 'avida at alife.org',         //
-// before continuing.  SOME RESTRICTIONS MAY APPLY TO USE OF THIS FILE.     //
-//////////////////////////////////////////////////////////////////////////////
-
-#include "functions.h"
-#ifndef STRING_ITERATOR_HH
-#include "string_iterator.hh"
-#endif
-#ifndef STRING_LIST_HH
-#include "string_list.hh"
-#endif
-
-
-using namespace std;
-
-
-
-cStringList::cStringList(const cString & _list, char seperator)
-{
-  Load(_list, seperator);
-}
-
-cStringList::cStringList(const cStringList & _list)
-{
-  tConstListIterator<cString> list_it(_list.string_list);
-  while (list_it.Next() != NULL) {
-    string_list.PushRear(new cString( *(list_it.Get()) ));
-  }
-}
-
-cStringList::~cStringList()
-{
-  while (string_list.GetSize() > 0) delete string_list.Pop();
-}
-
-
-cStringList & cStringList::operator=(const cStringList & _list)
-{
-  // If this list already as anything in it, make sure to delete it.
-  Clear();
-
-  // Now add the new list into this one.
-  tConstListIterator<cString> list_it(_list.string_list);
-  while (list_it.Next() != NULL) {
-    string_list.PushRear(new cString( *(list_it.Get()) ));
-  }
-  return *this;
-}
-
-bool cStringList::HasString(const cString & test_string) const
-{
-  tConstListIterator<cString> string_it(string_list);
-  const cString * cur_string = NULL;
-  while ((cur_string = string_it.Next()) != NULL) {
-    if (test_string == *cur_string) {
-      return true;
-    }
-  }
-  return false;
-}
-
-cString cStringList::PopString(const cString & test_string)
-{
-  tListIterator<cString> string_it(string_list);
-  const cString * cur_string = NULL;
-  while ((cur_string = string_it.Next()) != NULL) {
-    if (test_string == *cur_string) {
-      return ReturnString(string_list.Remove(string_it));
-    }
-  }
-  return "";
-}

Deleted: trunk/source/tools/string_list.hh
===================================================================
--- trunk/source/tools/string_list.hh	2005-10-07 01:02:35 UTC (rev 337)
+++ trunk/source/tools/string_list.hh	2005-10-08 02:02:38 UTC (rev 338)
@@ -1,58 +0,0 @@
-//////////////////////////////////////////////////////////////////////////////
-// Copyright (C) 1993 - 2003 California Institute of Technology             //
-//                                                                          //
-// Read the COPYING and README files, or contact 'avida at alife.org',         //
-// before continuing.  SOME RESTRICTIONS MAY APPLY TO USE OF THIS FILE.     //
-//////////////////////////////////////////////////////////////////////////////
-
-#ifndef STRING_LIST_HH
-#define STRING_LIST_HH
-
-#ifndef STRING_HH
-#include "string.hh"
-#endif
-#ifndef TLIST_HH
-#include "tList.hh"
-#endif
-
-class cString; // aggregate
-template <class T> class tList; // aggregate
-
-class cStringList {
-private:
-  tList<cString> string_list;
-
-  inline cString ReturnString(cString * out_string) {
-    cString tmp_string(*out_string);
-    delete out_string;
-    return tmp_string;
-  }
-public:
-  cStringList() { ; }
-  cStringList(const cString & _list, char seperator=' ');
-  cStringList(const cStringList & _list);
-  ~cStringList();
-
-  cStringList & operator=(const cStringList & _list);
-
-  int GetSize() const { return string_list.GetSize(); }
-  cString GetLine(int line_num) const { return *(string_list.GetPos(line_num)); }
-  const tList<cString> & GetList() const { return string_list; }
-
-  bool HasString(const cString & test_string) const;
-  cString PopString(const cString & test_string);
-
-  void Push(const cString & _in) { string_list.Push(new cString(_in));}
-  void PushRear(const cString & _in) { string_list.PushRear(new cString(_in));}
-  cString Pop() { return ReturnString(string_list.Pop()); }
-  cString PopRear() { return ReturnString(string_list.PopRear()); }
-
-  void Load(cString _list, char seperator=' ') {
-    while (_list.GetSize() > 0) PushRear(_list.Pop(seperator));
-  }
-  void Clear() {
-    while (string_list.GetSize() > 0) delete string_list.Pop(); 
-  }
-};
-
-#endif

Deleted: trunk/source/tools/string_util.cc
===================================================================
--- trunk/source/tools/string_util.cc	2005-10-07 01:02:35 UTC (rev 337)
+++ trunk/source/tools/string_util.cc	2005-10-08 02:02:38 UTC (rev 338)
@@ -1,290 +0,0 @@
-//////////////////////////////////////////////////////////////////////////////
-// Copyright (C) 1993 - 2001 California Institute of Technology             //
-//                                                                          //
-// Read the COPYING and README files, or contact 'avida at alife.org',         //
-// before continuing.  SOME RESTRICTIONS MAY APPLY TO USE OF THIS FILE.     //
-//////////////////////////////////////////////////////////////////////////////
-
-#ifndef STRING_UTIL_HH
-#include "string_util.hh"
-#endif
-
-
-#include "functions.h"
-#include "tMatrix.hh"
-
-extern "C"{
-#include <stdio.h>
-#include <stdarg.h>
-}
-
-
-using namespace std;
-
-
-cString cStringUtil::Stringf(const char * fmt, ...) {
-  va_list argp;
-  char buf[MAX_STRING_LENGTH];
-
-  va_start(argp, fmt);
-  vsprintf(buf, fmt, argp);
-  va_end(argp);
-
-  return cString(buf);
-}
-
-
-cString cStringUtil::ToRomanNumeral(const int in_value) {
-  cString ret_string;
-  if (in_value < 0) {
-    ret_string = "-";
-    ret_string += ToRomanNumeral(-in_value);
-  } else if (in_value > 3999) {
-    // Out of bounds; return a blank;
-  } else if (in_value >= 1000) {
-    ret_string = "M";
-    ret_string += ToRomanNumeral(in_value - 1000);
-  } else if (in_value >= 900) {
-    ret_string = "CM";
-    ret_string += ToRomanNumeral(in_value - 900);
-  } else if (in_value >= 500) {
-    ret_string = "D";
-    ret_string += ToRomanNumeral(in_value - 500);
-  } else if (in_value >= 400) {
-    ret_string = "CD";
-    ret_string += ToRomanNumeral(in_value - 400);
-  } else if (in_value >= 100) {
-    ret_string = "C";
-    ret_string += ToRomanNumeral(in_value - 100);
-  } else if (in_value >= 90) {
-    ret_string = "XC";
-    ret_string += ToRomanNumeral(in_value - 90);
-  } else if (in_value >= 50) {
-    ret_string = "L";
-    ret_string += ToRomanNumeral(in_value - 50);
-  } else if (in_value >= 40) {
-    ret_string = "XL";
-    ret_string += ToRomanNumeral(in_value - 40);
-  } else if (in_value >= 10) {
-    ret_string = "X";
-    ret_string += ToRomanNumeral(in_value - 10);
-  } else if (in_value == 9) {
-    ret_string = "IX";
-  } else if (in_value >= 5) {
-    ret_string = "V";
-    ret_string += ToRomanNumeral(in_value - 5);
-  } else if (in_value == 4) {
-    ret_string = "IV";
-  } else if (in_value > 0) {
-    ret_string = "I";
-    ret_string += ToRomanNumeral(in_value - 1);
-  }
-  // else we already have it exactly and don't need to return anything.
-  return ret_string;
-}
-
-
-int cStringUtil::StrLength(const char * in){
-  // if 'in'==NULL return 0;
-  int size = 0;
-  if( in != NULL ){
-    while( in[size]!='\0' )  ++size; // Count chars in _in
-  }
-  return size;
-}
-
-
-int cStringUtil::Distance(const cString & string1, const cString & string2,
-			  int offset) 
-{
-  if (offset < 0) return cStringUtil::Distance(string2, string1, -offset);
-
-  const int size1 = string1.GetSize();
-  const int size2 = string2.GetSize();
-
-  // Calculate by how much the strings overlap.
-  int overlap = Min( size1 - offset,  size2 );
-
-  // Initialize the distance to that part of the strings which do not
-  // overlap.
-  int num_diffs = size1 + size2 - 2 * overlap;
-
-  // Step through the overlapped section and add on any additional differences.
-  for (int i = 0; i < overlap; i++) {
-    if (string1[i + offset] != string2[i]) num_diffs++;
-  }
-
-  return num_diffs;
-}
-
-
-int cStringUtil::EditDistance(const cString & string1, const cString & string2)
-{
-  const int size1 = string1.GetSize();
-  const int size2 = string2.GetSize();
-
-  if (size1 == 0) return size2;
-  if (size2 == 0) return size1;
-
-  int * cur_row  = new int[size1];  // The row we are calculating
-  int * prev_row = new int[size1];  // The last row we calculated
-
-  // Initialize the previous row to record the differece from nothing.
-  for (int i = 0; i < size1; i++) prev_row[i] = i + 1;
-
-  // Loop through all of the other rows
-  for (int i = 0; i < size2; i++) {
-    // Initialize the first entry in the current row.
-    if (string1[0] == string2[i]) cur_row[0] = i;
-    else cur_row[0] = (i < prev_row[0]) ? (i+1) : (prev_row[0] + 1);
-
-    // Move down the cur_row and fill it in.
-    for (int j = 1; j < size1; j++) {
-      // If the values are equal, keep the value in the upper left.
-      if (string1[j] == string2[i]) {
-	cur_row[j] = prev_row[j-1];
-      }
-
-      // Otherwise, set the current position the the minimal of the three
-      // numbers to the upper right in the chart plus one.
-      else {
-	cur_row[j] =
-	  (prev_row[j] < prev_row[j-1]) ? prev_row[j] : prev_row[j-1];
-	if (cur_row[j-1] < cur_row[j]) cur_row[j] = cur_row[j-1];
-	cur_row[j]++;
-      }
-    }
-
-    // Swap cur_row and prev_row. (we only really need to move the cur row
-    // over to prev, but this saves us from having to keep re-allocating
-    // new rows.  We recycle!
-    int * temp_row = cur_row;
-    cur_row = prev_row;
-    prev_row = temp_row;
-  }
-
-  // Now that we are done, return the bottom-right corner of the chart.
-
-  const int value = prev_row[size1 - 1];
-
-  delete [] cur_row;
-  delete [] prev_row;
-
-  return value;
-}
-
-
-int cStringUtil::EditDistance(const cString & string1, const cString & string2,
-			      cString & info, const char gap)
-{
-  const int size1 = string1.GetSize();
-  const int size2 = string2.GetSize();
- 
-  if (!size1) return size2;
-  if (!size2) return size1;
-
-  tMatrix<double> dist_matrix(size2+1, size1+1);
-
-  // Keep track of changes in a mut_matrix.
-  //  N=None, M=Mutations, I=Insertion, D=Deletion
-  tMatrix<char> mut_matrix(size2+1, size1+1);
-
-  // Initialize the first row and col to record the differece from nothing.
-  for (int i = 0; i < size1+1; i++) {
-    dist_matrix(0,i) = (double) i;
-    mut_matrix(0,i) = 'I';
-  }
-  for (int i = 0; i < size2+1; i++) {
-    dist_matrix(i,0) = (double) i;
-    mut_matrix(i,0) = 'D';
-  }
-  mut_matrix(0,0) = 'N';
-
-  for (int i = 0; i < size2; i++) {
-    // Move down the cur_row and fill it out.
-    for (int j = 0; j < size1; j++) {
-      // If the values are equal, keep the value in the upper left.
-      if (string1[j] == string2[i]) {
-	dist_matrix(i+1,j+1) = dist_matrix(i,j);
-	mut_matrix(i+1,j+1) = 'N';
-	continue; // Move on to next entry...
-      }
-
-      // Otherwise, set the current position the the minimal of the three
-      // numbers above (insertion), to the left (deletion), or upper left
-      // (mutation) in the chart, plus one.
-      double mut_dist = dist_matrix(i,j) + 1;
-      if ((string1[j] == gap) || (string2[i] == gap)) mut_dist -= 0.0001;
-      const double ins_dist = dist_matrix(i+1,j) + (string1[j] != gap);
-      const double del_dist = dist_matrix(i,j+1) + (string2[i] != gap);
-
-      if (mut_dist < ins_dist && mut_dist < del_dist) {  // Mutation!
-	dist_matrix(i+1,j+1) = mut_dist;
-	mut_matrix(i+1,j+1) = 'M';
-      } else if (ins_dist < del_dist) {                  // Insertion!
-	dist_matrix(i+1,j+1) = ins_dist;
-	mut_matrix(i+1,j+1) = 'I';
-      } else {                                           // Deletion!
-	dist_matrix(i+1,j+1) = del_dist;
-	mut_matrix(i+1,j+1) = 'D';
-      }
-    }
-  }
-
-  // Construct the list of changes
-  int pos1 = size1;
-  int pos2 = size2;
-  info = "";
-
-  cString mut_string;
-  while (pos1 > 0 || pos2 > 0) {
-    if (mut_matrix(pos2, pos1) == 'N') {     
-      pos1--; pos2--;
-      continue;
-    }
-
-    // There is a mutation here; determine the type...
-    const char old_char = (pos2 > 0) ? string2[pos2-1] : '\0';
-    const char new_char = (pos1 > 0) ? string1[pos1-1] : '\0';
-
-    if (mut_matrix(pos2, pos1) == 'M') {
-      mut_string.Set("M%d%c%c", pos2-1, old_char, new_char);
-      pos1--; pos2--;
-    }
-    else if (mut_matrix(pos2, pos1) == 'D') {
-      mut_string.Set("D%d%c", pos2-1, old_char);
-      pos2--;
-    }
-    else { // if (mut_matrix(pos2, pos1) == 'I') {
-      mut_string.Set("I%d%c", pos1-1, new_char);
-      pos1--;
-    }
-
-    if (info.GetSize() > 0) mut_string += ",";
-    info.Insert(mut_string);
-  } 
-
-  // Now that we are done, return the bottom-right corner of the chart.
-  return (int) dist_matrix(size2, size1);
-}
-
-const cString & cStringUtil::Convert(const cString & in_string,
-				     const cString & out_string)
-{
-  return in_string;
-}
-
-bool cStringUtil::Convert(const cString & in_string, bool type_bool)
-{
-  return (in_string.AsInt() != 0);
-}
-
-int cStringUtil::Convert(const cString & in_string, int type_int)
-{
-  return in_string.AsInt();
-}
-
-double cStringUtil::Convert(const cString & in_string, double type_double)
-{
-  return in_string.AsDouble();
-}

Deleted: trunk/source/tools/string_util.hh
===================================================================
--- trunk/source/tools/string_util.hh	2005-10-07 01:02:35 UTC (rev 337)
+++ trunk/source/tools/string_util.hh	2005-10-08 02:02:38 UTC (rev 338)
@@ -1,57 +0,0 @@
-//////////////////////////////////////////////////////////////////////////////
-// Copyright (C) 1993 - 2003 California Institute of Technology             //
-//                                                                          //
-// Read the COPYING and README files, or contact 'avida at alife.org',         //
-// before continuing.  SOME RESTRICTIONS MAY APPLY TO USE OF THIS FILE.     //
-//////////////////////////////////////////////////////////////////////////////
-
-#ifndef STRING_UTIL_HH
-#define STRING_UTIL_HH
-
-#ifndef STRING_HH
-#include "string.hh"
-#endif
-
-class cString; // aggregate
-
-struct cStringUtil {
-  static cString Stringf(const char * fmt, ...);
-  static cString ToRomanNumeral(const int in_value);
-  static int StrLength(const char * _in);
-
-  /**
-   * Calculate the Hamming distance between two strings.
-   *
-   * @return The Hamming distance.
-   * @param string1 the first string to compare.
-   * @param string2 the second string to compare.
-   * @param offset This parameter determines how many characters the second
-   * string should be shifted wrt. the first before the comparison.
-   **/
-  static int Distance(const cString & string1, const cString & string2,
-	       int offset=0);
-  
-  /**
-   * Calculate the edit distance between two strings.
-   *
-   * @return The Edit (Levenstein) distance.
-   * @param string1 the first string to compare.
-   * @param string2 the second string to compare.
-   * @param description The string to write out the differences
-   **/
-  static int EditDistance(const cString & string1, const cString & string2);
-  static int EditDistance(const cString & string1, const cString & string2,
-			  cString & info, const char gap=' '); 
-
-  /**
-   * Various, overloaded conversion functions for use in templates.  Note
-   * that in all cases, the second argument is simply to set the return type.
-   **/
-  static const cString & Convert(const cString & in_string,
-				 const cString & out_string);
-  static bool   Convert(const cString & in_string, bool   type_bool);
-  static int    Convert(const cString & in_string, int    type_int);
-  static double Convert(const cString & in_string, double type_double);
-};
-
-#endif

Modified: trunk/source/tools/tBuffer.hh
===================================================================
--- trunk/source/tools/tBuffer.hh	2005-10-07 01:02:35 UTC (rev 337)
+++ trunk/source/tools/tBuffer.hh	2005-10-08 02:02:38 UTC (rev 338)
@@ -12,7 +12,7 @@
 #include <iostream>
 
 #ifndef STRING_HH
-#include "string.hh"
+#include "cString.h"
 #endif
 #ifndef TARRAY_HH
 #include "tArray.hh"

Modified: trunk/source/tools/tDataEntry.hh
===================================================================
--- trunk/source/tools/tDataEntry.hh	2005-10-07 01:02:35 UTC (rev 337)
+++ trunk/source/tools/tDataEntry.hh	2005-10-08 02:02:38 UTC (rev 338)
@@ -11,10 +11,10 @@
 #include <iostream>
 
 #ifndef STRING_HH
-#include "string.hh"
+#include "cString.h"
 #endif
 #ifndef STRING_UTIL_HH
-#include "string_util.hh"
+#include "cStringUtil.h"
 #endif
 #ifndef TDATAENTRYBASE_HH
 #include "tDataEntryBase.hh"

Modified: trunk/source/tools/tDataEntryCommand.hh
===================================================================
--- trunk/source/tools/tDataEntryCommand.hh	2005-10-07 01:02:35 UTC (rev 337)
+++ trunk/source/tools/tDataEntryCommand.hh	2005-10-08 02:02:38 UTC (rev 338)
@@ -11,7 +11,7 @@
 #include <iostream>
 
 #ifndef STRING_LIST_HH
-#include "string_list.hh"
+#include "cStringList.h"
 #endif
 #ifndef TDATAENTRYBASE_HH
 #include "tDataEntryBase.hh"

Modified: trunk/source/tools/tDictionary.hh
===================================================================
--- trunk/source/tools/tDictionary.hh	2005-10-07 01:02:35 UTC (rev 337)
+++ trunk/source/tools/tDictionary.hh	2005-10-08 02:02:38 UTC (rev 338)
@@ -46,10 +46,10 @@
 #define TDICTIONARY_HH
 
 #ifndef STRING_HH
-#include "string.hh"
+#include "cString.h"
 #endif
 #ifndef STRING_UTIL_HH
-#include "string_util.hh"
+#include "cStringUtil.h"
 #endif
 #ifndef TARRAY_HH
 #include "tArray.hh"

Modified: trunk/source/tools/tHashTable.hh
===================================================================
--- trunk/source/tools/tHashTable.hh	2005-10-07 01:02:35 UTC (rev 337)
+++ trunk/source/tools/tHashTable.hh	2005-10-08 02:02:38 UTC (rev 338)
@@ -48,10 +48,10 @@
 #define THASH_TABLE_HH
 
 #ifndef STRING_HH
-#include "string.hh"
+#include "cString.h"
 #endif
 #ifndef STRING_UTIL_HH
-#include "string_util.hh"
+#include "cStringUtil.h"
 #endif
 #ifndef TARRAY_HH
 #include "tArray.hh"

Modified: trunk/source/tools/tools.cc
===================================================================
--- trunk/source/tools/tools.cc	2005-10-07 01:02:35 UTC (rev 337)
+++ trunk/source/tools/tools.cc	2005-10-08 02:02:38 UTC (rev 338)
@@ -15,7 +15,7 @@
 #include <stdio.h>
 
 #ifndef STRING_HH
-#include "string.hh"
+#include "cString.h"
 #endif
 
 #ifdef WIN32

Modified: trunk/source/tools/tools.hh
===================================================================
--- trunk/source/tools/tools.hh	2005-10-07 01:02:35 UTC (rev 337)
+++ trunk/source/tools/tools.hh	2005-10-08 02:02:38 UTC (rev 338)
@@ -11,7 +11,7 @@
 #define TOOLS_HH
 
 #ifndef RANDOM_HH
-#include "random.hh"
+#include "cRandom.h"
 #endif
 
 extern cRandom g_random;

Modified: trunk/source/tools/tools.pri
===================================================================
--- trunk/source/tools/tools.pri	2005-10-07 01:02:35 UTC (rev 337)
+++ trunk/source/tools/tools.pri	2005-10-08 02:02:38 UTC (rev 338)
@@ -1,6 +1,6 @@
 
 tools {
-  HEADERS += $$TOOLS_HH/indexed_block_struct.hh \
+  HEADERS += $$TOOLS_HH/cIndexedBlockStruct.h \
              $$TOOLS_HH/cBlockStruct.h \
              $$TOOLS_HH/cDataEntry.h \
              $$TOOLS_HH/cDataManager_Base.h \
@@ -8,13 +8,13 @@
              $$TOOLS_HH/cFile.h \
              $$TOOLS_HH/cFixedBlock.h \
              $$TOOLS_HH/functions.h \
-             $$TOOLS_HH/merit.hh \
-             $$TOOLS_HH/message_display.hh \
-             $$TOOLS_HH/message_display_hdrs.hh \
-             $$TOOLS_HH/random.hh \
-             $$TOOLS_HH/string.hh \
-             $$TOOLS_HH/string_list.hh \
-             $$TOOLS_HH/string_util.hh \
+             $$TOOLS_HH/cMerit.h \
+             $$TOOLS_HH/cMessageDisplay.h \
+             $$TOOLS_HH/cMessageDisplay_headers.h \
+             $$TOOLS_HH/cRandom.h \
+             $$TOOLS_HH/cString.h \
+             $$TOOLS_HH/cStringList.h \
+             $$TOOLS_HH/cStringUtil.h \
              $$TOOLS_HH/tArray.hh \
              $$TOOLS_HH/tBuffer.hh \
              $$TOOLS_HH/tDictionary.hh \
@@ -39,27 +39,27 @@
              $$TOOLS_CC/cFile.cc \
              $$TOOLS_CC/cFixedBlock.cc \
              $$TOOLS_CC/cGenesis.cc \
-             $$TOOLS_CC/help_alias.cc \
-             $$TOOLS_CC/help_manager.cc \
-             $$TOOLS_CC/help_type.cc \
-             $$TOOLS_CC/histogram.cc \
-             $$TOOLS_CC/indexed_block_struct.cc \
-             $$TOOLS_CC/init_file.cc \
-             $$TOOLS_CC/int_sum.cc \
-             $$TOOLS_CC/integrated_schedule.cc \
-             $$TOOLS_CC/integrated_schedule_node.cc \
-             $$TOOLS_CC/merit.cc \
-             $$TOOLS_CC/message_display.cc \
-             $$TOOLS_CC/prob_schedule.cc \
-             $$TOOLS_CC/random.cc \
-             $$TOOLS_CC/ref_block.cc \
-             $$TOOLS_CC/running_average.cc \
-             $$TOOLS_CC/scaled_block.cc \
-             $$TOOLS_CC/schedule.cc \
-             $$TOOLS_CC/string.cc \
-             $$TOOLS_CC/string_iterator.cc \
-             $$TOOLS_CC/string_list.cc \
-             $$TOOLS_CC/string_util.cc \
+             $$TOOLS_CC/cHelpAlias.cc \
+             $$TOOLS_CC/cHelpManager.cc \
+             $$TOOLS_CC/cHelpType.cc \
+             $$TOOLS_CC/cHistogram.cc \
+             $$TOOLS_CC/cIndexedBlockStruct.cc \
+             $$TOOLS_CC/cInitFile.cc \
+             $$TOOLS_CC/cIntSum.cc \
+             $$TOOLS_CC/cIntegratedSchedule.cc \
+             $$TOOLS_CC/cIntegratedScheduleNode.cc \
+             $$TOOLS_CC/cMerit.cc \
+             $$TOOLS_CC/cMessageDisplay.cc \
+             $$TOOLS_CC/cProbSchedule.cc \
+             $$TOOLS_CC/cRandom.cc \
+             $$TOOLS_CC/cRefBlock.cc \
+             $$TOOLS_CC/cRunningAverage.cc \
+             $$TOOLS_CC/cScaledBlock.cc \
+             $$TOOLS_CC/cSchedule.cc \
+             $$TOOLS_CC/cString.cc \
+             $$TOOLS_CC/cStringIterator.cc \
+             $$TOOLS_CC/cStringList.cc \
+             $$TOOLS_CC/cStringUtil.cc \
              $$TOOLS_CC/tools.cc \
              $$TOOLS_CC/weighted_index.cc
 }

Modified: trunk/source/utils/hist_map/Makefile
===================================================================
--- trunk/source/utils/hist_map/Makefile	2005-10-07 01:02:35 UTC (rev 337)
+++ trunk/source/utils/hist_map/Makefile	2005-10-08 02:02:38 UTC (rev 338)
@@ -28,8 +28,8 @@
 
 ### List Source Files in the Project #########################################
 SRC		= hist_map2.cc			../../tools/cFile.cc  \
-		../../tools/init_file.cc	../../tools/string.cc  \
-		../../tools/string_list.cc  ../../tools/string_iterator.cc  \
+		../../tools/cInitFile.cc	../../tools/cString.cc  \
+		../../tools/cStringList.cc  ../../tools/cStringIterator.cc  \
 
 ### List Object Files (for each source file there is a object file) ###########
 OBJ	 	= $(SRC:.cc=.o)
@@ -72,15 +72,15 @@
 # DO NOT DELETE
 
 hist_map2.o: ../../tools/tMatrix.hh ../../tools/tArray.hh
-hist_map2.o: ../../tools/string.hh ../../tools/cFile.h
-hist_map2.o: ../../tools/init_file.hh ../../tools/string_list.hh
+hist_map2.o: ../../tools/cString.h ../../tools/cFile.h
+hist_map2.o: ../../tools/cInitFile.h ../../tools/cStringList.h
 hist_map2.o: ../../tools/tList.hh
-../../tools/file.o: ../../tools/cFile.h ../../tools/string.hh
-../../tools/file.o: ../../tools/init_file.hh ../../tools/string_list.hh
+../../tools/file.o: ../../tools/cFile.h ../../tools/cString.h
+../../tools/file.o: ../../tools/cInitFile.h ../../tools/cStringList.h
 ../../tools/file.o: ../../tools/tList.hh ../../tools/tArray.hh
-../../tools/file.o: ../../tools/cGenesis.h ../../tools/string_iterator.hh
-../../tools/file.o: ../../tools/tools.hh ../../tools/random.hh
-../../tools/init_file.o: ../../tools/init_file.hh ../../tools/string_list.hh
+../../tools/file.o: ../../tools/cGenesis.h ../../tools/cStringIterator.h
+../../tools/file.o: ../../tools/tools.hh ../../tools/cRandom.h
+../../tools/init_file.o: ../../tools/cInitFile.h ../../tools/cStringList.h
 ../../tools/init_file.o: ../../tools/tList.hh ../../tools/tArray.hh
-../../tools/init_file.o: ../../tools/string_iterator.hh
-../../tools/string.o: ../../tools/string.hh
+../../tools/init_file.o: ../../tools/cStringIterator.h
+../../tools/string.o: ../../tools/cString.h

Modified: trunk/source/utils/hist_map/hist_map.cc
===================================================================
--- trunk/source/utils/hist_map/hist_map.cc	2005-10-07 01:02:35 UTC (rev 337)
+++ trunk/source/utils/hist_map/hist_map.cc	2005-10-08 02:02:38 UTC (rev 338)
@@ -6,7 +6,7 @@
 
 #include "../../tools/tMatrix.hh"
 
-#include "../../tools/string.hh"
+#include "../../tools/cString.h"
 #include "../../tools/cFile.h"
 
 

Modified: trunk/source/utils/hist_map/hist_map2.cc
===================================================================
--- trunk/source/utils/hist_map/hist_map2.cc	2005-10-07 01:02:35 UTC (rev 337)
+++ trunk/source/utils/hist_map/hist_map2.cc	2005-10-08 02:02:38 UTC (rev 338)
@@ -6,9 +6,9 @@
 
 #include "../../tools/tMatrix.hh"
 
-#include "../../tools/string.hh"
+#include "../../tools/cString.h"
 #include "../../tools/cFile.h"
-#include "../../tools/init_file.hh"
+#include "../../tools/cInitFile.h"
 
 
 using namespace std;

Modified: trunk/source/utils/matlabify.cc
===================================================================
--- trunk/source/utils/matlabify.cc	2005-10-07 01:02:35 UTC (rev 337)
+++ trunk/source/utils/matlabify.cc	2005-10-08 02:02:38 UTC (rev 338)
@@ -9,7 +9,7 @@
 #include <iostream>
 using namespace std;
 
-#include "../tools/init_file.hh"
+#include "../tools/cInitFile.h"
 
 int main(int argc, char * argv[])
 {

Modified: trunk/source/utils/task_events/task_event_gen.cc
===================================================================
--- trunk/source/utils/task_events/task_event_gen.cc	2005-10-07 01:02:35 UTC (rev 337)
+++ trunk/source/utils/task_events/task_event_gen.cc	2005-10-08 02:02:38 UTC (rev 338)
@@ -2,10 +2,10 @@
 
 #include "../../tools/tArray.hh"
 #include "../../tools/cFile.h"
-#include "../../tools/random.hh"
-#include "../../tools/string.hh"
-#include "../../tools/init_file.hh"
-#include "../../tools/string_list.hh"
+#include "../../tools/cRandom.h"
+#include "../../tools/cString.h"
+#include "../../tools/cInitFile.h"
+#include "../../tools/cStringList.h"
 
 using namespace std;
 

Modified: trunk/source/utils/task_events/task_event_gen.old.cc
===================================================================
--- trunk/source/utils/task_events/task_event_gen.old.cc	2005-10-07 01:02:35 UTC (rev 337)
+++ trunk/source/utils/task_events/task_event_gen.old.cc	2005-10-08 02:02:38 UTC (rev 338)
@@ -2,10 +2,10 @@
 
 #include "../../tools/tArray.hh"
 #include "../../tools/cFile.h"
-#include "../../tools/random.hh"
-#include "../../tools/string.hh"
-#include "../../tools/init_file.hh"
-#include "../../tools/string_list.hh"
+#include "../../tools/cRandom.h"
+#include "../../tools/cString.h"
+#include "../../tools/cInitFile.h"
+#include "../../tools/cStringList.h"
 
 using namespace std;
 

Modified: trunk/source/viewers/menu.hh
===================================================================
--- trunk/source/viewers/menu.hh	2005-10-07 01:02:35 UTC (rev 337)
+++ trunk/source/viewers/menu.hh	2005-10-08 02:02:38 UTC (rev 338)
@@ -8,7 +8,7 @@
 #ifndef VIEW_MENU_HH
 #define VIEW_MENU_HH
 
-#include "string.hh"
+#include "cString.h"
 
 #include "ncurses.hh"
 #include "ansi.hh"

Modified: trunk/source/viewers/text_screen.hh
===================================================================
--- trunk/source/viewers/text_screen.hh	2005-10-07 01:02:35 UTC (rev 337)
+++ trunk/source/viewers/text_screen.hh	2005-10-08 02:02:38 UTC (rev 338)
@@ -9,7 +9,7 @@
 #define VIEW_TEXT_SCREEN_HH
 
 
-#include "merit.hh"
+#include "cMerit.h"
 #include "cInstSet.h"
 #include "defs.hh"
 

Modified: trunk/source/viewers/zoom_screen.cc
===================================================================
--- trunk/source/viewers/zoom_screen.cc	2005-10-07 01:02:35 UTC (rev 337)
+++ trunk/source/viewers/zoom_screen.cc	2005-10-08 02:02:38 UTC (rev 338)
@@ -18,7 +18,7 @@
 #include "cPopulation.h"
 #include "cPopulationCell.h"
 #ifndef STRING_UTIL_HH
-#include "string_util.hh"
+#include "cStringUtil.h"
 #endif
 #ifndef TASK_ENTRY_HH
 #include "cTaskEntry.h"

Modified: trunk/status.xml
===================================================================
--- trunk/status.xml	2005-10-07 01:02:35 UTC (rev 337)
+++ trunk/status.xml	2005-10-08 02:02:38 UTC (rev 338)
@@ -703,7 +703,7 @@
         the more acurate STERILIZE_*
       </action>
       <action dev="CAO" type="fix" context="bug">
-        Added #include &lt;string.h&gt; in string.hh and debug.hh -- it was crashing on
+        Added #include &lt;string.h&gt; in cString.h and debug.hh -- it was crashing on
         calls to strlen() on some newer compilers.
       </action>
       <action dev="CAO" type="fix" context="bug">




More information about the Avida-cvs mailing list