|
From: <got...@us...> - 2008-12-28 12:53:52
|
Revision: 140
http://scstudio.svn.sourceforge.net/scstudio/?rev=140&view=rev
Author: gotthardp
Date: 2008-12-28 12:53:47 +0000 (Sun, 28 Dec 2008)
Log Message:
-----------
Polishing hmsc.h: StartNode is no longer automatically created in HMsc() constructors. Must be created explicitly and assigned to HMsc using set_start().
After this change it shall be possible to create HMsc() without a start node. It's syntactically wrong, but still can be represented by msc.h structures.
Modified Paths:
--------------
trunk/src/check/liveness/deadlock_checker.cpp
trunk/src/check/pseudocode/msc_duplicators.cpp
trunk/src/data/msc.h
trunk/src/view/visio/scstudio.nsi
trunk/tests/deadlock_checker_test.cpp
trunk/tests/livelock_checker_test.cpp
trunk/tests/race_checker_test.cpp
Modified: trunk/src/check/liveness/deadlock_checker.cpp
===================================================================
--- trunk/src/check/liveness/deadlock_checker.cpp 2008-12-27 17:25:52 UTC (rev 139)
+++ trunk/src/check/liveness/deadlock_checker.cpp 2008-12-28 12:53:47 UTC (rev 140)
@@ -140,6 +140,7 @@
// else
// last_node = new ConnectionNode((ConnectionNode*) * nodes_it);
// current_hmsc = new HMsc((*nodes_it)->get_owner());
+// current_hmsc = set_start(new StartNode((*nodes_it)->get_owner()->get_start().get()));
// current_hmsc->get_start()->add_successor(last_node);
// if (!result.get())
// result = current_hmsc;
Modified: trunk/src/check/pseudocode/msc_duplicators.cpp
===================================================================
--- trunk/src/check/pseudocode/msc_duplicators.cpp 2008-12-27 17:25:52 UTC (rev 139)
+++ trunk/src/check/pseudocode/msc_duplicators.cpp 2008-12-28 12:53:47 UTC (rev 140)
@@ -249,9 +249,10 @@
{
if(is_root_element(n))
{
- //in this case duplicated Startnode was already created
- m_new_nodes.push_back(m_hmsc->get_start().get());
- set_copy(n,m_hmsc->get_start().get());
+ StartNode *new_node = new StartNode(n);
+ m_hmsc->set_start(new_node);
+ m_new_nodes.push_back(new_node);
+ set_copy(n,new_node);
}
}
Modified: trunk/src/data/msc.h
===================================================================
--- trunk/src/data/msc.h 2008-12-27 17:25:52 UTC (rev 139)
+++ trunk/src/data/msc.h 2008-12-28 12:53:47 UTC (rev 140)
@@ -679,7 +679,7 @@
/**
* \brief Start node of HMsc.
*
- * Mandatory element in HMsc, should be initialized in constructor.
+ * Mandatory element in HMsc, not included in m_nodes.
*/
StartNodePtr m_start;
@@ -692,16 +692,10 @@
HMsc(const std::string& label=""):Msc(label)
{
- // Creating start for new HMsc, setting its original and owner
- m_start = new StartNode();
- m_start->set_owner(this);
}
HMsc(HMsc* original):Msc(original)
{
- // Creating start for new HMsc, setting its original and owner
- m_start = new StartNode(original->get_start().get());
- m_start->set_owner(this);
}
virtual ~HMsc()
@@ -715,7 +709,13 @@
{
return m_start;
}
-
+
+ void set_start(const StartNodePtr& start)
+ {
+ m_start = start;
+ m_start->set_owner(this);
+ }
+
const HMscNodePtrSet& get_nodes()
{
return m_nodes;
Modified: trunk/src/view/visio/scstudio.nsi
===================================================================
--- trunk/src/view/visio/scstudio.nsi 2008-12-27 17:25:52 UTC (rev 139)
+++ trunk/src/view/visio/scstudio.nsi 2008-12-28 12:53:47 UTC (rev 140)
@@ -80,8 +80,8 @@
!define VisioRegPath "Software\Microsoft\Office\11.0\Visio\Application"
SetOutPath $INSTDIR\bin
- File "addon\Debug\scstudio.vsl"
- File "..\..\..\Debug\*.dll"
+ File "addon\Release\scstudio.vsl"
+ File "..\..\..\Release\*.dll"
${AppendRegStr} ${VisioRegPath} "AddonsPath" "$INSTDIR\bin"
Modified: trunk/tests/deadlock_checker_test.cpp
===================================================================
--- trunk/tests/deadlock_checker_test.cpp 2008-12-27 17:25:52 UTC (rev 139)
+++ trunk/tests/deadlock_checker_test.cpp 2008-12-28 12:53:47 UTC (rev 140)
@@ -19,16 +19,18 @@
HMscPtr h1(new HMsc("h1"));
HMscPtr h2(new HMsc("h2"));
+ StartNodePtr start1 = new StartNode(); h1->set_start(start1);
EndNodePtr end1(new EndNode);h1->add_node(end1);
ReferenceNodePtr p1(new ReferenceNode());h1->add_node(p1);
ReferenceNodePtr p2(new ReferenceNode());h1->add_node(p2);
ReferenceNodePtr p3(new ReferenceNode());h1->add_node(p3);
ReferenceNodePtr p4(new ReferenceNode());h1->add_node(p4);
- ReferenceNodePtr n1(new ReferenceNode());h1->add_node(n1);
- ReferenceNodePtr n2(new ReferenceNode());h1->add_node(n2);
+ StartNodePtr start2 = new StartNode(); h2->set_start(start2);
+ ReferenceNodePtr n1(new ReferenceNode());h2->add_node(n1);
+ ReferenceNodePtr n2(new ReferenceNode());h2->add_node(n2);
- h1->get_start()->add_successor(p1.get());
+ start1->add_successor(p1.get());
p1->add_successor(p2.get());
p1->add_successor(p3.get());
p3->add_successor(p4.get());
@@ -36,7 +38,7 @@
p4->add_successor(end1.get());
p3->set_msc(h2);
- h2->get_start()->add_successor(n1.get());
+ start2->add_successor(n1.get());
n1->add_successor(n2.get());
ChannelMapperPtr chm;
Modified: trunk/tests/livelock_checker_test.cpp
===================================================================
--- trunk/tests/livelock_checker_test.cpp 2008-12-27 17:25:52 UTC (rev 139)
+++ trunk/tests/livelock_checker_test.cpp 2008-12-28 12:53:47 UTC (rev 140)
@@ -18,18 +18,20 @@
HMscPtr h1(new HMsc("h1"));
HMscPtr h2(new HMsc("h2"));
-
+
+ StartNodePtr start1 = new StartNode(); h1->set_start(start1);
EndNodePtr end1(new EndNode);h1->add_node(end1);
ReferenceNodePtr p1(new ReferenceNode());h1->add_node(p1);
ReferenceNodePtr p2(new ReferenceNode());h1->add_node(p2);
ReferenceNodePtr p3(new ReferenceNode());h1->add_node(p3);
ReferenceNodePtr p4(new ReferenceNode());h1->add_node(p4);
+
+ StartNodePtr start2 = new StartNode(); h2->set_start(start2);
+ ReferenceNodePtr n1(new ReferenceNode());h2->add_node(n1);
+ ReferenceNodePtr n2(new ReferenceNode());h2->add_node(n2);
+ ReferenceNodePtr n3(new ReferenceNode());h2->add_node(n3);
- ReferenceNodePtr n1(new ReferenceNode());h1->add_node(n1);
- ReferenceNodePtr n2(new ReferenceNode());h1->add_node(n2);
- ReferenceNodePtr n3(new ReferenceNode());h1->add_node(n3);
-
- h1->get_start()->add_successor(p1.get());
+ start1->add_successor(p1.get());
p1->add_successor(p2.get());
p1->add_successor(p3.get());
p3->add_successor(p4.get());
@@ -37,7 +39,7 @@
p4->add_successor(end1.get());
p3->set_msc(h2);
- h2->get_start()->add_successor(n1.get());
+ start2->add_successor(n1.get());
n1->add_successor(n2.get());
n2->add_successor(n3.get());
n3->add_successor(n1.get());
Modified: trunk/tests/race_checker_test.cpp
===================================================================
--- trunk/tests/race_checker_test.cpp 2008-12-27 17:25:52 UTC (rev 139)
+++ trunk/tests/race_checker_test.cpp 2008-12-28 12:53:47 UTC (rev 140)
@@ -84,28 +84,32 @@
m1->glue_events(e1, e2);
HMscPtr hmsc1(new HMsc("HMsc1"));
+ StartNodePtr start1 = new StartNode();
+ hmsc1->set_start(start1);
ReferenceNodePtr r1_1(new ReferenceNode());
ReferenceNodePtr r1_2(new ReferenceNode());
EndNodePtr end1(new EndNode());
hmsc1->add_node(r1_1);
hmsc1->add_node(r1_2);
hmsc1->add_node(end1);
- hmsc1->get_start()->add_successor(r1_1.get());
- hmsc1->get_start()->add_successor(r1_2.get());
+ start1->add_successor(r1_1.get());
+ start1->add_successor(r1_2.get());
r1_1->add_successor(end1.get());
r1_2->add_successor(end1.get());
r1_1->set_msc(bmsc);
HMscPtr hmsc2(new HMsc("HMsc2"));
+ StartNodePtr start2 = new StartNode();
+ hmsc2->set_start(start2);
ReferenceNodePtr r2_1(new ReferenceNode());
ReferenceNodePtr r2_2(new ReferenceNode());
EndNodePtr end2(new EndNode());
hmsc2->add_node(r2_1);
hmsc2->add_node(r2_2);
hmsc2->add_node(end2);
- hmsc2->get_start()->add_successor(r2_1.get());
- hmsc2->get_start()->add_successor(r2_2.get());
+ start2->add_successor(r2_1.get());
+ start2->add_successor(r2_2.get());
r2_1->add_successor(end2.get());
r2_2->add_successor(end2.get());
@@ -113,9 +117,11 @@
r2_1->set_msc(bmsc);
HMscPtr hmsc3(new HMsc("HMsc3"));
+ StartNodePtr start3 = new StartNode();
+ hmsc3->set_start(start3);
ReferenceNodePtr r3_1(new ReferenceNode());
hmsc3->add_node(r2_1);
- hmsc3->get_start()->add_successor(r3_1.get());
+ start3->add_successor(r3_1.get());
r2_2->set_msc(hmsc3);
r3_1->set_msc(bmsc);
@@ -150,11 +156,13 @@
m2->glue_events(e3, e2_2);
HMscPtr hmsc1(new HMsc("HMsc"));
+ StartNodePtr start1 = new StartNode();
+ hmsc1->set_start(start1);
ReferenceNodePtr r1(new ReferenceNode());
EndNodePtr end1(new EndNode());
hmsc1->add_node(r1);
hmsc1->add_node(end1);
- hmsc1->get_start()->add_successor(r1.get());
+ start1->add_successor(r1.get());
r1->add_successor(end1.get());
r1->set_msc(bmsc);
@@ -184,11 +192,13 @@
m2->glue_events(e1_2, e2_2);
HMscPtr hmsc1(new HMsc("HMsc"));
+ StartNodePtr start1 = new StartNode();
+ hmsc1->set_start(start1);
ReferenceNodePtr r1(new ReferenceNode());
EndNodePtr end1(new EndNode());
hmsc1->add_node(r1);
hmsc1->add_node(end1);
- hmsc1->get_start()->add_successor(r1.get());
+ start1->add_successor(r1.get());
r1->add_successor(end1.get());
r1->set_msc(bmsc);
@@ -228,13 +238,15 @@
m2->glue_events(e3, e4);
HMscPtr hmsc1(new HMsc("HMsc"));
+ StartNodePtr start1 = new StartNode();
+ hmsc1->set_start(start1);
ReferenceNodePtr r1(new ReferenceNode());
ReferenceNodePtr r2(new ReferenceNode());
EndNodePtr end1(new EndNode());
hmsc1->add_node(r1);
hmsc1->add_node(r2);
hmsc1->add_node(end1);
- hmsc1->get_start()->add_successor(r1.get());
+ start1->add_successor(r1.get());
r1->add_successor(r2.get());
r2->add_successor(end1.get());
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|