[Avida-SVN] r1528 - in branches/uml: . Avida.xcodeproj source source/actions source/analyze source/classification source/cpu source/drivers source/main source/platform source/platform/tcmalloc source/targets source/targets/avida source/targets/avida-viewer source/testsuites source/tools source/utils/task_events support support/config

hjg at myxo.css.msu.edu hjg at myxo.css.msu.edu
Fri May 4 13:18:18 PDT 2007


Author: hjg
Date: 2007-05-04 16:18:18 -0400 (Fri, 04 May 2007)
New Revision: 1528

Added:
   branches/uml/source/targets/unit-tests/
Removed:
   branches/uml/source/CMakeLists.txt
   branches/uml/source/actions/CMakeLists.txt
   branches/uml/source/analyze/CMakeLists.txt
   branches/uml/source/classification/CMakeLists.txt
   branches/uml/source/cpu/CMakeLists.txt
   branches/uml/source/drivers/CMakeLists.txt
   branches/uml/source/main/CMakeLists.txt
   branches/uml/source/platform/CMakeLists.txt
   branches/uml/source/platform/tcmalloc/CMakeLists.txt
   branches/uml/source/targets/CMakeLists.txt
   branches/uml/source/targets/avida-viewer/CMakeLists.txt
   branches/uml/source/targets/avida/CMakeLists.txt
   branches/uml/source/third-party/
   branches/uml/source/tools/CMakeLists.txt
   branches/uml/source/tools/tests/
   branches/uml/source/utils/task_events/CMakeLists.txt
   branches/uml/support/CMakeLists.txt
   branches/uml/support/config/CMakeLists.txt
Modified:
   branches/uml/Avida.xcodeproj/project.pbxproj
   branches/uml/CMakeLists.txt
   branches/uml/source/actions/PrintActions.cc
   branches/uml/source/cpu/cHardwareCPU.cc
   branches/uml/source/main/cBirthChamber.cc
   branches/uml/source/main/cDeme.h
   branches/uml/source/main/cOrganism.cc
   branches/uml/source/main/cOrganism.h
   branches/uml/source/main/cPopulation.cc
   branches/uml/source/main/cTaskLib.cc
   branches/uml/source/testsuites/CMakeLists.txt
   branches/uml/source/utils/task_events/task_event_gen.cc
Log:

Finished merge of development branch changes into UML branch. 

Changed the UML model from a portion of cOrganism to its own class/object: cUMLModel. Currently, a cUMLModel comprises a vector of state diagrams (cUMLStateDiagram). In the future, it also will include a class diagram and a set of sequence diagrams. 



Modified: branches/uml/Avida.xcodeproj/project.pbxproj
===================================================================
--- branches/uml/Avida.xcodeproj/project.pbxproj	2007-05-04 19:47:55 UTC (rev 1527)
+++ branches/uml/Avida.xcodeproj/project.pbxproj	2007-05-04 20:18:18 UTC (rev 1528)
@@ -10,6 +10,10 @@
 		1097463F0AE9606E00929ED6 /* cDeme.cc in Sources */ = {isa = PBXBuildFile; fileRef = 1097463D0AE9606E00929ED6 /* cDeme.cc */; };
 		109746410AE9606E00929ED6 /* cDeme.cc in Sources */ = {isa = PBXBuildFile; fileRef = 1097463D0AE9606E00929ED6 /* cDeme.cc */; };
 		109746430AE9606E00929ED6 /* cDeme.cc in Sources */ = {isa = PBXBuildFile; fileRef = 1097463D0AE9606E00929ED6 /* cDeme.cc */; };
+		3EC9C9330BEB95320046545F /* cUMLModel.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 3EC9C9320BEB95320046545F /* cUMLModel.h */; };
+		3EC9C9490BEB96CB0046545F /* cUMLModel.cc in Sources */ = {isa = PBXBuildFile; fileRef = 3EC9C9480BEB96CB0046545F /* cUMLModel.cc */; };
+		3EC9C9700BEB97D20046545F /* cUMLStateDiagram.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 3EC9C96F0BEB97D20046545F /* cUMLStateDiagram.h */; };
+		3EC9C9980BEB99220046545F /* cUMLStateDiagram.cc in Sources */ = {isa = PBXBuildFile; fileRef = 3EC9C9970BEB99220046545F /* cUMLStateDiagram.cc */; };
 		4233358A0BC067E3000DF681 /* cHardwareGX.cc in Sources */ = {isa = PBXBuildFile; fileRef = 423335880BC067E3000DF681 /* cHardwareGX.cc */; };
 		7005A70409BA0FA90007E16E /* cTestCPUInterface.cc in Sources */ = {isa = PBXBuildFile; fileRef = 7005A70209BA0FA90007E16E /* cTestCPUInterface.cc */; };
 		7005A70609BA0FA90007E16E /* cTestCPUInterface.cc in Sources */ = {isa = PBXBuildFile; fileRef = 7005A70209BA0FA90007E16E /* cTestCPUInterface.cc */; };
@@ -97,6 +101,7 @@
 		706C6FFF0B83F265003174C1 /* cInstSet.cc in Sources */ = {isa = PBXBuildFile; fileRef = 706C6FFE0B83F265003174C1 /* cInstSet.cc */; };
 		706C70000B83F265003174C1 /* cInstSet.cc in Sources */ = {isa = PBXBuildFile; fileRef = 706C6FFE0B83F265003174C1 /* cInstSet.cc */; };
 		706C70010B83F265003174C1 /* cInstSet.cc in Sources */ = {isa = PBXBuildFile; fileRef = 706C6FFE0B83F265003174C1 /* cInstSet.cc */; };
+		707045F00BCEA0D9000F9B9A /* cHardwareGX.cc in Sources */ = {isa = PBXBuildFile; fileRef = 423335880BC067E3000DF681 /* cHardwareGX.cc */; };
 		7073165D097C6C8F00815164 /* cParser.cc in Sources */ = {isa = PBXBuildFile; fileRef = 7073165B097C6C8F00815164 /* cParser.cc */; };
 		70731665097C6DF500815164 /* cASLibrary.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70731663097C6DF500815164 /* cASLibrary.cc */; };
 		7073166B097C6E0C00815164 /* cASSymbol.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70731669097C6E0C00815164 /* cASSymbol.cc */; };
@@ -216,6 +221,8 @@
 		70B1A6520B7E237F00067486 /* cHardwareExperimental.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B1A64F0B7E237F00067486 /* cHardwareExperimental.cc */; };
 		70B1A7430B7E3FFD00067486 /* instset-experimental.cfg in CopyFiles */ = {isa = PBXBuildFile; fileRef = 70B1A7420B7E3FFD00067486 /* instset-experimental.cfg */; };
 		70B1A75A0B7E431F00067486 /* experimental.org in CopyFiles */ = {isa = PBXBuildFile; fileRef = 70B1A7590B7E431F00067486 /* experimental.org */; };
+		70B6514F0BEA6FCC002472ED /* main.cc in Sources */ = {isa = PBXBuildFile; fileRef = 701EF27E0BEA5D2300DAE168 /* main.cc */; };
+		70B651B70BEA9AEC002472ED /* unit-tests in CopyFiles */ = {isa = PBXBuildFile; fileRef = 70B6514C0BEA6FAD002472ED /* unit-tests */; };
 		70BCB22E0AB7B23D003FF331 /* cArgContainer.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70BCB21C0AB7ADA6003FF331 /* cArgContainer.cc */; };
 		70BCB2350AB7B26B003FF331 /* cArgContainer.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70BCB21C0AB7ADA6003FF331 /* cArgContainer.cc */; };
 		70C054ED0A4F6FD2002703C1 /* PopulationActions.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70C054C90A4F6E19002703C1 /* PopulationActions.cc */; };
@@ -424,9 +431,21 @@
 				7049F3730A66AD7E00640512 /* default-transsmt.org in CopyFiles */,
 				70B1A7430B7E3FFD00067486 /* instset-experimental.cfg in CopyFiles */,
 				70B1A75A0B7E431F00067486 /* experimental.org in CopyFiles */,
+				3EC9C9330BEB95320046545F /* cUMLModel.h in CopyFiles */,
+				3EC9C9700BEB97D20046545F /* cUMLStateDiagram.h in CopyFiles */,
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 		};
+		70B651B50BEA9AC2002472ED /* CopyFiles */ = {
+			isa = PBXCopyFilesBuildPhase;
+			buildActionMask = 2147483647;
+			dstPath = work;
+			dstSubfolderSpec = 16;
+			files = (
+				70B651B70BEA9AEC002472ED /* unit-tests in CopyFiles */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
 		70DCAD08097AF7CC002F8733 /* CopyFiles */ = {
 			isa = PBXCopyFilesBuildPhase;
 			buildActionMask = 2147483647;
@@ -442,6 +461,10 @@
 /* Begin PBXFileReference section */
 		1097463D0AE9606E00929ED6 /* cDeme.cc */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = cDeme.cc; sourceTree = "<group>"; };
 		1097463E0AE9606E00929ED6 /* cDeme.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = cDeme.h; sourceTree = "<group>"; };
+		3EC9C9320BEB95320046545F /* cUMLModel.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = cUMLModel.h; sourceTree = "<group>"; };
+		3EC9C9480BEB96CB0046545F /* cUMLModel.cc */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = cUMLModel.cc; sourceTree = "<group>"; };
+		3EC9C96F0BEB97D20046545F /* cUMLStateDiagram.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = cUMLStateDiagram.h; sourceTree = "<group>"; };
+		3EC9C9970BEB99220046545F /* cUMLStateDiagram.cc */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = cUMLStateDiagram.cc; sourceTree = "<group>"; };
 		4201F39A0BE187F6006279B9 /* cTopology.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = cTopology.h; sourceTree = "<group>"; };
 		423335880BC067E3000DF681 /* cHardwareGX.cc */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = cHardwareGX.cc; sourceTree = "<group>"; };
 		423335890BC067E3000DF681 /* cHardwareGX.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = cHardwareGX.h; sourceTree = "<group>"; };
@@ -455,8 +478,6 @@
 		7009E0C50B9A2FAC00070F8F /* cRWLock.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = cRWLock.h; sourceTree = "<group>"; };
 		700AE91B09DB65F200A073FD /* cTaskContext.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = cTaskContext.h; sourceTree = "<group>"; };
 		700E11BC0A0815B600B604CD /* cDataEntry.cc */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = cDataEntry.cc; sourceTree = "<group>"; };
-		700E12610A097A0800B604CD /* CMakeLists.txt */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = "<group>"; };
-		700E12630A097A1700B604CD /* CMakeLists.txt */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = "<group>"; };
 		700E28CF0859FFD700CF158A /* tObjectFactory.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = tObjectFactory.h; sourceTree = "<group>"; };
 		700E2B83085DE50C00CF158A /* avida-viewer */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = "avida-viewer"; sourceTree = BUILT_PRODUCTS_DIR; };
 		7013845F09028B3E0087ED2E /* cAvidaConfig.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = cAvidaConfig.h; sourceTree = "<group>"; };
@@ -474,7 +495,7 @@
 		701D9382094CBA69008B845F /* cDriverManager.cc */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = cDriverManager.cc; sourceTree = "<group>"; };
 		701D93E6094CBF71008B845F /* cDefaultAnalyzeDriver.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = cDefaultAnalyzeDriver.h; sourceTree = "<group>"; };
 		701D93E7094CBF71008B845F /* cDefaultAnalyzeDriver.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = cDefaultAnalyzeDriver.cc; sourceTree = "<group>"; };
-		701D941C094CC5F1008B845F /* CMakeLists.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = "<group>"; };
+		701EF27E0BEA5D2300DAE168 /* main.cc */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = main.cc; sourceTree = "<group>"; };
 		7027621909D73E5900741717 /* cOrgSourceMessage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = cOrgSourceMessage.h; sourceTree = "<group>"; };
 		7027621A09D73E7700741717 /* cOrgSinkMessage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = cOrgSinkMessage.h; sourceTree = "<group>"; };
 		702D4EF508DA5328007BA469 /* cEnvironment.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = cEnvironment.h; sourceTree = "<group>"; };
@@ -493,7 +514,6 @@
 		703CA3710A50734500AB4DB4 /* SConscript */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = SConscript; sourceTree = "<group>"; };
 		703CA3720A50735B00AB4DB4 /* SConscript */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = SConscript; sourceTree = "<group>"; };
 		703CA3730A50737700AB4DB4 /* SConscript */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = SConscript; sourceTree = "<group>"; };
-		703CA3740A50739600AB4DB4 /* SConscript */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = SConscript; sourceTree = "<group>"; };
 		703CA3760A5073CD00AB4DB4 /* SConscript */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = SConscript; sourceTree = "<group>"; };
 		703CA3770A50740300AB4DB4 /* SConscript */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = SConscript; sourceTree = "<group>"; };
 		703CA3780A50749F00AB4DB4 /* SConstruct */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = SConstruct; sourceTree = "<group>"; };
@@ -508,7 +528,6 @@
 		70422A23091B141000A5E67F /* cAnalyzeFunction.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = cAnalyzeFunction.h; sourceTree = "<group>"; };
 		70422A24091B141000A5E67F /* cAnalyzeGenotype.cc */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = cAnalyzeGenotype.cc; sourceTree = "<group>"; };
 		70422A25091B141000A5E67F /* cAnalyzeGenotype.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = cAnalyzeGenotype.h; sourceTree = "<group>"; };
-		70422A44091B1B8500A5E67F /* CMakeLists.txt */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = "<group>"; };
 		7049F2D70A66859300640512 /* cHardwareTransSMT.cc */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = cHardwareTransSMT.cc; sourceTree = "<group>"; };
 		7049F2D80A66859300640512 /* cHardwareTransSMT.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = cHardwareTransSMT.h; sourceTree = "<group>"; };
 		7049F3520A66A8F500640512 /* instset-classic.cfg */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = "instset-classic.cfg"; sourceTree = "<group>"; };
@@ -541,7 +560,6 @@
 		7053336C092A3DF4006BD186 /* nInjectGenotype.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = nInjectGenotype.h; sourceTree = "<group>"; };
 		705333E5092A4B7C006BD186 /* cLineage.cc */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = cLineage.cc; sourceTree = "<group>"; };
 		705333E6092A4B7C006BD186 /* cLineage.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = cLineage.h; sourceTree = "<group>"; };
-		7053345E092A4D88006BD186 /* CMakeLists.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = "<group>"; };
 		7054A11E09A7BEFC00038658 /* cThread.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = cThread.h; sourceTree = "<group>"; };
 		7054A11F09A7BEFC00038658 /* cThread.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = cThread.cc; sourceTree = "<group>"; };
 		7054A16E09A8014600038658 /* cAnalyzeJobQueue.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = cAnalyzeJobQueue.h; sourceTree = "<group>"; };
@@ -574,10 +592,8 @@
 		707AEF8C09EA8B2D001AEA89 /* cAnalyzeCommandAction.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = cAnalyzeCommandAction.h; sourceTree = "<group>"; };
 		707AF04409EAB529001AEA89 /* LandscapeActions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LandscapeActions.h; sourceTree = "<group>"; };
 		707AF04509EAB529001AEA89 /* LandscapeActions.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = LandscapeActions.cc; sourceTree = "<group>"; };
-		707AF0F809EACC5E001AEA89 /* CMakeLists.txt */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = "<group>"; };
 		707AF2D309EE8501001AEA89 /* analyze.cfg */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = analyze.cfg; sourceTree = "<group>"; };
 		707AF2D509EE8501001AEA89 /* avida.cfg */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = avida.cfg; sourceTree = "<group>"; };
-		707AF2D609EE8501001AEA89 /* CMakeLists.txt */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = "<group>"; };
 		707AF2D709EE8501001AEA89 /* environment.cfg */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = environment.cfg; sourceTree = "<group>"; };
 		707AF2D809EE8501001AEA89 /* events.cfg */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = events.cfg; sourceTree = "<group>"; };
 		707AF2DE09EE8501001AEA89 /* environment.2paths */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = environment.2paths; sourceTree = "<group>"; };
