[Avida-SVN] r1567 - in branches/uml/source: cpu main

hjg at myxo.css.msu.edu hjg at myxo.css.msu.edu
Thu May 17 06:39:14 PDT 2007


Author: hjg
Date: 2007-05-17 09:39:14 -0400 (Thu, 17 May 2007)
New Revision: 1567

Modified:
   branches/uml/source/cpu/cHardwareCPU.cc
   branches/uml/source/cpu/cHardwareCPU.h
   branches/uml/source/main/cOrganism.cc
   branches/uml/source/main/cOrganism.h
   branches/uml/source/main/cUMLModel.cc
   branches/uml/source/main/cUMLStateDiagram.cc
   branches/uml/source/main/cUMLStateDiagram.h
Log:
Each model now maintains its own indices used to manipulate the various state diagrams. 



Modified: branches/uml/source/cpu/cHardwareCPU.cc
===================================================================
--- branches/uml/source/cpu/cHardwareCPU.cc	2007-05-17 12:28:14 UTC (rev 1566)
+++ branches/uml/source/cpu/cHardwareCPU.cc	2007-05-17 13:39:14 UTC (rev 1567)
@@ -353,18 +353,21 @@
 					"Increment to the next position in the list"),
 	tInstLibEntry<tMethod>("prev", &cHardwareCPU::Inst_Prev, false, 
 					"Decrement to the previous position in the list"),
+/*					
 	tInstLibEntry<tMethod>("addTransLab", &cHardwareCPU::Inst_AddTransitionLabel, false, 
 					"Add a transition label"),
 	tInstLibEntry<tMethod>("addTrans", &cHardwareCPU::Inst_AddTransition, false, 
 					"Add a transition"),
+*/					
 	tInstLibEntry<tMethod>("addTransT", &cHardwareCPU::Inst_AddTransitionTotal, false, 
 					"Add a transition without adding a label."),				
 	tInstLibEntry<tMethod>("jump", &cHardwareCPU::Inst_JumpIndex, false, 
 					"Jump to a position in the list"),																	
