[Avida-SVN] r1172 - branches/uml/source/main
hjg at myxo.css.msu.edu
hjg at myxo.css.msu.edu
Sun Jan 7 16:59:24 PST 2007
Author: hjg
Date: 2007-01-07 19:59:24 -0500 (Sun, 07 Jan 2007)
New Revision: 1172
Modified:
branches/uml/source/main/cOrganism.cc
Log:
Modified: branches/uml/source/main/cOrganism.cc
===================================================================
--- branches/uml/source/main/cOrganism.cc 2007-01-07 20:00:16 UTC (rev 1171)
+++ branches/uml/source/main/cOrganism.cc 2007-01-08 00:59:24 UTC (rev 1172)
@@ -744,21 +744,26 @@
// Also, currently, this is not handling the potential that this is the only
// transition with a certain integer label and thus it should be removed from the mapping
// of labels to strings...
+
+// NOT WORKING
void cOrganism::deleteTrans(int pos)
{
Graph::edge_iterator e, eend;
int count = 0;
+ int num_trans_w_lab = 0;
+ int trans_name;
int s_start_lab, s_end_lab; //, trans_lab;
State* st_start;
State* st_end;
nsm_it i;
// Transition t;
-
if ((pos < 0) || (pos > NumTrans())) {
return;
}
+
+ trans_name = getTransNumber(pos);
for (tie(e, eend) = edges(uml_state_diagram); e != eend; ++e) {
if (count == pos) {
@@ -769,11 +774,22 @@
//trans_lab = uml_state_diagram[*e].edge_label;
remove_edge(*e, uml_state_diagram);
break;
- }
+ }
+// else {
+// if (uml_state_diagram[*e].edge_label == trans_name) {
+// num_trans_w_lab ++;
+// }
+// }
count ++;
}
+ for (tie(e, eend) = edges(uml_state_diagram); e != eend; ++e) {
+ if (uml_state_diagram[*e].edge_label == trans_name) {
+ num_trans_w_lab ++;
+ }
+ }
+
for (i=states.begin(); i!=states.end(); ++i)
{
if (i->first == s_start_lab) {
@@ -784,14 +800,21 @@
}
}
+ if (num_trans_w_lab == 0){
+ // delete from transition accounts...
+ transGuardActionInfo.erase(trans_name);
+ }
+
+
if ((out_degree(*st_start, uml_state_diagram) == 0) && (in_degree(*st_start, uml_state_diagram) == 0)) {
remove_vertex(*st_start, uml_state_diagram);
}
- if ((out_degree(*st_end, uml_state_diagram) == 0) && (in_degree(*st_end, uml_state_diagram) == 0)) {
+ if ((s_start_lab != s_end_lab) && (out_degree(*st_end, uml_state_diagram) == 0) && (in_degree(*st_end, uml_state_diagram) == 0)) {
remove_vertex(*st_end, uml_state_diagram);
}
+
return;
}
More information about the Avida-cvs
mailing list