@@ -795,6 +811,7 @@
 		70B1A7420B7E3FFD00067486 /* instset-experimental.cfg */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = "instset-experimental.cfg"; sourceTree = "<group>"; };
 		70B1A7590B7E431F00067486 /* experimental.org */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = experimental.org; sourceTree = "<group>"; };
 		70B3984E0947B29D0018F09D /* tManagedPointerArray.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = tManagedPointerArray.h; sourceTree = "<group>"; };
+		70B6514C0BEA6FAD002472ED /* unit-tests */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = "unit-tests"; sourceTree = BUILT_PRODUCTS_DIR; };
 		70BCB21B0AB7ADA6003FF331 /* cArgContainer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = cArgContainer.h; sourceTree = "<group>"; };
 		70BCB21C0AB7ADA6003FF331 /* cArgContainer.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = cArgContainer.cc; sourceTree = "<group>"; };
 		70BCB2470AB7B634003FF331 /* cArgSchema.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = cArgSchema.h; sourceTree = "<group>"; };
@@ -848,7 +865,6 @@
 		70DCAC5D097AF730002F8733 /* cEnvironmentScreen.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = cEnvironmentScreen.h; sourceTree = "<group>"; };
 		70DCAC5E097AF730002F8733 /* cHistScreen.cc */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = cHistScreen.cc; sourceTree = "<group>"; };
 		70DCAC5F097AF730002F8733 /* cHistScreen.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = cHistScreen.h; sourceTree = "<group>"; };
-		70DCAC60097AF730002F8733 /* CMakeLists.txt */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = "<group>"; };
 		70DCAC61097AF730002F8733 /* cMapScreen.cc */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = cMapScreen.cc; sourceTree = "<group>"; };
 		70DCAC62097AF730002F8733 /* cMapScreen.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = cMapScreen.h; sourceTree = "<group>"; };
 		70DCAC63097AF730002F8733 /* cMenuWindow.cc */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = cMenuWindow.cc; sourceTree = "<group>"; };
@@ -879,8 +895,6 @@
 		70DCAD20097AF81A002F8733 /* cLexer.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = cLexer.h; sourceTree = "<group>"; };
 		70DCAD21097AF81A002F8733 /* cLexer.l */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.lex; path = cLexer.l; sourceTree = "<group>"; };
 		70DCAD22097AF81A002F8733 /* FlexLexer.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = FlexLexer.h; sourceTree = "<group>"; };
-		70DCAD37097AF972002F8733 /* CMakeLists.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = "<group>"; };
-		70DCAD39097AF985002F8733 /* CMakeLists.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = "<group>"; };
 		70DCF50109CFB0B400924128 /* system-alloc.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "system-alloc.h"; sourceTree = "<group>"; };
 		70DCF50209CFB0B400924128 /* system-alloc.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = "system-alloc.cc"; sourceTree = "<group>"; };
 		70DCF52809CFB93200924128 /* spinlock.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = spinlock.h; sourceTree = "<group>"; };
@@ -903,19 +917,12 @@
 		70F7DE730929678E009E311D /* cGenotype_TestData.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = cGenotype_TestData.h; sourceTree = "<group>"; };
 		70F7DE76092967A8009E311D /* cGenotypeBatch.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = cGenotypeBatch.h; sourceTree = "<group>"; };
 		70FB86A908BFAFEC00BDF589 /* CMakeLists.txt */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = "<group>"; };
-		DCC30F7B0762539D008F7A48 /* CMakeLists.txt */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = "<group>"; };
-		DCC30FA90762539D008F7A48 /* CMakeLists.txt */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = "<group>"; };
 		DCC30FCF0762539D008F7A48 /* Doxyfile */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = Doxyfile; sourceTree = "<group>"; };
 		DCC3109C0762539E008F7A48 /* avida.cc */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = avida.cc; sourceTree = "<group>"; };
-		DCC310A90762539E008F7A48 /* CMakeLists.txt */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = "<group>"; };
-		DCC31345076253A0008F7A48 /* CMakeLists.txt */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = CMakeLists.txt; 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>"; };
 		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>"; };
-		DCC315A5076253A4008F7A48 /* CMakeLists.txt */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = "<group>"; };
-		DCC315A6076253A4008F7A48 /* UnitTest_recursive_tests.cc */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = UnitTest_recursive_tests.cc; sourceTree = "<group>"; };
 		DCC315AD076253A5008F7A48 /* tUnitTestSuite.hh */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.h; path = tUnitTestSuite.hh; sourceTree = "<group>"; };
 		DCC315AE076253A5008F7A48 /* tUnitTestSuiteRecurser.hh */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.h; path = tUnitTestSuiteRecurser.hh; sourceTree = "<group>"; };
 		DCC315B0076253A5008F7A48 /* tVerifierSuite.hh */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.h; path = tVerifierSuite.hh; sourceTree = "<group>"; };
@@ -926,10 +933,9 @@
 		DCC315C4076253A5008F7A48 /* matlabify.cc */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = matlabify.cc; sourceTree = "<group>"; };
 		DCC315CD076253A5008F7A48 /* CMakeLists.txt */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = "<group>"; };
 		DCC315CE076253A5008F7A48 /* environment.rotate */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = environment.rotate; sourceTree = "<group>"; };
-		DCC315CF076253A5008F7A48 /* Makefile */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.make; path = Makefile; sourceTree = "<group>"; };
 		DCC315D0076253A5008F7A48 /* task_event_gen.cc */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = task_event_gen.cc; sourceTree = "<group>"; };
 		DCC315D1076253A5008F7A48 /* task_event_gen.old.cc */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = task_event_gen.old.cc; sourceTree = "<group>"; };
-		DCC3164D07626CF3008F7A48 /* avida */ = {isa = PBXFileReference; includeInIndex = 0; lastKnownFileType = "compiled.mach-o.executable"; path = avida; sourceTree = BUILT_PRODUCTS_DIR; };
+		DCC3164D07626CF3008F7A48 /* avida */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = avida; sourceTree = BUILT_PRODUCTS_DIR; };
 /* End PBXFileReference section */
 
 /* Begin PBXFrameworksBuildPhase section */
@@ -948,6 +954,13 @@
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 		};
+		70B6514A0BEA6FAD002472ED /* Frameworks */ = {
+			isa = PBXFrameworksBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
 		70DCAD07097AF7CC002F8733 /* Frameworks */ = {
 			isa = PBXFrameworksBuildPhase;
 			buildActionMask = 2147483647;
@@ -980,11 +993,18 @@
 				701D930C094CAD6B008B845F /* cDefaultRunDriver.cc */,
 				701D93E6094CBF71008B845F /* cDefaultAnalyzeDriver.h */,
 				701D93E7094CBF71008B845F /* cDefaultAnalyzeDriver.cc */,
-				701D941C094CC5F1008B845F /* CMakeLists.txt */,
 			);
 			path = drivers;
 			sourceTree = "<group>";
 		};
+		701EF27D0BEA5D2300DAE168 /* unit-tests */ = {
+			isa = PBXGroup;
+			children = (
+				701EF27E0BEA5D2300DAE168 /* main.cc */,
+			);
+			path = "unit-tests";
+			sourceTree = "<group>";
+		};
 		70422A1B091B141000A5E67F /* analyze */ = {
 			isa = PBXGroup;
 			children = (
@@ -993,7 +1013,6 @@
 				709D924A0A5D94FD00D6A163 /* cMutationalNeighborhoodResults.h */,
 				70C054F50A4F701B002703C1 /* SConscript */,
 				70F7DE76092967A8009E311D /* cGenotypeBatch.h */,
-				70422A44091B1B8500A5E67F /* CMakeLists.txt */,
 				70422A1C091B141000A5E67F /* cAnalyze.cc */,
 				70422A1D091B141000A5E67F /* cAnalyze.h */,
 				70422A1E091B141000A5E67F /* cAnalyzeCommand.h */,
@@ -1019,7 +1038,6 @@
 			isa = PBXGroup;
 			children = (
 				70C054F10A4F6FF1002703C1 /* SConscript */,
-				707AF0F809EACC5E001AEA89 /* CMakeLists.txt */,
 				707AEEEF09E80725001AEA89 /* cAction.h */,
 				707AEEFE09E83381001AEA89 /* cActionLibrary.h */,
 				707AF04409EAB529001AEA89 /* LandscapeActions.h */,
@@ -1050,7 +1068,6 @@
 				7049F36F0A66AD7E00640512 /* default-transsmt.org */,
 				707AF2D309EE8501001AEA89 /* analyze.cfg */,
 				707AF2D509EE8501001AEA89 /* avida.cfg */,
-				707AF2D609EE8501001AEA89 /* CMakeLists.txt */,
 				707AF2D709EE8501001AEA89 /* environment.cfg */,
 				707AF2D809EE8501001AEA89 /* events.cfg */,
 				7049F3520A66A8F500640512 /* instset-classic.cfg */,
@@ -1154,7 +1171,7 @@
 				70DCAC55097AF730002F8733 /* avida */,
 				70DCAC56097AF730002F8733 /* avida-s */,
 				70DCAC58097AF730002F8733 /* avida-viewer */,
-				70DCAD37097AF972002F8733 /* CMakeLists.txt */,
+				701EF27D0BEA5D2300DAE168 /* unit-tests */,
 				703CA3710A50734500AB4DB4 /* SConscript */,
 			);
 			path = targets;
@@ -1165,7 +1182,6 @@
 			children = (
 				703CA3720A50735B00AB4DB4 /* SConscript */,
 				70DCAC9B097AF7C0002F8733 /* primitive.cc */,
-				70DCAD39097AF985002F8733 /* CMakeLists.txt */,
 			);
 			path = avida;
 			sourceTree = "<group>";
@@ -1199,7 +1215,6 @@
 				70DCAC5D097AF730002F8733 /* cEnvironmentScreen.h */,
 				70DCAC5E097AF730002F8733 /* cHistScreen.cc */,
 				70DCAC5F097AF730002F8733 /* cHistScreen.h */,
-				70DCAC60097AF730002F8733 /* CMakeLists.txt */,
 				70DCAC61097AF730002F8733 /* cMapScreen.cc */,
 				70DCAC62097AF730002F8733 /* cMapScreen.h */,
 				70DCAC63097AF730002F8733 /* cMenuWindow.cc */,
@@ -1253,7 +1268,6 @@
 			isa = PBXGroup;
 			children = (
 				703CA3700A5072E600AB4DB4 /* SConscript */,
-				700E12610A097A0800B604CD /* CMakeLists.txt */,
 				70DCF50009CF823500924128 /* tcmalloc */,
 			);
 			path = platform;
@@ -1262,7 +1276,6 @@
 		70DCF50009CF823500924128 /* tcmalloc */ = {
 			isa = PBXGroup;
 			children = (
-				700E12630A097A1700B604CD /* CMakeLists.txt */,
 				70DCF57F09CFBD3D00924128 /* tcmalloc-logging.cc */,
 				70DCF58009CFBD3D00924128 /* tcmalloc-logging.h */,
 				70DCF50109CFB0B400924128 /* system-alloc.h */,
@@ -1308,7 +1321,6 @@
 				70F7DC9F09293E6F009E311D /* cGenotype.h */,
 				70F7DAEF09290468009E311D /* cClassificationManager.h */,
 				70F7DAF009290468009E311D /* cClassificationManager.cc */,
-				7053345E092A4D88006BD186 /* CMakeLists.txt */,
 			);
 			path = classification;
 			sourceTree = "<group>";
@@ -1339,9 +1351,7 @@
 				70DCF4FF09CF81E400924128 /* platform */,
 				70DCAD1E097AF81A002F8733 /* script */,
 				70DCAC54097AF730002F8733 /* targets */,
-				DCC31340076253A0008F7A48 /* third-party */,
 				DCC314D8076253A2008F7A48 /* tools */,
-				DCC30F7B0762539D008F7A48 /* CMakeLists.txt */,
 				701384A10902A16F0087ED2E /* defs.h */,
 				DCC30FCF0762539D008F7A48 /* Doxyfile */,
 				703CA3770A50740300AB4DB4 /* SConscript */,
@@ -1390,7 +1400,6 @@
 				70C1F0A808C3FF1800F50912 /* nHardware.h */,
 				70C1EF6708C395D300F50912 /* sCPUStats.h */,
 				706D30CC0852328F00D7DC8F /* tInstLib.h */,
-				DCC30FA90762539D008F7A48 /* CMakeLists.txt */,
 				7005A70109BA0FA90007E16E /* cTestCPUInterface.h */,
 				7005A70209BA0FA90007E16E /* cTestCPUInterface.cc */,
 				705260BB0B87A7DB0007426F /* cInstLibEntry.h */,
@@ -1437,6 +1446,10 @@
 				70B0864F08F4972600FC65FE /* cMxCodeArray.h */,
 				70B0868708F49EA800FC65FE /* cOrganism.cc */,
 				70B0868308F49E9700FC65FE /* cOrganism.h */,
+				3EC9C9970BEB99220046545F /* cUMLStateDiagram.cc */,
+				3EC9C96F0BEB97D20046545F /* cUMLStateDiagram.h */,
+				3EC9C9480BEB96CB0046545F /* cUMLModel.cc */,
+				3EC9C9320BEB95320046545F /* cUMLModel.h */,
 				70B0869C08F49F4800FC65FE /* cPhenotype.cc */,
 				70B0869B08F49F3900FC65FE /* cPhenotype.h */,
 				70B0868908F49EA800FC65FE /* cPopulation.cc */,
@@ -1474,7 +1487,6 @@
 				70B0875A08F5EC8900FC65FE /* nGeometry.h */,
 				70B0867208F499C100FC65FE /* nMutation.h */,
 				70B0875C08F5ECBC00FC65FE /* nReaction.h */,
-				DCC310A90762539E008F7A48 /* CMakeLists.txt */,
 				7005A70909BA0FBE0007E16E /* cOrgInterface.h */,
 				701D51CB09C645F50009B4F8 /* cAvidaContext.h */,
 				7027621909D73E5900741717 /* cOrgSourceMessage.h */,
@@ -1487,15 +1499,6 @@
 			path = main;
 			sourceTree = "<group>";
 		};
-		DCC31340076253A0008F7A48 /* third-party */ = {
-			isa = PBXGroup;
-			children = (
-				DCC31345076253A0008F7A48 /* CMakeLists.txt */,
-				703CA3740A50739600AB4DB4 /* SConscript */,
-			);
-			path = "third-party";
-			sourceTree = "<group>";
-		};
 		DCC314D8076253A2008F7A48 /* tools */ = {
 			isa = PBXGroup;
 			children = (
@@ -1595,11 +1598,9 @@
 				70B087DD08F5F4A900FC65FE /* cID.h */,
 				70B087DE08F5F4A900FC65FE /* cVerifierSuiteRecurser.h */,
 				DCC31547076253A4008F7A48 /* cCycleCheck.cc */,
-				DCC3154A076253A4008F7A48 /* CMakeLists.txt */,
 				DCC31585076253A4008F7A48 /* recursive_tests_decl_hdrs.hh */,
 				DCC31586076253A4008F7A48 /* recursive_tests_defn_hdrs.hh */,
 				DCC31587076253A4008F7A48 /* recursive_tests_macros.hh */,
-				DCC315A0076253A4008F7A48 /* tests */,
 				DCC315AD076253A5008F7A48 /* tUnitTestSuite.hh */,
 				DCC315AE076253A5008F7A48 /* tUnitTestSuiteRecurser.hh */,
 				DCC315B0076253A5008F7A48 /* tVerifierSuite.hh */,
@@ -1621,15 +1622,6 @@
 			path = tools;
 			sourceTree = "<group>";
 		};
-		DCC315A0076253A4008F7A48 /* tests */ = {
-			isa = PBXGroup;
-			children = (
-				DCC315A5076253A4008F7A48 /* CMakeLists.txt */,
-				DCC315A6076253A4008F7A48 /* UnitTest_recursive_tests.cc */,
-			);
-			path = tests;
-			sourceTree = "<group>";
-		};
 		DCC315B6076253A5008F7A48 /* Utilities */ = {
 			isa = PBXGroup;
 			children = (
@@ -1656,7 +1648,6 @@
 			children = (
 				DCC315CD076253A5008F7A48 /* CMakeLists.txt */,
 				DCC315CE076253A5008F7A48 /* environment.rotate */,
-				DCC315CF076253A5008F7A48 /* Makefile */,
 				DCC315D0076253A5008F7A48 /* task_event_gen.cc */,
 				DCC315D1076253A5008F7A48 /* task_event_gen.old.cc */,
 			);
@@ -1670,6 +1661,7 @@
 				700E2B83085DE50C00CF158A /* avida-viewer */,
 				70DCAD1C097AF7CC002F8733 /* avida-s */,
 				70AA941909D486AE006A24C8 /* libtcmalloc.a */,
+				70B6514C0BEA6FAD002472ED /* unit-tests */,
 			);
 			name = Products;
 			sourceTree = "<group>";
@@ -1722,6 +1714,23 @@
 			productReference = 70AA941909D486AE006A24C8 /* libtcmalloc.a */;
 			productType = "com.apple.product-type.library.static";
 		};
+		70B6514B0BEA6FAD002472ED /* unit-tests */ = {
+			isa = PBXNativeTarget;
+			buildConfigurationList = 70B651570BEA700B002472ED /* Build configuration list for PBXNativeTarget "unit-tests" */;
+			buildPhases = (
+				70B651490BEA6FAD002472ED /* Sources */,
+				70B6514A0BEA6FAD002472ED /* Frameworks */,
+				70B651B50BEA9AC2002472ED /* CopyFiles */,
+			);
+			buildRules = (
+			);
+			dependencies = (
+			);
+			name = "unit-tests";
+			productName = "unit-tests";
+			productReference = 70B6514C0BEA6FAD002472ED /* unit-tests */;
+			productType = "com.apple.product-type.tool";
+		};
 		70DCAC9D097AF7CC002F8733 /* avida-s */ = {
 			isa = PBXNativeTarget;
 			buildConfigurationList = 70DCAD17097AF7CC002F8733 /* Build configuration list for PBXNativeTarget "avida-s" */;
@@ -1775,6 +1784,7 @@
 				70DCAC9D097AF7CC002F8733 /* avida-s */,
 				700E2AF3085DE50C00CF158A /* avida-viewer */,
 				70AA941809D486AE006A24C8 /* tcmalloc */,
+				70B6514B0BEA6FAD002472ED /* unit-tests */,
 			);
 		};
 /* End PBXProject section */
@@ -1948,6 +1958,7 @@
 				7099EF580B2FBC86001269F6 /* cTextViewerDriver_Base.cc in Sources */,
 				70B1A6520B7E237F00067486 /* cHardwareExperimental.cc in Sources */,
 				706C70010B83F265003174C1 /* cInstSet.cc in Sources */,
+				707045F00BCEA0D9000F9B9A /* cHardwareGX.cc in Sources */,
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 		};
@@ -1961,6 +1972,14 @@
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 		};
+		70B651490BEA6FAD002472ED /* Sources */ = {
+			isa = PBXSourcesBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				70B6514F0BEA6FCC002472ED /* main.cc in Sources */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
 		70DCAC9F097AF7CC002F8733 /* Sources */ = {
 			isa = PBXSourcesBuildPhase;
 			buildActionMask = 2147483647;
@@ -2188,6 +2207,8 @@
 				70B1A6500B7E237F00067486 /* cHardwareExperimental.cc in Sources */,
 				706C6FFF0B83F265003174C1 /* cInstSet.cc in Sources */,
 				4233358A0BC067E3000DF681 /* cHardwareGX.cc in Sources */,
+				3EC9C9490BEB96CB0046545F /* cUMLModel.cc in Sources */,
+				3EC9C9980BEB99220046545F /* cUMLStateDiagram.cc in Sources */,
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 		};
@@ -2482,6 +2503,70 @@
 			};
 			name = Profile;
 		};