-	tInstLibEntry<tMethod>("first", &cHardwareCPU::Inst_First, false, 
+/*	tInstLibEntry<tMethod>("first", &cHardwareCPU::Inst_First, false, 
 					"Go to the first position in the list"),		
 	tInstLibEntry<tMethod>("last", &cHardwareCPU::Inst_Last, false, 
 					"Go to the last position in the list"),	
+*/					
 	tInstLibEntry<tMethod>("jump-d", &cHardwareCPU::Inst_JumpDist, false, 
 					"Jump to a position in the list using labels."),
 	
@@ -3891,31 +3894,31 @@
 	switch (reg_used){
 	case 0:
 		// decrement the triggers vector index
-		organism->getStateDiagram()->relativeJumpTrigger(jump_amount);
+		organism->relativeJumpTrigger(jump_amount);
 		break;
 	case 1:
 		// decrement the guards vector index
-		organism->getStateDiagram()->relativeJumpGuard(jump_amount);
+		organism->relativeJumpGuard(jump_amount);
 		break;
 	case 2:
 		// decrement the actions vector index
-		organism->getStateDiagram()->relativeJumpAction(jump_amount);
+		organism->relativeJumpAction(jump_amount);
 		break;
 	case 3:
 		// decrement the transition labels index
-		organism->getStateDiagram()->relativeJumpTransitionLabel(jump_amount);
+		organism->relativeJumpTransitionLabel(jump_amount);
 		break;	
 	case 4:
 		// decrement the original state index
-		organism->getStateDiagram()->relativeJumpOriginState(jump_amount);
+		organism->relativeJumpOriginState(jump_amount);
 		break;
 	case 5:
 		// decement the destination state index
-		organism->getStateDiagram()->relativeJumpDestinationState(jump_amount);
+		organism->relativeJumpDestinationState(jump_amount);
 		break;
 	case 6: 
 		// jump the state diagram index
-		organism->relativeMoveSDIndex(jump_amount);
+		organism->relativeJumpStateDiagram(jump_amount);
 		break;		
 	}
 	return true;
@@ -3932,31 +3935,31 @@
 	switch (reg_used){
 	case 0:
 		// decrement the triggers vector index
-		organism->getStateDiagram()->relativeJumpTrigger(jump_amount);
+		organism->relativeJumpTrigger(jump_amount);
 		break;
 	case 1:
 		// decrement the guards vector index
-		organism->getStateDiagram()->relativeJumpGuard(jump_amount);
+		organism->relativeJumpGuard(jump_amount);
 		break;
 	case 2:
 		// decrement the actions vector index
-		organism->getStateDiagram()->relativeJumpAction(jump_amount);
+		organism->relativeJumpAction(jump_amount);
 		break;
 	case 3:
 		// decrement the transition labels index
-		organism->getStateDiagram()->relativeJumpTransitionLabel(jump_amount);
+		organism->relativeJumpTransitionLabel(jump_amount);
 		break;	
 	case 4:
 		// decrement the original state index
-		organism->getStateDiagram()->relativeJumpOriginState(jump_amount);
+		organism->relativeJumpOriginState(jump_amount);
 		break;
 	case 5:
 		// decement the destination state index
-		organism->getStateDiagram()->relativeJumpDestinationState(jump_amount);
+		organism->relativeJumpDestinationState(jump_amount);
 		break;
 	case 6: 
 		// jump the state diagram index
-		organism->relativeMoveSDIndex(jump_amount);
+		organism->relativeJumpStateDiagram(jump_amount);
 		break;	
 	}
 	return true;
@@ -3974,31 +3977,31 @@
 	switch (reg_used){
 	case 0:
 		// decrement the triggers vector index
-		organism->getStateDiagram()->absoluteJumpTrigger(jump_amount);
+		organism->absoluteJumpTrigger(jump_amount);
 		break;
 	case 1:
 		// decrement the guards vector index
-		organism->getStateDiagram()->absoluteJumpGuard(jump_amount);
+		organism->absoluteJumpGuard(jump_amount);
 		break;
 	case 2:
 		// decrement the actions vector index
-		organism->getStateDiagram()->absoluteJumpAction(jump_amount);
+		organism->absoluteJumpAction(jump_amount);
 		break;
 	case 3:
 		// decrement the transition labels index
-		organism->getStateDiagram()->absoluteJumpTransitionLabel(jump_amount);
+		organism->absoluteJumpTransitionLabel(jump_amount);
 		break;	
 	case 4:
 		// decrement the original state index
-		organism->getStateDiagram()->absoluteJumpOriginState(jump_amount);
+		organism->absoluteJumpOriginState(jump_amount);
 		break;
 	case 5:
 		// decement the destination state index
-		organism->getStateDiagram()->absoluteJumpDestinationState(jump_amount);
+		organism->absoluteJumpDestinationState(jump_amount);
 		break;
 	case 6: 
 		// jump the state diagram index
-		organism->absoluteMoveSDIndex(jump_amount);
+		organism->absoluteJumpStateDiagram(jump_amount);
 		break;	
 	}
 	return true;
@@ -4018,36 +4021,38 @@
 	switch (reg_used){
 	case 0:
 		// jump the triggers vector index
-		organism->getStateDiagram()->absoluteJumpTrigger(jump_amount);
+		organism->absoluteJumpTrigger(jump_amount);
 		break;
 	case 1:
 		// jump the guards vector index
-		organism->getStateDiagram()->absoluteJumpGuard(jump_amount);
+		organism->absoluteJumpGuard(jump_amount);
 		break;
 	case 2:
 		// jump the actions vector index
-		organism->getStateDiagram()->absoluteJumpAction(jump_amount);
+		organism->absoluteJumpAction(jump_amount);
 		break;
 	case 3:
 		// jump the transition labels index
-		organism->getStateDiagram()->absoluteJumpTransitionLabel(jump_amount);
+		organism->absoluteJumpTransitionLabel(jump_amount);
 		break;	
 	case 4:
 		// jump the original state index
-		organism->getStateDiagram()->absoluteJumpOriginState(jump_amount);
+		organism->absoluteJumpOriginState(jump_amount);
 		break;
 	case 5:
 		// jump the destination state index
-		organism->getStateDiagram()->absoluteJumpDestinationState(jump_amount);
+		organism->absoluteJumpDestinationState(jump_amount);
 		break;
 	case 6: 
 		// jump the state diagram index
-		organism->absoluteMoveSDIndex(jump_amount);
+		organism->absoluteJumpStateDiagram(jump_amount);
 		break;	
 	}
 	return true;
 }
 