+		70B651580BEA700B002472ED /* Development */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				COPY_PHASE_STRIP = NO;
+				GCC_DYNAMIC_NO_PIC = NO;
+				GCC_ENABLE_FIX_AND_CONTINUE = YES;
+				GCC_GENERATE_DEBUGGING_SYMBOLS = YES;
+				GCC_MODEL_TUNING = G5;
+				GCC_OPTIMIZATION_LEVEL = 0;
+				INSTALL_PATH = "$(HOME)/bin";
+				PREBINDING = NO;
+				PRODUCT_NAME = "unit-tests";
+				ZERO_LINK = YES;
+			};
+			name = Development;
+		};
+		70B651590BEA700B002472ED /* Deployment-G4 */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				GCC_ENABLE_FIX_AND_CONTINUE = YES;
+				GCC_MODEL_TUNING = G5;
+				INSTALL_PATH = "$(HOME)/bin";
+				PREBINDING = NO;
+				PRODUCT_NAME = "unit-tests";
+				ZERO_LINK = YES;
+			};
+			name = "Deployment-G4";
+		};
+		70B6515A0BEA700B002472ED /* Deployment-G5 */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				GCC_ENABLE_FIX_AND_CONTINUE = YES;
+				GCC_MODEL_TUNING = G5;
+				INSTALL_PATH = "$(HOME)/bin";
+				PREBINDING = NO;
+				PRODUCT_NAME = "unit-tests";
+				ZERO_LINK = YES;
+			};
+			name = "Deployment-G5";
+		};
+		70B6515B0BEA700B002472ED /* Deployment-Universal */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				GCC_ENABLE_FIX_AND_CONTINUE = YES;
+				GCC_MODEL_TUNING = G5;
+				INSTALL_PATH = "$(HOME)/bin";
+				PREBINDING = NO;
+				PRODUCT_NAME = "unit-tests";
+				ZERO_LINK = YES;
+			};
+			name = "Deployment-Universal";
+		};
+		70B6515C0BEA700B002472ED /* Profile */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				GCC_ENABLE_FIX_AND_CONTINUE = YES;
+				GCC_MODEL_TUNING = G5;
+				INSTALL_PATH = "$(HOME)/bin";
+				PREBINDING = NO;
+				PRODUCT_NAME = "unit-tests";
+				ZERO_LINK = YES;
+			};
+			name = Profile;
+		};
 		70DCAD18097AF7CC002F8733 /* Development */ = {
 			isa = XCBuildConfiguration;
 			buildSettings = {
@@ -2649,6 +2734,18 @@
 			defaultConfigurationIsVisible = 0;
 			defaultConfigurationName = "Deployment-G4";
 		};
+		70B651570BEA700B002472ED /* Build configuration list for PBXNativeTarget "unit-tests" */ = {
+			isa = XCConfigurationList;
+			buildConfigurations = (
+				70B651580BEA700B002472ED /* Development */,
+				70B651590BEA700B002472ED /* Deployment-G4 */,
+				70B6515A0BEA700B002472ED /* Deployment-G5 */,
+				70B6515B0BEA700B002472ED /* Deployment-Universal */,
+				70B6515C0BEA700B002472ED /* Profile */,
+			);
+			defaultConfigurationIsVisible = 0;
+			defaultConfigurationName = "Deployment-G4";
+		};
 		70DCAD17097AF7CC002F8733 /* Build configuration list for PBXNativeTarget "avida-s" */ = {
 			isa = XCConfigurationList;
 			buildConfigurations = (

Modified: branches/uml/CMakeLists.txt
===================================================================
--- branches/uml/CMakeLists.txt	2007-05-04 19:47:55 UTC (rev 1527)
+++ branches/uml/CMakeLists.txt	2007-05-04 20:18:18 UTC (rev 1528)
@@ -1,17 +1,10 @@
-
-# This section introduces the Avida project to CMake.  In this file, it
-# must be between the configuration options above (otherwise it
-# overrides their defaults) and the configuration options, cmake module
-# includes, and convenience variables below (otherwise some variables
-# can't be properly defined because PROJECT_SOURCE_DIR and
-# PROJECT_BUILD_DIR aren't yet defined).
-
 PROJECT(AVIDA)
 
-# The following three variables must be after the PROJECT statement, otherwise newer versions of cmake
-# will (correctly) use an empty value of PROJECT_BINARY_DIR, since the project didn't exist yet.
+# The following three variables must be after the PROJECT statement, otherwise
+# newer versions of cmake will (correctly) use an empty value of
+# PROJECT_BINARY_DIR, since the project didn't exist yet.
 
-# Default location for installed software / configs / docs is the build directory.
+# Default location for installed software/configs/ docs is the build directory.
 SET(CMAKE_INSTALL_PREFIX
   "${PROJECT_BINARY_DIR}"
   CACHE PATH
@@ -34,16 +27,12 @@
 
 
 
-# This section defines default builtin configure options.
-
+# This section defines default builtin compiler options
+# ------------------------------------------------------------------------------
 IF(UNIX)
+  SET(COMPILER_WARNING_FLAGS "-Wextra -Wno-unknown-pragmas -Wconversion -Wno-trigraphs")
+  SET(COMPILER_OPTIMIZATION_FLAGS "-ffast-math -fno-rtti -funroll-loops -fstrict-aliasing -ftree-vectorize -fvisibility-inlines-hidden")
 
-  IF(APPLE)
-    SET(COMPILER_WARNING_FLAGS "-Wall -Wno-long-double -Wno-long-long")
-  ELSE(APPLE)
-    SET(COMPILER_WARNING_FLAGS "-Wall -Wno-long-long")
-  ENDIF(APPLE)
-
   # Four types of c++ compilations:
   # - debug (Debug)
   # - minimum-size release (MinSizeRel)
@@ -53,39 +42,16 @@
     "-g ${COMPILER_WARNING_FLAGS} -DDEBUG"
     CACHE STRING "Flags used by the compiler during debug builds." FORCE)
   SET(CMAKE_CXX_FLAGS_MINSIZEREL
-    "-Os -DNDEBUG"
+    "-Os ${COMPILER_WARNING_FLAGS} -DNDEBUG"
     CACHE STRING "Flags used by the compiler during release minsize builds." FORCE)
   SET(CMAKE_CXX_FLAGS_RELWITHDEBINFO
-    "-O2 -ffast-math -g ${COMPILER_WARNING_FLAGS} -DDEBUG"
+    "-O2 -g ${COMPILER_OPTIMIZATION_FLAGS} ${COMPILER_WARNING_FLAGS} -DDEBUG"
     CACHE STRING "Flags used by the compiler during release builds." FORCE)
   SET(CMAKE_CXX_FLAGS_RELEASE
-    "-O3 -ffast-math -DNDEBUG"
+    "-O3 ${COMPILER_OPTIMIZATION_FLAGS} ${COMPILER_WARNING_FLAGS} -DNDEBUG"
     CACHE STRING "Flags used by the compiler during release builds." FORCE)
-
-  # Four types of c compilations:
-  # - debug (Debug)
-  # - minimum-size release (MinSizeRel)
-  # - release (Release)
-  # - release with debug info (RelWithDebInfo)
-  SET(CMAKE_C_FLAGS_DEBUG
-    "-g ${COMPILER_WARNING_FLAGS} -DDEBUG"
-    CACHE STRING "Flags used by the compiler during debug builds." FORCE)
-  SET(CMAKE_C_FLAGS_MINSIZEREL
-    "-Os -DNDEBUG"
-    CACHE STRING "Flags used by the compiler during release minsize builds." FORCE)
-  SET(CMAKE_C_FLAGS_RELEASE
-    "-O3 -ffast-math -DNDEBUG"
-    CACHE STRING "Flags used by the compiler during release builds." FORCE)
-  SET(CMAKE_C_FLAGS_RELWITHDEBINFO
-    "-O2 -ffast-math -g ${COMPILER_WARNING_FLAGS} -DDEBUG"
-    CACHE STRING "Flags used by the compiler during release builds." FORCE)
-
-  # By default, show all build commands.
-  SET(CMAKE_VERBOSE_MAKEFILE TRUE CACHE BOOL
-    "If this value is on, makefiles will be generated without the .SILENT directive, and all commands will be echoed to the console during the make.  This is useful for debugging only.")
 ENDIF(UNIX)
 
-SET(CMAKE_SKIP_RPATH TRUE CACHE INTERNAL "Fix Library Path Issues?")
 
 # Default build mode compiles c++ and c code with debug info and no
 # optimizations.
@@ -93,32 +59,375 @@
   SET(CMAKE_BUILD_TYPE
     Release
     CACHE STRING
-    "Choose the type of build, options are: None(CMAKE_CXX_FLAGS or CMAKE_C_FLAGS used) Debug Release RelWithDebInfo MinSizeRel."
+    "Choose the type of build, options are: Debug Release RelWithDebInfo MinSizeRel."
     FORCE
   )
 ENDIF(NOT CMAKE_BUILD_TYPE)
 
 
+
+# Build Instructions for the Avida Core functionality
+# - Below are groups of sources, based on directory.  Each appends the source
+# - files to the master AVIDA_CORE_SOURCES list that is used to build a
+# - static library that is linked into relevant targets.
+# ------------------------------------------------------------------------------
+SET(AVIDA_CORE_SOURCES)
+SET(ALL_INC_DIRS
+  ${PROJECT_SOURCE_DIR}/source
+)
+
+
+# The actions directory
+SET(ACTIONS_DIR ${PROJECT_SOURCE_DIR}/source/actions)
+SET(ACTIONS_SOURCES
+  ${ACTIONS_DIR}/cActionLibrary.cc
+  ${ACTIONS_DIR}/DriverActions.cc
+  ${ACTIONS_DIR}/EnvironmentActions.cc
+  ${ACTIONS_DIR}/LandscapeActions.cc
+  ${ACTIONS_DIR}/PopulationActions.cc
+  ${ACTIONS_DIR}/PrintActions.cc
+  ${ACTIONS_DIR}/SaveLoadActions.cc
+)
+SOURCE_GROUP(actions FILES ${ACTIONS_SOURCES})
+LIST(APPEND AVIDA_CORE_SOURCES ${ACTIONS_SOURCES})
+LIST(APPEND ALL_INC_DIRS ${ACTIONS_DIR})
+
+
+# The analyze directory
+SET(ANALYZE_DIR ${PROJECT_SOURCE_DIR}/source/analyze)
+SET(ANALYZE_SOURCES
+  ${ANALYZE_DIR}/cAnalyze.cc
+  ${ANALYZE_DIR}/cAnalyzeGenotype.cc
+  ${ANALYZE_DIR}/cAnalyzeJobQueue.cc
+  ${ANALYZE_DIR}/cAnalyzeJobWorker.cc
+  ${ANALYZE_DIR}/cMutationalNeighborhood.cc
+)
+SOURCE_GROUP(analyze FILES ${ANALYZE_SOURCES})
+LIST(APPEND AVIDA_CORE_SOURCES ${ANALYZE_SOURCES})
+LIST(APPEND ALL_INC_DIRS ${ANALYZE_DIR})
+
+
+# The classification directory
+SET(CLASSIFICATION_DIR ${PROJECT_SOURCE_DIR}/source/classification)
+SET(CLASSIFICATION_SOURCES
+  ${CLASSIFICATION_DIR}/cClassificationManager.cc
+  ${CLASSIFICATION_DIR}/cGenotype.cc
+  ${CLASSIFICATION_DIR}/cGenotype_BirthData.cc
+  ${CLASSIFICATION_DIR}/cGenotypeControl.cc
+  ${CLASSIFICATION_DIR}/cInjectGenotype.cc
+  ${CLASSIFICATION_DIR}/cInjectGenotypeControl.cc
+  ${CLASSIFICATION_DIR}/cInjectGenotypeQueue.cc
+  ${CLASSIFICATION_DIR}/cLineage.cc
+  ${CLASSIFICATION_DIR}/cSpecies.cc
+  ${CLASSIFICATION_DIR}/cSpeciesControl.cc
+  ${CLASSIFICATION_DIR}/cSpeciesQueue.cc
+)
+SOURCE_GROUP(classification FILES ${CLASSIFICATION_SOURCES})
+LIST(APPEND AVIDA_CORE_SOURCES ${CLASSIFICATION_SOURCES})
+LIST(APPEND ALL_INC_DIRS ${CLASSIFICATION_DIR})
+
+
+# The cpu directory
+SET(CPU_DIR ${PROJECT_SOURCE_DIR}/source/cpu)
+SET(CPU_SOURCES
+  ${CPU_DIR}/cCodeLabel.cc
+  ${CPU_DIR}/cCPUMemory.cc
+  ${CPU_DIR}/cCPUStack.cc
+  ${CPU_DIR}/cCPUTestInfo.cc
+  ${CPU_DIR}/cHardwareBase.cc
+  ${CPU_DIR}/cHardwareCPU.cc
+  ${CPU_DIR}/cHardwareExperimental.cc
+  ${CPU_DIR}/cHardwareGX.cc
+  ${CPU_DIR}/cHardwareManager.cc
+  ${CPU_DIR}/cHardwareSMT.cc
+  ${CPU_DIR}/cHardwareStatusPrinter.cc
+  ${CPU_DIR}/cHardwareTransSMT.cc
+  ${CPU_DIR}/cHeadCPU.cc
+  ${CPU_DIR}/cInstSet.cc
+  ${CPU_DIR}/cTestCPU.cc
+  ${CPU_DIR}/cTestCPUInterface.cc
+)
+SOURCE_GROUP(cpu FILES ${CPU_SOURCES})
+LIST(APPEND AVIDA_CORE_SOURCES ${CPU_SOURCES})
+LIST(APPEND ALL_INC_DIRS ${CPU_DIR})
+
+
+# The drivers directory
+SET(DRIVERS_DIR ${PROJECT_SOURCE_DIR}/source/drivers)
+SET(DRIVERS_SOURCES
+  ${DRIVERS_DIR}/cDefaultAnalyzeDriver.cc
+  ${DRIVERS_DIR}/cDefaultRunDriver.cc
+  ${DRIVERS_DIR}/cDriverManager.cc
+  ${DRIVERS_DIR}/cFallbackWorldDriver.cc
+)
+SOURCE_GROUP(drivers FILES ${DRIVERS_SOURCES})
+LIST(APPEND AVIDA_CORE_SOURCES ${DRIVERS_SOURCES})
+LIST(APPEND ALL_INC_DIRS ${DRIVERS_DIR})
+
+
+# The main directory
+SET(MAIN_DIR ${PROJECT_SOURCE_DIR}/source/main)
+SET(MAIN_SOURCES
+  ${MAIN_DIR}/avida.cc
+  ${MAIN_DIR}/cAvidaConfig.cc
+  ${MAIN_DIR}/cBirthChamber.cc
+  ${MAIN_DIR}/cDeme.cc
+  ${MAIN_DIR}/cEnvironment.cc
+  ${MAIN_DIR}/cEventList.cc
+  ${MAIN_DIR}/cFitnessMatrix.cc
+  ${MAIN_DIR}/cGenome.cc
+  ${MAIN_DIR}/cGenomeUtil.cc
+  ${MAIN_DIR}/cInstruction.cc
+  ${MAIN_DIR}/cLandscape.cc
+  ${MAIN_DIR}/cLocalMutations.cc
+  ${MAIN_DIR}/cMutationLib.cc
+  ${MAIN_DIR}/cMutationRates.cc
+  ${MAIN_DIR}/cMxCodeArray.cc
+  ${MAIN_DIR}/cOrganism.cc
+  ${MAIN_DIR}/cPhenotype.cc
+  ${MAIN_DIR}/cPopulation.cc
+  ${MAIN_DIR}/cPopulationCell.cc
+  ${MAIN_DIR}/cPopulationInterface.cc
+  ${MAIN_DIR}/cReaction.cc
+  ${MAIN_DIR}/cReactionLib.cc
+  ${MAIN_DIR}/cReactionResult.cc
+  ${MAIN_DIR}/cResource.cc
+  ${MAIN_DIR}/cResourceCount.cc
+  ${MAIN_DIR}/cResourceLib.cc
+  ${MAIN_DIR}/cSpatialCountElem.cc
+  ${MAIN_DIR}/cSpatialResCount.cc
+  ${MAIN_DIR}/cStats.cc
+  ${MAIN_DIR}/cTaskLib.cc
+  ${MAIN_DIR}/cWorld.cc
+)
+SOURCE_GROUP(main FILES ${MAIN_SOURCES})
+LIST(APPEND AVIDA_CORE_SOURCES ${MAIN_SOURCES})
+LIST(APPEND ALL_INC_DIRS ${MAIN_DIR})
+
+
+# The tools directory
+SET(TOOLS_DIR ${PROJECT_SOURCE_DIR}/source/tools)
+SET(TOOLS_SOURCES
+  ${TOOLS_DIR}/cArgContainer.cc
+  ${TOOLS_DIR}/cArgSchema.cc
+  ${TOOLS_DIR}/cChangeList.cc
+  ${TOOLS_DIR}/cConstSchedule.cc
+  ${TOOLS_DIR}/cDataEntry.cc
+  ${TOOLS_DIR}/cDataFile.cc
+  ${TOOLS_DIR}/cDataFileManager.cc
+  ${TOOLS_DIR}/cDataManager_Base.cc
+  ${TOOLS_DIR}/cDefaultMessageDisplay.cc
+  ${TOOLS_DIR}/cDoubleSum.cc
+  ${TOOLS_DIR}/cFile.cc
+  ${TOOLS_DIR}/cHelpAlias.cc
+  ${TOOLS_DIR}/cHelpManager.cc
+  ${TOOLS_DIR}/cHelpType.cc
+  ${TOOLS_DIR}/cHistogram.cc
+  ${TOOLS_DIR}/cInitFile.cc
+  ${TOOLS_DIR}/cIntSum.cc
+  ${TOOLS_DIR}/cIntegratedSchedule.cc
+  ${TOOLS_DIR}/cIntegratedScheduleNode.cc
+  ${TOOLS_DIR}/cMerit.cc
+  ${TOOLS_DIR}/cProbSchedule.cc
+  ${TOOLS_DIR}/cRandom.cc
+  ${TOOLS_DIR}/cRunningAverage.cc
+  ${TOOLS_DIR}/cSchedule.cc
+  ${TOOLS_DIR}/cString.cc
+  ${TOOLS_DIR}/cStringIterator.cc
+  ${TOOLS_DIR}/cStringList.cc
+  ${TOOLS_DIR}/cStringUtil.cc
+  ${TOOLS_DIR}/cThread.cc
+  ${TOOLS_DIR}/cTools.cc
+  ${TOOLS_DIR}/cWeightedIndex.cc
+)
+SOURCE_GROUP(tools FILES ${TOOLS_SOURCES})
+LIST(APPEND AVIDA_CORE_SOURCES ${TOOLS_SOURCES})
+LIST(APPEND ALL_INC_DIRS ${TOOLS_DIR})
+
+
+# Create the static library from the master source list
+INCLUDE_DIRECTORIES(${ALL_INC_DIRS})
+ADD_LIBRARY(avidacore ${AVIDA_CORE_SOURCES})
+
+
+
+# Build Instructions for the TCMalloc library
+# ------------------------------------------------------------------------------
 IF(UNIX)
   SET(AVD_ENABLE_TCMALLOC TRUE)
 ELSE(UNIX)
   SET(AVD_ENABLE_TCMALLOC FALSE)
 ENDIF(UNIX)
+IF(AVD_ENABLE_TCMALLOC)
+  SET(TCMALLOC_DIR source/platform/tcmalloc)
+  SET(TCMALLOC_SOURCES
+    ${TCMALLOC_DIR}/system-alloc.cc
+    ${TCMALLOC_DIR}/tcmalloc-logging.cc
+    ${TCMALLOC_DIR}/tcmalloc.cc
+  )
+  ADD_LIBRARY(tcmalloc ${TCMALLOC_SOURCES})
+ENDIF(AVD_ENABLE_TCMALLOC)
 
-IF(EXISTS ${PROJECT_SOURCE_DIR}/source/archive)
-  OPTION(AVD_SERIALIZATION
-    "Enable boost serialization support"
-    OFF
+
+
+# Target Processing
+# - For each enabled target, process its build instructions.  Must occur after
+# - avidacore has been defined.
+# ------------------------------------------------------------------------------
+OPTION(AVD_CMDLINE
+  "Enable building standard command line Avida (fastest version)."
+  ON
+)
+IF(AVD_CMDLINE)
+  SET(AVIDA_CMDLINE_DIR source/targets/avida)
+  SET(AVIDA_CMDLINE_SOURCES ${AVIDA_CMDLINE_DIR}/primitive.cc)
+  SOURCE_GROUP(target\\avida FILES ${AVIDA_CMDLINE_SOURCES})
+  ADD_EXECUTABLE(avida ${AVIDA_CMDLINE_SOURCES})
+
+  SET(AVIDA_CMDLINE_LIBS avidacore)  
+  IF(NOT MSVC)
+    LIST(APPEND AVIDA_CMDLINE_LIBS pthread)
+  ENDIF(NOT MSVC)
+  IF(AVD_ENABLE_TCMALLOC)
+    LIST(APPEND AVIDA_CMDLINE_LIBS tcmalloc)
+  ENDIF(AVD_ENABLE_TCMALLOC)  
+  TARGET_LINK_LIBRARIES(avida ${AVIDA_CMDLINE_LIBS})
+  
+  INSTALL_TARGETS(/work avida)
+ENDIF(AVD_CMDLINE)
+
+
+# By default, build the console interface to Avida.
+OPTION(AVD_GUI_NCURSES
+  "Enable building Avida console interface."
+  OFF
+)
+# Make sure requisites are present for build of console interface.  Give
+# user feedback if they're missing.
+IF(AVD_GUI_NCURSES)
+  # Locate the ncurses screen handling package (for Avida's console
+  # interface) and the Qt graphics API (for Avida's graphic interface).
+  INCLUDE(${PROJECT_SOURCE_DIR}/CMakeModules/FindNcurses.cmake)
+  IF(NOT NCURSES_INCLUDE_PATH)
+    MESSAGE("Unable to locate header files for the ncurses CRT screen handling package.  Please set the advanced variable NCURSES_INCLUDE_PATH to their location.")
+  ENDIF(NOT NCURSES_INCLUDE_PATH)
+  IF(NOT NCURSES_LIBRARY)
+    MESSAGE("Unable to locate 'libncurses'.  Please set the advanced variable NCURSES_LIBRARY to its location.")
+  ENDIF(NOT NCURSES_LIBRARY)
+
+  IF(NCURSES_LIBRARY AND NCURSES_INCLUDE_PATH)
+
+    INCLUDE_DIRECTORIES(${NCURSES_INCLUDE_PATH})
+    
+    SET(AVIDA_VIEWER_DIR source/targets/avida-viewer)
+    SET(AVIDA_VIEWER_SOURCES
+      ${AVIDA_VIEWER_DIR}/cAnalyzeScreen.cc
+      ${AVIDA_VIEWER_DIR}/cAnalyzeView.cc
+      ${AVIDA_VIEWER_DIR}/cBarScreen.cc
+      ${AVIDA_VIEWER_DIR}/cEnvironmentScreen.cc
+      ${AVIDA_VIEWER_DIR}/cHistScreen.cc
+      ${AVIDA_VIEWER_DIR}/cMapScreen.cc
+      ${AVIDA_VIEWER_DIR}/cMenuWindow.cc
+      ${AVIDA_VIEWER_DIR}/cOptionsScreen.cc
+      ${AVIDA_VIEWER_DIR}/cScreen.cc
+      ${AVIDA_VIEWER_DIR}/cStatsScreen.cc
+      ${AVIDA_VIEWER_DIR}/cSymbolUtil.cc
+      ${AVIDA_VIEWER_DIR}/cTextViewerAnalyzeDriver.cc
+      ${AVIDA_VIEWER_DIR}/cTextViewerDriver.cc
+      ${AVIDA_VIEWER_DIR}/cTextViewerDriver_Base.cc
+      ${AVIDA_VIEWER_DIR}/cTextWindow.cc
+      ${AVIDA_VIEWER_DIR}/cView.cc
+      ${AVIDA_VIEWER_DIR}/cViewInfo.cc
+      ${AVIDA_VIEWER_DIR}/cZoomScreen.cc
+      ${AVIDA_VIEWER_DIR}/viewer.cc
+    )
+    SOURCE_GROUP(targets\\avida-viewer FILES ${AVIDA_VIEWER_SOURCES})
+    ADD_EXECUTABLE(avida-viewer ${AVIDA_VIEWER_SOURCES})
+    
+    SET(AVIDA_VIEWER_LIBS avidacore ${NCURSES_LIBRARY})
+    IF(NOT MSVC)
+      LIST(APPEND AVIDA_VIEWER_LIBS pthread)
+    ENDIF(NOT MSVC)
+    IF(AVD_ENABLE_TCMALLOC)
+      LIST(APPEND AVIDA_VIEWER_LIBS tcmalloc)
+    ENDIF(AVD_ENABLE_TCMALLOC)
+    TARGET_LINK_LIBRARIES(avida-viewer ${AVIDA_VIEWER_LIBS})
+    
+    INSTALL_TARGETS(/work avida-viewer)
+
+  ENDIF(NCURSES_LIBRARY AND NCURSES_INCLUDE_PATH)
+ENDIF(AVD_GUI_NCURSES)
+
+
+OPTION(AVD_TASK_EVENT_GEN
+  "Enable building the task_event_gen utility"
+  OFF
+)
+IF(AVD_TASK_EVENT_GEN)
+  SET(UTILS_DIR source/utils)
+  SET(TASK_EVENT_GEN_SOURCES
+    ${TOOLS_DIR}/cFile.cc
+    ${TOOLS_DIR}/cRandom.cc
+    ${TOOLS_DIR}/cString.cc
+    ${TOOLS_DIR}/cInitFIle.cc
+    ${TOOLS_DIR}/cStringIterator.cc
+    ${TOOLS_DIR}/cStringList.cc
+    ${UTILS_DIR}/task_events/task_event_gen.cc
   )
-ELSE(EXISTS ${PROJECT_SOURCE_DIR}/source/archive)
-  SET(AVD_SERIALIZATION FALSE)
-ENDIF(EXISTS ${PROJECT_SOURCE_DIR}/source/archive)
-IF(AVD_SERIALIZATION)
-  ADD_DEFINITIONS(-DENABLE_SERIALIZATION=1)
-ELSE(AVD_SERIALIZATION)
-  REMOVE_DEFINITIONS(-DENABLE_SERIALIZATION=1)
-ENDIF(AVD_SERIALIZATION)
+  ADD_EXECUTABLE(task_event_gen ${TASK_EVENT_GEN_SOURCES})
+  INSTALL_TARGETS(/work task_event_gen)
+ENDIF(AVD_TASK_EVENT_GEN)
 
+
+OPTION(AVD_UNIT_TESTS
+  "Enable the unit-tests executable.  Running this target will test various low level functionality."
+  OFF
+)
+IF(AVD_UNIT_TESTS)
+  SET(UNIT_TESTS_DIR source/targets/unit-tests)
+  SET(UNIT_TESTS_SOURCES
+    ${UNIT_TESTS_DIR}/main.cc
+  )
+  ADD_EXECUTABLE(unit-tests ${UNIT_TESTS_SOURCES})
+  INSTALL_TARGETS(/work unit-tests)
+ENDIF(AVD_UNIT_TESTS)
+
+
+# Default Configuration Files
+# - Installed into the work directory alongside selected targets
+# ------------------------------------------------------------------------------
+SET(CFG_FILES_DIR support/config)
+SET(CFG_FILES
+  ${CFG_FILES_DIR}/analyze.cfg
+  ${CFG_FILES_DIR}/avida.cfg
+  ${CFG_FILES_DIR}/environment.cfg
+  ${CFG_FILES_DIR}/events.cfg
+  ${CFG_FILES_DIR}/instset-classic.cfg
+  ${CFG_FILES_DIR}/instset-sex-classic.cfg
+  ${CFG_FILES_DIR}/instset-smt.cfg
+  ${CFG_FILES_DIR}/instset-transsmt.cfg
+  ${CFG_FILES_DIR}/default-classic.org
+  ${CFG_FILES_DIR}/default-sex-classic.org
+  ${CFG_FILES_DIR}/default-smt.org
+  ${CFG_FILES_DIR}/default-transsmt.org 
+)
+INSTALL_FILES(/work FILES ${CFG_FILES})
+
+
+
+# Avida-ED Related
+# ------------------------------------------------------------------------------
+
+OPTION(AVD_GUI_PYQT
+	"Enable the PyQt GUI interface. (EXPERIMENTAL)"
+	OFF
+)
+IF(AVD_GUI_PYQT)
+	SET(AVD_PY_BINDINGS ON CACHE BOOL "Avida Python Bindings MUST be built for the PyQt GUI." FORCE)
+  FIND_PROGRAM(PYUIC pyuic DOC "Path to pyuic.  Used to compile python files from .ui files.")
+ENDIF(AVD_GUI_PYQT)
+
+
 # Experimental Boost.Python interface to avida is disabled by default.
 OPTION(AVD_PY_BINDINGS
   "Enable Python interface to Avida. (EXPERIMENTAL)"
@@ -151,135 +460,32 @@
     DOC "gccxml must be in the search path specified by your PATH environment variable in order for pyste to operate"
   )
   SET(UNIT_TESTS TRUE)
+
+  ADD_SUBDIRECTORY(source/bindings)
+  ADD_SUBDIRECTORY(source/python)
 ENDIF(AVD_PY_BINDINGS)
 
 
-# By default, build the console interface to Avida.
-OPTION(AVD_GUI_NCURSES
-  "Enable building Avida console interface."
-  OFF
-)
-# Make sure requisites are present for build of console interface.  Give
-# user feedback if they're missing.
-IF(AVD_GUI_NCURSES)
-  # Locate the ncurses screen handling package (for Avida's console
-  # interface) and the Qt graphics API (for Avida's graphic interface).
-  INCLUDE(${PROJECT_SOURCE_DIR}/CMakeModules/FindNcurses.cmake)
-  IF(NOT NCURSES_INCLUDE_PATH)
-    MESSAGE(
-      "Building Avida's console interface requires header files for the ncurses CRT screen handling package.  I can't find those header files.  If you know that the headers are installed, set the advanced variable NCURSES_INCLUDE_PATH to their include directory."
-    )
-  ENDIF(NOT NCURSES_INCLUDE_PATH)
-  IF(NOT NCURSES_LIBRARY)
-    MESSAGE(
-      "Building Avida's console interface requires the ncurses library 'libncurses', which I can't find.  If you know that the library is installed, set the advanced variable NCURSES_LIBRARY to its location."
-    )
-  ENDIF(NOT NCURSES_LIBRARY)
-ENDIF(AVD_GUI_NCURSES)
-
-# By default, build the primitive version of Avida.
-OPTION(AVD_PRIMITIVE
-  "Enable building interfaceless Avida (fastest version)."
-  ON
-)
-
-OPTION(AVD_GUI_PYQT
-	"Enable the PyQt GUI interface. (EXPERIMENTAL)"
-	OFF
-)
-IF(AVD_GUI_PYQT)
-	SET(AVD_PY_BINDINGS ON CACHE BOOL "Avida Python Bindings MUST be built for the PyQt GUI." FORCE)
-  FIND_PROGRAM(PYUIC pyuic DOC "Path to pyuic.  Used to compile python files from .ui files.")
-ENDIF(AVD_GUI_PYQT)
-
-OPTION(AVD_TASK_EVENT_GEN
-  "Enable building the task_event_gen utility"
-  OFF
-)
-
-
 # By default, compile all unit tests of primitive Avida classes.  Tests
 # are run via 'make test' under unix.
-OPTION(AVD_UNIT_TESTS
+OPTION(AVD_CMAKE_UNIT_TESTS
   "Enable building primitive unit test suites."
   OFF
 )
-IF(AVD_UNIT_TESTS)
+IF(AVD_CMAKE_UNIT_TESTS)
   SET(UNIT_TESTS TRUE)
   INCLUDE (${CMAKE_ROOT}/Modules/Dart.cmake)
   ADD_DEFINITIONS(-DENABLE_UNIT_TESTS)
   ADD_DEFINITIONS(-DUSE_tMemTrack=1)
   ENABLE_TESTING()
-ELSE(AVD_UNIT_TESTS)
+ELSE(AVD_CMAKE_UNIT_TESTS)
   REMOVE_DEFINITIONS(-DENABLE_UNIT_TESTS)
   REMOVE_DEFINITIONS(-DUSE_tMemTrack=1)
-ENDIF(AVD_UNIT_TESTS)
+ENDIF(AVD_CMAKE_UNIT_TESTS)
 
-IF(MSVC)
-  INCLUDE_DIRECTORIES(${PROJECT_SOURCE_DIR}/source/platform/win32-pthread)
-ENDIF(MSVC)
 
-# This section defines convenience variables.  They're available to
-# CMakeList.txt files in all subdirectories beneath the directory
-# containing this file..
-
-# Shortcuts to the source subdirectories.
-SET(THIRDPARTY_SRC_DIR ${PROJECT_SOURCE_DIR}/source/third-party)
-SET(TOOLS_SRC_DIR ${PROJECT_SOURCE_DIR}/source/tools)
-SET(ACTIONS_SRC_DIR ${PROJECT_SOURCE_DIR}/source/actions)
-SET(ANALYZE_SRC_DIR ${PROJECT_SOURCE_DIR}/source/analyze)
-SET(ARCHIVE_SRC_DIR ${PROJECT_SOURCE_DIR}/source/archive)
-SET(BOOST_SRC_DIR ${PROJECT_SOURCE_DIR}/source/third-party/boost)
-SET(CLASSIFICATION_SRC_DIR ${PROJECT_SOURCE_DIR}/source/classification)
-SET(CPU_SRC_DIR ${PROJECT_SOURCE_DIR}/source/cpu)
-SET(DRIVERS_SRC_DIR ${PROJECT_SOURCE_DIR}/source/drivers)
-SET(EVENT_SRC_DIR ${PROJECT_SOURCE_DIR}/source/event)
-SET(MAIN_SRC_DIR ${PROJECT_SOURCE_DIR}/source/main)
-
-# Shortcuts to the build subdirectories.
-SET(THIRDPARTY_BLD_DIR ${PROJECT_BINARY_DIR}/source/third-party)
-SET(TOOLS_BLD_DIR ${PROJECT_BINARY_DIR}/source/tools)
-SET(ACTIONS_BLD_DIR ${PROJECT_BINARY_DIR}/source/actions)
-SET(ANALYZE_BLD_DIR ${PROJECT_BINARY_DIR}/source/analyze)
-SET(ARCHIVE_BLD_DIR ${PROJECT_BINARY_DIR}/source/archive)
-SET(BOOST_SERIALIZATION_BLD_DIR ${PROJECT_BINARY_DIR}/source/third-party/boost/serialization)
-SET(CLASSSIFICATION_BLD_DIR ${PROJECT_BINARY_DIR}/source/classification)
-SET(CPU_BLD_DIR ${PROJECT_BINARY_DIR}/source/cpu)
-SET(DRIVERS_BLD_DIR ${PROJECT_BINARY_DIR}/source/drivers)
-SET(EVENT_BLD_DIR ${PROJECT_BINARY_DIR}/source/event)
-SET(MAIN_BLD_DIR ${PROJECT_BINARY_DIR}/source/main)
-
-# A list of all source subdirectories (convenient for naming
-# include-directories).
-SET(ALL_INC_DIRS
-  ${TOOLS_SRC_DIR}
-  ${ACTIONS_SRC_DIR}
-  ${ANALYZE_SRC_DIR}
-  ${ARCHIVE_SRC_DIR}
-  ${BOOST_SRC_DIR}
-  ${CLASSIFICATION_SRC_DIR}
-  ${CPU_SRC_DIR}
-  ${DRIVERS_SRC_DIR}
-  ${EVENT_SRC_DIR}
-  ${EVENT_BLD_DIR}
-  ${MAIN_SRC_DIR}
-  ${PROJECT_SOURCE_DIR}/source
-)
-
-# A list of all build subdirectories (convenient for naming
-# link-subdirecties).
-SET(ALL_LIB_DIRS
-  ${TOOLS_BLD_DIR}
-  ${ACTIONS_BLD_DIR}
-  ${ANALYZE_BLD_DIR}
-  ${ARCHIVE_BLD_DIR}
-  ${BOOST_SERIALIZATION_BLD_DIR}
-  ${CLASSIFICATION_BLD_DIR}
-  ${CPU_BLD_DIR}
-  ${DRIVERS_BLD_DIR}
-  ${EVENT_BLD_DIR}
-  ${MAIN_BLD_DIR}
-  ${LIBRARY_OUTPUT_PATH}
-)
-
-SUBDIRS(source support)
+IF(BUILD_AvidaSupportLibs)
+  IF(EXISTS source/third-party/AvidaSupportLibs/CMakeLists.txt)
+    ADD_SUBDIRECTORY(source/third-party/AvidaSupportLibs)
+  ENDIF(EXISTS source/third-party/AvidaSupportLibs/CMakeLists.txt)
+ENDIF(BUILD_AvidaSupportLibs)

Deleted: branches/uml/source/CMakeLists.txt
===================================================================
--- branches/uml/source/CMakeLists.txt	2007-05-04 19:47:55 UTC (rev 1527)
+++ branches/uml/source/CMakeLists.txt	2007-05-04 20:18:18 UTC (rev 1528)
@@ -1,11 +0,0 @@
-
-SUBDIRS(actions analyze classification cpu drivers main platform targets third-party tools utils/task_events)
-IF(AVD_SERIALIZATION)
-  SUBDIRS(archive)
-ENDIF(AVD_SERIALIZATION)
-IF(AVD_PY_BINDINGS)
-  SUBDIRS(bindings python)
-ENDIF(AVD_PY_BINDINGS)
-#IF(AVD_UNIT_TESTS)
-#  SUBDIRS(testsuites)
-#ENDIF(AVD_UNIT_TESTS)

Deleted: branches/uml/source/actions/CMakeLists.txt
===================================================================
--- branches/uml/source/actions/CMakeLists.txt	2007-05-04 19:47:55 UTC (rev 1527)
+++ branches/uml/source/actions/CMakeLists.txt	2007-05-04 20:18:18 UTC (rev 1528)
@@ -1,14 +0,0 @@
-INCLUDE_DIRECTORIES(${ALL_INC_DIRS})
-
-SET(libactions_a_SOURCES
-  cActionLibrary.cc
-  DriverActions.cc
-  EnvironmentActions.cc
-  LandscapeActions.cc
-  PopulationActions.cc
-  PrintActions.cc
-  SaveLoadActions.cc
-)
-
-ADD_LIBRARY(actions ${libactions_a_SOURCES})
-

Modified: branches/uml/source/actions/PrintActions.cc
===================================================================
--- branches/uml/source/actions/PrintActions.cc	2007-05-04 19:47:55 UTC (rev 1527)
+++ branches/uml/source/actions/PrintActions.cc	2007-05-04 20:18:18 UTC (rev 1528)
@@ -903,7 +903,7 @@
 				for (int c = 0; c < inst_count.GetSize(); c++)
 				{
 					double p = (inst_count[c] > 0) ? inst_count[c] / static_cast<double>(total_count) : 0.0;
-					site_entropy[pos] += (p > 0.0) ? - p * log(p) / log(inst_count.GetSize()) : 0.0;
+					site_entropy[pos] += (p > 0.0) ? - p * log(p) / log(static_cast<double>(inst_count.GetSize())) : 0.0;
 				}
 			}
 		}

Deleted: branches/uml/source/analyze/CMakeLists.txt
===================================================================
--- branches/uml/source/analyze/CMakeLists.txt	2007-05-04 19:47:55 UTC (rev 1527)
+++ branches/uml/source/analyze/CMakeLists.txt	2007-05-04 20:18:18 UTC (rev 1528)
@@ -1,12 +0,0 @@
-INCLUDE_DIRECTORIES(${ALL_INC_DIRS})
-
-SET(libanalyze_a_SOURCES
-  cAnalyze.cc
-  cAnalyzeGenotype.cc
-  cAnalyzeJobQueue.cc
-  cAnalyzeJobWorker.cc
-  cMutationalNeighborhood.cc
-)
-
-ADD_LIBRARY(analyze ${libanalyze_a_SOURCES})
-

Deleted: branches/uml/source/classification/CMakeLists.txt
===================================================================
--- branches/uml/source/classification/CMakeLists.txt	2007-05-04 19:47:55 UTC (rev 1527)
+++ branches/uml/source/classification/CMakeLists.txt	2007-05-04 20:18:18 UTC (rev 1528)
@@ -1,18 +0,0 @@
-INCLUDE_DIRECTORIES(${ALL_INC_DIRS})
-
-SET(libclassification_a_SOURCES
-  cClassificationManager.cc
-  cGenotype.cc
-  cGenotype_BirthData.cc
-  cGenotypeControl.cc
-  cInjectGenotype.cc
-  cInjectGenotypeControl.cc
-  cInjectGenotypeQueue.cc
-  cLineage.cc
-  cSpecies.cc
-  cSpeciesControl.cc
-  cSpeciesQueue.cc
-)
-
-ADD_LIBRARY(classification ${libclassification_a_SOURCES})
-

Deleted: branches/uml/source/cpu/CMakeLists.txt
===================================================================
--- branches/uml/source/cpu/CMakeLists.txt	2007-05-04 19:47:55 UTC (rev 1527)
+++ branches/uml/source/cpu/CMakeLists.txt	2007-05-04 20:18:18 UTC (rev 1528)
@@ -1,23 +0,0 @@
-SET(libcpu_a_SOURCES
-  cCodeLabel.cc
-  cCPUMemory.cc
-  cCPUStack.cc
-  cCPUTestInfo.cc
-  cHardwareBase.cc
-  cHardwareCPU.cc
-  cHardwareExperimental.cc
-  cHardwareGX.cc
-  cHardwareManager.cc
-  cHardwareSMT.cc
-  cHardwareStatusPrinter.cc
-  cHardwareTransSMT.cc
-  cHeadCPU.cc
-  cInstSet.cc
-  cTestCPU.cc
-  cTestCPUInterface.cc
-)
-
-INCLUDE_DIRECTORIES(${ALL_INC_DIRS})
-
-ADD_LIBRARY(cpu ${libcpu_a_SOURCES})
-

Modified: branches/uml/source/cpu/cHardwareCPU.cc
===================================================================
--- branches/uml/source/cpu/cHardwareCPU.cc	2007-05-04 19:47:55 UTC (rev 1527)
+++ branches/uml/source/cpu/cHardwareCPU.cc	2007-05-04 20:18:18 UTC (rev 1528)
@@ -3879,27 +3879,27 @@
 	switch (reg_used){
 	case 0:
 		// decrement the triggers vector index
-		organism->relativeJumpTrigger(jump_amount);
+		organism->getStateDiagram()->relativeJumpTrigger(jump_amount);
 		break;
 	case 1:
 		// decrement the guards vector index
-		organism->relativeJumpGuard(jump_amount);
+		organism->getStateDiagram()->relativeJumpGuard(jump_amount);
 		break;
 	case 2:
 		// decrement the actions vector index
-		organism->relativeJumpAction(jump_amount);
+		organism->getStateDiagram()->relativeJumpAction(jump_amount);
 		break;
 	case 3:
 		// decrement the transition labels index
-		organism->relativeJumpTransitionLabel(jump_amount);
+		organism->getStateDiagram()->relativeJumpTransitionLabel(jump_amount);
 		break;	
 	case 4:
 		// decrement the original state index
-		organism->relativeJumpOriginState(jump_amount);
+		organism->getStateDiagram()->relativeJumpOriginState(jump_amount);
 		break;
 	case 5:
 		// decement the destination state index
-		organism->relativeJumpDestinationState(jump_amount);
+		organism->getStateDiagram()->relativeJumpDestinationState(jump_amount);
 		break;
 	}
 	return true;
@@ -3914,27 +3914,27 @@
 	switch (reg_used){
 	case 0:
 		// decrement the triggers vector index
-		organism->relativeJumpTrigger(jump_amount);
+		organism->getStateDiagram()->relativeJumpTrigger(jump_amount);
 		break;
 	case 1:
 		// decrement the guards vector index
-		organism->relativeJumpGuard(jump_amount);
+		organism->getStateDiagram()->relativeJumpGuard(jump_amount);
 		break;
 	case 2:
 		// decrement the actions vector index
-		organism->relativeJumpAction(jump_amount);
+		organism->getStateDiagram()->relativeJumpAction(jump_amount);
 		break;
 	case 3:
 		// decrement the transition labels index
-		organism->relativeJumpTransitionLabel(jump_amount);
+		organism->getStateDiagram()->relativeJumpTransitionLabel(jump_amount);
 		break;	
 	case 4:
 		// decrement the original state index
-		organism->relativeJumpOriginState(jump_amount);
+		organism->getStateDiagram()->relativeJumpOriginState(jump_amount);
 		break;
 	case 5:
 		// decement the destination state index
-		organism->relativeJumpDestinationState(jump_amount);
+		organism->getStateDiagram()->relativeJumpDestinationState(jump_amount);
 		break;
 	}
 	return true;
@@ -3950,27 +3950,27 @@
 	switch (reg_used){
 	case 0:
 		// decrement the triggers vector index
-		organism->absoluteJumpTrigger(jump_amount);
+		organism->getStateDiagram()->absoluteJumpTrigger(jump_amount);
 		break;
 	case 1:
 		// decrement the guards vector index
-		organism->absoluteJumpGuard(jump_amount);
+		organism->getStateDiagram()->absoluteJumpGuard(jump_amount);
 		break;
 	case 2:
 		// decrement the actions vector index
-		organism->absoluteJumpAction(jump_amount);
+		organism->getStateDiagram()->absoluteJumpAction(jump_amount);
 		break;
 	case 3:
 		// decrement the transition labels index
-		organism->absoluteJumpTransitionLabel(jump_amount);
+		organism->getStateDiagram()->absoluteJumpTransitionLabel(jump_amount);
 		break;	
 	case 4:
 		// decrement the original state index
-		organism->absoluteJumpOriginState(jump_amount);
+		organism->getStateDiagram()->absoluteJumpOriginState(jump_amount);
 		break;
 	case 5:
 		// decement the destination state index
-		organism->absoluteJumpDestinationState(jump_amount);
+		organism->getStateDiagram()->absoluteJumpDestinationState(jump_amount);
 		break;
 	}
 	return true;
@@ -3988,27 +3988,27 @@
 	switch (reg_used){
 	case 0:
 		// decrement the triggers vector index
-		organism->absoluteJumpTrigger(jump_amount);
+		organism->getStateDiagram()->absoluteJumpTrigger(jump_amount);
 		break;
 	case 1:
 		// decrement the guards vector index
-		organism->absoluteJumpGuard(jump_amount);
+		organism->getStateDiagram()->absoluteJumpGuard(jump_amount);
 		break;
 	case 2:
 		// decrement the actions vector index
-		organism->absoluteJumpAction(jump_amount);
+		organism->getStateDiagram()->absoluteJumpAction(jump_amount);
 		break;
 	case 3:
 		// decrement the transition labels index
-		organism->absoluteJumpTransitionLabel(jump_amount);
+		organism->getStateDiagram()->absoluteJumpTransitionLabel(jump_amount);
 		break;	
 	case 4:
 		// decrement the original state index
-		organism->absoluteJumpOriginState(jump_amount);
+		organism->getStateDiagram()->absoluteJumpOriginState(jump_amount);
 		break;
 	case 5:
 		// decement the destination state index
-		organism->absoluteJumpDestinationState(jump_amount);
+		organism->getStateDiagram()->absoluteJumpDestinationState(jump_amount);
 		break;
 	}
 	return true;
@@ -4025,27 +4025,27 @@
 	switch (reg_used){
 	case 0:
 		// decrement the triggers vector index
-		organism->firstTrigger();
+		organism->getStateDiagram()->firstTrigger();
 		break;
 	case 1:
 		// decrement the guards vector index
-		organism->firstGuard();
+		organism->getStateDiagram()->firstGuard();
 		break;
 	case 2:
 		// decrement the actions vector index
-		organism->firstAction();
+		organism->getStateDiagram()->firstAction();
 		break;
 	case 3:
 		// decrement the transition labels index
-		organism->firstTransitionLabel();
+		organism->getStateDiagram()->firstTransitionLabel();
 		break;	
 	case 4:
 		// decrement the original state index
-		organism->firstOriginState();
+		organism->getStateDiagram()->firstOriginState();
 		break;
 	case 5:
 		// decement the destination state index
-		organism->firstDestinationState();
+		organism->getStateDiagram()->firstDestinationState();
 		break;
 	}
 	return true;
@@ -4062,27 +4062,27 @@
 	switch (reg_used){
 	case 0:
 		// decrement the triggers vector index
-		organism->lastTrigger();
+		organism->getStateDiagram()->lastTrigger();
 		break;
 	case 1:
 		// decrement the guards vector index
-		organism->lastGuard();
+		organism->getStateDiagram()->lastGuard();
 		break;
 	case 2:
 		// decrement the actions vector index
-		organism->lastAction();
+		organism->getStateDiagram()->lastAction();
 		break;
 	case 3:
 		// decrement the transition labels index
-		organism->lastTransitionLabel();
+		organism->getStateDiagram()->lastTransitionLabel();
 		break;	
 	case 4:
 		// decrement the original state index
-		organism->lastOriginState();
+		organism->getStateDiagram()->lastOriginState();
 		break;
 	case 5:
 		// decement the destination state index
-		organism->lastDestinationState();
+		organism->getStateDiagram()->lastDestinationState();
 		break;
 	}
 	return true;
@@ -4091,23 +4091,23 @@
 
 bool cHardwareCPU::Inst_AddTransitionLabel(cAvidaContext& ctx)
 {
-	return organism->addTransitionLabel();
+	return organism->getStateDiagram()->addTransitionLabel();
 //	return true;
 }
 
 bool cHardwareCPU::Inst_AddState(cAvidaContext& ctx)
 {
-	return organism->addState();
+	return organism->getStateDiagram()->addState();
 }
 
 bool cHardwareCPU::Inst_AddTransition(cAvidaContext& ctx)
 {
-	return organism->addTransition();
+	return organism->getStateDiagram()->addTransition();
 }
 
 bool cHardwareCPU::Inst_AddTransitionTotal(cAvidaContext& ctx)
 {
-	return organism->addTransitionTotal();
+	return organism->getStateDiagram()->addTransitionTotal();
 }
 
 

Deleted: branches/uml/source/drivers/CMakeLists.txt
===================================================================
--- branches/uml/source/drivers/CMakeLists.txt	2007-05-04 19:47:55 UTC (rev 1527)
+++ branches/uml/source/drivers/CMakeLists.txt	2007-05-04 20:18:18 UTC (rev 1528)
@@ -1,11 +0,0 @@
-INCLUDE_DIRECTORIES(${ALL_INC_DIRS})
-
-SET(libdrivers_a_SOURCES
-  cDefaultAnalyzeDriver.cc
-  cDefaultRunDriver.cc
-  cDriverManager.cc
-  cFallbackWorldDriver.cc
-)
-
-ADD_LIBRARY(drivers ${libdrivers_a_SOURCES})
-

Deleted: branches/uml/source/main/CMakeLists.txt
===================================================================
--- branches/uml/source/main/CMakeLists.txt	2007-05-04 19:47:55 UTC (rev 1527)
+++ branches/uml/source/main/CMakeLists.txt	2007-05-04 20:18:18 UTC (rev 1528)
@@ -1,37 +0,0 @@
-INCLUDE_DIRECTORIES(${ALL_INC_DIRS})
-
-SET(libmain_a_SOURCES
-  avida.cc
-  cAvidaConfig.cc
-  cBirthChamber.cc
-  cDeme.cc
-  cEnvironment.cc
-  cEventList.cc
-  cFitnessMatrix.cc
-  cGenome.cc
-  cGenomeUtil.cc
-  cInstruction.cc
-  cLandscape.cc
-  cLocalMutations.cc
-  cMutationLib.cc
-  cMutationRates.cc
-  cMxCodeArray.cc
-  cOrganism.cc
-  cPhenotype.cc
-  cPopulation.cc
-  cPopulationCell.cc
-  cPopulationInterface.cc
-  cReaction.cc
-  cReactionLib.cc
-  cReactionResult.cc
-  cResource.cc
-  cResourceCount.cc
-  cResourceLib.cc
-  cSpatialCountElem.cc
-  cSpatialResCount.cc
-  cStats.cc
-  cTaskLib.cc
-  cWorld.cc
-)
-
-ADD_LIBRARY(main ${libmain_a_SOURCES})

Modified: branches/uml/source/main/cBirthChamber.cc
===================================================================
--- branches/uml/source/main/cBirthChamber.cc	2007-05-04 19:47:55 UTC (rev 1527)
+++ branches/uml/source/main/cBirthChamber.cc	2007-05-04 20:18:18 UTC (rev 1528)
@@ -166,7 +166,7 @@
   child_genotype->IncDeferAdjust();
 
   // FOR UML branch - hjg
-  child_array[0]->setParentInfo(parent.getXMI(), parent.getBonus());
+  child_array[0]->setParentInfo(parent.getStateDiagram()->getXMI(), parent.getBonus());
 
   return true;
 }

Modified: branches/uml/source/main/cDeme.h
===================================================================
--- branches/uml/source/main/cDeme.h	2007-05-04 19:47:55 UTC (rev 1527)
+++ branches/uml/source/main/cDeme.h	2007-05-04 20:18:18 UTC (rev 1528)
@@ -25,9 +25,9 @@
 
 #include "cGermline.h"
 #include "tArray.h"
+#include "cUMLModel.h"
 
 
-
 /*! Demes are groups of cells in the population that are somehow bound together
 as a unit.  The deme object is used from within cPopulation to manage these 
 groups. */
@@ -71,6 +71,9 @@
     updates since the last time Reset() was called. */
   int GetAge() const { return _age; }
   
+  // UML Model functions
+  cUMLModel* getUMLModel() { return &umlMod; }
+  
 private:
   tArray<int> cell_ids;
   int width; //!< Width of this deme.
@@ -79,6 +82,7 @@
   int _age; //!< Age of this deme, in updates.
   
   cGermline _germline; //!< The germline for this deme, if used.
+  cUMLModel umlMod; // !< The UML model for this deme, if used.
 };
 
 #endif

Modified: branches/uml/source/main/cOrganism.cc
===================================================================
--- branches/uml/source/main/cOrganism.cc	2007-05-04 19:47:55 UTC (rev 1527)
+++ branches/uml/source/main/cOrganism.cc	2007-05-04 20:18:18 UTC (rev 1528)
@@ -47,32 +47,8 @@
 
 using namespace std;
 
-// UML load file
 
 
-std::string loadFile(const char* filename) {
-	std::string data, line; // or maybe stringstream? (strstream?)
-	std::ifstream infile;
-	infile.open(filename);
-	assert(infile.is_open());
-	
-	while (getline (infile, line))
-	{
-		data.append(line);
-		line.erase();
-	}
-	
-	//read from file; load into string/strstream, and return it.
-	
-	return data;
-}
-
-std::string cOrganism::xmi_begin = loadFile("xmi_begin");
-std::string cOrganism::xmi_end = loadFile("xmi_end");
-
-// END UML load file
-
-
 cOrganism::cOrganism(cWorld* world, cAvidaContext& ctx, const cGenome& in_genome)
   : m_world(world)
   , m_genotype(NULL)
@@ -92,7 +68,7 @@
   , m_max_executed(-1)
   , m_is_running(false)
   , m_net(NULL)
-  , parent_xmi("")	// UML sets parent XMI -- ""
+  , parent_xmi("")
 {
   // Initialization of structures...
   m_hardware = m_world->GetHardwareManager().Create(this);
@@ -124,6 +100,7 @@
   AddTrans(3,3,1);
 */
 
+/*
   trigger_info trig;
   trig.label = "<null>";
   trig.operation_id = "<null>";
@@ -190,6 +167,7 @@
   orig_state_index = 0;
   dest_state_index = 9;
 // END UML model initialization
+  */
   
 }
 
@@ -662,12 +640,13 @@
 }
 
 
+
 /// UML Functions /// 
 /// This function is a copy of DoOutput /// 
 void cOrganism::modelCheck(cAvidaContext& ctx)
 {
 
-  printXMI();
+//  printXMI();
 	
 
  assert(m_interface);
@@ -725,463 +704,14 @@
   }
   
   if (clear_input) m_input_buf.Clear();
-  
+  /*
 	m_world->GetStats().addState(states.size());
 	m_world->GetStats().addTrans(transitions.size());
 	m_world->GetStats().addTransLabel(transition_labels.size());
+  */
   
 }
 
-void cOrganism::seedModel() {
-	std::string data, line; 
-	std::ifstream infile;
-	infile.open("instinctModel");
-	assert(infile.is_open());
-	
-	while (getline (infile, line))
-	{
-		data.append(line);
-		line.erase();
-	}
-	
-	//read from file; load into string/strstream, and return it.
-	
-	//return data;
-	return;
 
-}
 
-bool cOrganism::findTransLabel(transition_label t) { 
-	for(std::vector<transition_label>::iterator i=transition_labels.begin(); i!=transition_labels.end(); ++i){
-		if ((i->trigger == t.trigger) && (i->guard == t.guard) && (i->action == t.action)) {
-//		if (i->trigger == t.trigger) {
-			return true;
-		}
-	}
-	return false;
-}
 