+/*
+
 bool cHardwareCPU::Inst_First(cAvidaContext& ctx) 
 {
 	if(organism->GetCellID()==-1) return false;
@@ -4141,6 +4146,7 @@
 	return organism->getStateDiagram()->addTransitionLabel();
 //	return true;
 }
+*/
 
 bool cHardwareCPU::Inst_AddState(cAvidaContext& ctx)
 {
@@ -4149,12 +4155,15 @@
 	return organism->getStateDiagram()->addState();
 }
 
+
+/*
 bool cHardwareCPU::Inst_AddTransition(cAvidaContext& ctx)
 {
 	if(organism->GetCellID()==-1) return false;
 
 	return organism->getStateDiagram()->addTransition();
 }
+*/
 
 bool cHardwareCPU::Inst_AddTransitionTotal(cAvidaContext& ctx)
 {
@@ -4162,7 +4171,7 @@
 	
 	organism->modelCheck(ctx);
 
-	return organism->getStateDiagram()->addTransitionTotal();
+	return organism->addTransitionTotal();
 }
 
 

Modified: branches/uml/source/cpu/cHardwareCPU.h
===================================================================
--- branches/uml/source/cpu/cHardwareCPU.h	2007-05-17 12:28:14 UTC (rev 1566)
+++ branches/uml/source/cpu/cHardwareCPU.h	2007-05-17 13:39:14 UTC (rev 1567)
@@ -540,11 +540,11 @@
   bool Inst_Prev(cAvidaContext& ctx);
   bool Inst_JumpIndex(cAvidaContext& ctx);
   bool Inst_JumpDist(cAvidaContext& ctx);
-  bool Inst_AddTransitionLabel(cAvidaContext& ctx);
-  bool Inst_AddTransition(cAvidaContext& ctx);
+//  bool Inst_AddTransitionLabel(cAvidaContext& ctx);
+//  bool Inst_AddTransition(cAvidaContext& ctx);
   bool Inst_AddTransitionTotal(cAvidaContext& ctx);
-  bool Inst_Last(cAvidaContext& ctx);
-  bool Inst_First(cAvidaContext& ctx);
+//  bool Inst_Last(cAvidaContext& ctx);
+//  bool Inst_First(cAvidaContext& ctx);
 };
 
 

Modified: branches/uml/source/main/cOrganism.cc
===================================================================
--- branches/uml/source/main/cOrganism.cc	2007-05-17 12:28:14 UTC (rev 1566)
+++ branches/uml/source/main/cOrganism.cc	2007-05-17 13:39:14 UTC (rev 1567)
@@ -89,6 +89,11 @@
   if (m_world->GetConfig().NET_ENABLED.Get()) m_net = new cNetSupport();
   m_id = m_world->GetStats().GetTotCreatures();
   m_state_diag = 0;
+  m_orig_state_index = 0;
+  m_dest_state_index = 0;
+  m_trigger_index = 0;
+  m_guard_index = 0;
+  m_action_index = 0;	
   
 }
 