-bool cOrganism::findTrans(int orig, int dest, int trig, std::string gu, std::string act) 
-{
-	// the wild cards for there are 
-	// -1 for orig, dest & trigger
-	// "*" for guard, and action
-
-	for(std::vector<transition>::iterator i=transitions.begin(); i!=transitions.end(); ++i){
-		if (((orig == -1) || (orig == i->orig_state)) && 
-			((dest == -1) || (dest == i->dest_state)) && 
-			((trig == -1) || (trig == i->trans.trigger)) && 
-			((gu == "*") || (gu == i->trans.guard)) &&
-			((act == "*") || (act == i->trans.action))) { 
-						return true;
-			}
-	}
-	return false;
-}
-/*
-bool cOrganism::findTrans(int orig, int dest)
-{
-	for(std::vector<transition>::iterator i=transitions.begin(); i!=transitions.end(); ++i){
-		if((i->orig_state == orig) && (i->dest_state == dest)) {
-			return true;
-		}
-	}
-	
-	return false;
-
-}
-
-bool cOrganism::findTrans(int orig, int dest, std::string label) 
-{
-	std::string t_lab;
-	for(std::vector<transition>::iterator i=transitions.begin(); i!=transitions.end(); ++i){
-		if((i->orig_state == orig) && (i->dest_state == dest)) {
-			t_lab = (StringifyAnInt(i->trans.trigger) + i->trans.guard + i->trans.action);
-			if (t_lab == label) {
-				return true;
-			}
-		}
-	}
-	
-	return false;
-}
-
-bool cOrganism::findTrans(transition t) 
-{
-	for(std::vector<transition>::iterator i=transitions.begin(); i!=transitions.end(); ++i){
-		if((i->orig_state == t.orig_state) && (i->dest_state == t.dest_state) && 
-			(i->trans.trigger == t.trans.trigger) && (i->trans.guard == t.trans.guard) && 
-			(i->trans.action == t.trans.action)) {
-				return true;
-		}
-	}
-	
-	return false;
-}
-
-*/
-
-template <typename T>
-bool cOrganism::absoluteMoveIndex (T x, int &index, int amount )
-{
-	index = 0;
-	return relativeMoveIndex(x, index, amount);
-}
-
-template <typename T>
-bool cOrganism::relativeMoveIndex (T x, int &index, int amount )
-{
-	if (x.size() == 0) {
-		return false;
-	}
-	
-	if (amount > 0) { 
-//		index += (amount % x.size()); // this provides relative jumping
-		index += (amount % x.size());
-
-		// index is greater than vector
-		if (index >= x.size()) { 
-			index -= x.size();
-		} else if(index < 0) { 
-			index += x.size();
-		}
-	}	
-		
-	return true;
-}
-
-
-bool cOrganism::absoluteJumpTrigger(int jump_amount)
-{
-	return absoluteMoveIndex(triggers, trigger_index, jump_amount);
-}
-
-bool cOrganism::absoluteJumpGuard(int jump_amount)
-{
-	return absoluteMoveIndex(guards, guard_index, jump_amount);	
-}
-
-bool cOrganism::absoluteJumpAction(int jump_amount)
-{
-	return absoluteMoveIndex(actions, action_index, jump_amount);
-}
-
-bool cOrganism::absoluteJumpTransitionLabel(int jump_amount)
-{
-	return absoluteMoveIndex(transition_labels, trans_label_index, jump_amount);
-}
-
-bool cOrganism::absoluteJumpOriginState(int jump_amount) 
-{
-	return absoluteMoveIndex(states, orig_state_index, jump_amount);
-}
-
-bool cOrganism::absoluteJumpDestinationState(int jump_amount) 
-{
-	return absoluteMoveIndex(states, dest_state_index, jump_amount);
-}
-
-bool cOrganism::relativeJumpTrigger(int jump_amount)
-{
-	return relativeMoveIndex(triggers, trigger_index, jump_amount);
-}
-
-bool cOrganism::relativeJumpGuard(int jump_amount)
-{
-	return relativeMoveIndex(guards, guard_index, jump_amount);	
-}
-
-bool cOrganism::relativeJumpAction(int jump_amount)
-{
-	return relativeMoveIndex(actions, action_index, jump_amount);
-}
-
-bool cOrganism::relativeJumpTransitionLabel(int jump_amount)
-{
-	return relativeMoveIndex(transition_labels, trans_label_index, jump_amount);
-}
-
-bool cOrganism::relativeJumpOriginState(int jump_amount) 
-{
-	return relativeMoveIndex(states, orig_state_index, jump_amount);
-}
-
-bool cOrganism::relativeJumpDestinationState(int jump_amount) 
-{
-	return relativeMoveIndex(states, dest_state_index, jump_amount);
-}
-
-int cOrganism::getTriggerIndex()
-{
-	/*if (triggers.size() == 0) {
-		return 0;
-	} else {*/
-	
-		return trigger_index;
-	//}
-}
-
-std::string cOrganism::getGuard()
-{
-	if (guards.size() == 0) {
-		return "";
-	} else {
-		return guards[guard_index];
-	}
-}
-
-std::string cOrganism::getAction()
-{
-	if (actions.size() == 0) {
-		return "";
-	} else {
-		return actions[action_index];
-	}
-}
-
-int cOrganism::getOrigStateIndex()
-{
-	return orig_state_index;
-}
- 
-int cOrganism::getDestStateIndex()
-{
-	return dest_state_index;
-}
-
-transition_label cOrganism::getTransLabel()
-{
-	return transition_labels[trans_label_index];
-}
-
-bool cOrganism::addState()
-{	
-	state s;
-	s.identifier = states.size();
-	s.num_incoming = 0;
-	s.num_outgoing = 0;
-	states.push_back(s);
-	
-	return true;
-}
-
-bool cOrganism::addTransitionLabel()
-{
-	transition_label t;
-	t.trigger = getTriggerIndex();
-	t.guard = getGuard();
-	t.action = getAction();
-	
-	// no dupes
-	if (findTransLabel(t)){
-		return false;
-	 }
-	
-	transition_labels.push_back(t);
-	
-	// Move the transition label index to the most recently created
-	trans_label_index = transition_labels.size() - 1;
-	
-	return true;
-}
-
-
-bool cOrganism::addTransition()
-{
-	if ((states.size() == 0) || (transition_labels.size() == 0)) {
-
-		return false;
-	} 
-
-	transition t;
-	t.orig_state = getOrigStateIndex();
-	t.dest_state = getDestStateIndex();
-	// increment number of edges for a state
-	states[getOrigStateIndex()].num_outgoing += 1;
-	states[getDestStateIndex()].num_incoming += 1;
-	
-	t.trans = getTransLabel();
-	
-	// no dupes
-    if (findTrans(t.orig_state, t.dest_state, t.trans.trigger, t.trans.guard, t.trans.action)) {
-		return false;
-	}
-
-	transitions.push_back(t);
-		
-	return true;
-
-}
-
-
-bool cOrganism::addTransitionTotal()
-{
-	if ((states.size() == 0)) {
-
-		return false;
-	} 
-
-	transition t;
-	t.orig_state = getOrigStateIndex();
-	t.dest_state = getDestStateIndex();
-	
-	
-	// Do not create transition if the origin state is unreachable.
-	if ((t.orig_state != 0) && (states[t.orig_state].num_incoming == 0)) {
-		return false;
-	}
-	
-	// increment number of edges for a state
-	states[getOrigStateIndex()].num_outgoing += 1;
-	states[getDestStateIndex()].num_incoming += 1;
-
-	
-	transition_label tl;
-	tl.trigger = getTriggerIndex();
-	tl.guard = getGuard();
-	tl.action = getAction();
-	t.trans = tl;
-	
-	
-	// no dupes
-    if (findTrans(t.orig_state, t.dest_state, t.trans.trigger, t.trans.guard, t.trans.action)) {
-		return false;
-	}
-
-	transitions.push_back(t);
-	
-	// reset all indices
-	orig_state_index = 0;
-	dest_state_index = 0;
-	trigger_index = 0;
-	action_index = 0;
-	guard_index = 0;
-		
-	return true;
-
-}
-
-
-int cOrganism::numStates()
-{
-	return states.size();
-}
-
-int cOrganism::numTrans()
-{
-	return transitions.size();
-}
-
-// print the label. Change - signs to _
-std::string cOrganism::StringifyAnInt(int x) { 
-
-	std::ostringstream o;
-
-	if (x < 0) {
-		x = abs(x);
-		o << "_";
-	} 
-	
-	o << x;
-	return o.str();
-}
-
-std::string cOrganism::getXMI()
-{
-	return (xmi_begin + xmi + xmi_end);
-}
-
-void cOrganism::printXMI()
-{
-	std::string temp, temp1, temp2, temp3;
-	std::string trig_label, trig_op_label;
-
-	int s_count = 0;
-	int t_count = 0;
-	xmi = "";
-
-	// This state is the initial state; thus it should be printed regardless of whether it has an incoming
-	// edge or not.
-	if (numStates() > 0) {
-		temp = StringifyAnInt(s_count);
-		xmi += "<UML:Pseudostate xmi.id=\"s" + temp + "\" kind=\"initial\" outgoing=\"\" name=\"s";
-		xmi += temp + "\" isSpecification=\"false\"/>\n";
-		++s_count;
-	}
-	
-	for (; s_count < numStates(); ++s_count) {
-	
-		// only print if this state has an incoming edge. 
-		if ((states[s_count]).num_incoming > 0) {
-			temp = "s" + StringifyAnInt(s_count);
-			xmi+="<UML:CompositeState xmi.id=\"";
-			xmi+=temp;
-			xmi+= "\" isConcurrent=\"false\" name=\""; 
-			xmi+= temp; 
-			xmi+= "\" isSpecification=\"false\"/>\n";
-		}
-	}
-		
-		// end the set of states....
-		xmi+= "</UML:CompositeState.subvertex>\n";
-		xmi+= "</UML:CompositeState>\n";
-		xmi+= "</UML:StateMachine.top>\n";
-		
-		// start the set of transitions...
-		xmi+="<UML:StateMachine.transitions>\n";
-
-
-
-	for (t_count = 0; t_count < numTrans(); ++t_count) { 
-		// info determined from the trans itself....
-		temp = "t" + StringifyAnInt(t_count);
-		temp1 = "s" + StringifyAnInt(transitions[t_count].orig_state);
-		temp2 = "s" + StringifyAnInt(transitions[t_count].dest_state);
-		temp3 = temp + temp1 + temp2;
-
-		xmi+= "<UML:Transition xmi.id=\"" + temp3 + "\"";
-		xmi+= " source=\"" + temp1 + "\"";
-		xmi += " target=\"" + temp2 + "\" name=\"\" isSpecification=\"false\">\n";
-
-		// Get guard, trigger, and action
-//		temp = transitions[t_count].trans.trigger;
-		temp1 = transitions[t_count].trans.guard;
-		temp2 = transitions[t_count].trans.action;
-		trig_label = triggers[transitions[t_count].trans.trigger].label;
-		trig_op_label = triggers[transitions[t_count].trans.trigger].operation_id;
-
-
-		// print trigger, if any
-		if (trig_label != "<null>") {
-			xmi+= "<UML:Transition.trigger> <UML:Event> <UML:ModelElement.namespace> <UML:Namespace> ";
-			xmi+= "<UML:Namespace.ownedElement> <UML:CallEvent xmi.id=\"" + temp3;
-			xmi+= "tt\"  operation=\""+ trig_op_label + "\" ";
-			xmi+= "name=\"" + trig_label + "\" isSpecification=\"false\"/> "; 
-			xmi+= "</UML:Namespace.ownedElement> </UML:Namespace> </UML:ModelElement.namespace> ";
-			xmi+= "</UML:Event>  </UML:Transition.trigger> ";
-		}
-		
-		// print guard, if any
-		// Note: for guard to work, '<' => '&lt'
-		if (temp1 != "<null>"){
-			xmi+= "<UML:Transition.guard> <UML:Guard> <UML:Guard.expression> ";
-			xmi+= "<UML:BooleanExpression body=\"" + temp1 + "\" language=\"\"/> ";
-			xmi+= "</UML:Guard.expression> </UML:Guard> </UML:Transition.guard> ";
-		}
-		
-		// print action, if any
-		if (temp2 != "<null>") { 
-			xmi+= "<UML:Transition.effect> <UML:UninterpretedAction xmi.id=\"" + temp3 + "ui\" ";
-			xmi+= "isAsynchronous=\"false\" name=\"\" isSpecification=\"false\"> ";
-			xmi+= "<UML:Action.script> <UML:ActionExpression language=\"\" body=\""; 
-			xmi+= temp2 + "\"/> </UML:Action.script> </UML:UninterpretedAction> </UML:Transition.effect> ";		
-		}
-		
-		xmi += "</UML:Transition>\n";
-
-	
-	}
-
-	return;
-}
-