@@ -641,13 +646,13 @@
 	return deme.getUMLModel();
 }
 
-bool cOrganism::absoluteMoveSDIndex (int amount )
+bool cOrganism::absoluteJumpStateDiagram (int amount )
 {
 	m_state_diag = 0;
-	return relativeMoveSDIndex(amount);
+	return relativeJumpStateDiagram(amount);
 }
 
-bool cOrganism::relativeMoveSDIndex (int amount )
+bool cOrganism::relativeJumpStateDiagram (int amount )
 {
 	int size = getUMLModel()->getStateDiagramSize();
 	
@@ -682,7 +687,66 @@
 	// check if it is manipulating this diagram 
 	if (sd != m_state_diag) return false;
 	
-	return (getUMLModel()->getStateDiagram(m_state_diag)->currTrans(orig, dest, tr, gu, act));
+	cUMLStateDiagram* s = getUMLModel()->getStateDiagram(m_state_diag); 
+	s->absoluteJumpOriginState(m_orig_state_index);
+	s->absoluteJumpDestinationState(m_dest_state_index);
+	s->absoluteJumpTrigger(m_trigger_index);
+	s->absoluteJumpGuard(m_guard_index);
+	s->absoluteJumpAction(m_action_index);
+	
+	return (s->currTrans(orig, dest, tr, gu, act));
 
 }
 
+bool cOrganism::absoluteJumpGuard(int amount) 
+{
+	m_guard_index = 0;
+	return (relativeJumpGuard(amount));
+}
+
+bool cOrganism::absoluteJumpAction(int amount)
+{
+	m_action_index = 0;
+	return (relativeJumpAction(amount));
+
+}
+
+bool cOrganism::absoluteJumpTrigger(int amount)
+{
+	m_trigger_index = 0;
+	return (relativeJumpTrigger(amount));
+}
+
+bool cOrganism::absoluteJumpTransitionLabel(int amount)
+{
+	m_trans_label_index =0;
+	return (relativeJumpTransitionLabel(amount));
+}
+
+
+bool cOrganism::absoluteJumpOriginState(int amount)
+{
+	m_orig_state_index = 0;
+	return (relativeJumpOriginState(amount));
+}
+
+bool cOrganism::absoluteJumpDestinationState(int amount)
+{
+	m_dest_state_index = 0;
+	return (relativeJumpDestinationState(amount));
+}
+
+bool cOrganism::addTransitionTotal() 
+{
+	bool val;
+	val = getStateDiagram()->addTransitionTotal(m_orig_state_index, m_dest_state_index, m_trigger_index, m_guard_index, m_action_index);
+	m_orig_state_index = 0;
+	m_dest_state_index = 0;
+	m_trigger_index = 0;
+	m_action_index = 0;
+	m_guard_index = 0;
+	return val;
+}
+
+  
+  
\ No newline at end of file

Modified: branches/uml/source/main/cOrganism.h
===================================================================
--- branches/uml/source/main/cOrganism.h	2007-05-17 12:28:14 UTC (rev 1566)
+++ branches/uml/source/main/cOrganism.h	2007-05-17 13:39:14 UTC (rev 1567)
@@ -142,6 +142,12 @@
   // UML
   int m_state_diag;			// Index of the state diagram that the organism is currently
 							// manipulating