Modified: branches/uml/source/main/cOrganism.h
===================================================================
--- branches/uml/source/main/cOrganism.h	2007-05-04 19:47:55 UTC (rev 1527)
+++ branches/uml/source/main/cOrganism.h	2007-05-04 20:18:18 UTC (rev 1528)
@@ -32,6 +32,7 @@
 #include <set>
 #include <string>
 #include <vector>
+#include <sstream>
 
 #ifndef cCPUMemory_h
 #include "cCPUMemory.h"
@@ -72,8 +73,10 @@
 #ifndef tSmartArray_h
 #include "tSmartArray.h"
 #endif
+#ifndef _C_UMLSTATEDIAGRAM_H_
+#include "cUMLStateDiagram.h"
+#endif
 
-
 class cAvidaContext;
 class cCodeLabel;
 class cEnvironment;
@@ -85,35 +88,10 @@
 class cSaleItem;
 
 
-// UML Structures
 
-struct transition_label { 
-	int trigger;
-	std::string guard;
-	std::string action;
-};
 
-struct  transition {
-	int orig_state;
-	int dest_state;
-	transition_label trans;
-};
 
-struct state {
-	int identifier;
-	int num_incoming;
-	int num_outgoing;
-};
 
-struct trigger_info {
-	std::string operation_id;
-	std::string label;
-};
-
-// END UML Structures
-
-
-
 class cOrganism
 {
 protected:
@@ -149,6 +127,9 @@
   int m_max_executed;      // Max number of instruction executed before death.  
   bool m_is_running;       // Does this organism have the CPU?
   
+  // UML
+  cUMLStateDiagram* sd;
+  
   class cNetSupport
   {
   public:
@@ -163,32 +144,13 @@
   };
   cNetSupport* m_net;
 
- // UML diagram components
-
-  static std::string xmi_begin; // what comes before the organism generated xmi
-  std::string xmi; // the xmi created by pretty-printing the diagram generated by the organism
-  static std::string xmi_end; // what comes after the organism generated xmi
-  
+  // UML - Track information about the parent's model & their rewards for the model.
   std::string parent_xmi;
   std::map <std::string, double> parent_bonus;
   std::map <std::string, double> self_bonus;
-							
-  std::vector<state> states;											
-  std::vector<trigger_info> triggers;
-  std::vector<std::string> guards;
-  std::vector<std::string> actions;
-  std::vector<transition> transitions;
-  std::vector<transition_label> transition_labels;
-  
-  int orig_state_index;
-  int dest_state_index;
-  int trans_label_index;
-  int trigger_index;
-  int guard_index;
-  int action_index;
 
-  // END UML diagram components
 
+
   cOrganism(); // @not_implemented
   cOrganism(const cOrganism&); // @not_implemented
   cOrganism& operator=(const cOrganism&); // @not_implemented
@@ -329,88 +291,17 @@
   double GetNeutralMin() const;
   double GetNeutralMax() const;
   
-    // UML Stuff
-  void modelCheck(cAvidaContext& ctx);   // evaluate the model
-  void printXMI();	 // print the XMI version of the model
-  std::string getXMI (); // get the xmi string (including beginning & end read from file.)
-  std::string StringifyAnInt(int);
-  int numStates();
-  int numTrans();
-  void seedModel();
-  
-  // UML parent information tracking
-  void setParentInfo(std::string x,   std::map <std::string, double> pb) {parent_xmi = x; parent_bonus = pb;}
-//  void setParentHyBonus (double y) {parent_hy_bonus = y;}
-//  void setParentSp1Bonus (double y) {parent_sp1_bonus = y;}
+  // UML
+  void modelCheck(cAvidaContext& ctx);
+  cUMLStateDiagram* getStateDiagram() { return sd; }
+   void setParentInfo(std::string x,   std::map <std::string, double> pb) {parent_xmi = x; parent_bonus = pb;}
   double getParentBonusInfo(std::string x) {return parent_bonus[x];}
   std::map <std::string, double> getBonus() {return self_bonus;}
   void setBonusInfo(std::string x, double y) {self_bonus[x] = y;}
-  //double getParentSp1Bonus() {return parent_sp1_bonus;}
-  //void addBonus (double y) {bonus += y;}
-  //double getBonus () {return bonus;}
-  
-  // find functions
-//  bool findTrans(int, int); // find a transition between two states
-//  bool findTrans(int, int, std::string); // find a transition between two states with a specific label.
-//  bool findTrans(transition); // find a transition between two states with a specific label.
-  bool findTrans(int, int, int, std::string, std::string) ;
-  bool findTransLabel(transition_label); // find a specific transition label
+  std::string getParentXMI() { return parent_xmi; }
 
-  template <typename T>
-  bool absoluteMoveIndex (T x, int &y, int z);
   
-  template <typename T>
-  bool relativeMoveIndex (T x, int &y, int z);  
- 
-// The jump functions jump the index of the various vectors either forward (+ int) or backwards (- int)
-  bool absoluteJumpGuard(int);
-  bool absoluteJumpAction(int);
-  bool absoluteJumpTrigger(int);
-  bool absoluteJumpTransitionLabel(int);
-  bool absoluteJumpOriginState(int);
-  bool absoluteJumpDestinationState(int);
-  bool relativeJumpGuard(int);
-  bool relativeJumpAction(int);
-  bool relativeJumpTrigger(int);
-  bool relativeJumpTransitionLabel(int);
-  bool relativeJumpOriginState(int);
-  bool relativeJumpDestinationState(int);
-    
-
-// The first functions jump the index to the beginning of various vectors   
-  bool firstGuard() {guard_index = 0;}
-  bool firstAction() {action_index = 0;}
-  bool firstTrigger() {trigger_index = 0;}
-  bool firstTransitionLabel() {trans_label_index = 0;}
-  bool firstOriginState() {orig_state_index = 0;}
-  bool firstDestinationState() {dest_state_index = 0;}	
-
-// The last functions jump the index to the end of various vectors   
-  bool lastGuard() {guard_index = (guards.size()-1);}
-  bool lastAction() {action_index = (actions.size()-1);}
-  bool lastTrigger() {trigger_index = (triggers.size()-1);}
-  bool lastTransitionLabel() {trans_label_index = (transition_labels.size()-1);} 
-  bool lastOriginState() {orig_state_index = (states.size()-1);}
-  bool lastDestinationState() {dest_state_index = (states.size()-1);}
-	
   
-// The get functions get the value of the index of various vectors  
-//  std::string getTriggerIndex();
-  int getTriggerIndex();
-  std::string getGuard();
-  std::string getAction();
-  transition_label getTransLabel();
-  int getOrigStateIndex();
-  int getDestStateIndex();
-  std::string getParentXMI() {return parent_xmi;}
-
-// Add functions
-  bool addState();
-  bool addTransitionLabel();
-  bool addTransition();
-  bool addTransitionTotal();
-  // END UML functions
-  
 };
 
 