+  int m_orig_state_index;
+  int m_dest_state_index;
+  int m_trans_label_index;
+  int m_trigger_index;
+  int m_guard_index;
+  int m_action_index;							
   
   class cNetSupport
   {
@@ -303,13 +309,40 @@
   void modelCheck(cAvidaContext& ctx);
   cUMLModel* getUMLModel();
   int getStateDiagramIndex() { return m_state_diag; } 
-  bool absoluteMoveSDIndex (int);
-  bool relativeMoveSDIndex (int); 
-  bool lastStateDiagram () { m_state_diag = getUMLModel()->getStateDiagramSize(); }
-  bool firstStateDiagram() { m_state_diag = 0; }  
+//  bool lastStateDiagram () { m_state_diag = getUMLModel()->getStateDiagramSize(); }
+//  bool firstStateDiagram() { m_state_diag = 0; }  
   bool currTrans (int, int, int, std::string, std::string, std::string); 
   cUMLStateDiagram* getStateDiagram();
+
+ 
+// 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 absoluteJumpStateDiagram (int);
+
+  bool relativeJumpGuard(int amount) { m_guard_index += amount; return true;}
+  bool relativeJumpAction(int amount) { m_action_index += amount; return true;}
+  bool relativeJumpTrigger(int amount) { m_trigger_index += amount; return true;}
+  bool relativeJumpTransitionLabel(int amount) { m_trans_label_index += amount; return true;}
+  bool relativeJumpOriginState(int amount) { m_orig_state_index += amount; return true;}
+  bool relativeJumpDestinationState(int amount) { m_dest_state_index += amount; return true;}
+  bool relativeJumpStateDiagram (int); 
   
+  bool addTransitionTotal();
+
+  
+  /*
+    int m_orig_state_index;
+  int m_dest_state_index;
+  int m_trigger_index;
+  int m_guard_index;
+  int m_action_index;							
+  */
+  
 };
 
 

Modified: branches/uml/source/main/cUMLModel.cc
===================================================================
--- branches/uml/source/main/cUMLModel.cc	2007-05-17 12:28:14 UTC (rev 1566)
+++ branches/uml/source/main/cUMLModel.cc	2007-05-17 13:39:14 UTC (rev 1567)
@@ -95,7 +95,7 @@
   
   // null trans Init state to Idle state
   soft_sense->absoluteJumpDestinationState(1);
-  soft_sense->addTransitionTotal();
+  soft_sense->addTransitionTotal(0, 1, 0, 0, 0);
   
   
   // Temperature Sensor
@@ -198,13 +198,13 @@
 	
 	// action: 
 	// TempSensor.getOpState()
-	temp_bonus += soft_sense->findTrans(-1, -1, -1, "*", "^TempSensor.getOpState()");	
+	temp_bonus = soft_sense->findTrans(-1, -1, -1, "*", "^TempSensor.getOpState()");	
 	self_bonus["seq_d_1"] = temp_bonus;
 	bonus += temp_bonus;
 			
 	// trigger:
 	// setTempOpState(op_state)
-	temp_bonus += soft_sense->findTrans(-1, -1, 1, "*", "*");
+	temp_bonus = soft_sense->findTrans(-1, -1, 1, "*", "*");
 	self_bonus["seq_d_2"] = temp_bonus;
 	bonus += temp_bonus;		
 
@@ -213,18 +213,18 @@
 	
 	// trigger:
 	// getOpState()
-	temp_bonus += temp_sense->findTrans(-1, -1, 1, "*", "*");		
+	temp_bonus = temp_sense->findTrans(-1, -1, 1, "*", "*");		
 	self_bonus["seq_d_3"] = temp_bonus;
 	bonus += temp_bonus;
 	
 			
 	// action:
 	// op_state := 1
-	temp_bonus += temp_sense->findTrans(-1, -1, -1, "*", "op_state:=1");		
+	temp_bonus = temp_sense->findTrans(-1, -1, -1, "*", "op_state:=1");		
 	self_bonus["seq_d_4"] = temp_bonus;
 	bonus += temp_bonus;
 
-	temp_bonus += temp_sense->findTrans(-1, -1, -1, "*", "^SoftwareSensor.setTempOpState(op_state)");
+	temp_bonus = temp_sense->findTrans(-1, -1, -1, "*", "^SoftwareSensor.setTempOpState(op_state)");
 	self_bonus["seq_d_5"] = temp_bonus;
 	bonus += temp_bonus;
 	

Modified: branches/uml/source/main/cUMLStateDiagram.cc
===================================================================
--- branches/uml/source/main/cUMLStateDiagram.cc	2007-05-17 12:28:14 UTC (rev 1566)
+++ branches/uml/source/main/cUMLStateDiagram.cc	2007-05-17 13:39:14 UTC (rev 1567)
@@ -10,23 +10,9 @@
   trigger_index = 0;
   guard_index = 0;
   action_index = 0;
+
   xmi = "";
-/*	
-  trigger_info trig;
-  trig.label = "<null>";
-  trig.operation_id = "<null>";
-  triggers.push_back(trig);
-  trig.label = "setTempOpState";
-  trig.operation_id = "XDE-4437EBF1-9C42-4EB4-B7CF-415697B567CD";
-  triggers.push_back(trig);
-  trig.label = "setTempData";
-  trig.operation_id = "XDE-9517D6BA-8666-4A82-AFEA-62D60FE37B07";
-  triggers.push_back(trig);
-  guards.push_back("<null>");
-  actions.push_back("<null>");
-  actions.push_back("^TempSensor.getOpState()");
-  actions.push_back("^TempSensor.getTempData()");
- */
+
    
   // initialize w/ 10 states
   
@@ -38,41 +24,6 @@
 	states.push_back(s);
   }
    
-/*
-  // initialize transitions
-  transition t;
- 
-  
-  // State 0->1
-  t.orig_state = 0;
-  t.dest_state = 1;
-  states[0].num_outgoing += 1;
-  states[1].num_incoming += 1;  
-  t.trans.trigger = 0;
-  t.trans.guard = "<null>";
-  t.trans.action = "<null>";
-  transitions.push_back(t);
-
-  // State 1->2
-  t.orig_state = 1;
-  t.dest_state = 2;
-  states[1].num_outgoing += 1;
-  states[2].num_incoming += 1; 
-  t.trans.trigger = 0;
-  t.trans.guard = "<null>";
-  t.trans.action = "^TempSensor.getTempData()";
-  transitions.push_back(t);
-  
-  // State 2->1
-  t.orig_state = 2;
-  t.dest_state = 1;
-  states[2].num_outgoing += 1;
-  states[1].num_incoming += 1; 
-  t.trans.trigger =  2;
-  t.trans.guard = "<null>";
-  t.trans.action = "<null>";
-  transitions.push_back(t);
-*/  
 }
 
 cUMLStateDiagram::~cUMLStateDiagram()
@@ -83,7 +34,6 @@
 bool cUMLStateDiagram::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;
 		}
 	}
@@ -153,6 +103,7 @@
 }
 
 
+
 bool cUMLStateDiagram::absoluteJumpTrigger(int jump_amount)
 {
 	return absoluteMoveIndex(triggers, trigger_index, jump_amount);
@@ -183,6 +134,7 @@
 	return absoluteMoveIndex(states, dest_state_index, jump_amount);
 }
 
+/*
 bool cUMLStateDiagram::relativeJumpTrigger(int jump_amount)
 {
 	return relativeMoveIndex(triggers, trigger_index, jump_amount);
@@ -212,6 +164,7 @@
 {
 	return relativeMoveIndex(states, dest_state_index, jump_amount);
 }
+*/
 
 int cUMLStateDiagram::getTriggerIndex()
 {
@@ -290,6 +243,8 @@
 	return true;
 }
 