Modified: branches/uml/source/main/cPopulation.cc
===================================================================
--- branches/uml/source/main/cPopulation.cc	2007-05-04 19:47:55 UTC (rev 1527)
+++ branches/uml/source/main/cPopulation.cc	2007-05-04 20:18:18 UTC (rev 1528)
@@ -887,6 +887,24 @@
         if(source_deme.GetAge() < m_world->GetConfig().MAX_DEME_AGE.Get()) continue;
         break;
       }
+	  
+	  case 4: { 
+		// Replicate demes with working models:
+		
+		// Need for a deme to have a UML model.
+		
+		// Checks for working model: 
+			// 1) Should include the sequence diagram scenarios (if any)
+			// 2) Should satisfy the properties (if any)
+				// To conserve CPU time, only check properties if scnearios pass
+				
+			// Should be awarded partial merit for satisfying parts of some scenarios or
+			// partially satisfying a property.
+			
+			
+	  
+	  }
+	  
 			default: {
 				cerr << "ERROR: Invalid replication trigger " << rep_trigger
 				<< " in cPopulation::ReplicateDemes()" << endl;

Modified: branches/uml/source/main/cTaskLib.cc
===================================================================
--- branches/uml/source/main/cTaskLib.cc	2007-05-04 19:47:55 UTC (rev 1527)
+++ branches/uml/source/main/cTaskLib.cc	2007-05-04 20:18:18 UTC (rev 1528)
@@ -2643,7 +2643,7 @@
 double cTaskLib::Task_Trans1(cTaskContext& ctx) const
 {
 	double bonus = 0.0;
-	if (ctx.organism->findTrans(0,1,1, "ga", "aa")) {
+	if (ctx.organism->getStateDiagram()->findTrans(0,1,1, "ga", "aa")) {
 		ctx.task_success_complete = 1;	
 		bonus = 1.0;
 	}
@@ -2655,7 +2655,7 @@
 double cTaskLib::Task_Trans2(cTaskContext& ctx) const
 {
 	double bonus = 0.0;
-	if (ctx.organism->findTrans(1,2,1,"gd", "ab")){
+	if (ctx.organism->getStateDiagram()->findTrans(1,2,1,"gd", "ab")){
 			ctx.task_success_complete += 1;	
 			bonus = 1.0;
 	}
@@ -2667,7 +2667,7 @@
 double cTaskLib::Task_Trans3(cTaskContext& ctx) const
 {
 	double bonus = 0.0;
-	if (ctx.organism->findTrans(2,3,3,"gb", "ac")){
+	if (ctx.organism->getStateDiagram()->findTrans(2,3,3,"gb", "ac")){
 			bonus = 1.0;
 			ctx.task_success_complete += 1;	
 	}
@@ -2679,7 +2679,7 @@
 double cTaskLib::Task_Trans4(cTaskContext& ctx) const
 {
 	double bonus = 0.0;
-	if (ctx.organism->findTrans(3,4,2,"gc", "ad")){
+	if (ctx.organism->getStateDiagram()->findTrans(3,4,2,"gc", "ad")){
 			ctx.task_success_complete += 1;	
 			bonus = 1.0;
 	}
@@ -2691,7 +2691,7 @@
 double cTaskLib::Task_Trans5(cTaskContext& ctx) const
 {
 	double bonus = 0.0;
-	if (ctx.organism->findTrans(4,0,4,"ga","ac")){
+	if (ctx.organism->getStateDiagram()->findTrans(4,0,4,"ga","ac")){
 			ctx.task_success_complete += 1;	
 			bonus = 1.0;
 	}
@@ -2702,7 +2702,7 @@
 
 double cTaskLib::Task_NumStates(cTaskContext& ctx) const
 {
-	double ns = (double) ctx.organism->numStates();
+	double ns = (double) ctx.organism->getStateDiagram()->numStates();
 	
 	if (ns <= 5 ) {
 		return (ns/5); 
@@ -2714,7 +2714,7 @@
 
 double cTaskLib::Task_NumTrans(cTaskContext& ctx) const
 {
-	double nt = (double) ctx.organism->numTrans();
+	double nt = (double) ctx.organism->getStateDiagram()->numTrans();
 	
 	if (nt <= 5 ) {
 		return (nt/5); 
@@ -2730,7 +2730,7 @@
 	cOrganism* organism = ctx.organism;
 	std::string temp;
 
-	temp = organism->getXMI();
+	temp = organism->getStateDiagram()->getXMI();
 
 	if (temp == organism->getParentXMI()) {
 		ctx.task_success_complete += organism->getParentBonusInfo("hydra");
@@ -2849,7 +2849,7 @@
 
 double cTaskLib::Task_SpinN1(cTaskContext& ctx) const {
 	cOrganism* organism = ctx.organism;
-	std::string temp = organism->getXMI();
+	std::string temp = organism->getStateDiagram()->getXMI();
 	double temp1 = 0.0;
 	
 	if (temp == organism->getParentXMI()) { 
@@ -2859,7 +2859,7 @@
 	}
 	
 	// check if the trigger is present
-	if (organism->findTrans(-1,-1,1,"*","*")){
+	if (organism->getStateDiagram()->findTrans(-1,-1,1,"*","*")){
 		temp += 1;
 		
 		// check property

Deleted: branches/uml/source/platform/CMakeLists.txt
===================================================================
--- branches/uml/source/platform/CMakeLists.txt	2007-05-04 19:47:55 UTC (rev 1527)
+++ branches/uml/source/platform/CMakeLists.txt	2007-05-04 20:18:18 UTC (rev 1528)
@@ -1,3 +0,0 @@
-IF(AVD_ENABLE_TCMALLOC)
-  SUBDIRS(tcmalloc)
-ENDIF(AVD_ENABLE_TCMALLOC)

Deleted: branches/uml/source/platform/tcmalloc/CMakeLists.txt
===================================================================
--- branches/uml/source/platform/tcmalloc/CMakeLists.txt	2007-05-04 19:47:55 UTC (rev 1527)
+++ branches/uml/source/platform/tcmalloc/CMakeLists.txt	2007-05-04 20:18:18 UTC (rev 1528)
@@ -1,8 +0,0 @@
-
-SET(tcmalloc_SOURCES
-  system-alloc.cc
-  tcmalloc-logging.cc
-  tcmalloc.cc
-)
-
-ADD_LIBRARY(tcmalloc ${tcmalloc_SOURCES})

Deleted: branches/uml/source/targets/CMakeLists.txt
===================================================================
--- branches/uml/source/targets/CMakeLists.txt	2007-05-04 19:47:55 UTC (rev 1527)
+++ branches/uml/source/targets/CMakeLists.txt	2007-05-04 20:18:18 UTC (rev 1528)
@@ -1,6 +0,0 @@
-IF(AVD_PRIMITIVE)
-  SUBDIRS(avida)
-ENDIF(AVD_PRIMITIVE)
-IF(AVD_GUI_NCURSES)
-  SUBDIRS(avida-viewer)
-ENDIF(AVD_GUI_NCURSES)

Deleted: branches/uml/source/targets/avida/CMakeLists.txt
===================================================================
--- branches/uml/source/targets/avida/CMakeLists.txt	2007-05-04 19:47:55 UTC (rev 1527)
+++ branches/uml/source/targets/avida/CMakeLists.txt	2007-05-04 20:18:18 UTC (rev 1528)
@@ -1,33 +0,0 @@
-INCLUDE_DIRECTORIES(${ALL_INC_DIRS})
-
-ADD_EXECUTABLE(avida primitive.cc)
-
-SET(avida_target_link_libs
-  main classification cpu analyze drivers cpu tools actions analyze
-)
-
-IF(NOT MSVC)
-  SET(avida_target_link_libs
-    ${avida_target_link_libs} pthread
-  )
-ENDIF(NOT MSVC)
-
-IF(AVD_ENABLE_TCMALLOC)
-  SET(avida_target_link_libs
-    ${avida_target_link_libs} tcmalloc
-  )
-ENDIF(AVD_ENABLE_TCMALLOC)
-
-IF(AVD_SERIALIZATION)
-  SET(avida_target_link_libs
-    ${avida_target_link_libs} archive boost_serialization
-  )
-ENDIF(AVD_SERIALIZATION)
-
-SET(avida_target_link_libs
-  ${avida_target_link_libs} main
-)
-
-TARGET_LINK_LIBRARIES(avida ${avida_target_link_libs})
-LINK_DIRECTORIES(${ALL_LIB_DIRS})
-INSTALL_TARGETS(/work avida)

Deleted: branches/uml/source/targets/avida-viewer/CMakeLists.txt
===================================================================
--- branches/uml/source/targets/avida-viewer/CMakeLists.txt	2007-05-04 19:47:55 UTC (rev 1527)
+++ branches/uml/source/targets/avida-viewer/CMakeLists.txt	2007-05-04 20:18:18 UTC (rev 1528)
@@ -1,61 +0,0 @@
-INCLUDE(${PROJECT_SOURCE_DIR}/CMakeModules/FindNcurses.cmake)
-
-INCLUDE_DIRECTORIES(
-  ${ALL_INC_DIRS}
-  ${NCURSES_INCLUDE_PATH}
-)
-
-SET(libviewer_SOURCES
-  cAnalyzeScreen.cc
-  cAnalyzeView.cc
-  cBarScreen.cc
-  cEnvironmentScreen.cc
-  cHistScreen.cc
-  cMapScreen.cc
-  cMenuWindow.cc
-  cOptionsScreen.cc
-  cScreen.cc
-  cStatsScreen.cc
-  cSymbolUtil.cc
-  cTextViewerAnalyzeDriver.cc
-  cTextViewerDriver.cc
-  cTextViewerDriver_Base.cc
-  cTextWindow.cc
-  cView.cc
-  cViewInfo.cc
-  cZoomScreen.cc
-)
-ADD_LIBRARY(cursesviewer ${libviewer_SOURCES})
-
-ADD_EXECUTABLE(avida-viewer viewer.cc)
-
-SET(avida_viewer_target_link_libs
-  cursesviewer main classification cpu analyze drivers cpu tools trio actions analyze ${NCURSES_LIBRARY}
-)
-
-
-IF(NOT MSVC)
-  SET(avida_viewer_target_link_libs
-    ${avida_viewer_target_link_libs} pthread
-  )
-ENDIF(NOT MSVC)
-
-IF(AVD_ENABLE_TCMALLOC)
-  SET(avida_viewer_target_link_libs
-    ${avida_viewer_target_link_libs} tcmalloc
-  )
-ENDIF(AVD_ENABLE_TCMALLOC)
-
-IF(AVD_SERIALIZATION)
-  SET(avida_viewer_target_link_libs
-    ${avida_viewer_target_link_libs} archive boost_serialization
-  )
-ENDIF(AVD_SERIALIZATION)
-
-SET(avida_viewer_target_link_libs
-  ${avida_viewer_target_link_libs} main
-)
-
-TARGET_LINK_LIBRARIES(avida-viewer ${avida_viewer_target_link_libs})
-LINK_DIRECTORIES(${ALL_LIB_DIRS} ${THIRDPARTY_BLD_DIR}/trio)
-INSTALL_TARGETS(/work avida-viewer)

Copied: branches/uml/source/targets/unit-tests (from rev 1526, development/source/targets/unit-tests)

Modified: branches/uml/source/testsuites/CMakeLists.txt
===================================================================
--- branches/uml/source/testsuites/CMakeLists.txt	2007-05-04 19:47:55 UTC (rev 1527)
+++ branches/uml/source/testsuites/CMakeLists.txt	2007-05-04 20:18:18 UTC (rev 1528)
@@ -1,6 +1,5 @@
 
 INCLUDE_DIRECTORIES(${ALL_INC_DIRS})
-LINK_DIRECTORIES(${ALL_LIB_DIRS})
 
 #
 # This setup assumes that unit test suite source code has the same name as the
@@ -15,9 +14,9 @@
 FOREACH(TEST_SUITE ${UNITTEST_SUITES})
   ADD_EXECUTABLE(${TEST_SUITE} ${TEST_SUITE}.cc)
   IF(MSVC)
-    TARGET_LINK_LIBRARIES(${TEST_SUITE} main classification cpu analyze drivers analyze cpu tools actions main archive boost_serialization)
+    TARGET_LINK_LIBRARIES(${TEST_SUITE} avidacore)
   ELSE(MSVC)
-    TARGET_LINK_LIBRARIES(${TEST_SUITE} main classification cpu analyze drivers analyze cpu tools actions pthread main archive boost_serialization)
+    TARGET_LINK_LIBRARIES(${TEST_SUITE} avidacore pthread)
   ENDIF(MSVC)
   INSTALL_TARGETS(/work ${TEST_SUITE})
   

Deleted: branches/uml/source/tools/CMakeLists.txt
===================================================================
--- branches/uml/source/tools/CMakeLists.txt	2007-05-04 19:47:55 UTC (rev 1527)
+++ branches/uml/source/tools/CMakeLists.txt	2007-05-04 20:18:18 UTC (rev 1528)
@@ -1,45 +0,0 @@
-SET(libtools_a_SOURCES
-  cArgContainer.cc
-  cArgSchema.cc
-  cChangeList.cc
-  cConstSchedule.cc
-  cDataEntry.cc
-  cDataFile.cc
-  cDataFileManager.cc
-  cDataManager_Base.cc
-  cDefaultMessageDisplay.cc
-  cDoubleSum.cc
-  cFile.cc
-  cFixedCoords.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
-  cRunningAverage.cc
-  cSchedule.cc
-  cString.cc
-  cStringIterator.cc
-  cStringList.cc
-  cStringUtil.cc
-  cThread.cc
-  cTools.cc
-  cWeightedIndex.cc
-  cCycleCheck.cc
-)
-
-IF(AVD_SERIALIZATION)
-  SET(libtools_a_SOURCES ${libtools_a_SOURCES} nTemplateTests.cc)
-ENDIF(AVD_SERIALIZATION)
-
-INCLUDE_DIRECTORIES(${ALL_INC_DIRS})
-
-ADD_LIBRARY(tools ${libtools_a_SOURCES})

Deleted: branches/uml/source/utils/task_events/CMakeLists.txt
===================================================================
--- branches/uml/source/utils/task_events/CMakeLists.txt	2007-05-04 19:47:55 UTC (rev 1527)
+++ branches/uml/source/utils/task_events/CMakeLists.txt	2007-05-04 20:18:18 UTC (rev 1528)
@@ -1,12 +0,0 @@
-INCLUDE_DIRECTORIES(${ALL_INC_DIRS})
-
-IF(AVD_TASK_EVENT_GEN)
-  ADD_EXECUTABLE(task_event_gen task_event_gen.cc)
-  SET(task_event_gen_link_libraries tools)
-  IF(AVD_SERIALIZATION)
-    SET(task_event_gen_link_libraries ${task_event_gen_link_libraries} archive boost_serialization)
-  ENDIF(AVD_SERIALIZATION)
-  TARGET_LINK_LIBRARIES(task_event_gen ${task_event_gen_link_libraries})
-  LINK_DIRECTORIES(${ALL_LIB_DIRS})
-  INSTALL_TARGETS(/work task_event_gen)
-ENDIF(AVD_TASK_EVENT_GEN)

Modified: branches/uml/source/utils/task_events/task_event_gen.cc
===================================================================
--- branches/uml/source/utils/task_events/task_event_gen.cc	2007-05-04 19:47:55 UTC (rev 1527)
+++ branches/uml/source/utils/task_events/task_event_gen.cc	2007-05-04 20:18:18 UTC (rev 1528)
@@ -1,11 +1,11 @@
 #include <iostream>
 
-#include "../../tools/tArray.h"
-#include "../../tools/cFile.h"
-#include "../../tools/cRandom.h"
-#include "../../tools/cString.h"
-#include "../../tools/cInitFile.h"
-#include "../../tools/cStringList.h"
+#include "tArray.h"
+#include "cFile.h"
+#include "cRandom.h"
+#include "cString.h"
+#include "cInitFile.h"
+#include "cStringList.h"
 
 using namespace std;
 

Deleted: branches/uml/support/CMakeLists.txt
===================================================================
--- branches/uml/support/CMakeLists.txt	2007-05-04 19:47:55 UTC (rev 1527)
+++ branches/uml/support/CMakeLists.txt	2007-05-04 20:18:18 UTC (rev 1528)
@@ -1,2 +0,0 @@
-SUBDIRS(config)
-

Deleted: branches/uml/support/config/CMakeLists.txt
===================================================================
--- branches/uml/support/config/CMakeLists.txt	2007-05-04 19:47:55 UTC (rev 1527)
+++ branches/uml/support/config/CMakeLists.txt	2007-05-04 20:18:18 UTC (rev 1528)
@@ -1,14 +0,0 @@
-INSTALL_FILES(/work FILES
-  analyze.cfg
-  avida.cfg
-  environment.cfg
-  events.cfg
-  instset-classic.cfg
-  instset-sex-classic.cfg
-  instset-smt.cfg
-  instset-transsmt.cfg
-  default-classic.org
-  default-sex-classic.org
-  default-smt.org
-  default-transsmt.org
-)




More information about the Avida-cvs mailing list