+/*
+// Broken - 5/17
 bool cUMLStateDiagram::addTransitionLabel()
 {
 	transition_label t;
@@ -306,13 +261,14 @@
 	
 	// Move the transition label index to the most recently created
 	trans_label_index = transition_labels.size() - 1;
-	
-	return true;
+
+	return false;
 }
 
-
+// Broken - 5/17
 bool cUMLStateDiagram::addTransition()
 {
+	/*
 	if ((states.size() == 0) || (transition_labels.size() == 0)) {
 
 		return false;
@@ -333,26 +289,35 @@
 	}
 
 	transitions.push_back(t);
+	
 		
 	return true;
 
 }
+*/
 
 
-bool cUMLStateDiagram::addTransitionTotal()
+bool cUMLStateDiagram::addTransitionTotal(int o, int d, int t, int g, int a)
 {
 	if ((states.size() == 0)) {
 
 		return false;
 	} 
 
-	transition t;
-	t.orig_state = getOrigStateIndex();
-	t.dest_state = getDestStateIndex();
+	// Initialize the indices
+	absoluteMoveIndex(states, orig_state_index, o);
+	absoluteMoveIndex(states, dest_state_index, d);
+	absoluteMoveIndex(triggers, trigger_index, t);
+	absoluteMoveIndex(guards, guard_index, g);
+	absoluteMoveIndex(actions, action_index, a);
+
+	transition trany;
+	trany.orig_state = getOrigStateIndex();
+	trany.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)) {
+	if ((trany.orig_state != 0) && (states[trany.orig_state].num_incoming == 0)) {
 		return false;
 	}
 	
@@ -365,32 +330,30 @@
 	tl.trigger = getTriggerIndex();
 	tl.guard = getGuard();
 	tl.action = getAction();
-	t.trans = tl;
+	trany.trans = tl;
 	
 	
 	// no dupes
-    if (findTrans(t.orig_state, t.dest_state, t.trans.trigger, t.trans.guard, t.trans.action)) {
+    if (findTrans(trany.orig_state, trany.dest_state, trany.trans.trigger, trany.trans.guard, trany.trans.action)) {
 		return false;
 	}
 	
-	int q1 = numTrans();
 
-
-	transitions.push_back(t);
+	transitions.push_back(trany);
 	
-	int q = numTrans();
 	
-	// reset all indices
+/*	// reset all indices
 	orig_state_index = 0;
 	dest_state_index = 0;
 	trigger_index = 0;
 	action_index = 0;
-	guard_index = 0;
+	guard_index = 0;*/
 		
 	return true;
 
 }
 
+
 bool cUMLStateDiagram::currTrans(int orig, int dest, std::string tr, std::string gu, std::string act)
 {
 
@@ -408,6 +371,7 @@
 }
 
 
+
 int cUMLStateDiagram::numStates()
 {
 	return states.size();

Modified: branches/uml/source/main/cUMLStateDiagram.h
===================================================================
--- branches/uml/source/main/cUMLStateDiagram.h	2007-05-17 12:28:14 UTC (rev 1566)
+++ branches/uml/source/main/cUMLStateDiagram.h	2007-05-17 13:39:14 UTC (rev 1567)
@@ -39,13 +39,14 @@
   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;
+
   
   std::string xmi;
 
@@ -67,12 +68,16 @@
   bool currTrans(int, int, std::string, std::string, std::string);
 
 
+// These functions have been moved to the organism.
+
   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);
@@ -80,13 +85,18 @@
   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 and last functions do not work since each org maintains its own info about the
+// state diagram, but we don't necessarily know to which state diagram it is referring. 
 
 // The first functions jump the index to the beginning of various vectors   
   bool firstGuard() {guard_index = 0;}
@@ -103,10 +113,12 @@
   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();
@@ -114,15 +126,17 @@
   int getOrigStateIndex();
   int getDestStateIndex();
 
+
 // Add functions
   bool addState();
-  bool addTransitionLabel();
-  bool addTransition();
-  bool addTransitionTotal();
+//  bool addTransitionLabel();
+//  bool addTransition();
+  bool addTransitionTotal(int, int, int, int, int);
   bool addTrigger(std::string, std::string);
   bool addGuard(std::string);
   bool addAction(std::string);
   // END UML functions
+  
 
 };
 




More information about the Avida-cvs mailing list