You can subscribe to this list here.
| 2008 |
Jan
|
Feb
|
Mar
(7) |
Apr
(42) |
May
(45) |
Jun
(5) |
Jul
(2) |
Aug
(6) |
Sep
|
Oct
(4) |
Nov
(12) |
Dec
(18) |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2009 |
Jan
(38) |
Feb
(15) |
Mar
(17) |
Apr
(25) |
May
(9) |
Jun
(8) |
Jul
(18) |
Aug
(3) |
Sep
(114) |
Oct
(58) |
Nov
(49) |
Dec
(42) |
| 2010 |
Jan
(20) |
Feb
(80) |
Mar
(72) |
Apr
(26) |
May
(76) |
Jun
(6) |
Jul
(19) |
Aug
(28) |
Sep
(119) |
Oct
(6) |
Nov
(11) |
Dec
(15) |
| 2011 |
Jan
(10) |
Feb
(25) |
Mar
(22) |
Apr
(11) |
May
(14) |
Jun
(12) |
Jul
(55) |
Aug
(18) |
Sep
(14) |
Oct
(9) |
Nov
(6) |
Dec
(39) |
| 2012 |
Jan
(53) |
Feb
(18) |
Mar
(35) |
Apr
(34) |
May
(5) |
Jun
(40) |
Jul
(8) |
Aug
(4) |
Sep
(30) |
Oct
(19) |
Nov
(8) |
Dec
(23) |
| 2013 |
Jan
(28) |
Feb
(39) |
Mar
(146) |
Apr
(5) |
May
(79) |
Jun
(11) |
Jul
(21) |
Aug
|
Sep
(5) |
Oct
(4) |
Nov
(10) |
Dec
(1) |
| 2014 |
Jan
(18) |
Feb
(8) |
Mar
|
Apr
(1) |
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
| 2015 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
(1) |
| 2016 |
Jan
(7) |
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
|
From: <xb...@us...> - 2013-07-01 15:04:53
|
Revision: 1838
http://sourceforge.net/p/scstudio/code/1838
Author: xborza
Date: 2013-07-01 15:04:48 +0000 (Mon, 01 Jul 2013)
Log Message:
-----------
edited msc_types.h, msc_types.cpp, document.cpp / TOWSTRING_PATH
Modified Paths:
--------------
trunk/src/data/msc_types.cpp
trunk/src/data/msc_types.h
trunk/src/view/visio/addon/document.cpp
Modified: trunk/src/data/msc_types.cpp
===================================================================
--- trunk/src/data/msc_types.cpp 2013-06-29 10:11:44 UTC (rev 1837)
+++ trunk/src/data/msc_types.cpp 2013-07-01 15:04:48 UTC (rev 1838)
@@ -63,4 +63,53 @@
return result;
}
+/* this function shows correct path to file in Visio add-on*/
+std::wstring TOWSTRING_PATH(const std::string& s)
+{
+#ifndef WIN32
+ //call TOWSRTING normally
+ return TOWSTRING(s)
+#else
+ std::wstring result;
+ bool slash = false;
+ unsigned int posit = 0;
+ for(size_t i=0; i < s.size();)
+ {
+ posit = s.find('\\',posit+1);
+
+ if(posit == std::string::npos)
+ posit = s.size();
+ else
+ slash = true;
+
+ std::string sub = s.substr(i,posit-i);
+ i += posit-i+1;
+
+ size_t size = sub.length();
+ const char* pos = sub.data();
+
+ wchar_t wc;
+
+ while(size > 0)
+ {
+ int inc = mbtowc(&wc, pos, size);
+ if(inc > 0)
+ {
+ result.push_back(wc);
+
+ size = size - inc;
+ pos = pos + inc;
+ }
+ }
+
+ if(slash)
+ {
+ result.append(L"\\\\");
+ slash = false;
+ }
+ }
+ return result;
+#endif
+}
+
// $Id$
Modified: trunk/src/data/msc_types.h
===================================================================
--- trunk/src/data/msc_types.h 2013-06-29 10:11:44 UTC (rev 1837)
+++ trunk/src/data/msc_types.h 2013-07-01 15:04:48 UTC (rev 1838)
@@ -54,6 +54,9 @@
std::wstring SCMSC_EXPORT TOWSTRING(const std::string& s);
+/* this function shows correct path to file in Visio add-on*/
+std::wstring SCMSC_EXPORT TOWSTRING_PATH(const std::string& s);
+
//! Helper class to construct a message for Reporter::print()
/*!
* reporter->print(stringize() << "value: " << number);
Modified: trunk/src/view/visio/addon/document.cpp
===================================================================
--- trunk/src/view/visio/addon/document.cpp 2013-06-29 10:11:44 UTC (rev 1837)
+++ trunk/src/view/visio/addon/document.cpp 2013-07-01 15:04:48 UTC (rev 1838)
@@ -646,6 +646,12 @@
accelItemSelectNumberingGroup->Key = 'N';
accelItemSelectNumberingGroup->Control = true;
accelItemSelectNumberingGroup->Alt = true;
+ //Message Jumping left
+ Visio::IVAccelItemPtr accelItemMessageJumpingLeft = accelTable->AccelItems->Add();
+ accelItemMessageJumpingLeft->CmdNum = itemMessageJumpingLeft->CmdNum;
+ accelItemMessageJumpingLeft->Key = VK_LEFT;
+ accelItemMessageJumpingLeft->Control = false;
+ // accelItemMessageJumpingLeftCopy->Alt = true;
//Message Jumping left as copy
Visio::IVAccelItemPtr accelItemMessageJumpingLeftCopy = accelTable->AccelItems->Add();
accelItemMessageJumpingLeftCopy->CmdNum = itemMessageJumpingLeftCopy->CmdNum;
@@ -2087,7 +2093,7 @@
if(drawing.empty())
{
m_reportView->Print(RS_ERROR,
- stringize() << "Import failed. Cannot load '" << TOWSTRING(filename) << "'.");
+ stringize() << "Import failed. Cannot load '" << TOWSTRING_PATH(filename) << "'.");
return;
}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <xb...@us...> - 2013-06-29 10:11:48
|
Revision: 1837
http://sourceforge.net/p/scstudio/code/1837
Author: xborza
Date: 2013-06-29 10:11:44 +0000 (Sat, 29 Jun 2013)
Log Message:
-----------
bug[ordering arrow(2 instances on coregion(Visio falls down-repaint,verify..)] fixed
extract.cpp
Modified Paths:
--------------
trunk/src/view/visio/addon/extract.cpp
Modified: trunk/src/view/visio/addon/extract.cpp
===================================================================
--- trunk/src/view/visio/addon/extract.cpp 2013-06-27 15:53:36 UTC (rev 1836)
+++ trunk/src/view/visio/addon/extract.cpp 2013-06-29 10:11:44 UTC (rev 1837)
@@ -578,9 +578,12 @@
{
// the position is determined from the arrow
if(connect1->FromPart == visBegin && connect2->FromPart == visEnd)
- dynamic_cast<CoregionArea*>(event1->second.get())->add_successor_rel(event1->second.get(), event2->second.get());
+ // -- can't retype MessageEvent to coregion! - Visio falls down
+ //dynamic_cast<CoregionArea*>(event1->second.get())->add_successor_rel(event1->second.get(), event2->second.get());
+ area->add_successor_rel(event1->second.get(), event2->second.get());
else if(connect2->FromPart == visBegin && connect1->FromPart == visEnd)
- dynamic_cast<CoregionArea*>(event2->second.get())->add_successor_rel(event2->second.get(), event1->second.get());
+ //dynamic_cast<CoregionArea*>(event2->second.get())->add_successor_rel(event2->second.get(), event1->second.get());
+ area->add_successor_rel(event2->second.get(), event1->second.get());
else
{
PrintError(stringize() << page_name << ": "
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <xb...@us...> - 2013-06-27 15:53:40
|
Revision: 1836
http://sourceforge.net/p/scstudio/code/1836
Author: xborza
Date: 2013-06-27 15:53:36 +0000 (Thu, 27 Jun 2013)
Log Message:
-----------
bug #75(Race marks remain even after repaint) fixed
Modified Paths:
--------------
trunk/src/view/visio/addon/extract.cpp
Modified: trunk/src/view/visio/addon/extract.cpp
===================================================================
--- trunk/src/view/visio/addon/extract.cpp 2013-06-27 12:00:28 UTC (rev 1835)
+++ trunk/src/view/visio/addon/extract.cpp 2013-06-27 15:53:36 UTC (rev 1836)
@@ -55,12 +55,14 @@
case ST_TIME_INTERVAL:
case ST_TIME_DIRECTED:
case ST_TIME_ABSOLUTE:
+ //when user calls repaint function, ST_MARKER_EVENT shoud be removed too
+ case ST_MARKER_EVENT:
// known symbols will be repainted
selection->Select(shape, Visio::visSelect);
break;
case ST_PICTURE:
- case ST_MARKER_EVENT:
+ //case ST_MARKER_EVENT:
case ST_UNKNOWN:
// keep unknown and shapes not yet supported in msc.h
break;
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <xb...@us...> - 2013-06-27 12:00:33
|
Revision: 1835
http://sourceforge.net/p/scstudio/code/1835
Author: xborza
Date: 2013-06-27 12:00:28 +0000 (Thu, 27 Jun 2013)
Log Message:
-----------
bug #68(message snapping malfunction) fixed
Modified Paths:
--------------
trunk/src/view/visio/addon/addon.cpp
trunk/src/view/visio/addon/messageSnapping.cpp
Modified: trunk/src/view/visio/addon/addon.cpp
===================================================================
--- trunk/src/view/visio/addon/addon.cpp 2013-06-25 15:03:50 UTC (rev 1834)
+++ trunk/src/view/visio/addon/addon.cpp 2013-06-27 12:00:28 UTC (rev 1835)
@@ -489,7 +489,7 @@
TRACE("CStudioAddon::HandleVisioEvent() unexpected NULL");
return E_FAIL;
}
-
+
unsigned short event = nEventCode;
switch (event)
{
Modified: trunk/src/view/visio/addon/messageSnapping.cpp
===================================================================
--- trunk/src/view/visio/addon/messageSnapping.cpp 2013-06-25 15:03:50 UTC (rev 1834)
+++ trunk/src/view/visio/addon/messageSnapping.cpp 2013-06-27 12:00:28 UTC (rev 1835)
@@ -535,9 +535,11 @@
MscPoint endPoint(CShapeUtils::getShapeCell(msgShape,endPointX),
CShapeUtils::getShapeCell(msgShape,isBegin ? "BeginY" : "EndY"));
- MsgJumpDirection closestInstDir = isBegin ? MSJUMP_LEFT : MSJUMP_RIGHT;
- if(direction == MSG_LEFT)
- closestInstDir = (MsgJumpDirection)!closestInstDir;
+ MsgJumpDirection closestInstDir;
+ closestInstDir = (isBegin ? MSJUMP_LEFT : MSJUMP_RIGHT);
+ if(direction == MSG_LEFT){
+ closestInstDir = (closestInstDir == MSJUMP_LEFT ? MSJUMP_RIGHT : MSJUMP_LEFT);
+ }
std::vector<Visio::IVShapePtr> inst = CMessageSnapping::getIntersectInstances(msgShape, endPoint.get_y(), MSSNAP_STRAIGHTEN);
Visio::IVShapePtr instance = CMessageJump::getClosestInstanceFromShape(endPoint, msgShape, inst, closestInstDir);
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <xb...@us...> - 2013-06-25 15:03:52
|
Revision: 1834
http://sourceforge.net/p/scstudio/code/1834
Author: xborza
Date: 2013-06-25 15:03:50 +0000 (Tue, 25 Jun 2013)
Log Message:
-----------
bug #76(User-friendly selection of instances for Message Sequence)fixed - HELP updated
Modified Paths:
--------------
trunk/doc/help/frontend/automatic_drawing.body.htm
Modified: trunk/doc/help/frontend/automatic_drawing.body.htm
===================================================================
--- trunk/doc/help/frontend/automatic_drawing.body.htm 2013-06-25 11:24:32 UTC (rev 1833)
+++ trunk/doc/help/frontend/automatic_drawing.body.htm 2013-06-25 15:03:50 UTC (rev 1834)
@@ -75,15 +75,11 @@
</p>
<ul>
<li>
- if there are no instances selected, all instances on the page are taken;
+ if there are no instances selected, all instances on the page are taken (there have to be at least 2 instances on the page);
</li>
<li>
- if there is exactly one instance selected, then SCStudio waits for
- another instance to be selected;
+ otherwise, all selected instances (at least 2) are taken into account.
</li>
- <li>
- otherwise, all selected instances are taken into account.
- </li>
</ul>
From all of these instances, the leftmost and the rightmost instances are
recognized as the first and last instance in the message sequence. (During
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <xf...@us...> - 2013-06-25 11:24:35
|
Revision: 1833
http://sourceforge.net/p/scstudio/code/1833
Author: xfarmad
Date: 2013-06-25 11:24:32 +0000 (Tue, 25 Jun 2013)
Log Message:
-----------
tro_test15 result update
Added Paths:
-----------
trunk/tests/time_relevant_ordering/tro_test15.tex.result1
Added: trunk/tests/time_relevant_ordering/tro_test15.tex.result1
===================================================================
--- trunk/tests/time_relevant_ordering/tro_test15.tex.result1 (rev 0)
+++ trunk/tests/time_relevant_ordering/tro_test15.tex.result1 2013-06-25 11:24:32 UTC (rev 1833)
@@ -0,0 +1,324 @@
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%% You can download Msc5.sty package from:
+%%%% http://is.muni.cz/www/374320/msc5.sty
+%%%% Documentation:
+%%%% http://is.muni.cz/www/374320/manualNew.pdf
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+
+\documentclass{article}
+\usepackage{msc5}
+\usepackage[a4paper]{geometry}
+\begin{document}
+\drawframe{no}
+\section*{tro\_test15}
+\setmsckeyword{Pcap}
+\begin{msc}{}
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%% Configuration header
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%%%% Scale:
+\def\mscScaleX{1.0}
+\def\mscScaleY{1.0}
+
+%%%% Lines width:
+\pgfsetlinewidth{0.4pt}
+
+%%%% Picture box width:
+\setlength{\envinstdist}{18mm*\real{\mscScaleX}}
+
+%%%% Picture box y-padding:
+\setlength{\topheaddist}{\topheaddist}
+\setlength{\bottomfootdist}{\bottomfootdist}
+
+%%%% Instance first and last level height:
+\setlength{\firstlevelheight}{13mm*\real{\mscScaleY}}
+\setlength{\lastlevelheight}{11mm*\real{\mscScaleY}}
+
+%%%% Levels:
+\def\levelA{8mm*\real{\mscScaleY}}
+\def\levelB{14mm*\real{\mscScaleY}}
+
+\setlength{\levelheight}{\levelA}
+
+
+%%%% Slope:
+\def\slopeA{0mm*\real{\mscScaleY}}
+\def\slopeB{\levelB+\levelA}
+
+
+%%%% Width od time interval:
+\def\timeIntervalWidthA{7mm*\real{\mscScaleX}}
+
+
+
+%%%% Time interval slope:
+\def\timeIntervalSlopeA{\levelA}
+\def30mm{\levelA+\levelA+\levelB+\levelA+\levelA+\levelA+\levelA+\levelA+\levelA+\levelA+\levelA+\levelA+\levelA+\levelA+\levelA+\levelA+\levelA+\levelA+\levelA+\levelA+\levelA+\levelA+\levelA+\levelA+\levelA+\levelA+11mm+29.6766mm}
+\def\timeIntervalSlopeC{\def\timeIntervalSlopeD{\def22mm{\levelA+\levelB+\levelA+\levelA+\levelA+\levelA+\levelA+\levelA+\levelA+\levelA+\levelA+\levelA+\levelA+\levelA+\levelA+\levelA+\levelA+\levelA+\levelA+\levelA+\levelA+\levelA+\levelA+\levelA+\levelA+11mm+21.6766mm}
+\def\timeIntervalSlopeF{\def\timeIntervalSlopeG{\def\timeIntervalSlopeH{%%%% Ordering width:
+\def\orderingWidthA{3mm*\real{\mscScaleX}}
+
+
+%%%% Width of instance head/foot:
+\def\instanceWidthA{15mm*\real{\mscScaleX}}
+
+\setlength{\instwidth}{\instanceWidthA}
+
+%%%% Height of instance head/foot:
+\def\instanceHeightA{3mm*\real{\mscScaleY}}
+
+\setlength{\instheadheight}{\instanceHeightA}
+
+\setlength{\instfootheight}{\instheadheight}
+
+%%%% Space between instances:
+\def\instanceSpaceA{30mm*\real{\mscScaleX}}
+
+\setlength{\instdist}{\instanceSpaceA}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%% End of configuration header
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\declinst{0_inst}{192.168.170.8}{}
+\declinst{1_inst}{224.0.0.5}{}
+\declinst{2_inst}{192.168.170.2}{}
+\declinst{3_inst}{224.0.0.6}{}
+
+\setlength{\selfmesswidth}{\timeIntervalWidthA}
+\measure[l]{[10.011142]}{0_inst}{0_inst}[1]
+\setlength{\levelheight}{\slopeA}
+\mess{1\_OSPFIGP\_}{0_inst}[0.3]{1_inst}[1]
+\setlength{\levelheight}{\timeIntervalSlopeA}
+\measure[l]{[10.011142]}{1_inst}{1_inst}[1]
+\nextlevel
+
+\measure[l]{[10.011116]}{0_inst}{0_inst}[1]
+\setlength{\levelheight}{\slopeA}
+\mess{2\_OSPFIGP\_}{0_inst}[0.3]{1_inst}[1]
+\setlength{\levelheight}{\timeIntervalSlopeA}
+\measure[l]{[10.011116]}{1_inst}{1_inst}[1]
+\nextlevel
+
+\measure[l]{[10.011156]}{0_inst}{0_inst}[1]
+\setlength{\levelheight}{\slopeA}
+\mess{3\_OSPFIGP\_}{0_inst}[0.3]{1_inst}[1]
+\setlength{\levelheight}{\timeIntervalSlopeA}
+\measure[l]{[10.011156]}{1_inst}{1_inst}[1]
+\nextlevel
+
+\measure[l]{[10.011142]}{0_inst}{0_inst}[1]
+\setlength{\levelheight}{\slopeA}
+\mess{4\_OSPFIGP\_}{0_inst}[0.3]{1_inst}[1]
+\setlength{\levelheight}{\timeIntervalSlopeA}
+\measure[l]{[10.011142]}{1_inst}{1_inst}[1]
+\nextlevel
+
+\measure[l]{[10.011138]}{0_inst}{0_inst}[1]
+\setlength{\levelheight}{\slopeA}
+\mess{5\_OSPFIGP\_}{0_inst}[0.3]{1_inst}[1]
+\setlength{\levelheight}{\timeIntervalSlopeA}
+\measure[l]{[10.011138]}{1_inst}{1_inst}[1]
+\nextlevel
+
+\setlength{\levelheight}{30mm}
+\measure[l]{[3.32039]}{0_inst}{0_inst}[1]
+\setlength{\levelheight}{\slopeA}
+\mess{6\_OSPFIGP\_}{0_inst}[0.3]{1_inst}[1]
+\setlength{\levelheight}{\timeIntervalSlopeA}
+\measure[l]{[2.182577]}{1_inst}{1_inst}[1]
+\nextlevel
+
+\setlength{\levelheight}{22mm}
+\measure[l]{[1.137813]}{1_inst}{1_inst}[1]
+\setlength{\levelheight}{\timeIntervalSlopeA}
+\measure[l]{[2.139944]}{2_inst}{2_inst}[1]
+\setlength{\levelheight}{\slopeA}
+\mess{7\_OSPFIGP\_}{2_inst}[0.3]{1_inst}[1]
+\setlength{\levelheight}{\levelA}
+\nextlevel
+
+\setlength{\levelheight}{30mm}
+\measure[l]{[0.027497]}{2_inst}{2_inst}[1]
+\setlength{\levelheight}{\slopeB}
+\mess{9\_OSPFIGP\_}{2_inst}[0.3]{1_inst}[1]
+\setlength{\levelheight}{\levelB}
+\nextlevel
+
+\setlength{\levelheight}{\timeIntervalSlopeC}
+\measure[l]{[1.029628]}{0_inst}{0_inst}[1]
+\setlength{\levelheight}{\slopeA}
+\mess{8\_OSPFIGP\_}{0_inst}[0.3]{1_inst}[1]
+\setlength{\levelheight}{\timeIntervalSlopeA}
+\measure[l]{[1.002131]}{1_inst}{1_inst}[1]
+\nextlevel
+
+\setlength{\levelheight}{\timeIntervalSlopeF}
+\measure[l]{[0.031377]}{1_inst}{1_inst}[1]
+\setlength{\levelheight}{\levelA}
+\nextlevel
+
+\measure[l]{[0.001413]}{0_inst}{0_inst}[1]
+\setlength{\levelheight}{\slopeA}
+\mess{10\_OSPFIGP\_}{0_inst}[0.3]{2_inst}[1]
+\setlength{\levelheight}{\timeIntervalSlopeA}
+\measure[l]{[0.001413]}{2_inst}{2_inst}[1]
+\nextlevel
+
+\measure[l]{[0.000341]}{0_inst}{0_inst}[1]
+\measure[l]{[0.000341]}{2_inst}{2_inst}[1]
+\setlength{\levelheight}{\slopeA}
+\mess{11\_OSPFIGP\_}{2_inst}[0.3]{0_inst}[1]
+\setlength{\levelheight}{\levelA}
+\nextlevel
+
+\measure[l]{[0.000231]}{0_inst}{0_inst}[1]
+\measure[l]{[0.000231]}{2_inst}{2_inst}[1]
+\setlength{\levelheight}{\slopeA}
+\mess{12\_OSPFIGP\_}{2_inst}[0.3]{0_inst}[1]
+\setlength{\levelheight}{\levelA}
+\nextlevel
+
+\measure[l]{[0.000609]}{0_inst}{0_inst}[1]
+\setlength{\levelheight}{\slopeA}
+\mess{13\_OSPFIGP\_}{0_inst}[0.3]{2_inst}[1]
+\setlength{\levelheight}{\timeIntervalSlopeA}
+\measure[l]{[0.000609]}{2_inst}{2_inst}[1]
+\nextlevel
+
+\measure[l]{[0.000195]}{0_inst}{0_inst}[1]
+\measure[l]{[0.000195]}{2_inst}{2_inst}[1]
+\setlength{\levelheight}{\slopeA}
+\mess{14\_OSPFIGP\_}{2_inst}[0.3]{0_inst}[1]
+\setlength{\levelheight}{\levelA}
+\nextlevel
+
+\measure[l]{[0.000627]}{0_inst}{0_inst}[1]
+\setlength{\levelheight}{\slopeA}
+\mess{15\_OSPFIGP\_}{0_inst}[0.3]{2_inst}[1]
+\setlength{\levelheight}{\timeIntervalSlopeA}
+\measure[l]{[0.000627]}{2_inst}{2_inst}[1]
+\nextlevel
+
+\measure[l]{[0.00011]}{0_inst}{0_inst}[1]
+\measure[l]{[0.00011]}{2_inst}{2_inst}[1]
+\setlength{\levelheight}{\slopeA}
+\mess{16\_OSPFIGP\_}{2_inst}[0.3]{0_inst}[1]
+\setlength{\levelheight}{\levelA}
+\nextlevel
+
+\measure[l]{[0.000255]}{0_inst}{0_inst}[1]
+\measure[l]{[0.000255]}{2_inst}{2_inst}[1]
+\setlength{\levelheight}{\slopeA}
+\mess{17\_OSPFIGP\_}{2_inst}[0.3]{0_inst}[1]
+\setlength{\levelheight}{\levelA}
+\nextlevel
+
+\measure[l]{[9.9e-005]}{0_inst}{0_inst}[1]
+\setlength{\levelheight}{\slopeA}
+\mess{18\_OSPFIGP\_}{0_inst}[0.3]{2_inst}[1]
+\setlength{\levelheight}{\timeIntervalSlopeC}
+\measure[l]{[0.002201]}{2_inst}{2_inst}[1]
+\setlength{\levelheight}{\levelA}
+\nextlevel
+
+\setlength{\levelheight}{\timeIntervalSlopeD}
+\measure[l]{[0.03172]}{0_inst}{0_inst}[1]
+\setlength{\levelheight}{\slopeA}
+\mess{19\_OSPFIGP\_}{0_inst}[0.3]{1_inst}[1]
+\setlength{\levelheight}{\timeIntervalSlopeD}
+\measure[l]{[0.03172]}{1_inst}{1_inst}[1]
+\setlength{\levelheight}{\levelA}
+\nextlevel
+
+\measure[l]{[0.000239]}{2_inst}{2_inst}[1]
+\setlength{\levelheight}{\slopeA}
+\mess{20\_OSPFIGP\_}{2_inst}[0.3]{3_inst}[1]
+\setlength{\levelheight}{\timeIntervalSlopeA}
+\measure[l]{[0.000239]}{3_inst}{3_inst}[1]
+\nextlevel
+
+\setlength{\levelheight}{\timeIntervalSlopeH}
+\measure[l]{[4.007151]}{2_inst}{2_inst}[1]
+\setlength{\levelheight}{\slopeA}
+\mess{21\_OSPFIGP\_}{2_inst}[0.3]{3_inst}[1]
+\setlength{\levelheight}{\timeIntervalSlopeH}
+\measure[l]{[4.007151]}{3_inst}{3_inst}[1]
+\setlength{\levelheight}{\levelA}
+\nextlevel
+
+\measure[l]{[8.4e-005]}{0_inst}{0_inst}[1]
+\setlength{\levelheight}{\slopeA}
+\mess{22\_OSPFIGP\_}{0_inst}[0.3]{1_inst}[1]
+\setlength{\levelheight}{\timeIntervalSlopeA}
+\measure[l]{[8.4e-005]}{1_inst}{1_inst}[1]
+\nextlevel
+
+\measure[l]{[0.785083]}{0_inst}{0_inst}[1]
+\setlength{\levelheight}{\slopeA}
+\mess{23\_OSPFIGP\_}{0_inst}[0.3]{1_inst}[1]
+\setlength{\levelheight}{\timeIntervalSlopeA}
+\measure[l]{[0.785083]}{1_inst}{1_inst}[1]
+\nextlevel
+
+\setlength{\levelheight}{\timeIntervalSlopeC}
+\measure[l]{[4.040254]}{0_inst}{0_inst}[1]
+\setlength{\levelheight}{\slopeA}
+\mess{24\_OSPFIGP\_}{0_inst}[0.3]{1_inst}[1]
+\setlength{\levelheight}{\timeIntervalSlopeC}
+\measure[l]{[4.040254]}{1_inst}{1_inst}[1]
+\setlength{\levelheight}{\levelA}
+\nextlevel
+
+\setlength{\levelheight}{\timeIntervalSlopeC}
+\measure[l]{[0.989974]}{2_inst}{2_inst}[1]
+\setlength{\levelheight}{\slopeA}
+\mess{25\_OSPFIGP\_}{2_inst}[0.3]{3_inst}[1]
+\setlength{\levelheight}{\timeIntervalSlopeH}
+\measure[l]{[2.430157]}{3_inst}{3_inst}[1]
+\setlength{\levelheight}{\levelA}
+\nextlevel
+
+\measure[l]{[0.142325]}{0_inst}{0_inst}[1]
+\setlength{\levelheight}{\slopeA}
+\mess{26\_OSPFIGP\_}{0_inst}[0.3]{1_inst}[1]
+\setlength{\levelheight}{\timeIntervalSlopeG}
+\measure[l]{[4.120461]}{1_inst}{1_inst}[1]
+\setlength{\levelheight}{\levelA}
+\nextlevel
+
+\measure[l]{[0.000266]}{0_inst}{0_inst}[1]
+\measure[l]{[0.000266]}{2_inst}{2_inst}[1]
+\setlength{\levelheight}{\slopeA}
+\mess{27\_OSPFIGP\_}{2_inst}[0.3]{0_inst}[1]
+\setlength{\levelheight}{\levelA}
+\nextlevel
+
+\setlength{\levelheight}{\timeIntervalSlopeC}
+\measure[l]{[1.440233]}{0_inst}{0_inst}[1]
+\setlength{\levelheight}{\slopeA}
+\mess{28\_OSPFIGP\_}{0_inst}[0.3]{2_inst}[1]
+\setlength{\levelheight}{\timeIntervalSlopeA}
+\measure[l]{[1.439917]}{2_inst}{2_inst}[1]
+\nextlevel
+
+\measure[l]{[0.000316]}{2_inst}{2_inst}[1]
+\setlength{\levelheight}{\slopeA}
+\mess{29\_OSPFIGP\_}{2_inst}[0.3]{3_inst}[1]
+\setlength{\levelheight}{\levelA}
+\nextlevel
+
+\measure[l]{[2.537637]}{0_inst}{0_inst}[1]
+\setlength{\levelheight}{\slopeA}
+\mess{30\_OSPFIGP\_}{0_inst}[0.3]{2_inst}[1]
+\setlength{\levelheight}{\levelA}
+\nextlevel
+
+\setlength{\levelheight}{\slopeA}
+\mess{31\_OSPFIGP\_}{0_inst}[0.3]{1_inst}[1]
+\end{msc}
+\end{document}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <xb...@us...> - 2013-06-24 20:09:54
|
Revision: 1832
http://sourceforge.net/p/scstudio/code/1832
Author: xborza
Date: 2013-06-24 20:09:51 +0000 (Mon, 24 Jun 2013)
Log Message:
-----------
bug #36(Wrong filename in warnig when importing an empty file) fixed
Modified Paths:
--------------
trunk/src/data/msc_types.cpp
Modified: trunk/src/data/msc_types.cpp
===================================================================
--- trunk/src/data/msc_types.cpp 2013-06-24 18:01:11 UTC (rev 1831)
+++ trunk/src/data/msc_types.cpp 2013-06-24 20:09:51 UTC (rev 1832)
@@ -22,25 +22,44 @@
std::wstring TOWSTRING(const std::string& s)
{
- std::wstring result;
+ std::wstring result;
+ bool slash = false;
+ unsigned int posit = 0;
+ for(size_t i=0; i < s.size();)
+ {
+ posit = s.find('\\',posit+1);
+
+ if(posit == std::string::npos)
+ posit = s.size();
+ else
+ slash = true;
- size_t size = s.length();
- const char* pos = s.data();
+ std::string sub = s.substr(i,posit-i);
+ i += posit-i+1;
- while(size > 0)
- {
- wchar_t wc;
- int inc = mbtowc(&wc, pos, size);
+ size_t size = sub.length();
+ const char* pos = sub.data();
+
+ wchar_t wc;
- if(inc > 0)
- {
+ while(size > 0)
+ {
+ int inc = mbtowc(&wc, pos, size);
+ if(inc > 0)
+ {
result.push_back(wc);
size = size - inc;
pos = pos + inc;
- }
- }
+ }
+ }
+ if(slash)
+ {
+ result.append(L"\\\\");
+ slash = false;
+ }
+ }
return result;
}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <tm...@us...> - 2013-06-24 18:01:15
|
Revision: 1831
http://sourceforge.net/p/scstudio/code/1831
Author: tmarton
Date: 2013-06-24 18:01:11 +0000 (Mon, 24 Jun 2013)
Log Message:
-----------
merged hmsc connection lines and connection arrows
Modified Paths:
--------------
trunk/src/view/visio/addon/visualize.cpp
trunk/src/view/visio/stencils/Sequence Chart Studio/Basic MSC.vsx
trunk/src/view/visio/stencils/Sequence Chart Studio/HMSC.vsx
trunk/src/view/visio/stencils/Sequence Chart Studio/MSC.vtx
Modified: trunk/src/view/visio/addon/visualize.cpp
===================================================================
--- trunk/src/view/visio/addon/visualize.cpp 2013-06-24 12:41:30 UTC (rev 1830)
+++ trunk/src/view/visio/addon/visualize.cpp 2013-06-24 18:01:11 UTC (rev 1831)
@@ -92,8 +92,7 @@
ST_HMSC_START,
ST_HMSC_END,
ST_HMSC_REFERENCE,
- ST_HMSC_CONDITION,
- ST_HMSC_LINE,
+ ST_HMSC_CONDITION,
ST_HMSC_ARROW,
ST_COMMENT,
ST_TEXT,
Modified: trunk/src/view/visio/stencils/Sequence Chart Studio/Basic MSC.vsx
===================================================================
--- trunk/src/view/visio/stencils/Sequence Chart Studio/Basic MSC.vsx 2013-06-24 12:41:30 UTC (rev 1830)
+++ trunk/src/view/visio/stencils/Sequence Chart Studio/Basic MSC.vsx 2013-06-24 18:01:11 UTC (rev 1831)
@@ -1,5 +1,5 @@
<?xml version='1.0' encoding='utf-8' ?>
-<VisioDocument key='DC3EC77A3F68347423B611C4000F7BB4FE10C2A2EAF53068EF32B1C41754F723CB444D23DCDB377907825F2DD23888A4D711F29DC6DFAEEBDB5F8D82D1886A59' start='190' metric='0' DocLangID='1033' buildnum='6606' version='12.0' xml:space='preserve' xmlns:vx='http://schemas.microsoft.com/visio/2006/extension' xmlns='http://schemas.microsoft.com/visio/2003/core'><DocumentProperties><Title>Basic MSC</Title><Creator>Petr Gotthard</Creator><Company>Brno</Company><BuildNumberCreated>805312904</BuildNumberCreated><BuildNumberEdited>805312974</BuildNumberEdited><CustomProps><CustomProp Name='_VPID_EXTENDED_VDX' PropType='Number'>1</CustomProp></CustomProps><TimeCreated>2011-03-31T23:02:37</TimeCreated><TimeSaved>2012-06-20T11:21:00</TimeSaved><TimeEdited>2012-06-20T11:20:55</TimeEdited><TimePrinted>2011-03-31T23:02:37</TimePrinted></DocumentProperties><DocumentSettings TopPage='0' DefaultTextStyle='3' DefaultLineStyle='3' DefaultFillStyle='3' DefaultGuideStyle='4'><GlueSettings>9</GlueSettings><SnapSettings>65847</SnapSettings><SnapExtensions>34</SnapExtensions><DynamicGridEnabled>0</DynamicGridEnabled><ProtectStyles>0</ProtectStyles><ProtectShapes>0</ProtectShapes><ProtectMasters>0</ProtectMasters><ProtectBkgnds>0</ProtectBkgnds></DocumentSettings><Colors><ColorEntry IX='0' RGB='#000000'/><ColorEntry IX='1' RGB='#FFFFFF'/><ColorEntry IX='2' RGB='#FF0000'/><ColorEntry IX='3' RGB='#00FF00'/><ColorEntry IX='4' RGB='#0000FF'/><ColorEntry IX='5' RGB='#FFFF00'/><ColorEntry IX='6' RGB='#FF00FF'/><ColorEntry IX='7' RGB='#00FFFF'/><ColorEntry IX='8' RGB='#800000'/><ColorEntry IX='9' RGB='#008000'/><ColorEntry IX='10' RGB='#000080'/><ColorEntry IX='11' RGB='#808000'/><ColorEntry IX='12' RGB='#800080'/><ColorEntry IX='13' RGB='#008080'/><ColorEntry IX='14' RGB='#C0C0C0'/><ColorEntry IX='15' RGB='#E6E6E6'/><ColorEntry IX='16' RGB='#CDCDCD'/><ColorEntry IX='17' RGB='#B3B3B3'/><ColorEntry IX='18' RGB='#9A9A9A'/><ColorEntry IX='19' RGB='#808080'/><ColorEntry IX='20' RGB='#666666'/><ColorEntry IX='21' RGB='#4D4D4D'/><ColorEntry IX='22' RGB='#333333'/><ColorEntry IX='23' RGB='#1A1A1A'/><ColorEntry IX='24' RGB='#000000'/><ColorEntry IX='25' RGB='#E8EEF7'/><ColorEntry IX='26' RGB='#B7C9E3'/><ColorEntry IX='27' RGB='#4979C0'/></Colors><FaceNames><FaceName ID='1' Name='Arial Unicode MS' UnicodeRanges='-1 -369098753 63 0' CharSets='1614742015 -65536' Panos='2 11 6 4 2 2 2 2 2 4' Flags='357'/><FaceName ID='2' Name='Symbol' UnicodeRanges='0 0 0 0' CharSets='-2147483648 0' Panos='5 5 1 2 1 7 6 2 5 7' Flags='261'/><FaceName ID='3' Name='Wingdings' UnicodeRanges='0 0 0 0' CharSets='-2147483648 0' Panos='5 0 0 0 0 0 0 0 0 0' Flags='261'/><FaceName ID='4' Name='Arial' UnicodeRanges='-536859905 -1073711037 9 0' CharSets='1073742335 -65536' Panos='2 11 6 4 2 2 2 2 2 4' Flags='325'/><FaceName ID='5' Name='SimSun' UnicodeRanges='3 680460288 6 0' CharSets='262145 0' Panos='2 1 6 0 3 1 1 1 1 1' Flags='421'/><FaceName ID='6' Name='PMingLiU' UnicodeRanges='-1610611969 684719354 22 0' CharSets='1048577 0' Panos='2 2 5 0 0 0 0 0 0 0' Flags='421'/><FaceName ID='7' Name='MS PGothic' UnicodeRanges='-536870145 1791491579 18 0' CharSets='1073873055 -539557888' Panos='2 11 6 0 7 2 5 8 2 4' Flags='421'/><FaceName ID='8' Name='Dotum' UnicodeRanges='-1342176593 1775729915 48 0' CharSets='1074266271 -539557888' Panos='2 11 6 0 0 1 1 1 1 1' Flags='421'/><FaceName ID='9' Name='Sylfaen' UnicodeRanges='67110535 0 0 0' CharSets='536871071 0' Panos='1 10 5 2 5 3 6 3 3 3' Flags='325'/><FaceName ID='10' Name='Estrangelo Edessa' UnicodeRanges='-2147475389 0 128 0' CharSets='1 0' Panos='3 8 6 0 0 0 0 0 0 0' Flags='325'/><FaceName ID='11' Name='Vrinda' UnicodeRanges='65539 0 0 0' CharSets='1 0' Panos='2 11 5 2 4 2 4 2 2 3' Flags='325'/><FaceName ID='12' Name='Shruti' UnicodeRanges='262147 0 0 0' CharSets='1 0' Panos='2 11 5 2 4 2 4 2 2 3' Flags='325'/><FaceName ID='13' Name='Mangal' UnicodeRanges='32771 0 0 0' CharSets='1 0' Panos='2 4 5 3 5 2 3 3 2 2' Flags='325'/><FaceName ID='14' Name='Tunga' UnicodeRanges='4194307 0 0 0' CharSets='1 0' Panos='2 11 5 2 4 2 4 2 2 3' Flags='325'/><FaceName ID='15' Name='Sendnya' UnicodeRanges='-520082689 -1073741822 8 0' CharSets='536936959 539492352' Panos='2 11 6 4 2 2 2 2 2 4' Flags='327'/><FaceName ID='16' Name='Raavi' UnicodeRanges='131075 0 0 0' CharSets='1 0' Panos='2 11 5 2 4 2 4 2 2 3' Flags='325'/><FaceName ID='17' Name='Dhenu' UnicodeRanges='-520082689 -1073741822 8 0' CharSets='536936959 539492352' Panos='2 11 6 4 2 2 2 2 2 4' Flags='327'/><FaceName ID='18' Name='Latha' UnicodeRanges='1048579 0 0 0' CharSets='1 0' Panos='2 11 6 4 2 2 2 2 2 4' Flags='325'/><FaceName ID='19' Name='Gautami' UnicodeRanges='2097155 0 0 0' CharSets='1 0' Panos='2 11 5 2 4 2 4 2 2 3' Flags='325'/><FaceName ID='20' Name='Cordia New' UnicodeRanges='-2130706429 0 0 0' CharSets='65537 0' Panos='2 11 3 4 2 2 2 2 2 4' Flags='325'/><FaceName ID='21' Name='MS Farsi' UnicodeRanges='-520082689 -1073741822 8 0' CharSets='536936959 539492352' Panos='2 11 6 4 2 2 2 2 2 4' Flags='327'/><FaceName ID='22' Name='Gulim' UnicodeRanges='-1342176593 1775729915 48 0' CharSets='1074266271 -539557888' Panos='2 11 6 0 0 1 1 1 1 1' Flags='421'/><FaceName ID='23' Name='Times New Roman' UnicodeRanges='-536859905 -1073711039 9 0' CharSets='1073742335 -65536' Panos='2 2 6 3 5 4 5 2 3 4' Flags='325'/></FaceNames><StyleSheets><StyleSheet ID='0' NameU='No Style' Name='No Style'><StyleProp><EnableLineProps>1</EnableLineProps><EnableFillProps>1</EnableFillProps><EnableTextProps>1</EnableTextProps><HideForApply>0</HideForApply></StyleProp><Line><LineWeight>0.01</LineWeight><LineColor>0</LineColor><LinePattern>1</LinePattern><Rounding>0</Rounding><EndArrowSize>2</EndArrowSize><BeginArrow>0</BeginArrow><EndArrow>0</EndArrow><LineCap>0</LineCap><BeginArrowSize>2</BeginArrowSize><LineColorTrans>0</LineColorTrans></Line><Fill><FillForegnd>1</FillForegnd><FillBkgnd>0</FillBkgnd><FillPattern>1</FillPattern><ShdwForegnd>0</ShdwForegnd><ShdwBkgnd>1</ShdwBkgnd><ShdwPattern>0</ShdwPattern><FillForegndTrans>0</FillForegndTrans><FillBkgndTrans>0</FillBkgndTrans><ShdwForegndTrans>0</ShdwForegndTrans><ShdwBkgndTrans>0</ShdwBkgndTrans><ShapeShdwType>0</ShapeShdwType><ShapeShdwOffsetX>0</ShapeShdwOffsetX><ShapeShdwOffsetY>0</ShapeShdwOffsetY><ShapeShdwObliqueAngle>0</ShapeShdwObliqueAngle><ShapeShdwScaleFactor>1</ShapeShdwScaleFactor></Fill><TextBlock><LeftMargin>0</LeftMargin><RightMargin>0</RightMargin><TopMargin>0</TopMargin><BottomMargin>0</BottomMargin><VerticalAlign>1</VerticalAlign><TextBkgnd>0</TextBkgnd><DefaultTabStop>0.5</DefaultTabStop><TextDirection>0</TextDirection><TextBkgndTrans>0</TextBkgndTrans></TextBlock><Protection><LockWidth>0</LockWidth><LockHeight>0</LockHeight><LockMoveX>0</LockMoveX><LockMoveY>0</LockMoveY><LockAspect>0</LockAspect><LockDelete>0</LockDelete><LockBegin>0</LockBegin><LockEnd>0</LockEnd><LockRotate>0</LockRotate><LockCrop>0</LockCrop><LockVtxEdit>0</LockVtxEdit><LockTextEdit>0</LockTextEdit><LockFormat>0</LockFormat><LockGroup>0</LockGroup><LockCalcWH>0</LockCalcWH><LockSelect>0</LockSelect><LockCustProp>0</LockCustProp></Protection><vx:Protection xmlns:vx='http://schemas.microsoft.com/visio/2006/extension'><vx:LockFromGroupFormat>0</vx:LockFromGroupFormat><vx:LockThemeColors>0</vx:LockThemeColors><vx:LockThemeEffects>0</vx:LockThemeEffects></vx:Protection><Misc><NoObjHandles>0</NoObjHandles><NonPrinting>0</NonPrinting><NoCtlHandles>0</NoCtlHandles><NoAlignBox>0</NoAlignBox><UpdateAlignBox>0</UpdateAlignBox><HideText>0</HideText><DynFeedback>0</DynFeedback><GlueType>0</GlueType><WalkPreference>0</WalkPreference><BegTrigger F='No Formula'>0</BegTrigger><EndTrigger F='No Formula'>0</EndTrigger><ObjType>0</ObjType><Comment V='null'/><IsDropSource>0</IsDropSource><NoLiveDynamics>0</NoLiveDynamics><LocalizeMerge>0</LocalizeMerge><Calendar>0</Calendar><LangID>1033</LangID><ShapeKeywords V='null'/><DropOnPageScale>1</DropOnPageScale></Misc><Event><TheData F='No Formula'>0</TheData><TheText F='No Formula'>0</TheText><EventDblClick F='No Formula'>0</EventDblClick><EventXFMod F='No Formula'>0</EventXFMod><EventDrop F='No Formula'>0</EventDrop></Event><vx:Event xmlns:vx='http://schemas.microsoft.com/visio/2006/extension'><vx:EventMultiDrop F='No Formula'>0</vx:EventMultiDrop></vx:Event><Help><HelpTopic V='null'/><Copyright V='null'/></Help><LayerMem><LayerMember V='null'/></LayerMem><RulerGrid><XRulerDensity>32</XRulerDensity><YRulerDensity>32</YRulerDensity><XRulerOrigin>0</XRulerOrigin><YRulerOrigin>0</YRulerOrigin><XGridDensity>8</XGridDensity><YGridDensity>8</YGridDensity><XGridSpacing>0</XGridSpacing><YGridSpacing>0</YGridSpacing><XGridOrigin>0</XGridOrigin><YGridOrigin>0</YGridOrigin></RulerGrid><Image><Gamma>1</Gamma><Contrast>0.5</Contrast><Brightness>0.5</Brightness><Sharpen>0</Sharpen><Blur>0</Blur><Denoise>0</Denoise><Transparency>0</Transparency></Image><Group><SelectMode>1</SelectMode><DisplayMode>2</DisplayMode><IsDropTarget>0</IsDropTarget><IsSnapTarget>1</IsSnapTarget><IsTextEditTarget>1</IsTextEditTarget><DontMoveChildren>0</DontMoveChildren></Group><Layout><ShapePermeableX>0</ShapePermeableX><ShapePermeableY>0</ShapePermeableY><ShapePermeablePlace>0</ShapePermeablePlace><ShapeFixedCode>0</ShapeFixedCode><ShapePlowCode>0</ShapePlowCode><ShapeRouteStyle>0</ShapeRouteStyle><ConFixedCode>0</ConFixedCode><ConLineJumpCode>0</ConLineJumpCode><ConLineJumpStyle>0</ConLineJumpStyle><ConLineJumpDirX>0</ConLineJumpDirX><ConLineJumpDirY>0</ConLineJumpDirY><ShapePlaceFlip>0</ShapePlaceFlip><ConLineRouteExt>0</ConLineRouteExt><ShapeSplit>0</ShapeSplit><ShapeSplittable>0</ShapeSplittable></Layout><vx:Layout xmlns:vx='http://schemas.microsoft.com/visio/2006/extension'><vx:ShapePlaceStyle>0</vx:ShapePlaceStyle></vx:Layout><PageLayout><ResizePage>0</ResizePage><EnableGrid>0</EnableGrid><DynamicsOff>0</DynamicsOff><CtrlAsInput>0</CtrlAsInput><PlaceStyle>0</PlaceStyle><RouteStyle>0</RouteStyle><PlaceDepth>0</PlaceDepth><PlowCode>0</PlowCode><LineJumpCode>1</LineJumpCode><LineJumpStyle>0</LineJumpStyle><PageLineJumpDirX>0</PageLineJumpDirX><PageLineJumpDirY>0</PageLineJumpDirY><LineToNodeX>0.125</LineToNodeX><LineToNodeY>0.125</LineToNodeY><BlockSizeX>0.25</BlockSizeX><BlockSizeY>0.25</BlockSizeY><AvenueSizeX>0.375</AvenueSizeX><AvenueSizeY>0.375</AvenueSizeY><LineToLineX>0.125</LineToLineX><LineToLineY>0.125</LineToLineY><LineJumpFactorX>0.66666666666667</LineJumpFactorX><LineJumpFactorY>0.66666666666667</LineJumpFactorY><LineAdjustFrom>0</LineAdjustFrom><LineAdjustTo>0</LineAdjustTo><PlaceFlip>0</PlaceFlip><LineRouteExt>0</LineRouteExt><PageShapeSplit>0</PageShapeSplit></PageLayout><PrintProps><PageLeftMargin>0.25</PageLeftMargin><PageRightMargin>0.25</PageRightMargin><PageTopMargin>0.25</PageTopMargin><PageBottomMargin>0.25</PageBottomMargin><ScaleX>1</ScaleX><ScaleY>1</ScaleY><PagesX>1</PagesX><PagesY>1</PagesY><CenterX>0</CenterX><CenterY>0</CenterY><OnPage>0</OnPage><PrintGrid>0</PrintGrid><PrintPageOrientation>1</PrintPageOrientation><PaperKind>1</PaperKind><PaperSource>7</PaperSource></PrintProps><PageProps><PageWidth Unit='NUM' F='No Formula'>0</PageWidth><PageHeight Unit='NUM' F='No Formula'>0</PageHeight><ShdwOffsetX Unit='NUM' F='No Formula'>0</ShdwOffsetX><ShdwOffsetY Unit='NUM' F='No Formula'>0</ShdwOffsetY><PageScale F='No Formula'>0</PageScale><DrawingScale F='No Formula'>0</DrawingScale><DrawingSizeType F='No Formula'>0</DrawingSizeType><DrawingScaleType F='No Formula'>0</DrawingScaleType><InhibitSnap F='No Formula'>0</InhibitSnap><UIVisibility F='No Formula'>0</UIVisibility><ShdwType F='No Formula'>0</ShdwType><ShdwObliqueAngle Unit='NUM' F='No Formula'>0</ShdwObliqueAngle><ShdwScaleFactor F='No Formula'>0</ShdwScaleFactor></PageProps><Char IX='0'><Font>4</Font><Color>0</Color><Style>0</Style><Case>0</Case><Pos>0</Pos><FontScale>1</FontScale><Size>0.1666666666666667</Size><DblUnderline>0</DblUnderline><Overline>0</Overline><Strikethru>0</Strikethru><Highlight>0</Highlight><DoubleStrikethrough>0</DoubleStrikethrough><RTLText>0</RTLText><UseVertical>0</UseVertical><Letterspace>0</Letterspace><ColorTrans>0</ColorTrans><AsianFont>0</AsianFont><ComplexScriptFont>0</ComplexScriptFont><LocalizeFont>0</LocalizeFont><ComplexScriptSize>-1</ComplexScriptSize><LangID>1033</LangID></Char><Para IX='0'><IndFirst>0</IndFirst><IndLeft>0</IndLeft><IndRight>0</IndRight><SpLine>-1.2</SpLine><SpBefore>0</SpBefore><SpAfter>0</SpAfter><HorzAlign>1</HorzAlign><Bullet>0</Bullet><BulletStr V='null'/><BulletFont>0</BulletFont><LocalizeBulletFont>0</LocalizeBulletFont><BulletFontSize>-1</BulletFontSize><TextPosAfterBullet>0</TextPosAfterBullet><Flags>0</Flags></Para><Tabs IX='0'/></StyleSheet><StyleSheet ID='1' NameU='Text Only' Name='Text Only' LineStyle='3' FillStyle='3' TextStyle='3'><StyleProp><EnableLineProps>1</EnableLineProps><EnableFillProps>1</EnableFillProps><EnableTextProps>1</EnableTextProps><HideForApply>0</HideForApply></StyleProp><Line><LineWeight F='Inh'>0.01</LineWeight><LineColor F='Inh'>0</LineColor><LinePattern>0</LinePattern><Rounding F='Inh'>0</Rounding><EndArrowSize F='Inh'>2</EndArrowSize><BeginArrow F='Inh'>0</BeginArrow><EndArrow F='Inh'>0</EndArrow><LineCap F='Inh'>0</LineCap><BeginArrowSize F='Inh'>2</BeginArrowSize><LineColorTrans F='Inh'>0</LineColorTrans></Line><Fill><FillForegnd F='Inh'>1</FillForegnd><FillBkgnd F='Inh'>0</FillBkgnd><FillPattern>0</FillPattern><ShdwForegnd F='Inh'>0</ShdwForegnd><ShdwBkgnd F='Inh'>1</ShdwBkgnd><ShdwPattern F='Inh'>0</ShdwPattern><FillForegndTrans F='Inh'>0</FillForegndTrans><FillBkgndTrans F='Inh'>0</FillBkgndTrans><ShdwForegndTrans F='Inh'>0</ShdwForegndTrans><ShdwBkgndTrans F='Inh'>0</ShdwBkgndTrans><ShapeShdwType F='Inh'>0</ShapeShdwType><ShapeShdwOffsetX F='Inh'>0</ShapeShdwOffsetX><ShapeShdwOffsetY F='Inh'>0</ShapeShdwOffsetY><ShapeShdwObliqueAngle F='Inh'>0</ShapeShdwObliqueAngle><ShapeShdwScaleFactor F='Inh'>1</ShapeShdwScaleFactor></Fill><TextBlock><LeftMargin>0</LeftMargin><RightMargin>0</RightMargin><TopMargin>0</TopMargin><BottomMargin>0</BottomMargin><VerticalAlign>0</VerticalAlign><TextBkgnd>0</TextBkgnd><DefaultTabStop F='Inh'>0.5</DefaultTabStop><TextDirection F='Inh'>0</TextDirection><TextBkgndTrans F='Inh'>0</TextBkgndTrans></TextBlock><Para IX='0'><IndFirst F='Inh'>0</IndFirst><IndLeft F='Inh'>0</IndLeft><IndRight F='Inh'>0</IndRight><SpLine F='Inh'>-1.2</SpLine><SpBefore F='Inh'>0</SpBefore><SpAfter F='Inh'>0</SpAfter><HorzAlign>0</HorzAlign><Bullet F='Inh'>0</Bullet><BulletStr F='Inh'/><BulletFont F='Inh'>0</BulletFont><LocalizeBulletFont F='Inh'>0</LocalizeBulletFont><BulletFontSize F='Inh'>-1</BulletFontSize><TextPosAfterBullet F='Inh'>0</TextPosAfterBullet><Flags F='Inh'>0</Flags></Para></StyleSheet><StyleSheet ID='2' NameU='None' Name='None' LineStyle='3' FillStyle='3' TextStyle='3'><StyleProp><EnableLineProps>1</EnableLineProps><EnableFillProps>1</EnableFillProps><EnableTextProps>1</EnableTextProps><HideForApply>0</HideForApply></StyleProp><Line><LineWeight F='Inh'>0.01</LineWeight><LineColor F='Inh'>0</LineColor><LinePattern>0</LinePattern><Rounding F='Inh'>0</Rounding><EndArrowSize F='Inh'>2</EndArrowSize><BeginArrow F='Inh'>0</BeginArrow><EndArrow F='Inh'>0</EndArrow><LineCap F='Inh'>0</LineCap><BeginArrowSize F='Inh'>2</BeginArrowSize><LineColorTrans F='Inh'>0</LineColorTrans></Line><Fill><FillForegnd F='Inh'>1</FillForegnd><FillBkgnd F='Inh'>0</FillBkgnd><FillPattern>0</FillPattern><ShdwForegnd F='Inh'>0</ShdwForegnd><ShdwBkgnd F='Inh'>1</ShdwBkgnd><ShdwPattern F='Inh'>0</ShdwPattern><FillForegndTrans F='Inh'>0</FillForegndTrans><FillBkgndTrans F='Inh'>0</FillBkgndTrans><ShdwForegndTrans F='Inh'>0</ShdwForegndTrans><ShdwBkgndTrans F='Inh'>0</ShdwBkgndTrans><ShapeShdwType F='Inh'>0</ShapeShdwType><ShapeShdwOffsetX F='Inh'>0</ShapeShdwOffsetX><ShapeShdwOffsetY F='Inh'>0</ShapeShdwOffsetY><ShapeShdwObliqueAngle F='Inh'>0</ShapeShdwObliqueAngle><ShapeShdwScaleFactor F='Inh'>1</ShapeShdwScaleFactor></Fill></StyleSheet><StyleSheet ID='3' NameU='Normal' Name='Normal' LineStyle='0' FillStyle='0' TextStyle='0'><StyleProp><EnableLineProps>1</EnableLineProps><EnableFillProps>1</EnableFillProps><EnableTextProps>1</EnableTextProps><HideForApply>0</HideForApply></StyleProp><TextBlock><LeftMargin Unit='PT'>0.05555555555555555</LeftMargin><RightMargin Unit='PT'>0.05555555555555555</RightMargin><TopMargin Unit='PT'>0.05555555555555555</TopMargin><BottomMargin Unit='PT'>0.05555555555555555</BottomMargin><VerticalAlign F='Inh'>1</VerticalAlign><TextBkgnd F='Inh'>0</TextBkgnd><DefaultTabStop F='Inh'>0.5</DefaultTabStop><TextDirection F='Inh'>0</TextDirection><TextBkgndTrans F='Inh'>0</TextBkgndTrans></TextBlock></StyleSheet><StyleSheet ID='4' NameU='Guide' Name='Guide' LineStyle='3' FillStyle='3' TextStyle='3'><StyleProp><EnableLineProps>1</EnableLineProps><EnableFillProps>1</EnableFillProps><EnableTextProps>1</EnableTextProps><HideForApply>0</HideForApply></StyleProp><Line><LineWeight Unit='PT'>0</LineWeight><LineColor>4</LineColor><LinePattern>23</LinePattern><Rounding F='Inh'>0</Rounding><EndArrowSize F='Inh'>2</EndArrowSize><BeginArrow F='Inh'>0</BeginArrow><EndArrow F='Inh'>0</EndArrow><LineCap F='Inh'>0</LineCap><BeginArrowSize F='Inh'>2</BeginArrowSize><LineColorTrans F='Inh'>0</LineColorTrans></Line><Fill><FillForegnd F='Inh'>1</FillForegnd><FillBkgnd F='Inh'>0</FillBkgnd><FillPattern>0</FillPattern><ShdwForegnd F='Inh'>0</ShdwForegnd><ShdwBkgnd F='Inh'>1</ShdwBkgnd><ShdwPattern F='Inh'>0</ShdwPattern><FillForegndTrans F='Inh'>0</FillForegndTrans><FillBkgndTrans F='Inh'>0</FillBkgndTrans><ShdwForegndTrans F='Inh'>0</ShdwForegndTrans><ShdwBkgndTrans F='Inh'>0</ShdwBkgndTrans><ShapeShdwType F='Inh'>0</ShapeShdwType><ShapeShdwOffsetX F='Inh'>0</ShapeShdwOffsetX><ShapeShdwOffsetY F='Inh'>0</ShapeShdwOffsetY><ShapeShdwObliqueAngle F='Inh'>0</ShapeShdwObliqueAngle><ShapeShdwScaleFactor F='Inh'>1</ShapeShdwScaleFactor></Fill><TextBlock><LeftMargin Unit='PT' F='Inh'>0.05555555555555555</LeftMargin><RightMargin Unit='PT' F='Inh'>0.05555555555555555</RightMargin><TopMargin>0</TopMargin><BottomMargin>0</BottomMargin><VerticalAlign>2</VerticalAlign><TextBkgnd F='Inh'>0</TextBkgnd><DefaultTabStop F='Inh'>0.5</DefaultTabStop><TextDirection F='Inh'>0</TextDirection><TextBkgndTrans F='Inh'>0</TextBkgndTrans></TextBlock><Misc><NoObjHandles F='Inh'>0</NoObjHandles><NonPrinting>1</NonPrinting><NoCtlHandles F='Inh'>0</NoCtlHandles><NoAlignBox F='Inh'>0</NoAlignBox><UpdateAlignBox F='Inh'>0</UpdateAlignBox><HideText F='Inh'>0</HideText><DynFeedback F='Inh'>0</DynFeedback><GlueType F='Inh'>0</GlueType><WalkPreference F='Inh'>0</WalkPreference><BegTrigger F='No Formula'>0</BegTrigger><EndTrigger F='No Formula'>0</EndTrigger><ObjType F='Inh'>0</ObjType><Comment F='Inh'/><IsDropSource F='Inh'>0</IsDropSource><NoLiveDynamics F='Inh'>0</NoLiveDynamics><LocalizeMerge F='Inh'>0</LocalizeMerge><Calendar F='Inh'>0</Calendar><LangID F='Inh'>1033</LangID><ShapeKeywords F='Inh'/><DropOnPageScale F='Inh'>1</DropOnPageScale></Misc><Layout><ShapePermeableX>1</ShapePermeableX><ShapePermeableY>1</ShapePermeableY><ShapePermeablePlace>1</ShapePermeablePlace><ShapeFixedCode F='Inh'>0</ShapeFixedCode><ShapePlowCode F='Inh'>0</ShapePlowCode><ShapeRouteStyle F='Inh'>0</ShapeRouteStyle><ConFixedCode F='Inh'>0</ConFixedCode><ConLineJumpCode F='Inh'>0</ConLineJumpCode><ConLineJumpStyle F='Inh'>0</ConLineJumpStyle><ConLineJumpDirX F='Inh'>0</ConLineJumpDirX><ConLineJumpDirY F='Inh'>0</ConLineJumpDirY><ShapePlaceFlip F='Inh'>0</ShapePlaceFlip><ConLineRouteExt F='Inh'>0</ConLineRouteExt><ShapeSplit F='Inh'>0</ShapeSplit><ShapeSplittable F='Inh'>0</ShapeSplittable></Layout><vx:Layout xmlns:vx='http://schemas.microsoft.com/visio/2006/extension'><vx:ShapePlaceStyle F='Inh'>0</vx:ShapePlaceStyle></vx:Layout><Char IX='0'><Font>4</Font><Color>4</Color><Style F='Inh'>0</Style><Case F='Inh'>0</Case><Pos F='Inh'>0</Pos><FontScale F='Inh'>1</FontScale><Size>0.125</Size><DblUnderline F='Inh'>0</DblUnderline><Overline F='Inh'>0</Overline><Strikethru F='Inh'>0</Strikethru><Highlight F='Inh'>0</Highlight><DoubleStrikethrough F='Inh'>0</DoubleStrikethrough><RTLText F='Inh'>0</RTLText><UseVertical F='Inh'>0</UseVertical><Letterspace F='Inh'>0</Letterspace><ColorTrans F='Inh'>0</ColorTrans><AsianFont F='Inh'>0</AsianFont><ComplexScriptFont F='Inh'>0</ComplexScriptFont><LocalizeFont F='Inh'>0</LocalizeFont><ComplexScriptSize F='Inh'>-1</ComplexScriptSize><LangID F='Inh'>1033</LangID></Char></StyleSheet><StyleSheet ID='6' NameU='Connector' Name='Connector' LineStyle='7' FillStyle='7' TextStyle='7'><StyleProp><EnableLineProps>1</EnableLineProps><EnableFillProps>1</EnableFillProps><EnableTextProps>1</EnableTextProps><HideForApply>0</HideForApply></StyleProp><Line><LineWeight>0.003333333333333334</LineWeight><LineColor F='Inh'>0</LineColor><LinePattern F='Inh'>1</LinePattern><Rounding F='Inh'>0</Rounding><EndArrowSize>1</EndArrowSize><BeginArrow F='Inh'>0</BeginArrow><EndArrow>0</EndArrow><LineCap F='Inh'>0</LineCap><BeginArrowSize>1</BeginArrowSize><LineColorTrans F='Inh'>0</LineColorTrans></Line><Fill><FillForegnd F='Inh'>0</FillForegnd><FillBkgnd F='Inh'>1</FillBkgnd><FillPattern F='Inh'>1</FillPattern><ShdwForegnd F='Inh'>0</ShdwForegnd><ShdwBkgnd F='Inh'>1</ShdwBkgnd><ShdwPattern F='Inh'>0</ShdwPattern><FillForegndTrans F='Inh'>0</FillForegndTrans><FillBkgndTrans F='Inh'>0</FillBkgndTrans><ShdwForegndTrans F='Inh'>0</ShdwForegndTrans><ShdwBkgndTrans F='Inh'>0</ShdwBkgndTrans><ShapeShdwType F='Inh'>0</ShapeShdwType><ShapeShdwOffsetX F='Inh'>0</ShapeShdwOffsetX><ShapeShdwOffsetY F='Inh'>0</ShapeShdwOffsetY><ShapeShdwObliqueAngle F='Inh'>0</ShapeShdwObliqueAngle><ShapeShdwScaleFactor F='Inh'>1</ShapeShdwScaleFactor></Fill><TextBlock><LeftMargin Unit='PT' F='Inh'>0.05555555555555555</LeftMargin><RightMargin Unit='PT' F='Inh'>0.05555555555555555</RightMargin><TopMargin Unit='PT' F='Inh'>0.05555555555555555</TopMargin><BottomMargin Unit='PT' F='Inh'>0.05555555555555555</BottomMargin><VerticalAlign F='Inh'>1</VerticalAlign><TextBkgnd>2</TextBkgnd><DefaultTabStop F='Inh'>0.5</DefaultTabStop><TextDirection F='Inh'>0</TextDirection><TextBkgndTrans F='Inh'>0</TextBkgndTrans></TextBlock><Char IX='0'><Font>4</Font><Color F='Inh'>0</Color><Style F='Inh'>0</Style><Case F='Inh'>0</Case><Pos F='Inh'>0</Pos><FontScale F='Inh'>1</FontScale><Size Unit='PT'>0.1111111111111111</Size><DblUnderline F='Inh'>0</DblUnderline><Overline F='Inh'>0</Overline><Strikethru F='Inh'>0</Strikethru><Highlight F='Inh'>0</Highlight><DoubleStrikethrough F='Inh'>0</DoubleStrikethrough><RTLText F='Inh'>0</RTLText><UseVertical F='Inh'>0</UseVertical><Letterspace F='Inh'>0</Letterspace><ColorTrans F='Inh'>0</ColorTrans><AsianFont F='Inh'>0</AsianFont><ComplexScriptFont F='Inh'>0</ComplexScriptFont><LocalizeFont F='Inh'>0</LocalizeFont><ComplexScriptSize F='Inh'>-1</ComplexScriptSize><LangID>1033</LangID></Char></StyleSheet><StyleSheet ID='7' NameU='Visio 90' Name='Visio 90' LineStyle='3' FillStyle='3' TextStyle='3'><StyleProp><EnableLineProps>1</EnableLineProps><EnableFillProps>1</EnableFillProps><EnableTextProps>1</EnableTextProps><HideForApply>1</HideForApply></StyleProp><Line><LineWeight F='Inh'>0.01</LineWeight><LineColor>0</LineColor><LinePattern F='Inh'>1</LinePattern><Rounding F='Inh'>0</Rounding><EndArrowSize F='Inh'>2</EndArrowSize><BeginArrow F='Inh'>0</BeginArrow><EndArrow F='Inh'>0</EndArrow><LineCap F='Inh'>0</LineCap><BeginArrowSize F='Inh'>2</BeginArrowSize><LineColorTrans F='Inh'>0</LineColorTrans></Line><Fill><FillForegnd>0</FillForegnd><FillBkgnd>1</FillBkgnd><FillPattern F='Inh'>1</FillPattern><ShdwForegnd>0</ShdwForegnd><ShdwBkgnd F='Inh'>1</ShdwBkgnd><ShdwPattern F='Inh'>0</ShdwPattern><FillForegndTrans F='Inh'>0</FillForegndTrans><FillBkgndTrans F='Inh'>0</FillBkgndTrans><ShdwForegndTrans F='Inh'>0</ShdwForegndTrans><ShdwBkgndTrans F='Inh'>0</ShdwBkgndTrans><ShapeShdwType F='Inh'>0</ShapeShdwType><ShapeShdwOffsetX F='Inh'>0</ShapeShdwOffsetX><ShapeShdwOffsetY F='Inh'>0</ShapeShdwOffsetY><ShapeShdwObliqueAngle F='Inh'>0</ShapeShdwObliqueAngle><ShapeShdwScaleFactor F='Inh'>1</ShapeShdwScaleFactor></Fill><Char IX='0'><Font>4</Font><Color>0</Color><Style F='Inh'>0</Style><Case F='Inh'>0</Case><Pos F='Inh'>0</Pos><FontScale F='Inh'>1</FontScale><Size F='Inh'>0.1666666666666667</Size><DblUnderline F='Inh'>0</DblUnderline><Overline F='Inh'>0</Overline><Strikethru F='Inh'>0</Strikethru><Highlight F='Inh'>0</Highlight><DoubleStrikethrough F='Inh'>0</DoubleStrikethrough><RTLText F='Inh'>0</RTLText><UseVertical F='Inh'>0</UseVertical><Letterspace F='Inh'>0</Letterspace><ColorTrans F='Inh'>0</ColorTrans><AsianFont F='Inh'>0</AsianFont><ComplexScriptFont F='Inh'>0</ComplexScriptFont><LocalizeFont F='Inh'>0</LocalizeFont><ComplexScriptSize F='Inh'>-1</ComplexScriptSize><LangID>1033</LangID></Char></StyleSheet><StyleSheet ID='8' NameU='Callout' Name='Callout' LineStyle='9' FillStyle='9' TextStyle='9'><StyleProp><EnableLineProps>1</EnableLineProps><EnableFillProps>1</EnableFillProps><EnableTextProps>1</EnableTextProps><HideForApply>0</HideForApply></StyleProp><Line><LineWeight>0.003333333333333334</LineWeight><LineColor F='Inh'>#000000</LineColor><LinePattern F='Inh'>1</LinePattern><Rounding F='Inh'>0</Rounding><EndArrowSize>1</EndArrowSize><BeginArrow F='Inh'>0</BeginArrow><EndArrow F='Inh'>0</EndArrow><LineCap F='Inh'>0</LineCap><BeginArrowSize>1</BeginArrowSize><LineColorTrans F='Inh'>0</LineColorTrans></Line><Char IX='0'><Font>4</Font><Color F='Inh'>0</Color><Style F='Inh'>0</Style><Case F='Inh'>0</Case><Pos F='Inh'>0</Pos><FontScale F='Inh'>1</FontScale><Size Unit='PT'>0.1111111111111111</Size><DblUnderline F='Inh'>0</DblUnderline><Overline F='Inh'>0</Overline><Strikethru F='Inh'>0</Strikethru><Highlight F='Inh'>0</Highlight><DoubleStrikethrough F='Inh'>0</DoubleStrikethrough><RTLText F='Inh'>0</RTLText><UseVertical F='Inh'>0</UseVertical><Letterspace F='Inh'>0</Letterspace><ColorTrans F='Inh'>0</ColorTrans><AsianFont F='Inh'>0</AsianFont><ComplexScriptFont F='Inh'>0</ComplexScriptFont><LocalizeFont F='Inh'>0</LocalizeFont><ComplexScriptSize F='Inh'>-1</ComplexScriptSize><LangID F='Inh'>1033</LangID></Char><Para IX='0'><IndFirst F='Inh'>0</IndFirst><IndLeft F='Inh'>0</IndLeft><IndRight F='Inh'>0</IndRight><SpLine F='Inh'>-1.2</SpLine><SpBefore F='Inh'>0</SpBefore><SpAfter F='Inh'>0</SpAfter><HorzAlign>0</HorzAlign><Bullet F='Inh'>0</Bullet><BulletStr F='Inh'/><BulletFont F='Inh'>0</BulletFont><LocalizeBulletFont F='Inh'>0</LocalizeBulletFont><BulletFontSize F='Inh'>-1</BulletFontSize><TextPosAfterBullet F='Inh'>0</TextPosAfterBullet><Flags F='Inh'>0</Flags></Para></StyleSheet><StyleSheet ID='9' NameU='Visio 00' Name='Visio 00' LineStyle='0' FillStyle='0' TextStyle='0'><StyleProp><EnableLineProps>1</EnableLineProps><EnableFillProps>1</EnableFillProps><EnableTextProps>1</EnableTextProps><HideForApply>1</HideForApply></StyleProp><Line><LineWeight F='Inh'>0.01</LineWeight><LineColor F='HSL(0,0,0)'>#000000</LineColor><LinePattern F='Inh'>1</LinePattern><Rounding F='Inh'>0</Rounding><EndArrowSize F='Inh'>2</EndArrowSize><BeginArrow F='Inh'>0</BeginArrow><EndArrow F='Inh'>0</EndArrow><LineCap F='Inh'>0</LineCap><BeginArrowSize F='Inh'>2</BeginArrowSize><LineColorTrans F='Inh'>0</LineColorTrans></Line><Fill><FillForegnd F='HSL(144,116,225)'>#e8eef7</FillForegnd><FillBkgnd F='HSL(144,106,193)'>#b7c9e3</FillBkgnd><FillPattern F='Inh'>1</FillPattern><ShdwForegnd F='HSL(144,116,125)'>#4979c0</ShdwForegnd><ShdwBkgnd F='Inh'>1</ShdwBkgnd><ShdwPattern F='Inh'>0</ShdwPattern><FillForegndTrans F='Inh'>0</FillForegndTrans><FillBkgndTrans F='Inh'>0</FillBkgndTrans><ShdwForegndTrans F='Inh'>0</ShdwForegndTrans><ShdwBkgndTrans F='Inh'>0</ShdwBkgndTrans><ShapeShdwType F='Inh'>0</ShapeShdwType><ShapeShdwOffsetX F='Inh'>0</ShapeShdwOffsetX><ShapeShdwOffsetY F='Inh'>0</ShapeShdwOffsetY><ShapeShdwObliqueAngle F='Inh'>0</ShapeShdwObliqueAngle><ShapeShdwScaleFactor F='Inh'>1</ShapeShdwScaleFactor></Fill><Char IX='0'><Font>4</Font><Color>0</Color><Style F='Inh'>0</Style><Case F='Inh'>0</Case><Pos F='Inh'>0</Pos><FontScale F='Inh'>1</FontScale><Size F='Inh'>0.1666666666666667</Size><DblUnderline F='Inh'>0</DblUnderline><Overline F='Inh'>0</Overline><Strikethru F='Inh'>0</Strikethru><Highlight F='Inh'>0</Highlight><DoubleStrikethrough F='Inh'>0</DoubleStrikethrough><RTLText F='Inh'>0</RTLText><UseVertical F='Inh'>0</UseVertical><Letterspace F='Inh'>0</Letterspace><ColorTrans F='Inh'>0</ColorTrans><AsianFont F='Inh'>0</AsianFont><ComplexScriptFont F='Inh'>0</ComplexScriptFont><LocalizeFont F='Inh'>0</LocalizeFont><ComplexScriptSize F='Inh'>-1</ComplexScriptSize><LangID F='Inh'>1033</LangID></Char></StyleSheet><StyleSheet ID='10' NameU='Connector Arrow' Name='Connector Arrow' LineStyle='6' FillStyle='6' TextStyle='6'><StyleProp><EnableLineProps>1</EnableLineProps><EnableFillProps>0</EnableFillProps><EnableTextProps>0</EnableTextProps><HideForApply>0</HideForApply></StyleProp><Line><LineWeight F='Inh'>0.003333333333333334</LineWeight><LineColor F='Inh'>0</LineColor><LinePattern F='Inh'>1</LinePattern><Rounding F='Inh'>0</Rounding><EndArrowSize F='Inh'>1</EndArrowSize><BeginArrow F='Inh'>0</BeginArrow><EndArrow>4</EndArrow><LineCap F='Inh'>0</LineCap><BeginArrowSize F='Inh'>1</BeginArrowSize><LineColorTrans F='Inh'>0</LineColorTrans></Line></StyleSheet></StyleSheets><DocumentSheet NameU='TheDoc' Name='TheDoc' LineStyle='0' FillStyle='0' TextStyle='0'><DocProps><OutputFormat>0</OutputFormat><LockPreview>0</LockPreview><AddMarkup F='No Formula'>0</AddMarkup><ViewMarkup F='No Formula'>0</ViewMarkup><PreviewQuality>0</PreviewQuality><PreviewScope>1</PreviewScope><DocLangID>1033</DocLangID></DocProps></DocumentSheet><Masters><Master ID='12' NameU='Line Instance' Name='Line Instance' Prompt='' IconSize='1' AlignName='2' MatchByName='0' IconUpdate='0' UniqueID='{010A353B-000C-0000-8E40-00608CF305B2}' BaseID='{FDE58E66-A549-43A1-8F7C-B9F94814B6F8}' PatternFlags='0' Hidden='0'><PageSheet LineStyle='0' FillStyle='0' TextStyle='0'><PageProps><PageWidth>1</PageWidth><PageHeight>1.181102362204724</PageHeight><ShdwOffsetX Unit='IN'>0.125</ShdwOffsetX><ShdwOffsetY Unit='IN'>-0.125</ShdwOffsetY><PageScale Unit='MM'>0.03937007874015748</PageScale><DrawingScale Unit='MM'>0.03937007874015748</DrawingScale><DrawingSizeType>4</DrawingSizeType><DrawingScaleType>0</DrawingScaleType><InhibitSnap>0</InhibitSnap><UIVisibility F='No Formula'>0</UIVisibility><ShdwType>0</ShdwType><ShdwObliqueAngle>0</ShdwObliqueAngle><ShdwScaleFactor>1</ShdwScaleFactor></PageProps><PrintProps><PageLeftMargin F='Inh'>0.25</PageLeftMargin><PageRightMargin F='Inh'>0.25</PageRightMargin><PageTopMargin F='Inh'>0.25</PageTopMargin><PageBottomMargin F='Inh'>0.25</PageBottomMargin><ScaleX>1</ScaleX><ScaleY>1</ScaleY><PagesX F='Inh'>1</PagesX><PagesY F='Inh'>1</PagesY><CenterX F='Inh'>0</CenterX><CenterY F='Inh'>0</CenterY><OnPage F='Inh'>0</OnPage><PrintGrid F='Inh'>0</PrintGrid><PrintPageOrientation>0</PrintPageOrientation><PaperKind>0</PaperKind><PaperSource F='Inh'>7</PaperSource></PrintProps><Layer IX='0'><Name>Instance</Name><Color>255</Color><Status>0</Status><Visible>1</Visible><Print>1</Print><Active>0</Active><Lock>0</Lock><Snap>1</Snap><Glue>1</Glue><NameUniv>Instance</NameUniv><ColorTrans>0</ColorTrans></Layer></PageSheet><Shapes><Shape ID='5' NameU='Process' Name='Process' Type='Shape' LineStyle='3' FillStyle='3' TextStyle='3'><XForm><PinX F='(BeginX+EndX)/2'>0.3937007874015748</PinX><PinY F='(BeginY+EndY)/2'>0.5905511811023623</PinY><Width F='SQRT((EndX-BeginX)^2+(EndY-BeginY)^2)'>1.181102362204724</Width><Height>0</Height><LocPinX F='Width*0.5'>0.5905511811023618</LocPinX><LocPinY F='Height*0.5'>0</LocPinY><Angle F='ATAN2(EndY-BeginY,EndX-BeginX)'>-1.570796326794897</Angle><FlipX>0</FlipX><FlipY>0</FlipY><ResizeMode>0</ResizeMode></XForm><Event><TheData F='No Formula'>0</TheData><TheText F='No Formula'>0</TheText><EventDblClick F='No Formula'>0</EventDblClick><EventXFMod F='No Formula'>0</EventXFMod><EventDrop F='RUNADDONWARGS("Sequence Chart Studio","/event=100")'>0</EventDrop></Event><vx:Event xmlns:vx='http://schemas.microsoft.com/visio/2006/extension'><vx:EventMultiDrop F='No Formula'>0</vx:EventMultiDrop></vx:Event><LayerMem><LayerMember>0</LayerMember></LayerMem><XForm1D><BeginX>0.3937007874015748</BeginX><BeginY>1.181102362204724</BeginY><EndX>0.3937007874015748</EndX><EndY>4.440892098500626E-16</EndY></XForm1D><TextXForm><TxtPinX>0</TxtPinX><TxtPinY F='Height*0.5'>0</TxtPinY><TxtWidth F='TEXTWIDTH(TheText)'>0.05555555555555556</TxtWidth><TxtHeight F='TEXTHEIGHT(TheText,TxtWidth)'>0.1888888888888889</TxtHeight><TxtLocPinX F='TxtWidth*0.5'>0.02777777777777778</TxtLocPinX><TxtLocPinY>0</TxtLocPinY><TxtAngle Unit='DEG'>1.5707963267949</TxtAngle></TextXForm><Line><LineWeight>0.003333333333333334</LineWeight><LineColor F='Inh'>0</LineColor><LinePattern F='Inh'>1</LinePattern><Rounding F='Inh'>0</Rounding><EndArrowSize F='Inh'>2</EndArrowSize><BeginArrow F='Inh'>0</BeginArrow><EndArrow F='Inh'>0</EndArrow><LineCap F='Inh'>0</LineCap><BeginArrowSize F='Inh'>2</BeginArrowSize><LineColorTrans F='Inh'>0</LineColorTrans></Line><Protection><LockWidth F='Inh'>0</LockWidth><LockHeight>1</LockHeight><LockMoveX F='Inh'>0</LockMoveX><LockMoveY F='Inh'>0</LockMoveY><LockAspect F='Inh'>0</LockAspect><LockDelete F='Inh'>0</LockDelete><LockBegin F='Inh'>0</LockBegin><LockEnd F='Inh'>0</LockEnd><LockRotate F='Inh'>0</LockRotate><LockCrop F='Inh'>0</LockCrop><LockVtxEdit>1</LockVtxEdit><LockTextEdit F='Inh'>0</LockTextEdit><LockFormat F='Inh'>0</LockFormat><LockGroup F='Inh'>0</LockGroup><LockCalcWH F='Inh'>0</LockCalcWH><LockSelect F='Inh'>0</LockSelect><LockCustProp F='Inh'>0</LockCustProp></Protection><vx:Protection xmlns:vx='http://schemas.microsoft.com/visio/2006/extension'><vx:LockFromGroupFormat F='Inh'>0</vx:LockFromGroupFormat><vx:LockThemeColors F='Inh'>0</vx:LockThemeColors><vx:LockThemeEffects F='Inh'>0</vx:LockThemeEffects></vx:Protection><Fill><FillForegnd>0</FillForegnd><FillBkgnd F='Inh'>0</FillBkgnd><FillPattern F='Inh'>1</FillPattern><ShdwForegnd F='Inh'>0</ShdwForegnd><ShdwBkgnd F='Inh'>1</ShdwBkgnd><ShdwPattern F='Inh'>0</ShdwPattern><FillForegndTrans F='Inh'>0</FillForegndTrans><FillBkgndTrans F='Inh'>0</FillBkgndTrans><ShdwForegndTrans F='Inh'>0</ShdwForegndTrans><ShdwBkgndTrans F='Inh'>0</ShdwBkgndTrans><ShapeShdwType F='Inh'>0</ShapeShdwType><ShapeShdwOffsetX F='Inh'>0</ShapeShdwOffsetX><ShapeShdwOffsetY F='Inh'>0</ShapeShdwOffsetY><ShapeShdwObliqueAngle F='Inh'>0</ShapeShdwObliqueAngle><ShapeShdwScaleFactor F='Inh'>1</ShapeShdwScaleFactor></Fill><Misc><NoObjHandles F='Inh'>0</NoObjHandles><NonPrinting F='Inh'>0</NonPrinting><NoCtlHandles F='Inh'>0</NoCtlHandles><NoAlignBox>0</NoAlignBox><UpdateAlignBox F='Inh'>0</UpdateAlignBox><HideText F='Inh'>0</HideText><DynFeedback F='Inh'>0</DynFeedback><GlueType F='Inh'>0</GlueType><WalkPreference F='Inh'>0</WalkPreference><BegTrigger F='No Formula'>0</BegTrigger><EndTrigger F='No Formula'>0</EndTrigger><ObjType>4</ObjType><Comment F='Inh'/><IsDropSource F='Inh'>0</IsDropSource><NoLiveDynamics F='Inh'>0</NoLiveDynamics><LocalizeMerge F='Inh'>0</LocalizeMerge><Calendar F='Inh'>0</Calendar><LangID>1033</LangID><ShapeKeywords F='Inh'/><DropOnPageScale F='Inh'>1</DropOnPageScale></Misc><TextBlock><LeftMargin Unit='PT'>0.02777777777777778</LeftMargin><RightMargin Unit='PT'>0.02777777777777778</RightMargin><TopMargin Unit='PT'>0.02777777777777778</TopMargin><BottomMargin Unit='PT'>0.02777777777777778</BottomMargin><VerticalAlign F='Inh'>1</VerticalAlign><TextBkgnd F='Inh'>0</TextBkgnd><DefaultTabStop F='Inh'>0.5</DefaultTabStop><TextDirection F='Inh'>0</TextDirection><TextBkgndTrans F='Inh'>0</TextBkgndTrans></TextBlock><Help><HelpTopic F='Inh'/><Copyright>See http://scstudio.sourceforge.net</Copyright></Help><Act NameU='Row_1' ID='1'><Menu>Message Sequence...</Menu><Action F='RUNADDONWARGS("Sequence Chart Studio","/event=103")'>0</Action><Checked>0</Checked><Disabled>0</Disabled><ReadOnly>0</ReadOnly><Invisible>0</Invisible><BeginGroup>1</BeginGroup><TagName V='null'/><ButtonFace V='null'/><SortKey V='null'/></Act><Control NameU='mscHeadWidth' ID='1'><X>0.0984252</X><Y F='Height/2+0.19685039DL'>0.19685039</Y><XDyn F='Controls.mscHeadWidth'>0.0984252</XDyn><YDyn F='Controls.mscHeadWidth.Y'>0.19685039</YDyn><XCon>2</XCon><YCon>3</YCon><CanGlue>1</CanGlue><Prompt F='No Formula'/></Control><User NameU='visVersion' ID='1'><Value>11</Value><Prompt F='No Formula'/></User><User NameU='mscSymbol' ID='2'><Value Unit='STR'>bmsc.instance.line</Value><Prompt F='No Formula'/></User><Char IX='0'><Font>4</Font><Color F='Inh'>0</Color><Style F='Inh'>0</Style><Case F='Inh'>0</Case><Pos F='Inh'>0</Pos><FontScale F='Inh'>1</FontScale><Size>0.1111111111111111</Size><DblUnderline F='Inh'>0</DblUnderline><Overline F='Inh'>0</Overline><Strikethru F='Inh'>0</Strikethru><Highlight F='Inh'>0</Highlight><DoubleStrikethrough F='Inh'>0</DoubleStrikethrough><RTLText F='Inh'>0</RTLText><UseVertical F='Inh'>0</UseVertical><Letterspace F='Inh'>0</Letterspace><ColorTrans F='Inh'>0</ColorTrans><AsianFont F='Inh'>0</AsianFont><ComplexScriptFont F='Inh'>0</ComplexScriptFont><LocalizeFont F='Inh'>0</LocalizeFont><ComplexScriptSize F='Inh'>-1</ComplexScriptSize><LangID>1033</LangID></Char><Geom IX='0'><NoFill>1</NoFill><NoLine>0</NoLine><NoShow>0</NoShow><NoSnap>1</NoSnap><MoveTo IX='1'><X F='Width*0'>0</X><Y F='-Controls.mscHeadWidth.Y'>-0.19685039</Y></MoveTo><LineTo IX='2'><X F='Width*0'>0</X><Y F='Controls.mscHeadWidth.Y'>0.19685039</Y></LineTo><LineTo IX='3'><X F='Controls.mscHeadWidth'>0.0984252</X><Y F='Controls.mscHeadWidth.Y'>0.19685039</Y></LineTo><LineTo IX='4'><X F='Controls.mscHeadWidth'>0.0984252</X><Y F='-Controls.mscHeadWidth.Y'>-0.19685039</Y></LineTo><LineTo IX='5'><X F='Geometry1.X1'>0</X><Y F='Geometry1.Y1'>-0.19685039</Y></LineTo></Geom><Geom IX='1'><NoFill>0</NoFill><NoLine>0</NoLine><NoShow>0</NoShow><NoSnap>1</NoSnap><MoveTo IX='1'><X F='Width-Controls.mscHeadWidth'>1.082677162204724</X><Y F='Controls.mscHeadWidth.Y'>0.19685039</Y></MoveTo><LineTo IX='2'><X F='Width'>1.181102362204724</X><Y F='Controls.mscHeadWidth.Y'>0.19685039</Y></LineTo><LineTo IX='3'><X F='Width'>1.181102362204724</X><Y F='-Controls.mscHeadWidth.Y'>-0.19685039</Y></LineTo><LineTo IX='4'><X F='Width-Controls.mscHeadWidth'>1.082677162204724</X><Y F='-Controls.mscHeadWidth.Y'>-0.19685039</Y></LineTo><LineTo IX='5'><X F='Geometry2.X1'>1.082677162204724</X><Y F='Geometry2.Y1'>0.19685039</Y></LineTo></Geom><Geom IX='2'><NoFill>1</NoFill><NoLine>0</NoLine><NoShow>0</NoShow><NoSnap>0</NoSnap><MoveTo IX='1'><X F='Controls.mscHeadWidth'>0.0984252</X><Y>0</Y></MoveTo><LineTo IX='2'><X F='Width-Controls.mscHeadWidth'>1.082677162204724</X><Y>0</Y></LineTo></Geom><Text><cp IX='0'/>
+<VisioDocument key='4B30F18B73827A65F5FC7CF333E1DD43A68D3EE30A9FBC1566638F93DD2802F60E600420D0B13724352F204AC1E65BD43DB1A0A2D137CD8A849B176AC122E42B' start='190' metric='0' DocLangID='1033' buildnum='4518' version='12.0' xml:space='preserve' xmlns:vx='http://schemas.microsoft.com/visio/2006/extension' xmlns='http://schemas.microsoft.com/visio/2003/core'><DocumentProperties><Title>Basic MSC</Title><Creator>Petr Gotthard</Creator><Company>Brno</Company><BuildNumberCreated>806228390</BuildNumberCreated><BuildNumberEdited>806228390</BuildNumberEdited><CustomProps><CustomProp Name='_VPID_EXTENDED_VDX' PropType='Number'>1</CustomProp></CustomProps><TimeCreated>2011-03-31T23:02:37</TimeCreated><TimeSaved>2013-06-24T19:31:01</TimeSaved><TimeEdited>2012-06-20T11:20:55</TimeEdited><TimePrinted>2011-03-31T23:02:37</TimePrinted></DocumentProperties><DocumentSettings TopPage='0' DefaultTextStyle='3' DefaultLineStyle='3' DefaultFillStyle='3' DefaultGuideStyle='4'><GlueSettings>9</GlueSettings><SnapSettings>65847</SnapSettings><SnapExtensions>34</SnapExtensions><DynamicGridEnabled>0</DynamicGridEnabled><ProtectStyles>0</ProtectStyles><ProtectShapes>0</ProtectShapes><ProtectMasters>0</ProtectMasters><ProtectBkgnds>0</ProtectBkgnds></DocumentSettings><Colors><ColorEntry IX='0' RGB='#000000'/><ColorEntry IX='1' RGB='#FFFFFF'/><ColorEntry IX='2' RGB='#FF0000'/><ColorEntry IX='3' RGB='#00FF00'/><ColorEntry IX='4' RGB='#0000FF'/><ColorEntry IX='5' RGB='#FFFF00'/><ColorEntry IX='6' RGB='#FF00FF'/><ColorEntry IX='7' RGB='#00FFFF'/><ColorEntry IX='8' RGB='#800000'/><ColorEntry IX='9' RGB='#008000'/><ColorEntry IX='10' RGB='#000080'/><ColorEntry IX='11' RGB='#808000'/><ColorEntry IX='12' RGB='#800080'/><ColorEntry IX='13' RGB='#008080'/><ColorEntry IX='14' RGB='#C0C0C0'/><ColorEntry IX='15' RGB='#E6E6E6'/><ColorEntry IX='16' RGB='#CDCDCD'/><ColorEntry IX='17' RGB='#B3B3B3'/><ColorEntry IX='18' RGB='#9A9A9A'/><ColorEntry IX='19' RGB='#808080'/><ColorEntry IX='20' RGB='#666666'/><ColorEntry IX='21' RGB='#4D4D4D'/><ColorEntry IX='22' RGB='#333333'/><ColorEntry IX='23' RGB='#1A1A1A'/><ColorEntry IX='24' RGB='#000000'/><ColorEntry IX='25' RGB='#E8EEF7'/><ColorEntry IX='26' RGB='#B7C9E3'/><ColorEntry IX='27' RGB='#4979C0'/></Colors><FaceNames><FaceName ID='1' Name='Arial Unicode MS' UnicodeRanges='-1 -369098753 63 0' CharSets='1614742015 -65536' Panos='2 11 6 4 2 2 2 2 2 4' Flags='357'/><FaceName ID='2' Name='Symbol' UnicodeRanges='0 0 0 0' CharSets='-2147483648 0' Panos='5 5 1 2 1 7 6 2 5 7' Flags='261'/><FaceName ID='3' Name='Wingdings' UnicodeRanges='0 0 0 0' CharSets='-2147483648 0' Panos='5 0 0 0 0 0 0 0 0 0' Flags='261'/><FaceName ID='4' Name='Arial' UnicodeRanges='-536859905 -1073711037 9 0' CharSets='1073742335 -65536' Panos='2 11 6 4 2 2 2 2 2 4' Flags='325'/><FaceName ID='5' Name='SimSun' UnicodeRanges='3 680460288 6 0' CharSets='262145 0' Panos='2 1 6 0 3 1 1 1 1 1' Flags='421'/><FaceName ID='6' Name='PMingLiU' UnicodeRanges='-1610611969 684719354 22 0' CharSets='1048577 0' Panos='2 2 5 0 0 0 0 0 0 0' Flags='421'/><FaceName ID='7' Name='MS PGothic' UnicodeRanges='-536870145 1791491579 18 0' CharSets='1073873055 -539557888' Panos='2 11 6 0 7 2 5 8 2 4' Flags='421'/><FaceName ID='8' Name='Dotum' UnicodeRanges='-1342176593 1775729915 48 0' CharSets='1074266271 -539557888' Panos='2 11 6 0 0 1 1 1 1 1' Flags='421'/><FaceName ID='9' Name='Sylfaen' UnicodeRanges='67110535 0 0 0' CharSets='536871071 0' Panos='1 10 5 2 5 3 6 3 3 3' Flags='325'/><FaceName ID='10' Name='Estrangelo Edessa' UnicodeRanges='-2147475389 0 128 0' CharSets='1 0' Panos='3 8 6 0 0 0 0 0 0 0' Flags='325'/><FaceName ID='11' Name='Vrinda' UnicodeRanges='65539 0 0 0' CharSets='1 0' Panos='2 11 5 2 4 2 4 2 2 3' Flags='325'/><FaceName ID='12' Name='Shruti' UnicodeRanges='262147 0 0 0' CharSets='1 0' Panos='2 11 5 2 4 2 4 2 2 3' Flags='325'/><FaceName ID='13' Name='Mangal' UnicodeRanges='32771 0 0 0' CharSets='1 0' Panos='2 4 5 3 5 2 3 3 2 2' Flags='325'/><FaceName ID='14' Name='Tunga' UnicodeRanges='4194307 0 0 0' CharSets='1 0' Panos='2 11 5 2 4 2 4 2 2 3' Flags='325'/><FaceName ID='15' Name='Sendnya' UnicodeRanges='-520082689 -1073741822 8 0' CharSets='536936959 539492352' Panos='2 11 6 4 2 2 2 2 2 4' Flags='327'/><FaceName ID='16' Name='Raavi' UnicodeRanges='131075 0 0 0' CharSets='1 0' Panos='2 11 5 2 4 2 4 2 2 3' Flags='325'/><FaceName ID='17' Name='Dhenu' UnicodeRanges='-520082689 -1073741822 8 0' CharSets='536936959 539492352' Panos='2 11 6 4 2 2 2 2 2 4' Flags='327'/><FaceName ID='18' Name='Latha' UnicodeRanges='1048579 0 0 0' CharSets='1 0' Panos='2 11 6 4 2 2 2 2 2 4' Flags='325'/><FaceName ID='19' Name='Gautami' UnicodeRanges='2097155 0 0 0' CharSets='1 0' Panos='2 11 5 2 4 2 4 2 2 3' Flags='325'/><FaceName ID='20' Name='Cordia New' UnicodeRanges='-2130706429 0 0 0' CharSets='65537 0' Panos='2 11 3 4 2 2 2 2 2 4' Flags='325'/><FaceName ID='21' Name='MS Farsi' UnicodeRanges='-520082689 -1073741822 8 0' CharSets='536936959 539492352' Panos='2 11 6 4 2 2 2 2 2 4' Flags='327'/><FaceName ID='22' Name='Gulim' UnicodeRanges='-1342176593 1775729915 48 0' CharSets='1074266271 -539557888' Panos='2 11 6 0 0 1 1 1 1 1' Flags='421'/><FaceName ID='23' Name='Times New Roman' UnicodeRanges='-536859905 -1073711039 9 0' CharSets='1073742335 -65536' Panos='2 2 6 3 5 4 5 2 3 4' Flags='325'/></FaceNames><StyleSheets><StyleSheet ID='0' NameU='No Style' Name='No Style'><StyleProp><EnableLineProps>1</EnableLineProps><EnableFillProps>1</EnableFillProps><EnableTextProps>1</EnableTextProps><HideForApply>0</HideForApply></StyleProp><Line><LineWeight>0.01</LineWeight><LineColor>0</LineColor><LinePattern>1</LinePattern><Rounding>0</Rounding><EndArrowSize>2</EndArrowSize><BeginArrow>0</BeginArrow><EndArrow>0</EndArrow><LineCap>0</LineCap><BeginArrowSize>2</BeginArrowSize><LineColorTrans>0</LineColorTrans></Line><Fill><FillForegnd>1</FillForegnd><FillBkgnd>0</FillBkgnd><FillPattern>1</FillPattern><ShdwForegnd>0</ShdwForegnd><ShdwBkgnd>1</ShdwBkgnd><ShdwPattern>0</ShdwPattern><FillForegndTrans>0</FillForegndTrans><FillBkgndTrans>0</FillBkgndTrans><ShdwForegndTrans>0</ShdwForegndTrans><ShdwBkgndTrans>0</ShdwBkgndTrans><ShapeShdwType>0</ShapeShdwType><ShapeShdwOffsetX>0</ShapeShdwOffsetX><ShapeShdwOffsetY>0</ShapeShdwOffsetY><ShapeShdwObliqueAngle>0</ShapeShdwObliqueAngle><ShapeShdwScaleFactor>1</ShapeShdwScaleFactor></Fill><TextBlock><LeftMargin>0</LeftMargin><RightMargin>0</RightMargin><TopMargin>0</TopMargin><BottomMargin>0</BottomMargin><VerticalAlign>1</VerticalAlign><TextBkgnd>0</TextBkgnd><DefaultTabStop>0.5</DefaultTabStop><TextDirection>0</TextDirection><TextBkgndTrans>0</TextBkgndTrans></TextBlock><Protection><LockWidth>0</LockWidth><LockHeight>0</LockHeight><LockMoveX>0</LockMoveX><LockMoveY>0</LockMoveY><LockAspect>0</LockAspect><LockDelete>0</LockDelete><LockBegin>0</LockBegin><LockEnd>0</LockEnd><LockRotate>0</LockRotate><LockCrop>0</LockCrop><LockVtxEdit>0</LockVtxEdit><LockTextEdit>0</LockTextEdit><LockFormat>0</LockFormat><LockGroup>0</LockGroup><LockCalcWH>0</LockCalcWH><LockSelect>0</LockSelect><LockCustProp>0</LockCustProp></Protection><vx:Protection xmlns:vx='http://schemas.microsoft.com/visio/2006/extension'><vx:LockFromGroupFormat>0</vx:LockFromGroupFormat><vx:LockThemeColors>0</vx:LockThemeColors><vx:LockThemeEffects>0</vx:LockThemeEffects></vx:Protection><Misc><NoObjHandles>0</NoObjHandles><NonPrinting>0</NonPrinting><NoCtlHandles>0</NoCtlHandles><NoAlignBox>0</NoAlignBox><UpdateAlignBox>0</UpdateAlignBox><HideText>0</HideText><DynFeedback>0</DynFeedback><GlueType>0</GlueType><WalkPreference>0</WalkPreference><BegTrigger F='No Formula'>0</BegTrigger><EndTrigger F='No Formula'>0</EndTrigger><ObjType>0</ObjType><Comment V='null'/><IsDropSource>0</IsDropSource><NoLiveDynamics>0</NoLiveDynamics><LocalizeMerge>0</LocalizeMerge><Calendar>0</Calendar><LangID>1033</LangID><ShapeKeywords V='null'/><DropOnPageScale>1</DropOnPageScale></Misc><Event><TheData F='No Formula'>0</TheData><TheText F='No Formula'>0</TheText><EventDblClick F='No Formula'>0</EventDblClick><EventXFMod F='No Formula'>0</EventXFMod><EventDrop F='No Formula'>0</EventDrop></Event><vx:Event xmlns:vx='http://schemas.microsoft.com/visio/2006/extension'><vx:EventMultiDrop F='No Formula'>0</vx:EventMultiDrop></vx:Event><Help><HelpTopic V='null'/><Copyright V='null'/></Help><LayerMem><LayerMember V='null'/></LayerMem><RulerGrid><XRulerDensity>32</XRulerDensity><YRulerDensity>32</YRulerDensity><XRulerOrigin>0</XRulerOrigin><YRulerOrigin>0</YRulerOrigin><XGridDensity>8</XGridDensity><YGridDensity>8</YGridDensity><XGridSpacing>0</XGridSpacing><YGridSpacing>0</YGridSpacing><XGridOrigin>0</XGridOrigin><YGridOrigin>0</YGridOrigin></RulerGrid><Image><Gamma>1</Gamma><Contrast>0.5</Contrast><Brightness>0.5</Brightness><Sharpen>0</Sharpen><Blur>0</Blur><Denoise>0</Denoise><Transparency>0</Transparency></Image><Group><SelectMode>1</SelectMode><DisplayMode>2</DisplayMode><IsDropTarget>0</IsDropTarget><IsSnapTarget>1</IsSnapTarget><IsTextEditTarget>1</IsTextEditTarget><DontMoveChildren>0</DontMoveChildren></Group><Layout><ShapePermeableX>0</ShapePermeableX><ShapePermeableY>0</ShapePermeableY><ShapePermeablePlace>0</ShapePermeablePlace><ShapeFixedCode>0</ShapeFixedCode><ShapePlowCode>0</ShapePlowCode><ShapeRouteStyle>0</ShapeRouteStyle><ConFixedCode>0</ConFixedCode><ConLineJumpCode>0</ConLineJumpCode><ConLineJumpStyle>0</ConLineJumpStyle><ConLineJumpDirX>0</ConLineJumpDirX><ConLineJumpDirY>0</ConLineJumpDirY><ShapePlaceFlip>0</ShapePlaceFlip><ConLineRouteExt>0</ConLineRouteExt><ShapeSplit>0</ShapeSplit><ShapeSplittable>0</ShapeSplittable></Layout><vx:Layout xmlns:vx='http://schemas.microsoft.com/visio/2006/extension'><vx:ShapePlaceStyle>0</vx:ShapePlaceStyle></vx:Layout><PageLayout><ResizePage>0</ResizePage><EnableGrid>0</EnableGrid><DynamicsOff>0</DynamicsOff><CtrlAsInput>0</CtrlAsInput><PlaceStyle>0</PlaceStyle><RouteStyle>0</RouteStyle><PlaceDepth>0</PlaceDepth><PlowCode>0</PlowCode><LineJumpCode>1</LineJumpCode><LineJumpStyle>0</LineJumpStyle><PageLineJumpDirX>0</PageLineJumpDirX><PageLineJumpDirY>0</PageLineJumpDirY><LineToNodeX>0.125</LineToNodeX><LineToNodeY>0.125</LineToNodeY><BlockSizeX>0.25</BlockSizeX><BlockSizeY>0.25</BlockSizeY><AvenueSizeX>0.375</AvenueSizeX><AvenueSizeY>0.375</AvenueSizeY><LineToLineX>0.125</LineToLineX><LineToLineY>0.125</LineToLineY><LineJumpFactorX>0.66666666666667</LineJumpFactorX><LineJumpFactorY>0.66666666666667</LineJumpFactorY><LineAdjustFrom>0</LineAdjustFrom><LineAdjustTo>0</LineAdjustTo><PlaceFlip>0</PlaceFlip><LineRouteExt>0</LineRouteExt><PageShapeSplit>0</PageShapeSplit></PageLayout><PrintProps><PageLeftMargin>0.25</PageLeftMargin><PageRightMargin>0.25</PageRightMargin><PageTopMargin>0.25</PageTopMargin><PageBottomMargin>0.25</PageBottomMargin><ScaleX>1</ScaleX><ScaleY>1</ScaleY><PagesX>1</PagesX><PagesY>1</PagesY><CenterX>0</CenterX><CenterY>0</CenterY><OnPage>0</OnPage><PrintGrid>0</PrintGrid><PrintPageOrientation>1</PrintPageOrientation><PaperKind>1</PaperKind><PaperSource>7</PaperSource></PrintProps><PageProps><PageWidth Unit='NUM' F='No Formula'>0</PageWidth><PageHeight Unit='NUM' F='No Formula'>0</PageHeight><ShdwOffsetX Unit='NUM' F='No Formula'>0</ShdwOffsetX><ShdwOffsetY Unit='NUM' F='No Formula'>0</ShdwOffsetY><PageScale F='No Formula'>0</PageScale><DrawingScale F='No Formula'>0</DrawingScale><DrawingSizeType F='No Formula'>0</DrawingSizeType><DrawingScaleType F='No Formula'>0</DrawingScaleType><InhibitSnap F='No Formula'>0</InhibitSnap><UIVisibility F='No Formula'>0</UIVisibility><ShdwType F='No Formula'>0</ShdwType><ShdwObliqueAngle Unit='NUM' F='No Formula'>0</ShdwObliqueAngle><ShdwScaleFactor F='No Formula'>0</ShdwScaleFactor></PageProps><Char IX='0'><Font>4</Font><Color>0</Color><Style>0</Style><Case>0</Case><Pos>0</Pos><FontScale>1</FontScale><Size>0.1666666666666667</Size><DblUnderline>0</DblUnderline><Overline>0</Overline><Strikethru>0</Strikethru><Highlight>0</Highlight><DoubleStrikethrough>0</DoubleStrikethrough><RTLText>0</RTLText><UseVertical>0</UseVertical><Letterspace>0</Letterspace><ColorTrans>0</ColorTrans><AsianFont>0</AsianFont><ComplexScriptFont>0</ComplexScriptFont><LocalizeFont>0</LocalizeFont><ComplexScriptSize>-1</ComplexScriptSize><LangID>1033</LangID></Char><Para IX='0'><IndFirst>0</IndFirst><IndLeft>0</IndLeft><IndRight>0</IndRight><SpLine>-1.2</SpLine><SpBefore>0</SpBefore><SpAfter>0</SpAfter><HorzAlign>1</HorzAlign><Bullet>0</Bullet><BulletStr V='null'/><BulletFont>0</BulletFont><LocalizeBulletFont>0</LocalizeBulletFont><BulletFontSize>-1</BulletFontSize><TextPosAfterBullet>0</TextPosAfterBullet><Flags>0</Flags></Para><Tabs IX='0'/></StyleSheet><StyleSheet ID='1' NameU='Text Only' Name='Text Only' LineStyle='3' FillStyle='3' TextStyle='3'><StyleProp><EnableLineProps>1</EnableLineProps><EnableFillProps>1</EnableFillProps><EnableTextProps>1</EnableTextProps><HideForApply>0</HideForApply></StyleProp><Line><LineWeight F='Inh'>0.01</LineWeight><LineColor F='Inh'>0</LineColor><LinePattern>0</LinePattern><Rounding F='Inh'>0</Rounding><EndArrowSize F='Inh'>2</EndArrowSize><BeginArrow F='Inh'>0</BeginArrow><EndArrow F='Inh'>0</EndArrow><LineCap F='Inh'>0</LineCap><BeginArrowSize F='Inh'>2</BeginArrowSize><LineColorTrans F='Inh'>0</LineColorTrans></Line><Fill><FillForegnd F='Inh'>1</FillForegnd><FillBkgnd F='Inh'>0</FillBkgnd><FillPattern>0</FillPattern><ShdwForegnd F='Inh'>0</ShdwForegnd><ShdwBkgnd F='Inh'>1</ShdwBkgnd><ShdwPattern F='Inh'>0</ShdwPattern><FillForegndTrans F='Inh'>0</FillForegndTrans><FillBkgndTrans F='Inh'>0</FillBkgndTrans><ShdwForegndTrans F='Inh'>0</ShdwForegndTrans><ShdwBkgndTrans F='Inh'>0</ShdwBkgndTrans><ShapeShdwType F='Inh'>0</ShapeShdwType><ShapeShdwOffsetX F='Inh'>0</ShapeShdwOffsetX><ShapeShdwOffsetY F='Inh'>0</ShapeShdwOffsetY><ShapeShdwObliqueAngle F='Inh'>0</ShapeShdwObliqueAngle><ShapeShdwScaleFactor F='Inh'>1</ShapeShdwScaleFactor></Fill><TextBlock><LeftMargin>0</LeftMargin><RightMargin>0</RightMargin><TopMargin>0</TopMargin><BottomMargin>0</BottomMargin><VerticalAlign>0</VerticalAlign><TextBkgnd>0</TextBkgnd><DefaultTabStop F='Inh'>0.5</DefaultTabStop><TextDirection F='Inh'>0</TextDirection><TextBkgndTrans F='Inh'>0</TextBkgndTrans></TextBlock><Para IX='0'><IndFirst F='Inh'>0</IndFirst><IndLeft F='Inh'>0</IndLeft><IndRight F='Inh'>0</IndRight><SpLine F='Inh'>-1.2</SpLine><SpBefore F='Inh'>0</SpBefore><SpAfter F='Inh'>0</SpAfter><HorzAlign>0</HorzAlign><Bullet F='Inh'>0</Bullet><BulletStr F='Inh'/><BulletFont F='Inh'>0</BulletFont><LocalizeBulletFont F='Inh'>0</LocalizeBulletFont><BulletFontSize F='Inh'>-1</BulletFontSize><TextPosAfterBullet F='Inh'>0</TextPosAfterBullet><Flags F='Inh'>0</Flags></Para></StyleSheet><StyleSheet ID='2' NameU='None' Name='None' LineStyle='3' FillStyle='3' TextStyle='3'><StyleProp><EnableLineProps>1</EnableLineProps><EnableFillProps>1</EnableFillProps><EnableTextProps>1</EnableTextProps><HideForApply>0</HideForApply></StyleProp><Line><LineWeight F='Inh'>0.01</LineWeight><LineColor F='Inh'>0</LineColor><LinePattern>0</LinePattern><Rounding F='Inh'>0</Rounding><EndArrowSize F='Inh'>2</EndArrowSize><BeginArrow F='Inh'>0</BeginArrow><EndArrow F='Inh'>0</EndArrow><LineCap F='Inh'>0</LineCap><BeginArrowSize F='Inh'>2</BeginArrowSize><LineColorTrans F='Inh'>0</LineColorTrans></Line><Fill><FillForegnd F='Inh'>1</FillForegnd><FillBkgnd F='Inh'>0</FillBkgnd><FillPattern>0</FillPattern><ShdwForegnd F='Inh'>0</ShdwForegnd><ShdwBkgnd F='Inh'>1</ShdwBkgnd><ShdwPattern F='Inh'>0</ShdwPattern><FillForegndTrans F='Inh'>0</FillForegndTrans><FillBkgndTrans F='Inh'>0</FillBkgndTrans><ShdwForegndTrans F='Inh'>0</ShdwForegndTrans><ShdwBkgndTrans F='Inh'>0</ShdwBkgndTrans><ShapeShdwType F='Inh'>0</ShapeShdwType><ShapeShdwOffsetX F='Inh'>0</ShapeShdwOffsetX><ShapeShdwOffsetY F='Inh'>0</ShapeShdwOffsetY><ShapeShdwObliqueAngle F='Inh'>0</ShapeShdwObliqueAngle><ShapeShdwScaleFactor F='Inh'>1</ShapeShdwScaleFactor></Fill></StyleSheet><StyleSheet ID='3' NameU='Normal' Name='Normal' LineStyle='0' FillStyle='0' TextStyle='0'><StyleProp><EnableLineProps>1</EnableLineProps><EnableFillProps>1</EnableFillProps><EnableTextProps>1</EnableTextProps><HideForApply>0</HideForApply></StyleProp><TextBlock><LeftMargin Unit='PT'>0.05555555555555555</LeftMargin><RightMargin Unit='PT'>0.05555555555555555</RightMargin><TopMargin Unit='PT'>0.05555555555555555</TopMargin><BottomMargin Unit='PT'>0.05555555555555555</BottomMargin><VerticalAlign F='Inh'>1</VerticalAlign><TextBkgnd F='Inh'>0</TextBkgnd><DefaultTabStop F='Inh'>0.5</DefaultTabStop><TextDirection F='Inh'>0</TextDirection><TextBkgndTrans F='Inh'>0</TextBkgndTrans></TextBlock></StyleSheet><StyleSheet ID='4' NameU='Guide' Name='Guide' LineStyle='3' FillStyle='3' TextStyle='3'><StyleProp><EnableLineProps>1</EnableLineProps><EnableFillProps>1</EnableFillProps><EnableTextProps>1</EnableTextProps><HideForApply>0</HideForApply></StyleProp><Line><LineWeight Unit='PT'>0</LineWeight><LineColor>4</LineColor><LinePattern>23</LinePattern><Rounding F='Inh'>0</Rounding><EndArrowSize F='Inh'>2</EndArrowSize><BeginArrow F='Inh'>0</BeginArrow><EndArrow F='Inh'>0</EndArrow><LineCap F='Inh'>0</LineCap><BeginArrowSize F='Inh'>2</BeginArrowSize><LineColorTrans F='Inh'>0</LineColorTrans></Line><Fill><FillForegnd F='Inh'>1</FillForegnd><FillBkgnd F='Inh'>0</FillBkgnd><FillPattern>0</FillPattern><ShdwForegnd F='Inh'>0</ShdwForegnd><ShdwBkgnd F='Inh'>1</ShdwBkgnd><ShdwPattern F='Inh'>0</ShdwPattern><FillForegndTrans F='Inh'>0</FillForegndTrans><FillBkgndTrans F='Inh'>0</FillBkgndTrans><ShdwForegndTrans F='Inh'>0</ShdwForegndTrans><ShdwBkgndTrans F='Inh'>0</ShdwBkgndTrans><ShapeShdwType F='Inh'>0</ShapeShdwType><ShapeShdwOffsetX F='Inh'>0</ShapeShdwOffsetX><ShapeShdwOffsetY F='Inh'>0</ShapeShdwOffsetY><ShapeShdwObliqueAngle F='Inh'>0</ShapeShdwObliqueAngle><ShapeShdwScaleFactor F='Inh'>1</ShapeShdwScaleFactor></Fill><TextBlock><LeftMargin Unit='PT' F='Inh'>0.05555555555555555</LeftMargin><RightMargin Unit='PT' F='Inh'>0.05555555555555555</RightMargin><TopMargin>0</TopMargin><BottomMargin>0</BottomMargin><VerticalAlign>2</VerticalAlign><TextBkgnd F='Inh'>0</TextBkgnd><DefaultTabStop F='Inh'>0.5</DefaultTabStop><TextDirection F='Inh'>0</TextDirection><TextBkgndTrans F='Inh'>0</TextBkgndTrans></TextBlock><Misc><NoObjHandles F='Inh'>0</NoObjHandles><NonPrinting>1</NonPrinting><NoCtlHandles F='Inh'>0</NoCtlHandles><NoAlignBox F='Inh'>0</NoAlignBox><UpdateAlignBox F='Inh'>0</UpdateAlignBox><HideText F='Inh'>0</HideText><DynFeedback F='Inh'>0</DynFeedback><GlueType F='Inh'>0</GlueType><WalkPreference F='Inh'>0</WalkPreference><BegTrigger F='No Formula'>0</BegTrigger><EndTrigger F='No Formula'>0</EndTrigger><ObjType F='Inh'>0</ObjType><Comment F='Inh'/><IsDropSource F='Inh'>0</IsDropSource><NoLiveDynamics F='Inh'>0</NoLiveDynamics><LocalizeMerge F='Inh'>0</LocalizeMerge><Calendar F='Inh'>0</Calendar><LangID F='Inh'>1033</LangID><ShapeKeywords F='Inh'/><DropOnPageScale F='Inh'>1</DropOnPageScale></Misc><Layout><ShapePermeableX>1</ShapePermeableX><ShapePermeableY>1</ShapePermeableY><ShapePermeablePlace>1</ShapePermeablePlace><ShapeFixedCode F='Inh'>0</ShapeFixedCode><ShapePlowCode F='Inh'>0</ShapePlowCode><ShapeRouteStyle F='Inh'>0</ShapeRouteStyle><ConFixedCode F='Inh'>0</ConFixedCode><ConLineJumpCode F='Inh'>0</ConLineJumpCode><ConLineJumpStyle F='Inh'>0</ConLineJumpStyle><ConLineJumpDirX F='Inh'>0</ConLineJumpDirX><ConLineJumpDirY F='Inh'>0</ConLineJumpDirY><ShapePlaceFlip F='Inh'>0</ShapePlaceFlip><ConLineRouteExt F='Inh'>0</ConLineRouteExt><ShapeSplit F='Inh'>0</ShapeSplit><ShapeSplittable F='Inh'>0</ShapeSplittable></Layout><vx:Layout xmlns:vx='http://schemas.microsoft.com/visio/2006/extension'><vx:ShapePlaceStyle F='Inh'>0</vx:ShapePlaceStyle></vx:Layout><Char IX='0'><Font>4</Font><Color>4</Color><Style F='Inh'>0</Style><Case F='Inh'>0</Case><Pos F='Inh'>0</Pos><FontScale F='Inh'>1</FontScale><Size>0.125</Size><DblUnderline F='Inh'>0</DblUnderline><Overline F='Inh'>0</Overline><Strikethru F='Inh'>0</Strikethru><Highlight F='Inh'>0</Highlight><DoubleStrikethrough F='Inh'>0</DoubleStrikethrough><RTLText F='Inh'>0</RTLText><UseVertical F='Inh'>0</UseVertical><Letterspace F='Inh'>0</Letterspace><ColorTrans F='Inh'>0</ColorTrans><AsianFont F='Inh'>0</AsianFont><ComplexScriptFont F='Inh'>0</ComplexScriptFont><LocalizeFont F='Inh'>0</LocalizeFont><ComplexScriptSize F='Inh'>-1</ComplexScriptSize><LangID F='Inh'>1033</LangID></Char></StyleSheet><StyleSheet ID='6' NameU='Connector' Name='Connector' LineStyle='7' FillStyle='7' TextStyle='7'><StyleProp><EnableLineProps>1</EnableLineProps><EnableFillPro...
[truncated message content] |
|
From: <xb...@us...> - 2013-06-24 12:41:33
|
Revision: 1830
http://sourceforge.net/p/scstudio/code/1830
Author: xborza
Date: 2013-06-24 12:41:30 +0000 (Mon, 24 Jun 2013)
Log Message:
-----------
bug #61(Connection points persist on copied instances) fixed
Modified Paths:
--------------
trunk/src/view/visio/addon/document.cpp
trunk/src/view/visio/addon/extract.cpp
trunk/src/view/visio/addon/extract.h
Modified: trunk/src/view/visio/addon/document.cpp
===================================================================
--- trunk/src/view/visio/addon/document.cpp 2013-06-24 10:15:07 UTC (rev 1829)
+++ trunk/src/view/visio/addon/document.cpp 2013-06-24 12:41:30 UTC (rev 1830)
@@ -272,6 +272,8 @@
case ST_BMSC_INSTANCE:
if(vsoShape->Text.length() == 0)
vsoShape->Text = _T("NAME");
+ //Remove blind connection points
+ remove_shape_blind_connections(vsoShape);
break;
case ST_BMSC_MESSAGE:
Modified: trunk/src/view/visio/addon/extract.cpp
===================================================================
--- trunk/src/view/visio/addon/extract.cpp 2013-06-24 10:15:07 UTC (rev 1829)
+++ trunk/src/view/visio/addon/extract.cpp 2013-06-24 12:41:30 UTC (rev 1830)
@@ -17,6 +17,7 @@
*/
#include "stdafx.h"
+#include <set>
#include "extract.h"
#include "errors.h"
@@ -133,6 +134,51 @@
}
}
+int remove_shape_blind_connections(Visio::IVShapePtr shape)
+{
+ // connected shapes
+ Visio::IVConnectsPtr toSheets = shape->Connects;
+ Visio::IVConnectsPtr fromSheets = shape->FromConnects;
+ int size = toSheets->Count + fromSheets->Count;
+
+ int numb_of_conpts = shape->RowCount[visSectionConnectionPts];
+
+ if(numb_of_conpts == size)
+ return 0;
+
+ if(size == 0 && numb_of_conpts != 0){
+ //remove all connection points
+ shape->DeleteSection(visSectionConnectionPts);
+ return numb_of_conpts;
+ }
+ // set of row with connected shape
+ std::set<short>con_rows;
+ for(int i=0; i < numb_of_conpts; i++)
+ {
+ con_rows.insert(i);
+ }
+
+ // go through the all connected shapes and return connection Xi.cell
+ Visio::IVCellPtr toCell;
+ for(int i=1; i <= fromSheets->Count; i++)
+ {
+ toCell = fromSheets->Item[i]->ToCell;
+ short row = toCell->ContainingRow->GetIndex();
+ //check to which connection point is glued and remove its row
+ con_rows.erase(row);
+ }
+
+ //erase all remaining connection points
+ std::set<short>::iterator it;
+ int ret = con_rows.size();
+ int i = 0;
+ for(it = con_rows.begin(); it != con_rows.end(); ++it)
+ {
+ shape->DeleteRow(visSectionConnectionPts,*it - i++);
+ }
+ return ret;
+}
+
TShapeType get_shape_type(Visio::IVShapePtr shape)
{
// walk though all user-defined cells
@@ -207,6 +253,7 @@
return 0; // default value
}
+
bool isMessageShape(Visio::IVShapePtr shape)
{
switch(get_shape_type(shape))
Modified: trunk/src/view/visio/addon/extract.h
===================================================================
--- trunk/src/view/visio/addon/extract.h 2013-06-24 10:15:07 UTC (rev 1829)
+++ trunk/src/view/visio/addon/extract.h 2013-06-24 12:41:30 UTC (rev 1830)
@@ -52,6 +52,10 @@
//! determine MSC symbol represented by the given shape
TShapeType get_shape_type(Visio::IVShapePtr shape);
+//! remove all connection points without connected shape (by copying)
+// return number of removed connection points
+int remove_shape_blind_connections(Visio::IVShapePtr shape);
+
enum TDrawingType
{
DT_UNKNOWN = 0,
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <tm...@us...> - 2013-06-24 10:15:12
|
Revision: 1829
http://sourceforge.net/p/scstudio/code/1829
Author: tmarton
Date: 2013-06-24 10:15:07 +0000 (Mon, 24 Jun 2013)
Log Message:
-----------
fixed time relevant ordering test
Modified Paths:
--------------
trunk/src/check/time/module.cpp
Added Paths:
-----------
trunk/tests/time_relevant_ordering/tro_test24.tex.result2
trunk/tests/time_relevant_ordering/tro_test25.tex.result2
Modified: trunk/src/check/time/module.cpp
===================================================================
--- trunk/src/check/time/module.cpp 2013-06-22 10:09:51 UTC (rev 1828)
+++ trunk/src/check/time/module.cpp 2013-06-24 10:15:07 UTC (rev 1829)
@@ -30,7 +30,7 @@
Checker **result = new Checker* [5];
result[0] = new ConstraintsChecker();
result[1] = new ConsistencyChecker();
- result[2] = new TimeRaceChecker();
+ result[2] = new TimeRaceChecker();
result[3] = new AbsoluteTimeConsistencyChecker();
result[4] = NULL;
@@ -43,10 +43,10 @@
extern "C" SCTIME_EXPORT
Transformer** init_transformers()
{
- Transformer **result = new Transformer* [2];
-// result[0] = new Tighter();
- result[0] = new AbsoluteTimeTighter();
- result[1] = NULL;
+ Transformer **result = new Transformer* [3];
+ result[0] = new Tighter();
+ result[1] = new AbsoluteTimeTighter();
+ result[2] = NULL;
return result;
}
Added: trunk/tests/time_relevant_ordering/tro_test24.tex.result2
===================================================================
--- trunk/tests/time_relevant_ordering/tro_test24.tex.result2 (rev 0)
+++ trunk/tests/time_relevant_ordering/tro_test24.tex.result2 2013-06-24 10:15:07 UTC (rev 1829)
@@ -0,0 +1,180 @@
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%% You can download Msc5.sty package from:
+%%%% http://is.muni.cz/www/374320/msc5.sty
+%%%% Documentation:
+%%%% http://is.muni.cz/www/374320/manualNew.pdf
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+
+\documentclass{article}
+\usepackage{msc5}
+\usepackage[a4paper]{geometry}
+\begin{document}
+\drawframe{no}
+\section*{tro\_test24}
+\setmsckeyword{Pcap}
+\begin{msc}{}
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%% Configuration header
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%%%% Scale:
+\def\mscScaleX{1.0}
+\def\mscScaleY{1.0}
+
+%%%% Lines width:
+\pgfsetlinewidth{0.4pt}
+
+%%%% Picture box width:
+\setlength{\envinstdist}{20mm*\real{\mscScaleX}}
+
+%%%% Picture box y-padding:
+\setlength{\topheaddist}{\topheaddist}
+\setlength{\bottomfootdist}{\bottomfootdist}
+
+%%%% Instance first and last level height:
+\setlength{\firstlevelheight}{13mm*\real{\mscScaleY}}
+\setlength{\lastlevelheight}{11mm*\real{\mscScaleY}}
+
+%%%% Levels:
+\def\levelA{8mm*\real{\mscScaleY}}
+
+\setlength{\levelheight}{\levelA}
+
+
+%%%% Slope:
+\def\slopeA{0mm*\real{\mscScaleY}}
+
+
+%%%% Width of absolute time:
+\def\absoluteTimeWidthA{10mm*\real{\mscScaleX}}
+
+
+%%%% Absolute time slope:
+\def\absoluteTimeSlopeA{5mm*\real{\mscScaleY}}
+
+\setlength{\markdist}{\absoluteTimeSlopeA}
+
+%%%% Width od time interval:
+\def\timeIntervalWidthA{7mm*\real{\mscScaleX}}
+
+
+%%%% Ordering width:
+\def\orderingWidthA{3mm*\real{\mscScaleX}}
+
+
+%%%% Width of instance head/foot:
+\def\instanceWidthA{15mm*\real{\mscScaleX}}
+
+\setlength{\instwidth}{\instanceWidthA}
+
+%%%% Height of instance head/foot:
+\def\instanceHeightA{3mm*\real{\mscScaleY}}
+
+\setlength{\instheadheight}{\instanceHeightA}
+
+\setlength{\instfootheight}{\instheadheight}
+
+%%%% Space between instances:
+\def\instanceSpaceA{30mm*\real{\mscScaleX}}
+
+\setlength{\instdist}{\instanceSpaceA}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%% End of configuration header
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\declinst{0_inst}{192.168.69.2}{}
+\declinst{1_inst}{192.168.69.1}{}
+
+\setlength{\selfmesswidth}{\absoluteTimeWidthA}
+\mscmark[tl]{@[0]}{0_inst}
+\setlength{\levelheight}{\slopeA}
+\mess{Ethernet\_II.\_I\_IPv4\_SRC\_34059\_DST\_80\_TCP\_SYN\_SEQ\_0\_}{0_inst}[0.3]{1_inst}[1]
+\setlength{\selfmesswidth}{\absoluteTimeWidthA}
+\mscmark[tr]{@[0]}{1_inst}
+\setlength{\levelheight}{\levelA}
+\nextlevel
+
+\setlength{\selfmesswidth}{\absoluteTimeWidthA}
+\mscmark[tl]{@[5.9e-005]}{0_inst}
+\setlength{\selfmesswidth}{\absoluteTimeWidthA}
+\mscmark[tr]{@[5.9e-005]}{1_inst}
+\setlength{\levelheight}{\slopeA}
+\mess{Ethernet\_II.\_I\_IPv4\_SRC\_80\_DST\_34059\_TCP\_SYN\_ACK\_SEQ\_0\_ACK\_1\_}{1_inst}[0.3]{0_inst}[1]
+\setlength{\levelheight}{\levelA}
+\nextlevel
+
+\setlength{\selfmesswidth}{\absoluteTimeWidthA}
+\mscmark[tl]{@[0.000153]}{0_inst}
+\setlength{\levelheight}{\slopeA}
+\mess{Ethernet\_II.\_I\_IPv4\_SRC\_34059\_DST\_80\_TCP\_ACK\_SEQ\_1\_ACK\_1\_}{0_inst}[0.3]{1_inst}[1]
+\setlength{\selfmesswidth}{\absoluteTimeWidthA}
+\mscmark[tr]{@[0.000153]}{1_inst}
+\setlength{\levelheight}{\levelA}
+\nextlevel
+
+\setlength{\selfmesswidth}{\absoluteTimeWidthA}
+\mscmark[tl]{@[0.000282]}{0_inst}
+\setlength{\levelheight}{\slopeA}
+\mess{Ethernet\_II.\_I\_IPv4\_I\_SRC\_34059\_DST\_80\_TCP\_PSH\_ACK\_SEQ\_1\_ACK\_1\_HTTP\_GET\_cerberus\_}{0_inst}[0.3]{1_inst}[1]
+\setlength{\selfmesswidth}{\absoluteTimeWidthA}
+\mscmark[tr]{@[0.000282]}{1_inst}
+\setlength{\levelheight}{\levelA}
+\nextlevel
+
+\setlength{\selfmesswidth}{\absoluteTimeWidthA}
+\mscmark[tl]{@[0.00033]}{0_inst}
+\setlength{\selfmesswidth}{\absoluteTimeWidthA}
+\mscmark[tr]{@[0.00033]}{1_inst}
+\setlength{\levelheight}{\slopeA}
+\mess{Ethernet\_II.\_I\_IPv4\_SRC\_80\_DST\_34059\_TCP\_ACK\_SEQ\_1\_ACK\_446\_}{1_inst}[0.3]{0_inst}[1]
+\setlength{\levelheight}{\levelA}
+\nextlevel
+
+\setlength{\selfmesswidth}{\absoluteTimeWidthA}
+\mscmark[tl]{@[0.021452]}{0_inst}
+\setlength{\selfmesswidth}{\absoluteTimeWidthA}
+\mscmark[tr]{@[0.021452]}{1_inst}
+\setlength{\levelheight}{\slopeA}
+\mess{Ethernet\_II.\_I\_IPv4\_I\_SRC\_80\_DST\_34059\_TCP\_PSH\_ACK\_SEQ\_1\_ACK\_446\_HTTP\_STATUS\_CODE\_200\_}{1_inst}[0.3]{0_inst}[1]
+\setlength{\levelheight}{\levelA}
+\nextlevel
+
+\setlength{\selfmesswidth}{\absoluteTimeWidthA}
+\mscmark[tl]{@[0.021629]}{0_inst}
+\setlength{\levelheight}{\slopeA}
+\mess{Ethernet\_II.\_I\_IPv4\_SRC\_34059\_DST\_80\_TCP\_ACK\_SEQ\_446\_ACK\_403\_}{0_inst}[0.3]{1_inst}[1]
+\setlength{\selfmesswidth}{\absoluteTimeWidthA}
+\mscmark[tr]{@[0.021629]}{1_inst}
+\setlength{\levelheight}{\levelA}
+\nextlevel
+
+\setlength{\selfmesswidth}{\absoluteTimeWidthA}
+\mscmark[tl]{@[0.021755]}{0_inst}
+\setlength{\selfmesswidth}{\absoluteTimeWidthA}
+\mscmark[tr]{@[0.021755]}{1_inst}
+\setlength{\levelheight}{\slopeA}
+\mess{Ethernet\_II.\_I\_IPv4\_SRC\_80\_DST\_34059\_TCP\_FIN\_ACK\_SEQ\_403\_ACK\_446\_}{1_inst}[0.3]{0_inst}[1]
+\setlength{\levelheight}{\levelA}
+\nextlevel
+
+\setlength{\selfmesswidth}{\absoluteTimeWidthA}
+\mscmark[tl]{@[0.022677]}{0_inst}
+\setlength{\levelheight}{\slopeA}
+\mess{Ethernet\_II.\_I\_IPv4\_SRC\_34059\_DST\_80\_TCP\_FIN\_ACK\_SEQ\_446\_ACK\_404\_}{0_inst}[0.3]{1_inst}[1]
+\setlength{\selfmesswidth}{\absoluteTimeWidthA}
+\mscmark[tr]{@[0.022677]}{1_inst}
+\setlength{\levelheight}{\levelA}
+\nextlevel
+
+\setlength{\selfmesswidth}{\absoluteTimeWidthA}
+\mscmark[tl]{@[0.022715]}{0_inst}
+\setlength{\selfmesswidth}{\absoluteTimeWidthA}
+\mscmark[tr]{@[0.022715]}{1_inst}
+\setlength{\levelheight}{\slopeA}
+\mess{Ethernet\_II.\_I\_IPv4\_SRC\_80\_DST\_34059\_TCP\_ACK\_SEQ\_404\_ACK\_447\_}{1_inst}[0.3]{0_inst}[1]
+\end{msc}
+\end{document}
Added: trunk/tests/time_relevant_ordering/tro_test25.tex.result2
===================================================================
--- trunk/tests/time_relevant_ordering/tro_test25.tex.result2 (rev 0)
+++ trunk/tests/time_relevant_ordering/tro_test25.tex.result2 2013-06-24 10:15:07 UTC (rev 1829)
@@ -0,0 +1,159 @@
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%% You can download Msc5.sty package from:
+%%%% http://is.muni.cz/www/374320/msc5.sty
+%%%% Documentation:
+%%%% http://is.muni.cz/www/374320/manualNew.pdf
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+
+\documentclass{article}
+\usepackage{msc5}
+\usepackage[a4paper]{geometry}
+\begin{document}
+\drawframe{no}
+\section*{tro\_test25}
+\setmsckeyword{Pcap}
+\begin{msc}{}
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%% Configuration header
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%%%% Scale:
+\def\mscScaleX{1.0}
+\def\mscScaleY{1.0}
+
+%%%% Lines width:
+\pgfsetlinewidth{0.4pt}
+
+%%%% Picture box width:
+\setlength{\envinstdist}{18mm*\real{\mscScaleX}}
+
+%%%% Picture box y-padding:
+\setlength{\topheaddist}{\topheaddist}
+\setlength{\bottomfootdist}{\bottomfootdist}
+
+%%%% Instance first and last level height:
+\setlength{\firstlevelheight}{13mm*\real{\mscScaleY}}
+\setlength{\lastlevelheight}{11mm*\real{\mscScaleY}}
+
+%%%% Levels:
+\def\levelA{8mm*\real{\mscScaleY}}
+
+\setlength{\levelheight}{\levelA}
+
+
+%%%% Slope:
+\def\slopeA{0mm*\real{\mscScaleY}}
+\def\slopeB{\levelA+\levelA+\levelA}
+\def\slopeC{\levelA+\levelA}
+
+
+%%%% Width od time interval:
+\def\timeIntervalWidthA{7mm*\real{\mscScaleX}}
+
+
+
+%%%% Time interval slope:
+\def\timeIntervalSlopeA{\levelA}
+\def\timeIntervalSlopeB{\levelA+\levelA}
+\def\timeIntervalSlopeC{0mm*\real{\mscScaleY}}
+%%%% Ordering width:
+\def\orderingWidthA{3mm*\real{\mscScaleX}}
+
+
+%%%% Width of instance head/foot:
+\def\instanceWidthA{15mm*\real{\mscScaleX}}
+
+\setlength{\instwidth}{\instanceWidthA}
+
+%%%% Height of instance head/foot:
+\def\instanceHeightA{3mm*\real{\mscScaleY}}
+
+\setlength{\instheadheight}{\instanceHeightA}
+
+\setlength{\instfootheight}{\instheadheight}
+
+%%%% Space between instances:
+\def\instanceSpaceA{30mm*\real{\mscScaleX}}
+
+\setlength{\instdist}{\instanceSpaceA}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%% End of configuration header
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\declinst{0_inst}{192.168.69.2}{}
+\declinst{1_inst}{192.168.69.1}{}
+
+\setlength{\selfmesswidth}{\timeIntervalWidthA}
+\measure[l]{[5.9e-005]}{0_inst}{0_inst}[1]
+\setlength{\levelheight}{\slopeA}
+\mess{1\_TCP\_SYN\_SEQ\_0\_}{0_inst}[0.3]{1_inst}[1]
+\setlength{\levelheight}{\timeIntervalSlopeA}
+\measure[l]{[5.9e-005]}{1_inst}{1_inst}[1]
+\nextlevel
+
+\measure[l]{[9.4e-005]}{0_inst}{0_inst}[1]
+\measure[l]{[9.4e-005]}{1_inst}{1_inst}[1]
+\setlength{\levelheight}{\slopeA}
+\mess{2\_TCP\_SYN\_ACK\_SEQ\_0\_ACK\_1\_}{1_inst}[0.3]{0_inst}[1]
+\setlength{\levelheight}{\levelA}
+\nextlevel
+
+\measure[l]{[0.000129]}{0_inst}{0_inst}[1]
+\setlength{\levelheight}{\slopeA}
+\mess{3\_TCP\_ACK\_SEQ\_1\_ACK\_1\_}{0_inst}[0.3]{1_inst}[1]
+\setlength{\levelheight}{\timeIntervalSlopeA}
+\measure[l]{[0.000129]}{1_inst}{1_inst}[1]
+\nextlevel
+
+\measure[l]{[4.8e-005]}{0_inst}{0_inst}[1]
+\setlength{\levelheight}{\slopeA}
+\mess{4\_HTTP\_GET\_cerberus\_ALL\_DATA\_}{0_inst}[0.3]{1_inst}[1]
+\setlength{\levelheight}{\timeIntervalSlopeA}
+\measure[l]{[4.8e-005]}{1_inst}{1_inst}[1]
+\nextlevel
+
+\measure[l]{[0.021122]}{0_inst}{0_inst}[1]
+\measure[l]{[0.021122]}{1_inst}{1_inst}[1]
+\setlength{\levelheight}{\slopeA}
+\mess{5\_TCP\_ACK\_SEQ\_1\_ACK\_446\_}{1_inst}[0.3]{0_inst}[1]
+\setlength{\levelheight}{\levelA}
+\nextlevel
+
+\setlength{\levelheight}{\timeIntervalSlopeB}
+\measure[l]{[0.001225]}{0_inst}{0_inst}[1]
+\setlength{\levelheight}{\timeIntervalSlopeA}
+\measure[l]{[0.000303]}{1_inst}{1_inst}[1]
+\setlength{\levelheight}{\slopeA}
+\mess{6\_HTTP\_STATUS\_CODE\_200\_ALL\_DATA\_}{1_inst}[0.3]{0_inst}[1]
+\setlength{\levelheight}{\levelA}
+\nextlevel
+
+\measure[l]{[0.000922]}{1_inst}{1_inst}[1]
+\setlength{\levelheight}{\slopeB}
+\mess{8\_TCP\_FIN\_ACK\_SEQ\_403\_ACK\_446\_}{1_inst}[0.3]{0_inst}[1]
+\setlength{\levelheight}{\levelA}
+\nextlevel
+
+\setlength{\levelheight}{\timeIntervalSlopeB}
+\measure[l]{[0.000126]}{0_inst}{0_inst}[1]
+\setlength{\levelheight}{\timeIntervalSlopeC}
+\measure[l]{[0.001048]}{0_inst}{1_inst}[1]
+\mess{9\_TCP\_FIN\_ACK\_SEQ\_446\_ACK\_404\_2\_packets\_}{0_inst}[0.3]{1_inst}[1]
+\setlength{\levelheight}{\timeIntervalSlopeA}
+\measure[l]{[3.8e-005]}{1_inst}{1_inst}[1]
+\nextlevel
+
+\setlength{\levelheight}{\slopeC}
+\mess{10\_TCP\_ACK\_SEQ\_404\_ACK\_447\_}{1_inst}[0.3]{0_inst}[1]
+\setlength{\levelheight}{\levelA}
+\nextlevel
+
+\measure[l]{[0.00096]}{0_inst}{0_inst}[1]
+\nextlevel
+
+\end{msc}
+\end{document}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <ob...@us...> - 2013-06-22 10:09:56
|
Revision: 1828
http://sourceforge.net/p/scstudio/code/1828
Author: obouda
Date: 2013-06-22 10:09:51 +0000 (Sat, 22 Jun 2013)
Log Message:
-----------
EventArea::get_next_area() not returning reference now (was reported as erroneous
Modified Paths:
--------------
trunk/src/data/msc/EventArea.cpp
trunk/src/data/msc/EventArea.h
Modified: trunk/src/data/msc/EventArea.cpp
===================================================================
--- trunk/src/data/msc/EventArea.cpp 2013-06-17 10:18:59 UTC (rev 1827)
+++ trunk/src/data/msc/EventArea.cpp 2013-06-22 10:09:51 UTC (rev 1828)
@@ -19,14 +19,13 @@
#include "data/msc.h"
#include "data/msc/EventArea.h"
-const EventAreaPtr& EventArea::get_next_area() const
+EventAreaPtr EventArea::get_next_area() const
{
- static const EventAreaPtr null_ptr;
const EventAreaPtrList event_areas = get_instance()->get_areas();
for (EventAreaPtrList::const_iterator i = event_areas.begin(); i != event_areas.end(); ++i) {
if (i->get() == this) {
++i;
- return (i == event_areas.end() ? null_ptr : *i); // NULL if this is the last event area on the instance
+ return (i == event_areas.end() ? NULL : *i); // NULL if this is the last event area on the instance
}
}
throw std::runtime_error("the event area is not present in its instance area list");
Modified: trunk/src/data/msc/EventArea.h
===================================================================
--- trunk/src/data/msc/EventArea.h 2013-06-17 10:18:59 UTC (rev 1827)
+++ trunk/src/data/msc/EventArea.h 2013-06-22 10:09:51 UTC (rev 1828)
@@ -71,7 +71,7 @@
* Returns the next event area on the same instance, or intrusive NULL-pointer if this is the last one.
* TODO: refactor out usages of this method where possible, use iteration instead
*/
- const EventAreaPtr& get_next_area() const;
+ EventAreaPtr get_next_area() const;
/**
* Returns the previous event area on the same instance, or intrusive NULL-pointer if this is the first one.
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <ob...@us...> - 2013-06-17 10:19:02
|
Revision: 1827
http://sourceforge.net/p/scstudio/code/1827
Author: obouda
Date: 2013-06-17 10:18:59 +0000 (Mon, 17 Jun 2013)
Log Message:
-----------
fixed some compilation errors
Modified Paths:
--------------
branches/conditions/src/view/visio/addon/extract.cpp
branches/conditions/src/view/visio/addon/visualize.cpp
branches/conditions/src/view/visio/addon/visualize.h
Modified: branches/conditions/src/view/visio/addon/extract.cpp
===================================================================
--- branches/conditions/src/view/visio/addon/extract.cpp 2013-05-27 04:00:30 UTC (rev 1826)
+++ branches/conditions/src/view/visio/addon/extract.cpp 2013-06-17 10:18:59 UTC (rev 1827)
@@ -1005,7 +1005,7 @@
LocalActionEventPtr event = strict_area->add_event(new LocalActionEvent());
event->set_position(ConvertEventPoint(instance, epos->event_pos));
- act->glue_event(event);
+ act->glue_event(event.get());
events.insert(std::make_pair<SPoint,EventPtr>(point_to_page(instance, epos->event_pos), event));
break;
@@ -1033,7 +1033,7 @@
ConditionEventPtr event = strict_area->add_event(new ConditionEvent());
event->set_position(ConvertEventPoint(instance, epos->event_pos));
- cond->glue_event(event);
+ cond->glue_event(event.get());
events.insert(std::make_pair<SPoint,EventPtr>(point_to_page(instance, epos->event_pos), event));
break;
@@ -1101,9 +1101,9 @@
}
// walk through detected elements: check all gluable elements are connected
- for(MscElementMap::const_iterator epos = elements.begin(); epos != elements.end(); mpos++)
+ for(MscElementMap::const_iterator epos = elements.begin(); epos != elements.end(); epos++)
{
- Visio::IVShapePtr shape = vsoPage->Shapes->ItemFromID[mpos->first];
+ Visio::IVShapePtr shape = vsoPage->Shapes->ItemFromID[epos->first];
MscElementPtr el = epos->second;
MscMessagePtr msg_el = boost::dynamic_pointer_cast<MscMessage>(el);
Modified: branches/conditions/src/view/visio/addon/visualize.cpp
===================================================================
--- branches/conditions/src/view/visio/addon/visualize.cpp 2013-05-27 04:00:30 UTC (rev 1826)
+++ branches/conditions/src/view/visio/addon/visualize.cpp 2013-06-17 10:18:59 UTC (rev 1827)
@@ -288,8 +288,8 @@
default: throw std::runtime_error("Error: unexpected behaviour");
}
- if (boost::dynamic_pointer_cast<Message>(element) != NULL)
- shape->Text = boost::dynamic_pointer_cast<Message>(element)->get_label().c_str();
+ if (boost::dynamic_pointer_cast<MscMessage>(element) != NULL)
+ shape->Text = boost::dynamic_pointer_cast<MscMessage>(element)->get_label().c_str();
else if (boost::dynamic_pointer_cast<LocalAction>(element) != NULL)
shape->Text = boost::dynamic_pointer_cast<LocalAction>(element)->get_statement().c_str();
else if (boost::dynamic_pointer_cast<Condition>(element) != NULL)
Modified: branches/conditions/src/view/visio/addon/visualize.h
===================================================================
--- branches/conditions/src/view/visio/addon/visualize.h 2013-05-27 04:00:30 UTC (rev 1826)
+++ branches/conditions/src/view/visio/addon/visualize.h 2013-06-17 10:18:59 UTC (rev 1827)
@@ -65,7 +65,7 @@
void SetControlPos(Visio::IVShapePtr shape, const wchar_t* row, Coordinate pos);
Visio::IVShapePtr drop_shape(Visio::IVPagePtr vsoPage, ElementPtrMap& shapes,
- MscMessagePtr element, Visio::IVMasterPtr master);
+ MscElementPtr element, Visio::IVMasterPtr master);
void show_event(Visio::IVPagePtr vsoPage, ElementPtrMap& shapes,
Visio::IVShapePtr parent, EventPtr event);
Visio::IVShapePtr connect_events(Visio::IVPagePtr vsoPage,
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <ob...@us...> - 2013-05-27 04:00:34
|
Revision: 1826
http://sourceforge.net/p/scstudio/code/1826
Author: obouda
Date: 2013-05-27 04:00:30 +0000 (Mon, 27 May 2013)
Log Message:
-----------
computing condition effect
Modified Paths:
--------------
branches/conditions/src/check/time/hmsc_all_paths.cpp
branches/conditions/src/data/msc/BMsc.cpp
branches/conditions/src/data/msc/BMsc.h
branches/conditions/src/data/msc/Condition.cpp
branches/conditions/src/data/msc/Condition.h
branches/conditions/tests/time/time_race/CMakeLists.txt
branches/conditions/tests/time/time_race/race_cond_pos3.mpr
Added Paths:
-----------
branches/conditions/tests/time/time_race/race_cond_neg2.mpr
branches/conditions/tests/time/time_race/race_cond_neg2.mpr.result
branches/conditions/tests/time/time_race/race_cond_neg2.vsd
Modified: branches/conditions/src/check/time/hmsc_all_paths.cpp
===================================================================
--- branches/conditions/src/check/time/hmsc_all_paths.cpp 2013-05-27 02:25:44 UTC (rev 1825)
+++ branches/conditions/src/check/time/hmsc_all_paths.cpp 2013-05-27 04:00:30 UTC (rev 1826)
@@ -63,6 +63,7 @@
}
// update the system state
+ // ...from condition nodes
ConditionNodePtr cond = boost::dynamic_pointer_cast<ConditionNode>(node);
if (cond != NULL)
{
@@ -81,6 +82,20 @@
; // other condition types have no effect on the system state
}
}
+ // ... and reference nodes
+ ReferenceNodePtr ref = boost::dynamic_pointer_cast<ReferenceNode>(node);
+ if (ref != NULL)
+ {
+ BMscPtr bmsc = ref->get_bmsc();
+ if (bmsc != NULL)
+ {
+ std::pair<SystemState, SystemState> cond_effect = bmsc->get_condition_effect();
+ for (SystemState::const_iterator i = cond_effect.first.begin(); i != cond_effect.first.end(); ++i)
+ system_state.insert(*i);
+ for (SystemState::const_iterator i = cond_effect.second.begin(); i != cond_effect.second.end(); ++i)
+ system_state.erase(*i);
+ }
+ }
//traverse all successors which do not occur in path_prefix more than m_occurence
NodeRelationPtrVector set_succ = pre->get_successors();
Modified: branches/conditions/src/data/msc/BMsc.cpp
===================================================================
--- branches/conditions/src/data/msc/BMsc.cpp 2013-05-27 02:25:44 UTC (rev 1825)
+++ branches/conditions/src/data/msc/BMsc.cpp 2013-05-27 04:00:30 UTC (rev 1826)
@@ -17,6 +17,7 @@
*/
#include "data/msc.h"
+#include "data/dfs_events_traverser.h"
void BMsc::add_instance(InstancePtr& i)
{
@@ -35,3 +36,36 @@
else it++;
}
+std::pair<SystemState, SystemState> BMsc::get_condition_effect()
+{
+ struct ConditionEffectListener : WhiteEventFoundListener
+ {
+ SystemState set_vars;
+ SystemState unset_vars;
+ void on_white_event_found(Event* e)
+ {
+ ConditionEvent* ce = dynamic_cast<ConditionEvent*>(e);
+ if (ce != NULL && ce->get_condition() != NULL)
+ {
+ ConditionPtr cond = ce->get_condition();
+ std::pair<SystemState, SystemState> effect = cond->get_condition_effect();
+ for (SystemState::const_iterator i = effect.first.begin(); i != effect.first.end(); ++i)
+ {
+ set_vars.insert(*i);
+ unset_vars.erase(*i);
+ }
+ for (SystemState::const_iterator i = effect.second.begin(); i != effect.second.end(); ++i)
+ {
+ unset_vars.insert(*i);
+ set_vars.erase(*i);
+ }
+ }
+ }
+ };
+
+ DFSEventsTraverser traverser;
+ ConditionEffectListener cel;
+ traverser.add_white_event_found_listener(&cel);
+ traverser.traverse(BMscPtr(this));
+ return make_pair(cel.set_vars, cel.unset_vars);
+}
Modified: branches/conditions/src/data/msc/BMsc.h
===================================================================
--- branches/conditions/src/data/msc/BMsc.h 2013-05-27 02:25:44 UTC (rev 1825)
+++ branches/conditions/src/data/msc/BMsc.h 2013-05-27 04:00:30 UTC (rev 1826)
@@ -19,6 +19,8 @@
#ifndef _BMSC_H
#define _BMSC_H
+#include <utility>
+
/**
* \brief Represents Basic MSC.
*/
@@ -63,6 +65,13 @@
* Removes all the instances with a specified name.
*/
void remove_instances(const std::wstring &label);
+
+ /**
+ * Computes the condition effect of this BMSC.
+ * In the first element of the pair, a set of condition variable names which get set by this BMSC is returned.
+ * In the second element of the pair, a set of condition variable names which get unset by this BMSC is returned.
+ */
+ std::pair<SystemState, SystemState> get_condition_effect();
};
#endif // #ifndef _BMSC_H
Modified: branches/conditions/src/data/msc/Condition.cpp
===================================================================
--- branches/conditions/src/data/msc/Condition.cpp 2013-05-27 02:25:44 UTC (rev 1825)
+++ branches/conditions/src/data/msc/Condition.cpp 2013-05-27 04:00:30 UTC (rev 1826)
@@ -32,3 +32,31 @@
m_event = event;
}
}
+
+std::pair<SystemState, SystemState> Condition::get_condition_effect() const
+{
+ SystemState set_vars;
+ SystemState unset_vars;
+
+ // a tiny hack; both Condition and ConditionNode should use a common code, in a way different from this one...
+ ConditionNode node;
+ std::string lbl;
+ for (std::wstring::const_iterator i = m_text.begin(); i != m_text.end(); ++i)
+ lbl += (char)*i;
+ node.assign_label(lbl);
+ switch (node.get_type())
+ {
+ case ConditionNode::SETTING:
+ for (std::vector<std::string>::const_iterator i = node.get_names().begin(); i != node.get_names().end(); ++i)
+ set_vars.insert(*i);
+ break;
+ case ConditionNode::UNSETTING:
+ for (std::vector<std::string>::const_iterator i = node.get_names().begin(); i != node.get_names().end(); ++i)
+ unset_vars.insert(*i);
+ break;
+ default:
+ ; // other condition types have no effect on the system state
+ }
+
+ return make_pair(set_vars, unset_vars);
+}
Modified: branches/conditions/src/data/msc/Condition.h
===================================================================
--- branches/conditions/src/data/msc/Condition.h 2013-05-27 02:25:44 UTC (rev 1825)
+++ branches/conditions/src/data/msc/Condition.h 2013-05-27 04:00:30 UTC (rev 1826)
@@ -19,6 +19,8 @@
#ifndef _CONDITION_H
#define _CONDITION_H
+#include <utility>
+
/**
* \brief Condition on an instance in Basic MSC.
* TODO: support multiple instances bound to a single condition
@@ -56,6 +58,13 @@
{
return m_text;
}
+
+ /**
+ * Computes the condition effect of this condition.
+ * In the first element of the pair, a set of condition variable names which get set by this condition is returned.
+ * In the second element of the pair, a set of condition variable names which get unset by this condition is returned.
+ */
+ std::pair<SystemState, SystemState> get_condition_effect() const;
void glue_event(ConditionEvent* event);
Modified: branches/conditions/tests/time/time_race/CMakeLists.txt
===================================================================
--- branches/conditions/tests/time/time_race/CMakeLists.txt 2013-05-27 02:25:44 UTC (rev 1825)
+++ branches/conditions/tests/time/time_race/CMakeLists.txt 2013-05-27 04:00:30 UTC (rev 1826)
@@ -43,3 +43,4 @@
ADD_CHECKER_TEST(sctime "Time Race" race_cond_pos3.mpr 1)
ADD_CHECKER_TEST(sctime "Time Race" race_cond_neg1.mpr 0)
+ADD_CHECKER_TEST(sctime "Time Race" race_cond_neg2.mpr 0)
Added: branches/conditions/tests/time/time_race/race_cond_neg2.mpr
===================================================================
--- branches/conditions/tests/time/time_race/race_cond_neg2.mpr (rev 0)
+++ branches/conditions/tests/time/time_race/race_cond_neg2.mpr 2013-05-27 04:00:30 UTC (rev 1826)
@@ -0,0 +1,38 @@
+mscdocument impl_example3b.vsd;
+msc Page_1;
+initial connect L0, L1;
+L0: reference A connect L2;
+L1: condition Y connect L2;
+L2: connect L3, L4;
+L3: final;
+L4: condition when X connect L5;
+L5: reference B connect L6;
+L6: final;
+endmsc;
+msc A;
+inst p;
+inst q;
+inst r;
+p: instance;
+out m,0 to q;
+condition X shared;
+endinstance;
+q: instance;
+in m,0 from p;
+endinstance;
+r: instance;
+endinstance;
+endmsc;
+msc B;
+inst p;
+inst q;
+inst r;
+p: instance;
+endinstance;
+q: instance;
+in m,0 from r;
+endinstance;
+r: instance;
+out m,0 to q;
+endinstance;
+endmsc;
Property changes on: branches/conditions/tests/time/time_race/race_cond_neg2.mpr
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: branches/conditions/tests/time/time_race/race_cond_neg2.mpr.result
===================================================================
--- branches/conditions/tests/time/time_race/race_cond_neg2.mpr.result (rev 0)
+++ branches/conditions/tests/time/time_race/race_cond_neg2.mpr.result 2013-05-27 04:00:30 UTC (rev 1826)
@@ -0,0 +1,28 @@
+Time Race violated
+OK: race_cond_neg2 violated Time Race, should be violated
+mscdocument counter_example;
+msc Page_1;
+initial connect L0;
+/* MARKED */
+L0: reference _1_A connect L1;
+L1: connect L2;
+L2: final;
+endmsc;
+msc _1_A;
+inst p;
+inst q;
+inst r;
+p: instance;
+/* MARKED */
+/* MARKED */
+out m,0 to q;
+/* MARKED */
+condition X shared;
+endinstance;
+q: instance;
+/* MARKED */
+in m,0 from p;
+endinstance;
+r: instance;
+endinstance;
+endmsc;
Added: branches/conditions/tests/time/time_race/race_cond_neg2.vsd
===================================================================
(Binary files differ)
Index: branches/conditions/tests/time/time_race/race_cond_neg2.vsd
===================================================================
--- branches/conditions/tests/time/time_race/race_cond_neg2.vsd 2013-05-27 02:25:44 UTC (rev 1825)
+++ branches/conditions/tests/time/time_race/race_cond_neg2.vsd 2013-05-27 04:00:30 UTC (rev 1826)
Property changes on: branches/conditions/tests/time/time_race/race_cond_neg2.vsd
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+application/msword
\ No newline at end of property
Modified: branches/conditions/tests/time/time_race/race_cond_pos3.mpr
===================================================================
--- branches/conditions/tests/time/time_race/race_cond_pos3.mpr 2013-05-27 02:25:44 UTC (rev 1825)
+++ branches/conditions/tests/time/time_race/race_cond_pos3.mpr 2013-05-27 04:00:30 UTC (rev 1826)
@@ -1,4 +1,4 @@
-mscdocument impl_example4.vsd;
+mscdocument race_cond_pos3.vsd;
msc Page_1;
initial connect L0, L1;
L0: reference A connect L2;
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <ob...@us...> - 2013-05-27 02:25:46
|
Revision: 1825
http://sourceforge.net/p/scstudio/code/1825
Author: obouda
Date: 2013-05-27 02:25:44 +0000 (Mon, 27 May 2013)
Log Message:
-----------
some more condition tests
Modified Paths:
--------------
branches/conditions/tests/time/time_race/CMakeLists.txt
Added Paths:
-----------
branches/conditions/tests/time/time_race/race_cond_neg1.mpr
branches/conditions/tests/time/time_race/race_cond_neg1.mpr.result
branches/conditions/tests/time/time_race/race_cond_neg1.vsd
branches/conditions/tests/time/time_race/race_cond_pos2.mpr
branches/conditions/tests/time/time_race/race_cond_pos2.vsd
branches/conditions/tests/time/time_race/race_cond_pos3.mpr
branches/conditions/tests/time/time_race/race_cond_pos3.vsd
Modified: branches/conditions/tests/time/time_race/CMakeLists.txt
===================================================================
--- branches/conditions/tests/time/time_race/CMakeLists.txt 2013-05-27 01:44:38 UTC (rev 1824)
+++ branches/conditions/tests/time/time_race/CMakeLists.txt 2013-05-27 02:25:44 UTC (rev 1825)
@@ -39,4 +39,7 @@
ADD_CHECKER_TEST(sctime "Time Race" race_pos28.mpr 1)
ADD_CHECKER_TEST(sctime "Time Race" race_cond_pos1.mpr 1)
+ADD_CHECKER_TEST(sctime "Time Race" race_cond_pos2.mpr 1)
+ADD_CHECKER_TEST(sctime "Time Race" race_cond_pos3.mpr 1)
+ADD_CHECKER_TEST(sctime "Time Race" race_cond_neg1.mpr 0)
Added: branches/conditions/tests/time/time_race/race_cond_neg1.mpr
===================================================================
--- branches/conditions/tests/time/time_race/race_cond_neg1.mpr (rev 0)
+++ branches/conditions/tests/time/time_race/race_cond_neg1.mpr 2013-05-27 02:25:44 UTC (rev 1825)
@@ -0,0 +1,38 @@
+mscdocument impl_example3.vsd;
+msc Page_1;
+initial connect L0, L1;
+L0: reference A connect L2;
+L1: condition Y connect L3;
+L2: condition X connect L3;
+L3: connect L4, L5;
+L4: final;
+L5: condition when X connect L6;
+L6: reference B connect L7;
+L7: final;
+endmsc;
+msc A;
+inst p;
+inst q;
+inst r;
+p: instance;
+out m,0 to q;
+endinstance;
+q: instance;
+in m,0 from p;
+endinstance;
+r: instance;
+endinstance;
+endmsc;
+msc B;
+inst p;
+inst q;
+inst r;
+p: instance;
+endinstance;
+q: instance;
+in m,0 from r;
+endinstance;
+r: instance;
+out m,0 to q;
+endinstance;
+endmsc;
Added: branches/conditions/tests/time/time_race/race_cond_neg1.mpr.result
===================================================================
--- branches/conditions/tests/time/time_race/race_cond_neg1.mpr.result (rev 0)
+++ branches/conditions/tests/time/time_race/race_cond_neg1.mpr.result 2013-05-27 02:25:44 UTC (rev 1825)
@@ -0,0 +1,46 @@
+Time Race violated
+OK: race_cond_neg1 violated Time Race, should be violated
+mscdocument counter_example;
+msc Page_1;
+initial connect L0;
+/* MARKED */
+L0: reference _1_A connect L1;
+L1: condition X connect L2;
+L2: connect L3;
+L3: condition when X connect L4;
+/* MARKED */
+L4: reference _2_B connect L5;
+L5: final;
+endmsc;
+msc _1_A;
+inst p;
+inst q;
+inst r;
+p: instance;
+/* MARKED */
+out m,0 to q;
+endinstance;
+q: instance;
+/* MARKED */
+/* MARKED */
+in m,0 from p;
+endinstance;
+r: instance;
+endinstance;
+endmsc;
+msc _2_B;
+inst q;
+inst r;
+inst p;
+q: instance;
+/* MARKED */
+/* MARKED */
+in m,0 from r;
+endinstance;
+r: instance;
+/* MARKED */
+out m,0 to q;
+endinstance;
+p: instance;
+endinstance;
+endmsc;
Added: branches/conditions/tests/time/time_race/race_cond_neg1.vsd
===================================================================
(Binary files differ)
Index: branches/conditions/tests/time/time_race/race_cond_neg1.vsd
===================================================================
--- branches/conditions/tests/time/time_race/race_cond_neg1.vsd 2013-05-27 01:44:38 UTC (rev 1824)
+++ branches/conditions/tests/time/time_race/race_cond_neg1.vsd 2013-05-27 02:25:44 UTC (rev 1825)
Property changes on: branches/conditions/tests/time/time_race/race_cond_neg1.vsd
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/msword
\ No newline at end of property
Added: branches/conditions/tests/time/time_race/race_cond_pos2.mpr
===================================================================
--- branches/conditions/tests/time/time_race/race_cond_pos2.mpr (rev 0)
+++ branches/conditions/tests/time/time_race/race_cond_pos2.mpr 2013-05-27 02:25:44 UTC (rev 1825)
@@ -0,0 +1,38 @@
+mscdocument impl_example2.vsd;
+msc Page_1;
+initial connect L0, L1;
+L0: reference A connect L2;
+L1: condition Y connect L3;
+L2: condition X connect L3;
+L3: connect L4, L5;
+L4: final;
+L5: condition when Y connect L6;
+L6: reference B connect L7;
+L7: final;
+endmsc;
+msc A;
+inst p;
+inst q;
+inst r;
+p: instance;
+out m,0 to q;
+endinstance;
+q: instance;
+in m,0 from p;
+endinstance;
+r: instance;
+endinstance;
+endmsc;
+msc B;
+inst p;
+inst q;
+inst r;
+p: instance;
+endinstance;
+q: instance;
+in m,0 from r;
+endinstance;
+r: instance;
+out m,0 to q;
+endinstance;
+endmsc;
Added: branches/conditions/tests/time/time_race/race_cond_pos2.vsd
===================================================================
(Binary files differ)
Index: branches/conditions/tests/time/time_race/race_cond_pos2.vsd
===================================================================
--- branches/conditions/tests/time/time_race/race_cond_pos2.vsd 2013-05-27 01:44:38 UTC (rev 1824)
+++ branches/conditions/tests/time/time_race/race_cond_pos2.vsd 2013-05-27 02:25:44 UTC (rev 1825)
Property changes on: branches/conditions/tests/time/time_race/race_cond_pos2.vsd
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/msword
\ No newline at end of property
Added: branches/conditions/tests/time/time_race/race_cond_pos3.mpr
===================================================================
--- branches/conditions/tests/time/time_race/race_cond_pos3.mpr (rev 0)
+++ branches/conditions/tests/time/time_race/race_cond_pos3.mpr 2013-05-27 02:25:44 UTC (rev 1825)
@@ -0,0 +1,40 @@
+mscdocument impl_example4.vsd;
+msc Page_1;
+initial connect L0, L1;
+L0: reference A connect L2;
+L1: condition Y connect L3;
+L2: condition X connect L3;
+L3: connect L4;
+L4: condition unset X connect L5;
+L5: connect L6, L7;
+L6: final;
+L7: condition when X connect L8;
+L8: reference B connect L9;
+L9: final;
+endmsc;
+msc A;
+inst p;
+inst q;
+inst r;
+p: instance;
+out m,0 to q;
+endinstance;
+q: instance;
+in m,0 from p;
+endinstance;
+r: instance;
+endinstance;
+endmsc;
+msc B;
+inst p;
+inst q;
+inst r;
+p: instance;
+endinstance;
+q: instance;
+in m,0 from r;
+endinstance;
+r: instance;
+out m,0 to q;
+endinstance;
+endmsc;
Added: branches/conditions/tests/time/time_race/race_cond_pos3.vsd
===================================================================
(Binary files differ)
Index: branches/conditions/tests/time/time_race/race_cond_pos3.vsd
===================================================================
--- branches/conditions/tests/time/time_race/race_cond_pos3.vsd 2013-05-27 01:44:38 UTC (rev 1824)
+++ branches/conditions/tests/time/time_race/race_cond_pos3.vsd 2013-05-27 02:25:44 UTC (rev 1825)
Property changes on: branches/conditions/tests/time/time_race/race_cond_pos3.vsd
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/msword
\ No newline at end of property
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <ob...@us...> - 2013-05-27 01:44:42
|
Revision: 1824
http://sourceforge.net/p/scstudio/code/1824
Author: obouda
Date: 2013-05-27 01:44:38 +0000 (Mon, 27 May 2013)
Log Message:
-----------
implemented basic version of conditions evaluation on AllPaths traverser
Modified Paths:
--------------
branches/conditions/src/check/time/hmsc_all_paths.cpp
branches/conditions/src/check/time/hmsc_all_paths.h
branches/conditions/src/data/msc/ConditionNode.cpp
branches/conditions/src/data/msc/ConditionNode.h
branches/conditions/src/data/msc_types.h
branches/conditions/tests/time/time_race/CMakeLists.txt
Added Paths:
-----------
branches/conditions/tests/time/time_race/race_cond_pos1.mpr
branches/conditions/tests/time/time_race/race_cond_pos1.vsd
Modified: branches/conditions/src/check/time/hmsc_all_paths.cpp
===================================================================
--- branches/conditions/src/check/time/hmsc_all_paths.cpp 2013-05-26 17:54:35 UTC (rev 1823)
+++ branches/conditions/src/check/time/hmsc_all_paths.cpp 2013-05-27 01:44:38 UTC (rev 1824)
@@ -1,4 +1,5 @@
#include "hmsc_all_paths.h"
+#include <vector>
void AllPaths::traverse()
{
@@ -14,10 +15,9 @@
}
-void AllPaths::all_paths(
-HMscNodePtr node,
-MscElementPList path_prefix2
-)
+//#define MYDBG
+
+void AllPaths::all_paths(HMscNodePtr node, MscElementPList path_prefix2, SystemState system_state)
{
HMscNodePtrSet::iterator last_it;
std::list<PathFoundListener*>::iterator listener_it;
@@ -46,7 +46,7 @@
}
}
- set_number(node,get_number(node)+1); //increment occurence counter of node
+ set_number(node, get_number(node, system_state)+1, system_state); //increment occurence counter of node
//check whether node has successors
PredecessorNode * pre;
@@ -58,10 +58,29 @@
//keep poping until reference node is reached
while(!dynamic_cast<HMscNode*>(path_prefix2.back()))
path_prefix2.pop_back();
- set_number(node, 0);
+ set_number(node, 0, system_state);
return;
}
+ // update the system state
+ ConditionNodePtr cond = boost::dynamic_pointer_cast<ConditionNode>(node);
+ if (cond != NULL)
+ {
+ const std::vector<std::string> names = cond->get_names();
+ switch (cond->get_type())
+ {
+ case ConditionNode::SETTING:
+ for (std::vector<std::string>::const_iterator i = names.begin(); i != names.end(); ++i)
+ system_state.insert(*i);
+ break;
+ case ConditionNode::UNSETTING:
+ for (std::vector<std::string>::const_iterator i = names.begin(); i != names.end(); ++i)
+ system_state.erase(*i);
+ break;
+ default:
+ ; // other condition types have no effect on the system state
+ }
+ }
//traverse all successors which do not occur in path_prefix more than m_occurence
NodeRelationPtrVector set_succ = pre->get_successors();
@@ -69,15 +88,31 @@
for(rel=set_succ.begin(); rel!=set_succ.end();rel++)
{
const NodeRelationPtr& node_relation = *rel;
- HMscNodePtr new_node(dynamic_cast<HMscNode*>(node_relation.get()->get_successor()));
- if(get_number(new_node)<m_occurence)
+ HMscNodePtr new_node(dynamic_cast<HMscNode*>(node_relation->get_successor()));
+ if(get_number(new_node, system_state)<m_occurence)
{
-
- path_prefix2.push_back(node_relation.get()); //update attribute
- all_paths(new_node,path_prefix2);
-
+ // check for an unsatisfied guard
+ ConditionNodePtr new_cond_node = boost::dynamic_pointer_cast<ConditionNode>(new_node);
+ if (new_cond_node != NULL)
+ {
+ if (new_cond_node->get_type() == ConditionNode::GUARDING)
+ {
+ bool satisfied = false;
+ const std::vector<std::string> names = new_cond_node->get_names();
+ for (std::vector<std::string>::const_iterator i = names.begin(); i != names.end(); ++i)
+ if (system_state.find(*i) != system_state.end())
+ {
+ satisfied = true;
+ break;
+ }
+ if (!satisfied)
+ continue;
+ }
+ }
+
+ path_prefix2.push_back(node_relation.get()); //update attribute
+ all_paths(new_node,path_prefix2, system_state);
}
-
}
//all successors have been traversed-> update attributes and finish.
@@ -85,6 +120,6 @@
//keep poping until reference node is reached
while(!dynamic_cast<HMscNode*>(path_prefix2.back()))
path_prefix2.pop_back();
- set_number(node, get_number(node)-1);
+ set_number(node, get_number(node, system_state)-1, system_state);
return;
}
Modified: branches/conditions/src/check/time/hmsc_all_paths.h
===================================================================
--- branches/conditions/src/check/time/hmsc_all_paths.h 2013-05-26 17:54:35 UTC (rev 1823)
+++ branches/conditions/src/check/time/hmsc_all_paths.h 2013-05-27 01:44:38 UTC (rev 1824)
@@ -3,6 +3,8 @@
#include "time_pseudocode.h"
#include "data/session_attribute.h"
+#include <set>
+#include <string>
//typedef std::pair<std::list<HMscNodePtr>,bool> HMscPath;
//typedef std::pair<std::list<HMscPath>,bool> HMscAllPaths;
@@ -20,7 +22,7 @@
HMscNodePtrSet m_last;
int m_occurence; // how many times node can occur in path
std::list<PathFoundListener*> m_path_found_listeners;
- SessionAttribute<int> m_attr_number;
+ SessionAttribute<std::map<SystemState, int> > m_attr_number;
//preconditions: every path from node first to end node should go through some node from last
@@ -28,9 +30,8 @@
AllPaths(HMscPtr hmsc, //TimeRelationRefNodePtr relation,
HMscNodePtr first, HMscNodePtrSet last, int occurence,
const std::string& number="AllPathAlg")
- :m_hmsc(hmsc),m_first(first),m_last(last),m_occurence(occurence),m_attr_number("attr_number",-1)
+ :m_hmsc(hmsc),m_first(first),m_last(last),m_occurence(occurence),m_attr_number("attr_number", std::map<SystemState, int>())
{
-
}
~AllPaths()
@@ -38,14 +39,21 @@
m_attr_number.clean_up();
}
- void set_number(HMscNodePtr e,int number)
+ void set_number(HMscNodePtr e, int number, SystemState system_state = SystemState())
{
- return m_attr_number.set(e.get(), number);
+ std::map<SystemState, int> num_map = m_attr_number.get(e.get());
+ num_map[system_state] = number;
+ m_attr_number.set(e.get(), num_map);
}
- int get_number(HMscNodePtr e)
+ int get_number(HMscNodePtr e, SystemState system_state = SystemState())
{
- return m_attr_number.get(e.get());
+ std::map<SystemState, int> num_map = m_attr_number.get(e.get());
+ std::map<SystemState, int>::iterator num = num_map.find(system_state);
+ if (num == num_map.end())
+ return -1;
+ else
+ return num->second;
}
@@ -68,7 +76,7 @@
void traverse();
- void all_paths(HMscNodePtr, MscElementPList);
+ void all_paths(HMscNodePtr, MscElementPList, std::set<std::string> system_state = std::set<std::string>());
/**
* Adds PathFoundListener
Modified: branches/conditions/src/data/msc/ConditionNode.cpp
===================================================================
--- branches/conditions/src/data/msc/ConditionNode.cpp 2013-05-26 17:54:35 UTC (rev 1823)
+++ branches/conditions/src/data/msc/ConditionNode.cpp 2013-05-27 01:44:38 UTC (rev 1824)
@@ -57,6 +57,11 @@
m_type = GUARDING;
state = STATE_NAME;
}
+ else if(lowcase_token == "unset")
+ {
+ m_type = UNSETTING;
+ state = STATE_NAME;
+ }
else if(lowcase_token == "for")
{
m_type = RANDOM;
@@ -151,6 +156,10 @@
text << "when ";
/* no break */
case SETTING:
+ case UNSETTING:
+ if (m_type == UNSETTING)
+ text << "unset ";
+
for(std::vector<std::string>::const_iterator npos = m_names.begin();
npos != m_names.end(); npos++)
{
Modified: branches/conditions/src/data/msc/ConditionNode.h
===================================================================
--- branches/conditions/src/data/msc/ConditionNode.h 2013-05-26 17:54:35 UTC (rev 1823)
+++ branches/conditions/src/data/msc/ConditionNode.h 2013-05-27 01:44:38 UTC (rev 1824)
@@ -28,6 +28,23 @@
public HMscNode, public PredecessorNode, public SuccessorNode
{
public:
+ enum ConditionType
+ {
+ SETTING, // <state1>, <state2>
+ UNSETTING, // unset <state1>, <state2>
+ GUARDING, // when <state1>, <state2>
+ RANDOM, // for 50%
+ OTHERWISE
+ };
+
+private:
+ ConditionType m_type;
+
+ std::vector<std::string> m_names;
+ //! probability (0-1) this condition is applied
+ double m_probability;
+
+public:
ConditionNode():HMscNode(),PredecessorNode(),SuccessorNode(),
m_type(OTHERWISE), m_probability(1.0)
{
@@ -60,14 +77,6 @@
void assign_label(const std::string& label);
std::string get_label() const;
- enum ConditionType
- {
- SETTING, // <state1>, <state2>
- GUARDING, // when <state1>, <state2>
- RANDOM, // for 50%
- OTHERWISE
- };
-
//! Setter of m_type
void set_type(ConditionType type)
{
@@ -103,13 +112,6 @@
{
return m_probability;
}
-
-private:
- ConditionType m_type;
-
- std::vector<std::string> m_names;
- //! probability (0-1) this condition is applied
- double m_probability;
};
#endif // #ifndef _CONDITIONNODE_H
Modified: branches/conditions/src/data/msc_types.h
===================================================================
--- branches/conditions/src/data/msc_types.h 2013-05-26 17:54:35 UTC (rev 1823)
+++ branches/conditions/src/data/msc_types.h 2013-05-27 01:44:38 UTC (rev 1824)
@@ -29,6 +29,7 @@
#include <algorithm>
#include <list>
#include <map>
+#include <set>
#include <string>
#if defined(_MSC_VER)
#include <comutil.h> // _bstr_t
@@ -206,6 +207,9 @@
}
}
+
+typedef std::set<std::string> SystemState;
+
#endif /* _MSC_TYPES_H */
// $Id$
Modified: branches/conditions/tests/time/time_race/CMakeLists.txt
===================================================================
--- branches/conditions/tests/time/time_race/CMakeLists.txt 2013-05-26 17:54:35 UTC (rev 1823)
+++ branches/conditions/tests/time/time_race/CMakeLists.txt 2013-05-27 01:44:38 UTC (rev 1824)
@@ -38,3 +38,5 @@
ADD_CHECKER_TEST(sctime "Time Race" race_pos27.mpr 1)
ADD_CHECKER_TEST(sctime "Time Race" race_pos28.mpr 1)
+ADD_CHECKER_TEST(sctime "Time Race" race_cond_pos1.mpr 1)
+
Added: branches/conditions/tests/time/time_race/race_cond_pos1.mpr
===================================================================
--- branches/conditions/tests/time/time_race/race_cond_pos1.mpr (rev 0)
+++ branches/conditions/tests/time/time_race/race_cond_pos1.mpr 2013-05-27 01:44:38 UTC (rev 1824)
@@ -0,0 +1,42 @@
+mscdocument impl_example.vsd;
+msc Cond;
+initial connect L0;
+L0: connect L1, L2;
+L1: condition X connect L3;
+L2: condition Y connect L3;
+L3: connect L4, L5;
+L4: condition when X connect L6;
+L5: connect L7;
+L6: reference A connect L5;
+L7: connect L8, L9;
+L8: condition when Y connect L10;
+L9: connect L11;
+L10: reference C connect L9;
+L11: final;
+endmsc;
+msc A;
+inst A;
+inst B;
+inst C;
+A: instance;
+out m,0 to B;
+endinstance;
+B: instance;
+in m,0 from A;
+endinstance;
+C: instance;
+endinstance;
+endmsc;
+msc C;
+inst A;
+inst B;
+inst C;
+A: instance;
+endinstance;
+B: instance;
+in m,0 from C;
+endinstance;
+C: instance;
+out m,0 to B;
+endinstance;
+endmsc;
Added: branches/conditions/tests/time/time_race/race_cond_pos1.vsd
===================================================================
(Binary files differ)
Index: branches/conditions/tests/time/time_race/race_cond_pos1.vsd
===================================================================
--- branches/conditions/tests/time/time_race/race_cond_pos1.vsd 2013-05-26 17:54:35 UTC (rev 1823)
+++ branches/conditions/tests/time/time_race/race_cond_pos1.vsd 2013-05-27 01:44:38 UTC (rev 1824)
Property changes on: branches/conditions/tests/time/time_race/race_cond_pos1.vsd
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+application/msword
\ No newline at end of property
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <ob...@us...> - 2013-05-26 17:54:37
|
Revision: 1823
http://sourceforge.net/p/scstudio/code/1823
Author: obouda
Date: 2013-05-26 17:54:35 +0000 (Sun, 26 May 2013)
Log Message:
-----------
unhacked conditions - now, ConditionEvent is used, and Condition does not inherit from IncompleteMessage
Modified Paths:
--------------
branches/conditions/src/data/CMakeLists.txt
branches/conditions/src/data/Z120/Context.cpp
branches/conditions/src/data/Z120/z120_save.cpp
branches/conditions/src/data/beautify/layout_optimizer.cpp
branches/conditions/src/data/exporttex/exportTex.cpp
branches/conditions/src/data/msc/Condition.h
branches/conditions/src/data/msc/MessageEvent.cpp
branches/conditions/src/data/msc.h
branches/conditions/src/data/time_relevant_ordering/time_relevant_ordering.cpp
branches/conditions/src/view/visio/addon/extract.cpp
branches/conditions/src/view/visio/addon/visualize.cpp
Added Paths:
-----------
branches/conditions/src/data/msc/Condition.cpp
branches/conditions/src/data/msc/ConditionEvent.h
Modified: branches/conditions/src/data/CMakeLists.txt
===================================================================
--- branches/conditions/src/data/CMakeLists.txt 2013-05-26 15:54:24 UTC (rev 1822)
+++ branches/conditions/src/data/CMakeLists.txt 2013-05-26 17:54:35 UTC (rev 1823)
@@ -46,7 +46,9 @@
msc/Commentable.h
msc/CompleteMessage.cpp
msc/CompleteMessage.h
+ msc/Condition.cpp
msc/Condition.h
+ msc/ConditionEvent.h
msc/ConditionNode.cpp
msc/ConditionNode.h
msc/ConnectionNode.h
Modified: branches/conditions/src/data/Z120/Context.cpp
===================================================================
--- branches/conditions/src/data/Z120/Context.cpp 2013-05-26 15:54:24 UTC (rev 1822)
+++ branches/conditions/src/data/Z120/Context.cpp 2013-05-26 17:54:35 UTC (rev 1823)
@@ -704,17 +704,17 @@
*/
void add_condition_fun(struct Context* context)
{
- ContextEventFactory<MessageEvent>::create_event(context);
+ ContextEventFactory<ConditionEvent>::create_event(context);
if(context->condition_shared_inst.size() > 1)
context->z->print_report(RS_WARNING,
stringize() << "Warning 34: Condition across multiple instances is not supported yet.");
- ConditionPtr local_condition = new Condition(TOWSTRING(context->condition_name));
- MessageEventPtr cur_ev = boost::dynamic_pointer_cast<MessageEvent>(context->current_event);
+ ConditionPtr condition = new Condition(TOWSTRING(context->condition_name));
+ ConditionEventPtr cur_ev = boost::dynamic_pointer_cast<ConditionEvent>(context->current_event);
if (cur_ev == NULL)
- throw std::runtime_error("expecting a condition event");
- local_condition->glue_event(cur_ev);
+ throw std::runtime_error("expecting a condition event, got " + std::string(typeid(*context->current_event.get()).name()));
+ condition->glue_event(cur_ev.get());
}
/*
Modified: branches/conditions/src/data/Z120/z120_save.cpp
===================================================================
--- branches/conditions/src/data/Z120/z120_save.cpp 2013-05-26 15:54:24 UTC (rev 1822)
+++ branches/conditions/src/data/Z120/z120_save.cpp 2013-05-26 17:54:35 UTC (rev 1823)
@@ -382,15 +382,9 @@
print_element_attributes(stream, incomplete_message);
if(incomplete_message->is_lost())
{
- // REF: unhack
- //hack until the object model is being fixed
- Condition* cond = dynamic_cast<Condition*>(incomplete_message.get());
- if(cond != NULL)
- stream << "condition " << VALID_NAME(cond->get_label()) << " shared";
- else
- stream << "out " << VALID_NAME(incomplete_message->get_label())
- << "," << message_id_map.get_id(incomplete_message)
- << " to lost";
+ stream << "out " << VALID_NAME(incomplete_message->get_label())
+ << "," << message_id_map.get_id(incomplete_message)
+ << " to lost";
}
if(incomplete_message->is_found())
stream << "in " << VALID_NAME(incomplete_message->get_label())
@@ -408,6 +402,16 @@
stream << "action '" << VALID_NAME(act->get_statement()) << "'";
}
}
+ else if (boost::dynamic_pointer_cast<ConditionEvent>(event) != NULL)
+ {
+ ConditionEventPtr ce = boost::dynamic_pointer_cast<ConditionEvent>(event);
+ ConditionPtr cond = ce->get_condition();
+ if(cond != NULL)
+ {
+ print_element_attributes(stream, cond);
+ stream << "condition " << VALID_NAME(cond->get_text()) << " shared";
+ }
+ }
else
{
throw std::runtime_error("unknown type of event");
Modified: branches/conditions/src/data/beautify/layout_optimizer.cpp
===================================================================
--- branches/conditions/src/data/beautify/layout_optimizer.cpp 2013-05-26 15:54:24 UTC (rev 1822)
+++ branches/conditions/src/data/beautify/layout_optimizer.cpp 2013-05-26 17:54:35 UTC (rev 1823)
@@ -178,26 +178,17 @@
if(m_user_condition)
{
- MessageEvent* me = dynamic_cast<MessageEvent*>(e);
- if(me != NULL && !me->is_matched())
+ ConditionEvent* ce = dynamic_cast<ConditionEvent*>(e);
+ if (ce != NULL)
{
- IncompleteMessagePtr in_mess = me->get_incomplete_message();
- if(in_mess != NULL)
+ ConditionPtr cond = ce->get_condition();
+ if (cond != NULL)
{
- // REF: unhack
- // NOTE: a hack for conditions support - until object model is fixed
- Condition* cond = dynamic_cast<Condition*>(in_mess.get());
- if(cond != NULL)
- {
- if(m_user_condition)
- {
- double tmp_height = cond->get_height();
- double tmp_width = cond->get_width();
- double area = tmp_width * tmp_height;
- cond->set_height(area / m_condition_width);
- cond->set_width(m_condition_width);
- }
- }
+ double tmp_height = cond->get_height();
+ double tmp_width = cond->get_width();
+ double area = tmp_width * tmp_height;
+ cond->set_height(area / m_condition_width);
+ cond->set_width(m_condition_width);
}
}
}
@@ -365,28 +356,7 @@
MessageEvent* msg_event = dynamic_cast<MessageEvent*>(event);
if (msg_event != NULL)
{
- if(msg_event->is_matched())
- {
- add_relative_distance_constraint(m_lp, e1, e2, m_successor_distance);
- }
- else
- {
- IncompleteMessagePtr in_mess = msg_event->get_incomplete_message();
- if(in_mess != NULL)
- {
- // REF: unhack
- // NOTE: a hack for conditions support - until object model is fixed
- Condition* cond = dynamic_cast<Condition*>(in_mess.get());
- if(cond != NULL)
- {
- add_relative_distance_constraint(m_lp, e1, e2, m_successor_distance+cond->get_height());
- }
- else
- add_relative_distance_constraint(m_lp, e1, e2, m_successor_distance);
- }
- else
- add_relative_distance_constraint(m_lp, e1, e2, m_successor_distance);
- }
+ add_relative_distance_constraint(m_lp, e1, e2, m_successor_distance);
}
else if (dynamic_cast<LocalActionEvent*>(event) != NULL)
{
@@ -395,6 +365,13 @@
if(act != NULL)
add_relative_distance_constraint(m_lp, e1, e2, m_successor_distance+act->get_height());
}
+ else if (dynamic_cast<ConditionEvent*>(event) != NULL)
+ {
+ ConditionEvent* ce = dynamic_cast<ConditionEvent*>(event);
+ ConditionPtr cond = ce->get_condition();
+ if (cond != NULL)
+ add_relative_distance_constraint(m_lp, e1, e2, m_successor_distance+cond->get_height());
+ }
else
{
throw std::runtime_error("unknown type of event");
@@ -442,31 +419,25 @@
if(in_mess->is_lost())
{
// LOST MESSAGE EVENT
- // REF: unhack
- // NOTE: a hack for conditions support - until object model is fixed
- Condition* cond = dynamic_cast<Condition*>(in_mess.get());
- if(cond == NULL)
+ float horizontal_space = std::sqrt(std::pow(m_incomplete_message_length,2) - std::pow(m_send_receive_distance,2));
+ while(i < m_instances.size())
{
- float horizontal_space = std::sqrt(std::pow(m_incomplete_message_length,2) - std::pow(m_send_receive_distance,2));
- while(i < m_instances.size())
+ double next_inst_space = m_instances.at(i)->get_line_begin().get_x() - me->get_instance()->get_line_begin().get_x();
+ if(next_inst_space <= horizontal_space)
{
- double next_inst_space = m_instances.at(i)->get_line_begin().get_x() - me->get_instance()->get_line_begin().get_x();
- if(next_inst_space <= horizontal_space)
- {
- double crossing = m_send_receive_distance* (next_inst_space / horizontal_space);
- if(me->get_incomplete_message()->is_found())
- crossing = -crossing;
- UnoverlayingMessages unoverlaying(m_lp, m_indexer, me, crossing);
- unoverlaying.m_successor_distance = m_successor_distance;
- DFSInstanceEventsTraverser traverser;
- traverser.add_white_event_found_listener(&unoverlaying);
- traverser.traverse((m_instances.at(i)).get());
- horizontal_space = horizontal_space - (float)next_inst_space;
- i++;
- }
- else
- break;
+ double crossing = m_send_receive_distance* (next_inst_space / horizontal_space);
+ if(me->get_incomplete_message()->is_found())
+ crossing = -crossing;
+ UnoverlayingMessages unoverlaying(m_lp, m_indexer, me, crossing);
+ unoverlaying.m_successor_distance = m_successor_distance;
+ DFSInstanceEventsTraverser traverser;
+ traverser.add_white_event_found_listener(&unoverlaying);
+ traverser.traverse((m_instances.at(i)).get());
+ horizontal_space = horizontal_space - (float)next_inst_space;
+ i++;
}
+ else
+ break;
}
}
else
@@ -545,9 +516,9 @@
}
}
}
- else if (dynamic_cast<LocalActionEvent*>(e) != NULL)
+ else if (dynamic_cast<LocalActionEvent*>(e) != NULL || dynamic_cast<ConditionEvent*>(e) != NULL)
{
- // LOCAL ACTION
+ // LOCAL ACTION or CONDITION
// update the objective function for unmatched events:
set_obj(m_lp, e1, 1.0/(m_indexer->get_event_count()+2*m_size));
}
@@ -658,17 +629,13 @@
if (act != NULL)
extra_height = act->get_height();
}
- // NOTE: a hack for conditions support - until object model is fixed
- MessageEventPtr strictTmpMsg = boost::dynamic_pointer_cast<MessageEvent>(strictTmp);
- if (strictTmpMsg != NULL && strictTmpMsg->get_incomplete_message() != NULL)
+
+ ConditionEventPtr strictTmpCond = boost::dynamic_pointer_cast<ConditionEvent>(strictTmp);
+ if (strictTmpCond != NULL)
{
- IncompleteMessagePtr in_mess = strictTmpMsg->get_incomplete_message();
- if (in_mess->is_lost())
- {
- ConditionPtr cond = boost::dynamic_pointer_cast<Condition>(in_mess);
- if (cond != NULL)
- extra_height = cond->get_height();
- }
+ ConditionPtr cond = strictTmpCond->get_condition();
+ if (cond != NULL)
+ extra_height = cond->get_height();
}
add_relative_distance_constraint(m_lp, level, begin, m_successor_distance + extra_height);
@@ -785,31 +752,7 @@
else
{
// note: var element 0 contains the first variable, etc.
- IncompleteMessagePtr in_mess = msg_ev->get_incomplete_message();
- if(in_mess.get())
- {
- if(in_mess->is_lost())
- {
- // REF: unhack
- // NOTE: a hack for conditions support - until object model is fixed
- Condition* cond = dynamic_cast<Condition*>(in_mess.get());
- if(cond != NULL)
- {
- double tmp_height = cond->get_height();
- msg_ev->set_position(MscPoint(0, ((instance_head_distance+var[epos->second-1])*proportion) + tmp_height));
- if(((instance_head_distance+var[epos->second-1])*proportion) + tmp_height > max_y)
- max_y = ((instance_head_distance+var[epos->second-1])*proportion) + tmp_height;
- }
- else
- msg_ev->set_position(MscPoint(0, (instance_head_distance+var[epos->second-1])*proportion));
- }
- //message found
- else
- msg_ev->set_position(MscPoint(0, (instance_head_distance+var[epos->second-1])*proportion));
- }
- //complete message
- else
- msg_ev->set_position(MscPoint(0, (instance_head_distance+var[epos->second-1])*proportion));
+ msg_ev->set_position(MscPoint(0, (instance_head_distance+var[epos->second-1])*proportion));
}
}
else if (boost::dynamic_pointer_cast<LocalActionEvent>(epos->first) != NULL)
@@ -825,6 +768,19 @@
max_y = std::max(max_y, lae->get_position().get_y());
}
}
+ else if (boost::dynamic_pointer_cast<ConditionEvent>(epos->first) != NULL)
+ {
+ // condition
+ ConditionEventPtr ce = boost::dynamic_pointer_cast<ConditionEvent>(epos->first);
+ assert(dynamic_cast<StrictOrderArea*>(ce->get_area()) != NULL);
+ ConditionPtr cond = ce->get_condition();
+ if (cond != NULL)
+ {
+ double tmp_height = cond->get_height();
+ ce->set_position(MscPoint(0, ((instance_head_distance+var[epos->second-1])*proportion) + tmp_height));
+ max_y = std::max(max_y, ce->get_position().get_y());
+ }
+ }
else
{
throw std::runtime_error("unknown type of event");
@@ -845,17 +801,9 @@
if(in_mess.get())
{
if(in_mess->is_lost())
- {
- // NOTE: a hack for local conditions support - until object model is fixed
- Condition* cond = dynamic_cast<Condition*>(in_mess.get());
- if(cond == NULL)
- in_mess->set_dot_position(MscPoint(incomplete_message_length, send_receive_distance));
-
- }
- else if(in_mess->is_found())
- {
+ in_mess->set_dot_position(MscPoint(incomplete_message_length, send_receive_distance));
+ else
in_mess->set_dot_position(MscPoint(-incomplete_message_length, -send_receive_distance));
- }
}
}
}
@@ -1091,21 +1039,6 @@
{
max_y = var[indexer.get_event_index(last_msg_event)-1] + m_instance_head_distance;
}
- else
- {
- IncompleteMessagePtr in_mess = last_msg_event->get_incomplete_message();
- if(in_mess.get() && in_mess->is_lost())
- {
- // REF: unhack
- // NOTE: a hack for local conditions support - until object model is fixed
- Condition* cond = dynamic_cast<Condition*>(in_mess.get());
- if (cond != NULL)
- {
- double tmp_height = cond->get_height();
- max_y = var[indexer.get_event_index(last_event)-1] + m_instance_head_distance+tmp_height;
- }
- }
- }
}
else if (boost::dynamic_pointer_cast<LocalActionEvent>(last_event) != NULL)
{
@@ -1117,6 +1050,16 @@
max_y = var[indexer.get_event_index(last_event)-1] + m_instance_head_distance+tmp_height;
}
}
+ else if (boost::dynamic_pointer_cast<ConditionEvent>(last_event) != NULL)
+ {
+ ConditionEventPtr ce = boost::dynamic_pointer_cast<ConditionEvent>(last_event);
+ ConditionPtr cond = boost::dynamic_pointer_cast<Condition>(ce->get_condition());
+ if (cond != NULL)
+ {
+ double tmp_height = cond->get_height();
+ max_y = var[indexer.get_event_index(last_event)-1] + m_instance_head_distance+tmp_height;
+ }
+ }
else
{
throw std::runtime_error("unknown type of event");
Modified: branches/conditions/src/data/exporttex/exportTex.cpp
===================================================================
--- branches/conditions/src/data/exporttex/exportTex.cpp 2013-05-26 15:54:24 UTC (rev 1822)
+++ branches/conditions/src/data/exporttex/exportTex.cpp 2013-05-26 17:54:35 UTC (rev 1823)
@@ -452,23 +452,12 @@
}
}
- //only complete message is printed on send event(receive event is skiped)
+ //only complete message is printed on send event (receive event is skipped)
//for all other items we can print color
print_color(event->get_marked());
if (msg_event != NULL)
{
- // REF: unhack
- //temporary solution - Condition not implemented yet
- ConditionPtr localCondition = boost::dynamic_pointer_cast<Condition>(msg_event->get_incomplete_message());
- if(localCondition!=NULL)
- {
- m_stream << m_local_condition_height_map.printLength(localCondition->get_height());
- m_stream << m_local_condition_width_map.printLength(localCondition->get_width()/2);
- m_stream << "\\condition*{" << ExportTex::print_wchar(localCondition->get_label()) << "}{" << m_instance_id_map.get_id(inst_pos(msg_event->get_instance())) << "_inst}" << std::endl;
- return;
- }
-
IncompleteMessagePtr incomplete_message = msg_event->get_incomplete_message();
if(incomplete_message != NULL)
{
@@ -498,6 +487,18 @@
m_stream << "\\action*{" << ExportTex::print_wchar(act->get_statement()) << "}{" << m_instance_id_map.get_id(inst_pos(lae->get_instance())) << "_inst}" << std::endl;
}
}
+ else if (boost::dynamic_pointer_cast<ConditionEvent>(event) != NULL)
+ {
+ ConditionEventPtr ce = boost::dynamic_pointer_cast<ConditionEvent>(event);
+ ConditionPtr cond = ce->get_condition();
+ if(cond != NULL)
+ {
+ assert(ce->get_instance() != NULL);
+ m_stream << m_local_condition_height_map.printLength(cond->get_height());
+ m_stream << m_local_condition_width_map.printLength(cond->get_width()/2);
+ m_stream << "\\condition*{" << ExportTex::print_wchar(cond->get_text()) << "}{" << m_instance_id_map.get_id(inst_pos(ce->get_instance())) << "_inst}" << std::endl;
+ }
+ }
else
{
throw std::runtime_error("unknown type of event");
@@ -873,6 +874,7 @@
{
MessageEventPtr msg_event = boost::dynamic_pointer_cast<MessageEvent>(event);
LocalActionEventPtr local_action_event = boost::dynamic_pointer_cast<LocalActionEvent>(event);
+ ConditionEventPtr condition_event = boost::dynamic_pointer_cast<ConditionEvent>(event);
Coordinate coor = event->get_position().get_y()+coordinate; //! event absolute position in diagram
@@ -884,16 +886,13 @@
if (act != NULL)
coor -= act->get_height();
}
- if (msg_event != NULL)
+ if (condition_event != NULL)
{
- // REF: unhack
- //temporary solution - Condition not implemented yet
- ConditionPtr local_condition = boost::dynamic_pointer_cast<Condition>(msg_event->get_incomplete_message());
- if(local_condition!=NULL)
- {
- coor -= local_condition->get_height();
- }
+ ConditionPtr cond = condition_event->get_condition();
+ if (cond != NULL)
+ coor -= cond->get_height();
}
+
insert_pointer(event,coor);
insert_time_relations(event,coor);
//print orderings associated with event
@@ -955,17 +954,6 @@
}
}
- //temporary solution - Condition not implemented yet
- // REF: unhack
- ConditionPtr local_condition = boost::dynamic_pointer_cast<Condition>(msg_event->get_incomplete_message());
- if(local_condition!=NULL)
- {
- edge_point(local_condition->get_event()->get_instance()->get_line_begin().get_x(),local_condition->get_width());
- m_local_condition_width_map.addDistance(local_condition->get_width()/2);
- m_local_condition_height_map.addDistance(local_condition->get_height());
- return;
- }
-
IncompleteMessagePtr incomplete_message = msg_event->get_incomplete_message();
if(incomplete_message != NULL)
{
@@ -979,11 +967,23 @@
LocalActionPtr act = local_action_event->get_local_action();
if (act != NULL)
{
+ assert(local_action_event->get_instance() != NULL);
edge_point(local_action_event->get_instance()->get_line_begin().get_x(), act->get_width());
m_local_action_width_map.addDistance(act->get_width());
m_local_action_height_map.addDistance(act->get_height());
}
}
+ else if (condition_event != NULL)
+ {
+ ConditionPtr cond = condition_event->get_condition();
+ if (cond != NULL)
+ {
+ assert(condition_event->get_instance() != NULL);
+ edge_point(condition_event->get_instance()->get_line_begin().get_x(), cond->get_width());
+ m_local_condition_width_map.addDistance(cond->get_width()/2);
+ m_local_condition_height_map.addDistance(cond->get_height());
+ }
+ }
else
{
throw std::runtime_error("unknown type of event");
Added: branches/conditions/src/data/msc/Condition.cpp
===================================================================
--- branches/conditions/src/data/msc/Condition.cpp (rev 0)
+++ branches/conditions/src/data/msc/Condition.cpp 2013-05-26 17:54:35 UTC (rev 1823)
@@ -0,0 +1,34 @@
+/*
+ * scstudio - Sequence Chart Studio
+ * http://scstudio.sourceforge.net
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * Copyright (c) 2013 Ondrej Bouda <ob...@ma...>
+ *
+ * $Id$
+ */
+
+#include "data/msc.h"
+
+void Condition::glue_event(ConditionEvent* event)
+{
+ if(event != m_event)
+ {
+ // unglue, if already glued
+ if(m_event != NULL)
+ m_event->set_condition(NULL);
+
+ if(event != NULL)
+ event->set_condition(this);
+
+ m_event = event;
+ }
+}
Property changes on: branches/conditions/src/data/msc/Condition.cpp
___________________________________________________________________
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Modified: branches/conditions/src/data/msc/Condition.h
===================================================================
--- branches/conditions/src/data/msc/Condition.h 2013-05-26 15:54:24 UTC (rev 1822)
+++ branches/conditions/src/data/msc/Condition.h 2013-05-26 17:54:35 UTC (rev 1823)
@@ -20,26 +20,74 @@
#define _CONDITION_H
/**
- * \brief Local condition on an instance in Basic MSC.
+ * \brief Condition on an instance in Basic MSC.
+ * TODO: support multiple instances bound to a single condition
*/
-class SCMSC_EXPORT Condition : public IncompleteMessage
-// NOTE: just a quick hack until the object model is fixed; Condition behaves just like a lost message
+class SCMSC_EXPORT Condition : public MscElementTmpl<Condition>
{
+ /**
+ * Condition text.
+ */
+ std::wstring m_text;
+
+ /**
+ * Peer event.
+ * @warning boost::intrusive_ptr mustn't be used because of possible cyclic dependency
+ */
+ ConditionEvent* m_event;
+
Coordinate m_width;
Coordinate m_height;
public:
- Condition(const std::wstring& label = L"", Coordinate width = 0.0, Coordinate height = 0.0) :
- IncompleteMessage(LOST, label), m_width(width), m_height(height)
+ Condition(const std::wstring& text = L"", Coordinate width = 0.0, Coordinate height = 0.0) :
+ m_text(text), m_event(NULL), m_width(width), m_height(height)
{
}
+
+ Condition(Condition* original)
+ : MscElementTmpl<Condition>(original),
+ m_text(original->m_text), m_event(NULL),
+ m_width(original->m_width), m_height(original->m_height)
+ {
+ }
- Coordinate get_width() const { return m_width; }
- Coordinate get_height() const { return m_height; }
- void set_width(Coordinate width) { m_width = width; }
- void set_height(Coordinate height) { m_height = height; }
+ const std::wstring& get_text() const
+ {
+ return m_text;
+ }
+
+ void glue_event(ConditionEvent* event);
+
+ ConditionEvent* get_event()
+ {
+ return m_event;
+ }
+
+ bool is_glued() const
+ {
+ return m_event != NULL;
+ }
+
+ Coordinate get_width() const
+ {
+ return m_width;
+ }
+
+ Coordinate get_height() const
+ {
+ return m_height;
+ }
+
+ void set_width(Coordinate width)
+ {
+ m_width = width;
+ }
+
+ void set_height(Coordinate height)
+ {
+ m_height = height;
+ }
};
-typedef boost::intrusive_ptr<Condition> ConditionPtr;
-
#endif // #ifndef _CONDITION_H
Added: branches/conditions/src/data/msc/ConditionEvent.h
===================================================================
--- branches/conditions/src/data/msc/ConditionEvent.h (rev 0)
+++ branches/conditions/src/data/msc/ConditionEvent.h 2013-05-26 17:54:35 UTC (rev 1823)
@@ -0,0 +1,75 @@
+/*
+ * scstudio - Sequence Chart Studio
+ * http://scstudio.sourceforge.net
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * Copyright (c) 2013 Ondrej Bouda <ob...@ma...>
+ *
+ * $Id$
+ */
+
+#ifndef _CONDITIONEVENT_H
+#define _CONDITIONEVENT_H
+
+#include "data/msc/EventTmpl.h"
+#include "data/msc/EventArea.h"
+#include "data/msc/MscElementTmpl.h"
+#include "data/msc/Commentable.h"
+
+/**
+ * \brief An event caused by a condition.
+ */
+class SCMSC_EXPORT ConditionEvent : public EventTmpl<Condition>
+{
+protected:
+ ConditionEvent(ConditionEvent* original) : EventTmpl<Condition>(original)
+ {
+ }
+
+public:
+
+ ConditionEvent() : EventTmpl<Condition>()
+ {
+ }
+
+ Event* clone()
+ {
+ return new ConditionEvent(this);
+ }
+
+ const std::wstring to_string()
+ {
+ if (get_condition() != NULL)
+ return L"Event of " + get_condition()->get_text() + L" condition";
+ else
+ return L"An unattached condition event";
+ }
+
+ /**
+ * Sets the condition this event is attached to.
+ * Just a convenience method - alias for set_element().
+ */
+ void set_condition(const ConditionPtr& condition)
+ {
+ set_element(condition);
+ }
+
+ /**
+ * Gets the condition this event is attached to.
+ * Just a convenience method - alias for get_element().
+ */
+ const ConditionPtr& get_condition() const
+ {
+ return get_element();
+ }
+};
+
+#endif // #ifndef _CONDITIONEVENT_H
Property changes on: branches/conditions/src/data/msc/ConditionEvent.h
___________________________________________________________________
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Modified: branches/conditions/src/data/msc/MessageEvent.cpp
===================================================================
--- branches/conditions/src/data/msc/MessageEvent.cpp 2013-05-26 15:54:24 UTC (rev 1822)
+++ branches/conditions/src/data/msc/MessageEvent.cpp 2013-05-26 17:54:35 UTC (rev 1823)
@@ -23,22 +23,14 @@
{
CompleteMessagePtr complete = get_complete_message();
if (complete != NULL)
- return complete->get_send_event() == this;
+ return (complete->get_send_event() == this);
IncompleteMessage* incomplete = dynamic_cast<IncompleteMessage*>(get_message().get());
-
- // note: hack until object model is fixed
- if (incomplete == NULL || dynamic_cast<Condition*>(incomplete) != NULL)
- return false;
-
return incomplete->is_lost();
}
bool MessageEvent::is_receive() const
{
- // FIXME: should return !is_send(); when the hack is eliminated
- if (!is_matched() && (get_message().get() == NULL || dynamic_cast<Condition*>(get_message().get()) != NULL)) // NOTE: hack until object model is fixed
- return false;
return !is_send();
}
Modified: branches/conditions/src/data/msc.h
===================================================================
--- branches/conditions/src/data/msc.h 2013-05-26 15:54:24 UTC (rev 1822)
+++ branches/conditions/src/data/msc.h 2013-05-26 17:54:35 UTC (rev 1823)
@@ -57,6 +57,7 @@
class Event;
class MessageEvent;
class LocalActionEvent;
+class ConditionEvent;
class CoregionEventRelation;
class Msc;
class BMsc;
@@ -66,6 +67,7 @@
class CompleteMessage;
class IncompleteMessage;
class LocalAction;
+class Condition;
class EventArea;
class StrictOrderArea;
class CoregionArea;
@@ -134,9 +136,11 @@
typedef std::list<MessageEventPtr> MessageEventPtrList;
typedef boost::intrusive_ptr<LocalActionEvent> LocalActionEventPtr;
+typedef boost::intrusive_ptr<ConditionEvent> ConditionEventPtr;
typedef boost::intrusive_ptr<MscMessage> MscMessagePtr;
typedef boost::intrusive_ptr<LocalAction> LocalActionPtr;
+typedef boost::intrusive_ptr<Condition> ConditionPtr;
typedef boost::intrusive_ptr<EventArea> EventAreaPtr;
typedef std::list<EventAreaPtr> EventAreaPtrList;
@@ -200,6 +204,7 @@
#include "data/msc/EventTmpl.h"
#include "data/msc/MessageEvent.h"
#include "data/msc/LocalActionEvent.h"
+#include "data/msc/ConditionEvent.h"
#include "data/msc/CoregionEventRelation.h"
#include "data/msc/EventArea.h"
#include "data/msc/StrictOrderArea.h"
Modified: branches/conditions/src/data/time_relevant_ordering/time_relevant_ordering.cpp
===================================================================
--- branches/conditions/src/data/time_relevant_ordering/time_relevant_ordering.cpp 2013-05-26 15:54:24 UTC (rev 1822)
+++ branches/conditions/src/data/time_relevant_ordering/time_relevant_ordering.cpp 2013-05-26 17:54:35 UTC (rev 1823)
@@ -208,26 +208,8 @@
MessageEventPtr first_msg_event = boost::dynamic_pointer_cast<MessageEvent>(first_event);
if (first_msg_event != NULL)
{
- if(!first_msg_event->is_matched())
+ if(first_msg_event->is_matched())
{
- IncompleteMessagePtr in_mess = first_msg_event->get_incomplete_message();
- if(in_mess != NULL)
- {
- // REF: unhack
- // NOTE: a hack for conditions support - until object model is fixed
- ConditionPtr cond = boost::dynamic_pointer_cast<Condition>(in_mess);
- if(cond != NULL)
- {
- double tmp_height = cond->get_height();
- double tmp_width = cond->get_width();
- double area = tmp_width * tmp_height;
- cond->set_height(area / settings.m_condition_width);
- cond->set_width(settings.m_condition_width);
- }
- }
- }
- else
- {
MessageEventPtr e = first_msg_event->get_matching_event();
if(instance_map.find(e->get_instance()) == instance_map.end())
continue;
@@ -249,6 +231,17 @@
act->set_width(settings.m_action_width);
act->set_height(area / settings.m_action_width);
}
+ else if (boost::dynamic_pointer_cast<ConditionEvent>(first_event) != NULL)
+ {
+ ConditionEventPtr first_cond_event = boost::dynamic_pointer_cast<ConditionEvent>(first_event);
+ ConditionPtr cond = first_cond_event->get_condition();
+
+ double tmp_height = cond->get_height();
+ double tmp_width = cond->get_width();
+ double area = tmp_width * tmp_height;
+ cond->set_height(area / settings.m_condition_width);
+ cond->set_width(settings.m_condition_width);
+ }
else
{
throw std::runtime_error("unknown type of event");
@@ -292,17 +285,12 @@
MessageEventPtr msg_ev = boost::dynamic_pointer_cast<MessageEvent>(*it);
if (msg_ev != NULL)
{
- // REF: unhack
IncompleteMessagePtr in_mess = msg_ev->get_incomplete_message();
if(in_mess.get())
{
if(in_mess->is_lost())
{
- ConditionPtr cond = boost::dynamic_pointer_cast<Condition>(in_mess);
- if(cond == NULL)
- {
- in_mess->set_dot_position(MscPoint(settings.m_instance_space/3,0));
- }
+ in_mess->set_dot_position(MscPoint(settings.m_instance_space/3,0));
}
else if(in_mess->is_found())
{
@@ -377,17 +365,12 @@
MessageEventPtr msg_ev = boost::dynamic_pointer_cast<MessageEvent>(*it);
if (msg_ev != NULL)
{
- // REF: unhack
IncompleteMessagePtr in_mess = msg_ev->get_incomplete_message();
if(in_mess.get())
{
if(in_mess->is_lost())
{
- ConditionPtr cond = boost::dynamic_pointer_cast<Condition>(in_mess);
- if(cond == NULL)
- {
- in_mess->set_dot_position(MscPoint(ins->get_line_begin().get_x()+(settings.m_instance_space/3),0));
- }
+ in_mess->set_dot_position(MscPoint(ins->get_line_begin().get_x()+(settings.m_instance_space/3),0));
}
else if(in_mess->is_found())
{
Modified: branches/conditions/src/view/visio/addon/extract.cpp
===================================================================
--- branches/conditions/src/view/visio/addon/extract.cpp 2013-05-26 15:54:24 UTC (rev 1822)
+++ branches/conditions/src/view/visio/addon/extract.cpp 2013-05-26 17:54:35 UTC (rev 1823)
@@ -38,7 +38,7 @@
case ST_BMSC_MESSAGE_LOST:
case ST_BMSC_MESSAGE_FOUND:
case ST_BMSC_ACTION:
- case ST_BMSC_CONDITION:
+ case ST_BMSC_CONDITION:
case ST_BMSC_COREGION:
case ST_BMSC_ORDER_LINE:
case ST_BMSC_ORDER_ARROW:
@@ -633,13 +633,13 @@
case ST_BMSC_CONDITION:
{
- Condition* new_local_condition = new Condition((const wchar_t*)shape->Text);
+ Condition* new_condition = new Condition((const wchar_t*)shape->Text);
// note: this shape is rotated by 90 degrees
- new_local_condition->set_width(GetHeight(shape));
- new_local_condition->set_height(GetWidth(shape));
+ new_condition->set_width(GetHeight(shape));
+ new_condition->set_height(GetWidth(shape));
//new_local_condition->set_width(GetControlPos(shape, _T("Height")));
//new_local_condition->set_height(GetControlPos(shape, _T("Width")));
- elements[shape->ID] = new_local_condition; // NOTE: hack - local condition behaves like a lost message
+ elements[shape->ID] = new_condition;
break;
}
@@ -752,7 +752,7 @@
// local action connections each should have two connection points
std::map<long,int> local_action_connections;
- std::map<long,int> local_condition_connections;
+ std::map<long,int> condition_connections;
typedef std::multiset<SStrictOrder> TEventSet;
TEventSet strict_events; // events in this strict area
@@ -815,7 +815,6 @@
break;
case ST_BMSC_ACTION:
- // local actions are just hacked for the moment
{
std::map<long,int>::iterator connections = local_action_connections.find(event.shape_id);
if (connections == local_action_connections.end())
@@ -829,36 +828,33 @@
}
else
{
- PrintError(stringize() << page_name << ": "
- << "Wrongly connected local action '" << shape->Name << "'",
+ PrintError(stringize() << page_name << ": " << "Wrongly connected local action '" << shape->Name << "'",
shapelist() << shape << instance);
continue;
}
}
break;
- case ST_BMSC_CONDITION:
- //local condition are just hacked for the moment
- {
- std::map<long,int>::iterator connections = local_condition_connections.find(event.shape_id);
- if (connections == local_condition_connections.end())
- {
- local_condition_connections[event.shape_id] = 1;
- continue;
- }
- else if (connections->second == 1)
- {
- event.event_type = SStrictOrder::ET_OUTGOING;
- }
- else
- {
- PrintError(stringize() << page_name << ": "
- << "Wrongly connected local condition '" << shape->Name << "'",
- shapelist() << shape << instance);
+ case ST_BMSC_CONDITION:
+ {
+ std::map<long,int>::iterator connections = condition_connections.find(event.shape_id);
+ if (connections == condition_connections.end())
+ {
+ condition_connections[event.shape_id] = 1;
continue;
- }
- }
- break;
+ }
+ else if (connections->second == 1)
+ {
+ event.event_type = SStrictOrder::ET_OUTGOING;
+ }
+ else
+ {
+ PrintError(stringize() << page_name << ": " << "Wrongly connected condition '" << shape->Name << "'",
+ shapelist() << shape << instance);
+ continue;
+ }
+ }
+ break;
case ST_TIME_INTERVAL:
case ST_TIME_DIRECTED:
@@ -967,7 +963,6 @@
case ST_BMSC_MESSAGE_LOST:
case ST_BMSC_MESSAGE_FOUND:
- case ST_BMSC_CONDITION: // NOTE: hack - condition behaves like a lost message
switch(state)
{
case ST_EXPECTING_AREA:
@@ -1023,6 +1018,34 @@
}
break;
+ case ST_BMSC_CONDITION:
+ switch(state)
+ {
+ case ST_EXPECTING_AREA:
+ ipos->second->add_area(strict_area = new StrictOrderArea());
+ state = ST_STRICT;
+ /* no break */
+ case ST_STRICT:
+ {
+ ConditionPtr cond = find_element<Condition>(elements, epos->shape_id);
+ if(cond == NULL)
+ continue;
+
+ ConditionEventPtr event = strict_area->add_event(new ConditionEvent());
+ event->set_position(ConvertEventPoint(instance, epos->event_pos));
+ cond->glue_event(event);
+
+ events.insert(std::make_pair<SPoint,EventPtr>(point_to_page(instance, epos->event_pos), event));
+ break;
+ }
+
+ case ST_COREGION:
+ PrintError(stringize() << page_name << ": " << "Instance events cannot occur behind coregion.",
+ shapelist() << shape << instance);
+ break;
+ }
+ break;
+
case ST_BMSC_COREGION:
{
switch(state)
@@ -1077,7 +1100,7 @@
}
}
- // walk through detected elements: check all glueable elements are connected
+ // walk through detected elements: check all gluable elements are connected
for(MscElementMap::const_iterator epos = elements.begin(); epos != elements.end(); mpos++)
{
Visio::IVShapePtr shape = vsoPage->Shapes->ItemFromID[mpos->first];
@@ -1096,10 +1119,19 @@
if (act_el != NULL)
{
if (!act_el->is_glued())
- PrintError(stringize() << page_name << ": " << "Disconnected message '" << shape->Name << "'",
+ PrintError(stringize() << page_name << ": " << "Disconnected local action '" << shape->Name << "'",
shapelist() << shape);
continue;
}
+
+ ConditionPtr cond_el = boost::dynamic_pointer_cast<Condition>(el);
+ if (cond_el != NULL)
+ {
+ if (!cond_el->is_glued())
+ PrintError(stringize() << page_name << ": " << "Disconnected condition '" << shape->Name << "'",
+ shapelist() << shape);
+ continue;
+ }
}
// walk though all detected time relations: create measurements
Modified: branches/conditions/src/view/visio/addon/visualize.cpp
===================================================================
--- branches/conditions/src/view/visio/addon/visualize.cpp 2013-05-26 15:54:24 UTC (rev 1822)
+++ branches/conditions/src/view/visio/addon/visualize.cpp 2013-05-26 17:54:35 UTC (rev 1823)
@@ -292,6 +292,8 @@
shape->Text = boost::dynamic_pointer_cast<Message>(element)->get_label().c_str();
else if (boost::dynamic_pointer_cast<LocalAction>(element) != NULL)
shape->Text = boost::dynamic_pointer_cast<LocalAction>(element)->get_statement().c_str();
+ else if (boost::dynamic_pointer_cast<Condition>(element) != NULL)
+ shape->Text = boost::dynamic_pointer_cast<Condition>(element)->get_text().c_str();
else
throw std::runtime_error("Error: unknown element type");
@@ -322,24 +324,9 @@
{
if(incomplete_message->is_lost())
{
- // NOTE: hack - for conditions, a lost message is (mis)used until the object model is fixed
- // REF: unhack
- Condition* local_condition = dynamic_cast<Condition*>(incomplete_message.get());
- if(local_condition != NULL)
- {
- Visio::IVShapePtr cond = drop_shape(vsoPage, shapes, incomplete_message, find_master(ST_BMSC_CONDITION));
- // note: local actions are rotated by 90' in Visio, height is the 'x' coordinate
- CShapeUtils::GlueBeginToPos(cond, parent, event->get_position() - MscPoint(0, local_condition->get_height()));
- CShapeUtils::GlueEndToPos(cond, parent, event->get_position());
- cond->CellsSRC[visSectionObject][visRowXFormOut][visXFormHeight]->PutResult(visMillimeters, local_condition->get_width());
- cond->CellsSRC[visSectionObject][visRowXFormOut][visXFormWidth]->PutResult(visMillimeters, local_condition->get_height());
- }
- else
- {
- Visio::IVShapePtr msg = drop_shape(vsoPage, shapes, incomplete_message, find_master(ST_BMSC_MESSAGE_LOST));
- CShapeUtils::GlueBeginToPos(msg, parent, event->get_position());
- SetLineEnd(msg, GetLineBegin(msg)+incomplete_message->get_dot_position());
- }
+ Visio::IVShapePtr msg = drop_shape(vsoPage, shapes, incomplete_message, find_master(ST_BMSC_MESSAGE_LOST));
+ CShapeUtils::GlueBeginToPos(msg, parent, event->get_position());
+ SetLineEnd(msg, GetLineBegin(msg)+incomplete_message->get_dot_position());
}
else if(incomplete_message->is_found())
{
@@ -361,6 +348,17 @@
act_shape->CellsSRC[visSectionObject][visRowXFormOut][visXFormHeight]->PutResult(visMillimeters, act->get_width());
act_shape->CellsSRC[visSectionObject][visRowXFormOut][visXFormWidth]->PutResult(visMillimeters, act->get_height());
}
+ else if (boost::dynamic_pointer_cast<ConditionEvent>(event) != NULL)
+ {
+ ConditionEventPtr cond_event = boost::dynamic_pointer_cast<ConditionEvent>(event);
+ ConditionPtr cond = cond_event->get_condition();
+ Visio::IVShapePtr cond_shape = drop_shape(vsoPage, shapes, cond, find_master(ST_BMSC_CONDITION));
+ // note: conditions are rotated by 90' in Visio, height is the 'x' coordinate
+ CShapeUtils::GlueBeginToPos(cond_shape, parent, event->get_position() - MscPoint(0, cond->get_height()));
+ CShapeUtils::GlueEndToPos(cond_shape, parent, event->get_position());
+ cond_shape->CellsSRC[visSectionObject][visRowXFormOut][visXFormHeight]->PutResult(visMillimeters, cond->get_width());
+ cond_shape->CellsSRC[visSectionObject][visRowXFormOut][visXFormWidth]->PutResult(visMillimeters, cond->get_height());
+ }
else
{
throw std::runtime_error("Error: unknown type of event");
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <ob...@us...> - 2013-05-26 15:54:27
|
Revision: 1822
http://sourceforge.net/p/scstudio/code/1822
Author: obouda
Date: 2013-05-26 15:54:24 +0000 (Sun, 26 May 2013)
Log Message:
-----------
renamed class LocalCondition to Condition
Modified Paths:
--------------
branches/conditions/src/data/Z120/Context.cpp
branches/conditions/src/data/Z120/z120_save.cpp
branches/conditions/src/data/beautify/layout_optimizer.cpp
branches/conditions/src/data/exporttex/exportTex.cpp
branches/conditions/src/data/msc/Condition.h
branches/conditions/src/data/msc/MessageEvent.cpp
branches/conditions/src/data/time_relevant_ordering/time_relevant_ordering.cpp
branches/conditions/src/view/visio/addon/extract.cpp
branches/conditions/src/view/visio/addon/visualize.cpp
Modified: branches/conditions/src/data/Z120/Context.cpp
===================================================================
--- branches/conditions/src/data/Z120/Context.cpp 2013-05-26 14:36:20 UTC (rev 1821)
+++ branches/conditions/src/data/Z120/Context.cpp 2013-05-26 15:54:24 UTC (rev 1822)
@@ -710,7 +710,7 @@
context->z->print_report(RS_WARNING,
stringize() << "Warning 34: Condition across multiple instances is not supported yet.");
- LocalConditionPtr local_condition = new LocalCondition(TOWSTRING(context->condition_name));
+ ConditionPtr local_condition = new Condition(TOWSTRING(context->condition_name));
MessageEventPtr cur_ev = boost::dynamic_pointer_cast<MessageEvent>(context->current_event);
if (cur_ev == NULL)
throw std::runtime_error("expecting a condition event");
Modified: branches/conditions/src/data/Z120/z120_save.cpp
===================================================================
--- branches/conditions/src/data/Z120/z120_save.cpp 2013-05-26 14:36:20 UTC (rev 1821)
+++ branches/conditions/src/data/Z120/z120_save.cpp 2013-05-26 15:54:24 UTC (rev 1822)
@@ -384,7 +384,7 @@
{
// REF: unhack
//hack until the object model is being fixed
- LocalCondition* cond = dynamic_cast<LocalCondition*>(incomplete_message.get());
+ Condition* cond = dynamic_cast<Condition*>(incomplete_message.get());
if(cond != NULL)
stream << "condition " << VALID_NAME(cond->get_label()) << " shared";
else
Modified: branches/conditions/src/data/beautify/layout_optimizer.cpp
===================================================================
--- branches/conditions/src/data/beautify/layout_optimizer.cpp 2013-05-26 14:36:20 UTC (rev 1821)
+++ branches/conditions/src/data/beautify/layout_optimizer.cpp 2013-05-26 15:54:24 UTC (rev 1822)
@@ -186,7 +186,7 @@
{
// REF: unhack
// NOTE: a hack for conditions support - until object model is fixed
- LocalCondition* cond = dynamic_cast<LocalCondition*>(in_mess.get());
+ Condition* cond = dynamic_cast<Condition*>(in_mess.get());
if(cond != NULL)
{
if(m_user_condition)
@@ -376,7 +376,7 @@
{
// REF: unhack
// NOTE: a hack for conditions support - until object model is fixed
- LocalCondition* cond = dynamic_cast<LocalCondition*>(in_mess.get());
+ Condition* cond = dynamic_cast<Condition*>(in_mess.get());
if(cond != NULL)
{
add_relative_distance_constraint(m_lp, e1, e2, m_successor_distance+cond->get_height());
@@ -444,7 +444,7 @@
// LOST MESSAGE EVENT
// REF: unhack
// NOTE: a hack for conditions support - until object model is fixed
- LocalCondition* cond = dynamic_cast<LocalCondition*>(in_mess.get());
+ Condition* cond = dynamic_cast<Condition*>(in_mess.get());
if(cond == NULL)
{
float horizontal_space = std::sqrt(std::pow(m_incomplete_message_length,2) - std::pow(m_send_receive_distance,2));
@@ -665,7 +665,7 @@
IncompleteMessagePtr in_mess = strictTmpMsg->get_incomplete_message();
if (in_mess->is_lost())
{
- LocalConditionPtr cond = boost::dynamic_pointer_cast<LocalCondition>(in_mess);
+ ConditionPtr cond = boost::dynamic_pointer_cast<Condition>(in_mess);
if (cond != NULL)
extra_height = cond->get_height();
}
@@ -792,7 +792,7 @@
{
// REF: unhack
// NOTE: a hack for conditions support - until object model is fixed
- LocalCondition* cond = dynamic_cast<LocalCondition*>(in_mess.get());
+ Condition* cond = dynamic_cast<Condition*>(in_mess.get());
if(cond != NULL)
{
double tmp_height = cond->get_height();
@@ -847,7 +847,7 @@
if(in_mess->is_lost())
{
// NOTE: a hack for local conditions support - until object model is fixed
- LocalCondition* cond = dynamic_cast<LocalCondition*>(in_mess.get());
+ Condition* cond = dynamic_cast<Condition*>(in_mess.get());
if(cond == NULL)
in_mess->set_dot_position(MscPoint(incomplete_message_length, send_receive_distance));
@@ -1098,7 +1098,7 @@
{
// REF: unhack
// NOTE: a hack for local conditions support - until object model is fixed
- LocalCondition* cond = dynamic_cast<LocalCondition*>(in_mess.get());
+ Condition* cond = dynamic_cast<Condition*>(in_mess.get());
if (cond != NULL)
{
double tmp_height = cond->get_height();
Modified: branches/conditions/src/data/exporttex/exportTex.cpp
===================================================================
--- branches/conditions/src/data/exporttex/exportTex.cpp 2013-05-26 14:36:20 UTC (rev 1821)
+++ branches/conditions/src/data/exporttex/exportTex.cpp 2013-05-26 15:54:24 UTC (rev 1822)
@@ -1,4 +1,4 @@
-/*
+/*
* scstudio - Sequence Chart Studio
* http://scstudio.sourceforge.net
*
@@ -460,7 +460,7 @@
{
// REF: unhack
//temporary solution - Condition not implemented yet
- LocalConditionPtr localCondition = boost::dynamic_pointer_cast<LocalCondition>(msg_event->get_incomplete_message());
+ ConditionPtr localCondition = boost::dynamic_pointer_cast<Condition>(msg_event->get_incomplete_message());
if(localCondition!=NULL)
{
m_stream << m_local_condition_height_map.printLength(localCondition->get_height());
@@ -888,7 +888,7 @@
{
// REF: unhack
//temporary solution - Condition not implemented yet
- LocalConditionPtr local_condition = boost::dynamic_pointer_cast<LocalCondition>(msg_event->get_incomplete_message());
+ ConditionPtr local_condition = boost::dynamic_pointer_cast<Condition>(msg_event->get_incomplete_message());
if(local_condition!=NULL)
{
coor -= local_condition->get_height();
@@ -957,7 +957,7 @@
//temporary solution - Condition not implemented yet
// REF: unhack
- LocalConditionPtr local_condition = boost::dynamic_pointer_cast<LocalCondition>(msg_event->get_incomplete_message());
+ ConditionPtr local_condition = boost::dynamic_pointer_cast<Condition>(msg_event->get_incomplete_message());
if(local_condition!=NULL)
{
edge_point(local_condition->get_event()->get_instance()->get_line_begin().get_x(),local_condition->get_width());
Modified: branches/conditions/src/data/msc/Condition.h
===================================================================
--- branches/conditions/src/data/msc/Condition.h 2013-05-26 14:36:20 UTC (rev 1821)
+++ branches/conditions/src/data/msc/Condition.h 2013-05-26 15:54:24 UTC (rev 1822)
@@ -22,14 +22,14 @@
/**
* \brief Local condition on an instance in Basic MSC.
*/
-class SCMSC_EXPORT LocalCondition : public IncompleteMessage
-// NOTE: just a quick hack until the object model is fixed; LocalCondition behaves just like a lost message
+class SCMSC_EXPORT Condition : public IncompleteMessage
+// NOTE: just a quick hack until the object model is fixed; Condition behaves just like a lost message
{
Coordinate m_width;
Coordinate m_height;
public:
- LocalCondition(const std::wstring& label = L"", Coordinate width = 0.0, Coordinate height = 0.0) :
+ Condition(const std::wstring& label = L"", Coordinate width = 0.0, Coordinate height = 0.0) :
IncompleteMessage(LOST, label), m_width(width), m_height(height)
{
}
@@ -40,6 +40,6 @@
void set_height(Coordinate height) { m_height = height; }
};
-typedef boost::intrusive_ptr<LocalCondition> LocalConditionPtr;
+typedef boost::intrusive_ptr<Condition> ConditionPtr;
#endif // #ifndef _CONDITION_H
Modified: branches/conditions/src/data/msc/MessageEvent.cpp
===================================================================
--- branches/conditions/src/data/msc/MessageEvent.cpp 2013-05-26 14:36:20 UTC (rev 1821)
+++ branches/conditions/src/data/msc/MessageEvent.cpp 2013-05-26 15:54:24 UTC (rev 1822)
@@ -28,7 +28,7 @@
IncompleteMessage* incomplete = dynamic_cast<IncompleteMessage*>(get_message().get());
// note: hack until object model is fixed
- if (incomplete == NULL || dynamic_cast<LocalCondition*>(incomplete) != NULL)
+ if (incomplete == NULL || dynamic_cast<Condition*>(incomplete) != NULL)
return false;
return incomplete->is_lost();
@@ -37,7 +37,7 @@
bool MessageEvent::is_receive() const
{
// FIXME: should return !is_send(); when the hack is eliminated
- if (!is_matched() && (get_message().get() == NULL || dynamic_cast<LocalCondition*>(get_message().get()) != NULL)) // NOTE: hack until object model is fixed
+ if (!is_matched() && (get_message().get() == NULL || dynamic_cast<Condition*>(get_message().get()) != NULL)) // NOTE: hack until object model is fixed
return false;
return !is_send();
}
Modified: branches/conditions/src/data/time_relevant_ordering/time_relevant_ordering.cpp
===================================================================
--- branches/conditions/src/data/time_relevant_ordering/time_relevant_ordering.cpp 2013-05-26 14:36:20 UTC (rev 1821)
+++ branches/conditions/src/data/time_relevant_ordering/time_relevant_ordering.cpp 2013-05-26 15:54:24 UTC (rev 1822)
@@ -215,7 +215,7 @@
{
// REF: unhack
// NOTE: a hack for conditions support - until object model is fixed
- LocalConditionPtr cond = boost::dynamic_pointer_cast<LocalCondition>(in_mess);
+ ConditionPtr cond = boost::dynamic_pointer_cast<Condition>(in_mess);
if(cond != NULL)
{
double tmp_height = cond->get_height();
@@ -298,7 +298,7 @@
{
if(in_mess->is_lost())
{
- LocalConditionPtr cond = boost::dynamic_pointer_cast<LocalCondition>(in_mess);
+ ConditionPtr cond = boost::dynamic_pointer_cast<Condition>(in_mess);
if(cond == NULL)
{
in_mess->set_dot_position(MscPoint(settings.m_instance_space/3,0));
@@ -383,7 +383,7 @@
{
if(in_mess->is_lost())
{
- LocalConditionPtr cond = boost::dynamic_pointer_cast<LocalCondition>(in_mess);
+ ConditionPtr cond = boost::dynamic_pointer_cast<Condition>(in_mess);
if(cond == NULL)
{
in_mess->set_dot_position(MscPoint(ins->get_line_begin().get_x()+(settings.m_instance_space/3),0));
Modified: branches/conditions/src/view/visio/addon/extract.cpp
===================================================================
--- branches/conditions/src/view/visio/addon/extract.cpp 2013-05-26 14:36:20 UTC (rev 1821)
+++ branches/conditions/src/view/visio/addon/extract.cpp 2013-05-26 15:54:24 UTC (rev 1822)
@@ -633,7 +633,7 @@
case ST_BMSC_CONDITION:
{
- LocalCondition* new_local_condition = new LocalCondition((const wchar_t*)shape->Text);
+ Condition* new_local_condition = new Condition((const wchar_t*)shape->Text);
// note: this shape is rotated by 90 degrees
new_local_condition->set_width(GetHeight(shape));
new_local_condition->set_height(GetWidth(shape));
Modified: branches/conditions/src/view/visio/addon/visualize.cpp
===================================================================
--- branches/conditions/src/view/visio/addon/visualize.cpp 2013-05-26 14:36:20 UTC (rev 1821)
+++ branches/conditions/src/view/visio/addon/visualize.cpp 2013-05-26 15:54:24 UTC (rev 1822)
@@ -324,7 +324,7 @@
{
// NOTE: hack - for conditions, a lost message is (mis)used until the object model is fixed
// REF: unhack
- LocalCondition* local_condition = dynamic_cast<LocalCondition*>(incomplete_message.get());
+ Condition* local_condition = dynamic_cast<Condition*>(incomplete_message.get());
if(local_condition != NULL)
{
Visio::IVShapePtr cond = drop_shape(vsoPage, shapes, incomplete_message, find_master(ST_BMSC_CONDITION));
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <ob...@us...> - 2013-05-26 14:36:25
|
Revision: 1821
http://sourceforge.net/p/scstudio/code/1821
Author: obouda
Date: 2013-05-26 14:36:20 +0000 (Sun, 26 May 2013)
Log Message:
-----------
unhacked local actions - now, LocalActionEvent is used, and LocalAction does not inherit from IncompleteMessage
Modified Paths:
--------------
branches/conditions/src/data/CMakeLists.txt
branches/conditions/src/data/Z120/Context.cpp
branches/conditions/src/data/Z120/z120_save.cpp
branches/conditions/src/data/beautify/layout_optimizer.cpp
branches/conditions/src/data/exporttex/exportTex.cpp
branches/conditions/src/data/msc/Event.h
branches/conditions/src/data/msc/LocalAction.h
branches/conditions/src/data/msc/MessageEvent.cpp
branches/conditions/src/data/msc/MessageEvent.h
branches/conditions/src/data/msc/MscMessage.h
branches/conditions/src/data/msc.h
branches/conditions/src/data/time_relevant_ordering/time_relevant_ordering.cpp
branches/conditions/src/view/visio/addon/extract.cpp
branches/conditions/src/view/visio/addon/extract.h
branches/conditions/src/view/visio/addon/visualize.cpp
branches/conditions/src/view/visio/addon/visualize.h
Added Paths:
-----------
branches/conditions/src/data/msc/LocalAction.cpp
branches/conditions/src/data/msc/LocalActionEvent.h
Modified: branches/conditions/src/data/CMakeLists.txt
===================================================================
--- branches/conditions/src/data/CMakeLists.txt 2013-05-26 00:24:04 UTC (rev 1820)
+++ branches/conditions/src/data/CMakeLists.txt 2013-05-26 14:36:20 UTC (rev 1821)
@@ -69,7 +69,9 @@
msc/IncompleteMessage.h
msc/Instance.cpp
msc/Instance.h
+ msc/LocalAction.cpp
msc/LocalAction.h
+ msc/LocalActionEvent.h
msc/Msc.h
msc/MscElement.h
msc/MscElementTmpl.h
Modified: branches/conditions/src/data/Z120/Context.cpp
===================================================================
--- branches/conditions/src/data/Z120/Context.cpp 2013-05-26 00:24:04 UTC (rev 1820)
+++ branches/conditions/src/data/Z120/Context.cpp 2013-05-26 14:36:20 UTC (rev 1821)
@@ -577,65 +577,69 @@
}
/**
- * A helper function for creating a new event in the given context.
+ * A helper class for creating a new event of type EventType in the given context.
* The pointer to the event will be available in context->current_event.
*/
-void create_event(struct Context* context)
+template<typename EventType>
+class ContextEventFactory
{
- InstancePtr instance;
-
- std::map<std::string, InstancePtr>::iterator inst_it = context->instances.find(context->element_name);
-
- if(inst_it == context->instances.end())
+public:
+ static void create_event(struct Context* context)
{
- instance = new Instance(TOWSTRING(context->element_name));
- context->instances.insert(std::make_pair(context->element_name, instance));
- context->myBmsc->add_instance(instance);
- context->open_instance++;
- context->z->print_report(RS_WARNING,
- stringize() << "Warning 23: Instance (" << TOWSTRING(context->element_name) << ") has not been started (e.g. " << TOWSTRING(context->element_name) << ": instance;)");
+ InstancePtr instance;
+
+ std::map<std::string, InstancePtr>::iterator inst_it = context->instances.find(context->element_name);
+
+ if(inst_it == context->instances.end())
+ {
+ instance = new Instance(TOWSTRING(context->element_name));
+ context->instances.insert(std::make_pair(context->element_name, instance));
+ context->myBmsc->add_instance(instance);
+ context->open_instance++;
+ context->z->print_report(RS_WARNING,
+ stringize() << "Warning 23: Instance (" << TOWSTRING(context->element_name) << ") has not been started (e.g. " << TOWSTRING(context->element_name) << ": instance;)");
+ }
+ else
+ {
+ instance = inst_it->second;
+ }
+
+ if (instance->is_empty() ||
+ context->coregion_area_finished.find(context->element_name) != context->coregion_area_finished.end())
+ {
+ StrictOrderAreaPtr strict(new StrictOrderArea());
+ instance->add_area(strict);
+ context->coregion_area_finished.erase(context->element_name);
+ }
+
+ std::map<std::string, EventPtr>::iterator event_it;
+ EventPtr event;
+
+ //if the event was created prematurely
+ if(context->event_name == "" ||
+ (event_it = context->future_events.find(context->event_name)) == context->future_events.end())
+ {
+ event = instance->get_last_area()->add_event(new EventType());
+ }
+ else
+ {
+ event = event_it->second;
+ context->future_events.erase(event_it);
+ }
+
+ context->current_event = event;
+
+ //if event is named, it adds event to named_events
+ if(context->event_name != "")
+ {
+ context->named_events.insert(std::make_pair(context->event_name, event));
+ }
+
+ create_future_time_relations(context);
+ context->event_name = "";
}
- else
- {
- instance = inst_it->second;
- }
-
- if (instance->is_empty() ||
- context->coregion_area_finished.find(context->element_name) != context->coregion_area_finished.end())
- {
- StrictOrderAreaPtr strict(new StrictOrderArea());
- instance->add_area(strict);
- context->coregion_area_finished.erase(context->element_name);
- }
-
- std::map<std::string, EventPtr>::iterator event_it;
- EventPtr event;
-
- //if the event was created prematurely
- if(context->event_name == "" ||
- (event_it = context->future_events.find(context->event_name)) == context->future_events.end())
- {
- event = instance->get_last_area()->add_event(new MessageEvent());
- }
- else
- {
- event = event_it->second;
- context->future_events.erase(event_it);
- }
-
- context->current_event = event;
+};
- //if event is named, it adds event to named_events
- if(context->event_name != "")
- {
- context->named_events.insert(std::make_pair(context->event_name, event));
- }
-
- create_future_time_relations(context);
- context->event_name = "";
-}
-
-
/*
* Create incomplete message. Type of message is defined in parameter "kind"
* output: LOST message
@@ -669,7 +673,7 @@
}
}
- create_event(context);
+ ContextEventFactory<MessageEvent>::create_event(context);
IncompleteMsgType type = (kind == output ? LOST : FOUND);
IncompleteMessagePtr message = new IncompleteMessage(type, TOWSTRING(msg_name));
@@ -686,13 +690,13 @@
{
std::string statement(action_statement);
- create_event(context);
+ ContextEventFactory<LocalActionEvent>::create_event(context);
LocalActionPtr action = new LocalAction(TOWSTRING(statement));
- MessageEventPtr cur_ev = boost::dynamic_pointer_cast<MessageEvent>(context->current_event);
+ LocalActionEventPtr cur_ev = boost::dynamic_pointer_cast<LocalActionEvent>(context->current_event);
if (cur_ev == NULL)
- throw std::runtime_error("expecting a local action event");
- action->glue_event(cur_ev);
+ throw std::runtime_error("expecting a local action event, got " + std::string(typeid(*context->current_event.get()).name()));
+ action->glue_event(cur_ev.get());
}
/*
@@ -700,7 +704,7 @@
*/
void add_condition_fun(struct Context* context)
{
- create_event(context);
+ ContextEventFactory<MessageEvent>::create_event(context);
if(context->condition_shared_inst.size() > 1)
context->z->print_report(RS_WARNING,
@@ -821,7 +825,7 @@
}
}
- create_event(context);
+ ContextEventFactory<MessageEvent>::create_event(context);
std::multimap<std::string, CompleteMessagePtr>::iterator message_it;
message_it = context->messages.find(msg_identification);
@@ -896,7 +900,7 @@
else
{
InstancePtr instance = context->instances.find(context->element_name)->second;
- event1 = instance->get_last_area()->add_event(new MessageEvent()); // FIXME: really new MessageEvent? (might be, but I don't see any sense)
+ event1 = instance->get_last_area()->add_event(new MessageEvent()); // NOTE: should be some generic event, but there may only be message events in coregion anyway...
context->future_events.insert(std::make_pair(*it, event1));
}
Modified: branches/conditions/src/data/Z120/z120_save.cpp
===================================================================
--- branches/conditions/src/data/Z120/z120_save.cpp 2013-05-26 00:24:04 UTC (rev 1820)
+++ branches/conditions/src/data/Z120/z120_save.cpp 2013-05-26 14:36:20 UTC (rev 1821)
@@ -384,11 +384,8 @@
{
// REF: unhack
//hack until the object model is being fixed
- LocalAction* act = dynamic_cast<LocalAction*>(incomplete_message.get());
LocalCondition* cond = dynamic_cast<LocalCondition*>(incomplete_message.get());
- if(act != NULL)
- stream << "action '" << VALID_NAME(act->get_label()) << "'";
- else if(cond != NULL)
+ if(cond != NULL)
stream << "condition " << VALID_NAME(cond->get_label()) << " shared";
else
stream << "out " << VALID_NAME(incomplete_message->get_label())
@@ -401,9 +398,18 @@
<< " from found";
}
}
+ else if (boost::dynamic_pointer_cast<LocalActionEvent>(event) != NULL)
+ {
+ LocalActionEventPtr lae = boost::dynamic_pointer_cast<LocalActionEvent>(event);
+ LocalActionPtr act = lae->get_local_action();
+ if (act != NULL)
+ {
+ print_element_attributes(stream, act);
+ stream << "action '" << VALID_NAME(act->get_statement()) << "'";
+ }
+ }
else
{
- // TODO: process other types of events
throw std::runtime_error("unknown type of event");
}
}
Modified: branches/conditions/src/data/beautify/layout_optimizer.cpp
===================================================================
--- branches/conditions/src/data/beautify/layout_optimizer.cpp 2013-05-26 00:24:04 UTC (rev 1820)
+++ branches/conditions/src/data/beautify/layout_optimizer.cpp 2013-05-26 14:36:20 UTC (rev 1821)
@@ -147,7 +147,7 @@
long m_user_condition;
public:
- EventIndexer(long user_action, long user_condition, double action_width, double condition_width) :
+ EventIndexer(long user_action, long user_condition, double action_width, double condition_width) :
m_action_width(action_width), m_condition_width(condition_width),
m_user_action(user_action), m_user_condition(user_condition)
{
@@ -158,44 +158,49 @@
int index = m_events.size()+1;
m_events.insert(std::make_pair(e, index));
- if(m_user_action || m_user_condition)
- {
- //computing of size of actions and condition
- MessageEvent* me = dynamic_cast<MessageEvent*>(e);
- if(me != NULL && !me->is_matched())
- {
- IncompleteMessagePtr in_mess = me->get_incomplete_message();
- if(in_mess != NULL)
- {
+ //computing of size of actions and condition
+ if(m_user_action)
+ {
+ LocalActionEvent* lae = dynamic_cast<LocalActionEvent*>(e);
+ if (lae != NULL)
+ {
+ LocalActionPtr act = lae->get_local_action();
+ if (act != NULL)
+ {
+ double tmp_height = act->get_height();
+ double tmp_width = act->get_width();
+ double area = tmp_width * tmp_height;
+ act->set_width(m_action_width);
+ act->set_height(area / m_action_width);
+ }
+ }
+ }
+
+ if(m_user_condition)
+ {
+ MessageEvent* me = dynamic_cast<MessageEvent*>(e);
+ if(me != NULL && !me->is_matched())
+ {
+ IncompleteMessagePtr in_mess = me->get_incomplete_message();
+ if(in_mess != NULL)
+ {
// REF: unhack
- // NOTE: a hack for local actions and conditions support - until object model is fixed
- LocalAction* act = dynamic_cast<LocalAction*>(in_mess.get());
- LocalCondition* cond = dynamic_cast<LocalCondition*>(in_mess.get());
- if(act != NULL)
- {
- if(m_user_action)
- {
- double tmp_height = act->get_height();
- double tmp_width = act->get_width();
- double area = tmp_width * tmp_height;
- act->set_width(m_action_width);
- act->set_height(area / m_action_width);
- }
- }
- else if(cond != NULL)
- {
- if(m_user_condition)
- {
- double tmp_height = cond->get_height();
- double tmp_width = cond->get_width();
- double area = tmp_width * tmp_height;
- cond->set_height(area / m_condition_width);
- cond->set_width(m_condition_width);
- }
- }
- }
- }
- }
+ // NOTE: a hack for conditions support - until object model is fixed
+ LocalCondition* cond = dynamic_cast<LocalCondition*>(in_mess.get());
+ if(cond != NULL)
+ {
+ if(m_user_condition)
+ {
+ double tmp_height = cond->get_height();
+ double tmp_width = cond->get_width();
+ double area = tmp_width * tmp_height;
+ cond->set_height(area / m_condition_width);
+ cond->set_width(m_condition_width);
+ }
+ }
+ }
+ }
+ }
}
size_t get_event_count() const
@@ -370,15 +375,10 @@
if(in_mess != NULL)
{
// REF: unhack
- // NOTE: a hack for local actions and conditions support - until object model is fixed
- LocalAction* act = dynamic_cast<LocalAction*>(in_mess.get());
+ // NOTE: a hack for conditions support - until object model is fixed
LocalCondition* cond = dynamic_cast<LocalCondition*>(in_mess.get());
- if(act != NULL)
+ if(cond != NULL)
{
- add_relative_distance_constraint(m_lp, e1, e2, m_successor_distance+act->get_height());
- }
- else if(cond != NULL)
- {
add_relative_distance_constraint(m_lp, e1, e2, m_successor_distance+cond->get_height());
}
else
@@ -388,9 +388,15 @@
add_relative_distance_constraint(m_lp, e1, e2, m_successor_distance);
}
}
+ else if (dynamic_cast<LocalActionEvent*>(event) != NULL)
+ {
+ LocalActionEvent* lae = dynamic_cast<LocalActionEvent*>(event);
+ LocalActionPtr act = lae->get_local_action();
+ if(act != NULL)
+ add_relative_distance_constraint(m_lp, e1, e2, m_successor_distance+act->get_height());
+ }
else
{
- // TODO: process other event types
throw std::runtime_error("unknown type of event");
}
}
@@ -428,18 +434,18 @@
// update the objective function for unmatched events:
set_obj(m_lp, e1, 1.0/(m_indexer->get_event_count()+2*m_size));
+ assert(me->get_instance() != NULL);
unsigned i = me->get_instance()->get_attribute("id",i);
i++;
//double e_pos = e->get_instance()->get_line_begin().get_x();
IncompleteMessagePtr in_mess = me->get_incomplete_message();
if(in_mess->is_lost())
{
+ // LOST MESSAGE EVENT
// REF: unhack
- // NOTE: a hack for local actions and conditions support - until object model is fixed
- LocalAction* act = dynamic_cast<LocalAction*>(in_mess.get());
+ // NOTE: a hack for conditions support - until object model is fixed
LocalCondition* cond = dynamic_cast<LocalCondition*>(in_mess.get());
-
- if((act == NULL)&&(cond == NULL))
+ if(cond == NULL)
{
float horizontal_space = std::sqrt(std::pow(m_incomplete_message_length,2) - std::pow(m_send_receive_distance,2));
while(i < m_instances.size())
@@ -465,6 +471,7 @@
}
else
{
+ // FOUND MESSAGE EVENT
float horizontal_space = std::sqrt(std::pow(m_incomplete_message_length,2) - std::pow(m_send_receive_distance,2));
while(i < m_instances.size())
{
@@ -489,6 +496,7 @@
}
else
{
+ // COMPLETE MESSAGE EVENT
// solving the unoverlaying two messages or unoverlaying message and coregion edge
if(me->is_send())
{
@@ -537,9 +545,14 @@
}
}
}
+ else if (dynamic_cast<LocalActionEvent*>(e) != NULL)
+ {
+ // LOCAL ACTION
+ // update the objective function for unmatched events:
+ set_obj(m_lp, e1, 1.0/(m_indexer->get_event_count()+2*m_size));
+ }
else
{
- // TODO: process other types of events
throw std::runtime_error("unknown type of event");
}
}
@@ -635,34 +648,30 @@
if(level != 0)
{
//in level is set index of predecessor of coregion
- MessageEventPtr strictTmpMsg = boost::dynamic_pointer_cast<MessageEvent>(strictTmp);
+ // some events may define extra height
+ double extra_height = 0;
+
+ LocalActionEventPtr strictTmpAct = boost::dynamic_pointer_cast<LocalActionEvent>(strictTmp);
+ if (strictTmpAct != NULL)
+ {
+ LocalActionPtr act = strictTmpAct->get_local_action();
+ if (act != NULL)
+ extra_height = act->get_height();
+ }
+ // NOTE: a hack for conditions support - until object model is fixed
+ MessageEventPtr strictTmpMsg = boost::dynamic_pointer_cast<MessageEvent>(strictTmp);
if (strictTmpMsg != NULL && strictTmpMsg->get_incomplete_message() != NULL)
- {
+ {
IncompleteMessagePtr in_mess = strictTmpMsg->get_incomplete_message();
- if(in_mess->is_lost())
- {
- // REF: unhack
- // NOTE: a hack for local actions and conditions support - until object model is fixed
- LocalAction* act = dynamic_cast<LocalAction*>(in_mess.get());
- LocalCondition* cond = dynamic_cast<LocalCondition*>(in_mess.get());
- if (act != NULL)
- {
- double tmp_height = act->get_height();
- add_relative_distance_constraint(m_lp, level, begin, m_successor_distance + tmp_height);
- }
- else if(cond != NULL)
- {
- double tmp_height = cond->get_height();
- add_relative_distance_constraint(m_lp, level, begin, m_successor_distance + tmp_height);
- }
- else
- add_relative_distance_constraint(m_lp, level, begin, m_successor_distance);
- }
- else
- add_relative_distance_constraint(m_lp, level, begin, m_successor_distance);
- }
- else
- add_relative_distance_constraint(m_lp, level, begin, m_successor_distance);
+ if (in_mess->is_lost())
+ {
+ LocalConditionPtr cond = boost::dynamic_pointer_cast<LocalCondition>(in_mess);
+ if (cond != NULL)
+ extra_height = cond->get_height();
+ }
+ }
+
+ add_relative_distance_constraint(m_lp, level, begin, m_successor_distance + extra_height);
}
level = begin+1;
}
@@ -782,18 +791,10 @@
if(in_mess->is_lost())
{
// REF: unhack
- // NOTE: a hack for local actions and conditions support - until object model is fixed
- LocalAction* act = dynamic_cast<LocalAction*>(in_mess.get());
+ // NOTE: a hack for conditions support - until object model is fixed
LocalCondition* cond = dynamic_cast<LocalCondition*>(in_mess.get());
- if(act != NULL)
+ if(cond != NULL)
{
- double tmp_height = act->get_height();
- msg_ev->set_position(MscPoint(0, ((instance_head_distance+var[epos->second-1])*proportion) + tmp_height));
- if(((instance_head_distance+var[epos->second-1])*proportion) + tmp_height > max_y)
- max_y = ((instance_head_distance+var[epos->second-1])*proportion) + tmp_height;
- }
- else if(cond != NULL)
- {
double tmp_height = cond->get_height();
msg_ev->set_position(MscPoint(0, ((instance_head_distance+var[epos->second-1])*proportion) + tmp_height));
if(((instance_head_distance+var[epos->second-1])*proportion) + tmp_height > max_y)
@@ -811,9 +812,21 @@
msg_ev->set_position(MscPoint(0, (instance_head_distance+var[epos->second-1])*proportion));
}
}
+ else if (boost::dynamic_pointer_cast<LocalActionEvent>(epos->first) != NULL)
+ {
+ // local action
+ LocalActionEventPtr lae = boost::dynamic_pointer_cast<LocalActionEvent>(epos->first);
+ assert(dynamic_cast<StrictOrderArea*>(lae->get_area()) != NULL);
+ LocalActionPtr act = lae->get_local_action();
+ if (act != NULL)
+ {
+ double tmp_height = act->get_height();
+ lae->set_position(MscPoint(0, ((instance_head_distance+var[epos->second-1])*proportion) + tmp_height));
+ max_y = std::max(max_y, lae->get_position().get_y());
+ }
+ }
else
{
- // TODO: other types of events
throw std::runtime_error("unknown type of event");
}
@@ -833,17 +846,9 @@
{
if(in_mess->is_lost())
{
- // NOTE: a hack for local actions support - until object model is fixed
- LocalAction* act = dynamic_cast<LocalAction*>(in_mess.get());
- if(act != NULL)
- ;
- else
- in_mess->set_dot_position(MscPoint(incomplete_message_length, send_receive_distance));
// NOTE: a hack for local conditions support - until object model is fixed
LocalCondition* cond = dynamic_cast<LocalCondition*>(in_mess.get());
- if(cond != NULL)
- ;
- else
+ if(cond == NULL)
in_mess->set_dot_position(MscPoint(incomplete_message_length, send_receive_distance));
}
@@ -853,11 +858,6 @@
}
}
}
- else
- {
- // TODO: process other types of events
- throw std::runtime_error("unknown type of event");
- }
}
return max_y;
}
@@ -1097,13 +1097,6 @@
if(in_mess.get() && in_mess->is_lost())
{
// REF: unhack
- // NOTE: a hack for local actions support - until object model is fixed
- LocalAction* act = dynamic_cast<LocalAction*>(in_mess.get());
- if (act != NULL)
- {
- double tmp_height = act->get_height();
- max_y = var[indexer.get_event_index(last_event)-1] + m_instance_head_distance+tmp_height;
- }
// NOTE: a hack for local conditions support - until object model is fixed
LocalCondition* cond = dynamic_cast<LocalCondition*>(in_mess.get());
if (cond != NULL)
@@ -1114,9 +1107,18 @@
}
}
}
+ else if (boost::dynamic_pointer_cast<LocalActionEvent>(last_event) != NULL)
+ {
+ LocalActionEventPtr lae = boost::dynamic_pointer_cast<LocalActionEvent>(last_event);
+ LocalActionPtr act = boost::dynamic_pointer_cast<LocalAction>(lae->get_local_action());
+ if (act != NULL)
+ {
+ double tmp_height = act->get_height();
+ max_y = var[indexer.get_event_index(last_event)-1] + m_instance_head_distance+tmp_height;
+ }
+ }
else
{
- // TODO: other types of events - local actions and conditions handling should be moved here
throw std::runtime_error("unknown type of event");
}
}
Modified: branches/conditions/src/data/exporttex/exportTex.cpp
===================================================================
--- branches/conditions/src/data/exporttex/exportTex.cpp 2013-05-26 00:24:04 UTC (rev 1820)
+++ branches/conditions/src/data/exporttex/exportTex.cpp 2013-05-26 14:36:20 UTC (rev 1821)
@@ -459,15 +459,7 @@
if (msg_event != NULL)
{
// REF: unhack
- //temporary solution Action and Condition not implemented yet
- LocalActionPtr localAction = boost::dynamic_pointer_cast<LocalAction>(msg_event->get_incomplete_message());
- if(localAction!=NULL){
- m_stream << m_local_action_width_map.printLength(localAction->get_width());
- m_stream << m_local_action_height_map.printLength(localAction->get_height());
- m_stream << "\\action*{" << ExportTex::print_wchar(localAction->get_label()) << "}{" << m_instance_id_map.get_id(inst_pos(msg_event->get_instance())) << "_inst}" << std::endl;
- return;
- }
-
+ //temporary solution - Condition not implemented yet
LocalConditionPtr localCondition = boost::dynamic_pointer_cast<LocalCondition>(msg_event->get_incomplete_message());
if(localCondition!=NULL)
{
@@ -494,9 +486,20 @@
<< "{" << m_instance_id_map.get_id(inst_pos(msg_event->get_instance())) << "_inst}" << std::endl;
}
}
+ else if (boost::dynamic_pointer_cast<LocalActionEvent>(event) != NULL)
+ {
+ LocalActionEventPtr lae = boost::dynamic_pointer_cast<LocalActionEvent>(event);
+ LocalActionPtr act = lae->get_local_action();
+ if (act != NULL)
+ {
+ assert(lae->get_instance() != NULL);
+ m_stream << m_local_action_width_map.printLength(act->get_width());
+ m_stream << m_local_action_height_map.printLength(act->get_height());
+ m_stream << "\\action*{" << ExportTex::print_wchar(act->get_statement()) << "}{" << m_instance_id_map.get_id(inst_pos(lae->get_instance())) << "_inst}" << std::endl;
+ }
+ }
else
{
- // TODO: process other types of event
throw std::runtime_error("unknown type of event");
}
};
@@ -869,21 +872,22 @@
void insert_event(EventPtr event, Coordinate coordinate = 0)
{
MessageEventPtr msg_event = boost::dynamic_pointer_cast<MessageEvent>(event);
+ LocalActionEventPtr local_action_event = boost::dynamic_pointer_cast<LocalActionEvent>(event);
Coordinate coor = event->get_position().get_y()+coordinate; //! event absolute position in diagram
CoregionArea* coregion = dynamic_cast<CoregionArea*>(event->get_area());
- if (msg_event != NULL) // FIXME: fix local actions and conditions
+ if (local_action_event != NULL)
{
+ LocalActionPtr act = local_action_event->get_local_action();
+ if (act != NULL)
+ coor -= act->get_height();
+ }
+ if (msg_event != NULL)
+ {
// REF: unhack
- //temporary solution Action and Condition not implemented yet
- LocalActionPtr local_action = boost::dynamic_pointer_cast<LocalAction>(msg_event->get_incomplete_message());
- if(local_action!=NULL)
- {
- coor -= local_action->get_height();
- }
-
+ //temporary solution - Condition not implemented yet
LocalConditionPtr local_condition = boost::dynamic_pointer_cast<LocalCondition>(msg_event->get_incomplete_message());
if(local_condition!=NULL)
{
@@ -951,17 +955,8 @@
}
}
-
- //temporary solution Action and Condition not implemented yet
+ //temporary solution - Condition not implemented yet
// REF: unhack
- LocalActionPtr local_action = boost::dynamic_pointer_cast<LocalAction>(msg_event->get_incomplete_message());
- if(local_action!=NULL){
- edge_point(local_action->get_event()->get_instance()->get_line_begin().get_x(),local_action->get_width());
- m_local_action_width_map.addDistance(local_action->get_width());
- m_local_action_height_map.addDistance(local_action->get_height());
- return;
- }
-
LocalConditionPtr local_condition = boost::dynamic_pointer_cast<LocalCondition>(msg_event->get_incomplete_message());
if(local_condition!=NULL)
{
@@ -977,12 +972,20 @@
edge_point(incomplete_message->get_event()->get_instance()->get_line_begin().get_x()+incomplete_message->get_dot_position().get_x());
m_incomlete_mess_slope_map.addDistance(incomplete_message->get_dot_position().get_y());
m_lostfound_width_map.addDistance(fabs(incomplete_message_width_corection(incomplete_message->get_dot_position().get_x())));
- return;
}
}
+ else if (local_action_event != NULL)
+ {
+ LocalActionPtr act = local_action_event->get_local_action();
+ if (act != NULL)
+ {
+ edge_point(local_action_event->get_instance()->get_line_begin().get_x(), act->get_width());
+ m_local_action_width_map.addDistance(act->get_width());
+ m_local_action_height_map.addDistance(act->get_height());
+ }
+ }
else
{
- // TODO: process other event types
throw std::runtime_error("unknown type of event");
}
};
Modified: branches/conditions/src/data/msc/Event.h
===================================================================
--- branches/conditions/src/data/msc/Event.h 2013-05-26 00:24:04 UTC (rev 1820)
+++ branches/conditions/src/data/msc/Event.h 2013-05-26 14:36:20 UTC (rev 1821)
@@ -69,7 +69,11 @@
Event() : MscElementTmpl<Event>(), Commentable(), m_area(NULL), m_position()
{
}
-
+
+ virtual ~Event()
+ {
+ }
+
/**
* Duplicates the event. Returns a new, dynamically allocated object.
* NOTE: Especially useful for creating dynamic clones.
Added: branches/conditions/src/data/msc/LocalAction.cpp
===================================================================
--- branches/conditions/src/data/msc/LocalAction.cpp (rev 0)
+++ branches/conditions/src/data/msc/LocalAction.cpp 2013-05-26 14:36:20 UTC (rev 1821)
@@ -0,0 +1,35 @@
+/*
+ * scstudio - Sequence Chart Studio
+ * http://scstudio.sourceforge.net
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * Copyright (c) 2013 Ondrej Bouda <ob...@ma...>
+ *
+ * $Id$
+ */
+
+#include "data/msc.h"
+
+void LocalAction::glue_event(LocalActionEvent* event)
+{
+ if(event != m_event)
+ {
+ // unglue, if already glued
+ if(m_event != NULL)
+ m_event->set_local_action(NULL);
+
+ if(event != NULL)
+ event->set_local_action(this);
+
+ m_event = event;
+ }
+}
+
Property changes on: branches/conditions/src/data/msc/LocalAction.cpp
___________________________________________________________________
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Modified: branches/conditions/src/data/msc/LocalAction.h
===================================================================
--- branches/conditions/src/data/msc/LocalAction.h 2013-05-26 00:24:04 UTC (rev 1820)
+++ branches/conditions/src/data/msc/LocalAction.h 2013-05-26 14:36:20 UTC (rev 1821)
@@ -22,24 +22,71 @@
/**
* \brief Local action on an instance in Basic MSC.
*/
-class SCMSC_EXPORT LocalAction : public IncompleteMessage
-// NOTE: just a quick hack until the object model is fixed; LocalAction behaves just like a lost message
+class SCMSC_EXPORT LocalAction : public MscElementTmpl<LocalAction>
{
+ /**
+ * Action statement.
+ */
+ std::wstring m_statement;
+
+ /**
+ * Peer event.
+ * @warning boost::intrusive_ptr mustn't be used because of possible cyclic dependency
+ */
+ LocalActionEvent* m_event;
+
Coordinate m_width;
Coordinate m_height;
public:
- LocalAction(const std::wstring& label = L"", Coordinate width = 0.0, Coordinate height = 0.0) :
- IncompleteMessage(LOST, label), m_width(width), m_height(height)
+ LocalAction(const std::wstring& statement = L"", Coordinate width = 0.0, Coordinate height = 0.0) :
+ m_statement(statement), m_event(NULL), m_width(width), m_height(height)
{
}
- Coordinate get_width() const { return m_width; }
- Coordinate get_height() const { return m_height; }
- void set_width(Coordinate width) { m_width = width; }
- void set_height(Coordinate height) { m_height = height; }
+ LocalAction(LocalAction* original)
+ : MscElementTmpl<LocalAction>(original),
+ m_statement(original->m_statement), m_event(NULL),
+ m_width(original->m_width), m_height(original->m_height)
+ {
+ }
+
+ const std::wstring& get_statement() const
+ {
+ return m_statement;
+ }
+
+ void glue_event(LocalActionEvent* event);
+
+ LocalActionEvent* get_event()
+ {
+ return m_event;
+ }
+
+ bool is_glued() const
+ {
+ return m_event != NULL;
+ }
+
+ Coordinate get_width() const
+ {
+ return m_width;
+ }
+
+ Coordinate get_height() const
+ {
+ return m_height;
+ }
+
+ void set_width(Coordinate width)
+ {
+ m_width = width;
+ }
+
+ void set_height(Coordinate height)
+ {
+ m_height = height;
+ }
};
-typedef boost::intrusive_ptr<LocalAction> LocalActionPtr;
-
#endif // #ifndef _LOCALACTION_H
Added: branches/conditions/src/data/msc/LocalActionEvent.h
===================================================================
--- branches/conditions/src/data/msc/LocalActionEvent.h (rev 0)
+++ branches/conditions/src/data/msc/LocalActionEvent.h 2013-05-26 14:36:20 UTC (rev 1821)
@@ -0,0 +1,75 @@
+/*
+ * scstudio - Sequence Chart Studio
+ * http://scstudio.sourceforge.net
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * Copyright (c) 2013 Ondrej Bouda <ob...@ma...>
+ *
+ * $Id$
+ */
+
+#ifndef _LOCALACTIONEVENT_H
+#define _LOCALACTIONEVENT_H
+
+#include "data/msc/EventTmpl.h"
+#include "data/msc/EventArea.h"
+#include "data/msc/MscElementTmpl.h"
+#include "data/msc/Commentable.h"
+
+/**
+ * \brief An event caused by a local action.
+ */
+class SCMSC_EXPORT LocalActionEvent : public EventTmpl<LocalAction>
+{
+protected:
+ LocalActionEvent(LocalActionEvent* original) : EventTmpl<LocalAction>(original)
+ {
+ }
+
+public:
+
+ LocalActionEvent() : EventTmpl<LocalAction>()
+ {
+ }
+
+ Event* clone()
+ {
+ return new LocalActionEvent(this);
+ }
+
+ const std::wstring to_string()
+ {
+ if (get_local_action() != NULL)
+ return L"Event of " + get_local_action()->get_statement() + L" local action";
+ else
+ return L"An unattached local action event";
+ }
+
+ /**
+ * Sets the local action this event is attached to.
+ * Just a convenience method - alias for set_element().
+ */
+ void set_local_action(const LocalActionPtr& local_action)
+ {
+ set_element(local_action);
+ }
+
+ /**
+ * Gets the local action this event is attached to.
+ * Just a convenience method - alias for get_element().
+ */
+ const LocalActionPtr& get_local_action() const
+ {
+ return get_element();
+ }
+};
+
+#endif // #ifndef _LOCALACTIONEVENT_H
Property changes on: branches/conditions/src/data/msc/LocalActionEvent.h
___________________________________________________________________
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Modified: branches/conditions/src/data/msc/MessageEvent.cpp
===================================================================
--- branches/conditions/src/data/msc/MessageEvent.cpp 2013-05-26 00:24:04 UTC (rev 1820)
+++ branches/conditions/src/data/msc/MessageEvent.cpp 2013-05-26 14:36:20 UTC (rev 1821)
@@ -28,7 +28,7 @@
IncompleteMessage* incomplete = dynamic_cast<IncompleteMessage*>(get_message().get());
// note: hack until object model is fixed
- if (incomplete == NULL || dynamic_cast<LocalAction*>(incomplete) != NULL || dynamic_cast<LocalCondition*>(incomplete) != NULL)
+ if (incomplete == NULL || dynamic_cast<LocalCondition*>(incomplete) != NULL)
return false;
return incomplete->is_lost();
@@ -37,8 +37,8 @@
bool MessageEvent::is_receive() const
{
// FIXME: should return !is_send(); when the hack is eliminated
- if (!is_matched() && (get_message().get() == NULL || dynamic_cast<LocalAction*>(get_message().get()) != NULL ||
- dynamic_cast<LocalCondition*>(get_message().get()) != NULL)) return false; // note: hack until object model is fixed
+ if (!is_matched() && (get_message().get() == NULL || dynamic_cast<LocalCondition*>(get_message().get()) != NULL)) // NOTE: hack until object model is fixed
+ return false;
return !is_send();
}
Modified: branches/conditions/src/data/msc/MessageEvent.h
===================================================================
--- branches/conditions/src/data/msc/MessageEvent.h 2013-05-26 00:24:04 UTC (rev 1820)
+++ branches/conditions/src/data/msc/MessageEvent.h 2013-05-26 14:36:20 UTC (rev 1821)
@@ -42,10 +42,6 @@
{
}
- virtual ~MessageEvent()
- {
- }
-
Event* clone()
{
return new MessageEvent(this);
Modified: branches/conditions/src/data/msc/MscMessage.h
===================================================================
--- branches/conditions/src/data/msc/MscMessage.h 2013-05-26 00:24:04 UTC (rev 1820)
+++ branches/conditions/src/data/msc/MscMessage.h 2013-05-26 14:36:20 UTC (rev 1821)
@@ -46,10 +46,6 @@
m_label = original->get_label();
}
- virtual ~MscMessage()
- {
- }
-
const std::wstring& get_label() const
{
return m_label;
Modified: branches/conditions/src/data/msc.h
===================================================================
--- branches/conditions/src/data/msc.h 2013-05-26 00:24:04 UTC (rev 1820)
+++ branches/conditions/src/data/msc.h 2013-05-26 14:36:20 UTC (rev 1821)
@@ -56,6 +56,7 @@
class Instance;
class Event;
class MessageEvent;
+class LocalActionEvent;
class CoregionEventRelation;
class Msc;
class BMsc;
@@ -64,6 +65,7 @@
class MscMessage;
class CompleteMessage;
class IncompleteMessage;
+class LocalAction;
class EventArea;
class StrictOrderArea;
class CoregionArea;
@@ -131,7 +133,10 @@
typedef std::set<MessageEventPtr> MessageEventPtrSet;
typedef std::list<MessageEventPtr> MessageEventPtrList;
+typedef boost::intrusive_ptr<LocalActionEvent> LocalActionEventPtr;
+
typedef boost::intrusive_ptr<MscMessage> MscMessagePtr;
+typedef boost::intrusive_ptr<LocalAction> LocalActionPtr;
typedef boost::intrusive_ptr<EventArea> EventAreaPtr;
typedef std::list<EventAreaPtr> EventAreaPtrList;
@@ -194,6 +199,7 @@
#include "data/msc/Event.h"
#include "data/msc/EventTmpl.h"
#include "data/msc/MessageEvent.h"
+#include "data/msc/LocalActionEvent.h"
#include "data/msc/CoregionEventRelation.h"
#include "data/msc/EventArea.h"
#include "data/msc/StrictOrderArea.h"
Modified: branches/conditions/src/data/time_relevant_ordering/time_relevant_ordering.cpp
===================================================================
--- branches/conditions/src/data/time_relevant_ordering/time_relevant_ordering.cpp 2013-05-26 00:24:04 UTC (rev 1820)
+++ branches/conditions/src/data/time_relevant_ordering/time_relevant_ordering.cpp 2013-05-26 14:36:20 UTC (rev 1821)
@@ -214,19 +214,10 @@
if(in_mess != NULL)
{
// REF: unhack
- // NOTE: a hack for local actions and conditions support - until object model is fixed
- LocalActionPtr act = boost::dynamic_pointer_cast<LocalAction>(in_mess);
+ // NOTE: a hack for conditions support - until object model is fixed
LocalConditionPtr cond = boost::dynamic_pointer_cast<LocalCondition>(in_mess);
- if(act != NULL)
+ if(cond != NULL)
{
- double tmp_height = act->get_height();
- double tmp_width = act->get_width();
- double area = tmp_width * tmp_height;
- act->set_width(settings.m_action_width);
- act->set_height(area / settings.m_action_width);
- }
- else if(cond != NULL)
- {
double tmp_height = cond->get_height();
double tmp_width = cond->get_width();
double area = tmp_width * tmp_height;
@@ -247,12 +238,22 @@
}
}
}
+ else if (boost::dynamic_pointer_cast<LocalActionEvent>(first_event) != NULL)
+ {
+ LocalActionEventPtr first_act_event = boost::dynamic_pointer_cast<LocalActionEvent>(first_event);
+ LocalActionPtr act = first_act_event->get_local_action();
+
+ double tmp_height = act->get_height();
+ double tmp_width = act->get_width();
+ double area = tmp_width * tmp_height;
+ act->set_width(settings.m_action_width);
+ act->set_height(area / settings.m_action_width);
+ }
+ else
+ {
+ throw std::runtime_error("unknown type of event");
+ }
}
- else
- {
- // TODO: process other event types
- throw std::runtime_error("unknown type of event");
- }
}
return sorted_events;
@@ -297,9 +298,8 @@
{
if(in_mess->is_lost())
{
- LocalActionPtr act = boost::dynamic_pointer_cast<LocalAction>(in_mess);
LocalConditionPtr cond = boost::dynamic_pointer_cast<LocalCondition>(in_mess);
- if(act == NULL && cond == NULL)
+ if(cond == NULL)
{
in_mess->set_dot_position(MscPoint(settings.m_instance_space/3,0));
}
@@ -383,9 +383,8 @@
{
if(in_mess->is_lost())
{
- LocalActionPtr act = boost::dynamic_pointer_cast<LocalAction>(in_mess);
LocalConditionPtr cond = boost::dynamic_pointer_cast<LocalCondition>(in_mess);
- if(act == NULL && cond == NULL)
+ if(cond == NULL)
{
in_mess->set_dot_position(MscPoint(ins->get_line_begin().get_x()+(settings.m_instance_space/3),0));
}
Modified: branches/conditions/src/view/visio/addon/extract.cpp
===================================================================
--- branches/conditions/src/view/visio/addon/extract.cpp 2013-05-26 00:24:04 UTC (rev 1820)
+++ branches/conditions/src/view/visio/addon/extract.cpp 2013-05-26 14:36:20 UTC (rev 1821)
@@ -345,7 +345,7 @@
}
CoregionAreaPtr CDrawingExtractor::create_coregion_area(EventPointMap& events,
- const MscMessageMap& messages, Visio::IVShapePtr coregion)
+ const MscElementMap& elements, Visio::IVShapePtr coregion)
{
Visio::IVPagePtr vsoPage = coregion->ContainingPage;
std::wstring page_name = (const wchar_t*)vsoPage->Name;
@@ -376,7 +376,7 @@
{
case ST_BMSC_MESSAGE:
{
- CompleteMessagePtr message = find_message<CompleteMessage>(messages, shape->ID);
+ CompleteMessagePtr message = find_element<CompleteMessage>(elements, shape->ID);
if(message == NULL)
continue;
// create coregion event
@@ -404,7 +404,7 @@
case ST_BMSC_MESSAGE_LOST:
{
- IncompleteMessagePtr message = find_message<IncompleteMessage>(messages, shape->ID);
+ IncompleteMessagePtr message = find_element<IncompleteMessage>(elements, shape->ID);
if(message == NULL)
continue;
// create coregion event
@@ -425,7 +425,7 @@
}
case ST_BMSC_MESSAGE_FOUND:
{
- IncompleteMessagePtr message = find_message<IncompleteMessage>(messages, shape->ID);
+ IncompleteMessagePtr message = find_element<IncompleteMessage>(elements, shape->ID);
if(message == NULL)
continue;
// create coregion event
@@ -580,7 +580,7 @@
// temporary mappers Visio shape-id --> msc.h
EventPointMap events; // all events in the drawing
std::map<long,InstancePtr> instances;
- MscMessageMap messages;
+ MscElementMap elements;
TimeRelationEventMap time_relations;
std::map<long, AbsoluteTimePtrList> absolute_times;
std::map<long,CommentPtr> comments;
@@ -600,14 +600,14 @@
break;
case ST_BMSC_MESSAGE:
- messages[shape->ID] = new CompleteMessage((const wchar_t*)shape->Text);
+ elements[shape->ID] = new CompleteMessage((const wchar_t*)shape->Text);
break;
case ST_BMSC_MESSAGE_LOST:
{
IncompleteMessage *new_message = new IncompleteMessage(LOST, (const wchar_t*)shape->Text);
// lost message: glued on begin, dot on end
new_message->set_dot_position(GetLineEnd(shape)-GetLineBegin(shape));
- messages[shape->ID] = new_message;
+ elements[shape->ID] = new_message;
break;
}
case ST_BMSC_MESSAGE_FOUND:
@@ -615,7 +615,7 @@
IncompleteMessage *new_message = new IncompleteMessage(FOUND, (const wchar_t*)shape->Text);
// found message: glued on end, dot on begin
new_message->set_dot_position(GetLineBegin(shape)-GetLineEnd(shape));
- messages[shape->ID] = new_message;
+ elements[shape->ID] = new_message;
break;
}
@@ -623,11 +623,11 @@
{
LocalAction* new_local_action = new LocalAction((const wchar_t*)shape->Text);
// note: this shape is rotated by 90 degrees
- new_local_action->set_width(GetHeight(shape));
- new_local_action->set_height(GetWidth(shape));
+ new_local_action->set_width(GetHeight(shape));
+ new_local_action->set_height(GetWidth(shape));
//new_local_action->set_width(GetControlPos(shape, _T("Height")));
//new_local_action->set_height(GetControlPos(shape, _T("Width")));
- messages[shape->ID] = new_local_action; // NOTE: hack - local action behaves like a lost message
+ elements[shape->ID] = new_local_action;
break;
}
@@ -639,7 +639,7 @@
new_local_condition->set_height(GetWidth(shape));
//new_local_condition->set_width(GetControlPos(shape, _T("Height")));
//new_local_condition->set_height(GetControlPos(shape, _T("Width")));
- messages[shape->ID] = new_local_condition; // NOTE: hack - local condition behaves like a lost message
+ elements[shape->ID] = new_local_condition; // NOTE: hack - local condition behaves like a lost message
break;
}
@@ -817,24 +817,24 @@
case ST_BMSC_ACTION:
// local actions are just hacked for the moment
{
- std::map<long,int>::iterator connections = local_action_connections.find(event.shape_id);
- if (connections == local_action_connections.end())
- {
- local_action_connections[event.shape_id] = 1;
- continue;
+ std::map<long,int>::iterator connections = local_action_connections.find(event.shape_id);
+ if (connections == local_action_connections.end())
+ {
+ local_action_connections[event.shape_id] = 1;
+ continue;
+ }
+ else if (connections->second == 1)
+ {
+ event.event_type = SStrictOrder::ET_OUTGOING;
+ }
+ else
+ {
+ PrintError(stringize() << page_name << ": "
+ << "Wrongly connected local action '" << shape->Name << "'",
+ shapelist() << shape << instance);
+ continue;
+ }
}
- else if (connections->second == 1)
- {
- event.event_type = SStrictOrder::ET_OUTGOING;
- }
- else
- {
- PrintError(stringize() << page_name << ": "
- << "Wrongly connected local action '" << shape->Name << "'",
- shapelist() << shape << instance);
- continue;
- }
- }
break;
case ST_BMSC_CONDITION:
@@ -909,9 +909,8 @@
this_shapelist << vsoPage->Shapes->ItemFromID[cpos->shape_id];
}
- PrintError(stringize() << page_name << ": "
- << "Multiple events cannot be attached to one point.",
- this_shapelist << instance);
+ PrintError(stringize() << page_name << ": " << "Multiple events cannot be attached to one point.",
+ this_shapelist << instance);
}
}
@@ -932,6 +931,7 @@
{
Visio::IVShapePtr shape = vsoPage->Shapes->ItemFromID[epos->shape_id];
+ // TODO: many cases have very similar body, merge together
switch(epos->shape_type)
{
case ST_BMSC_MESSAGE:
@@ -943,7 +943,7 @@
/* no break */
case ST_STRICT:
{
- CompleteMessagePtr message = find_message<CompleteMessage>(messages, epos->shape_id);
+ CompleteMessagePtr message = find_element<CompleteMessage>(elements, epos->shape_id);
if(message == NULL)
continue;
@@ -959,17 +959,15 @@
}
case ST_COREGION:
- PrintError(stringize() << page_name << ": "
- << "Instance events cannot occur behind coregion.",
- shapelist() << shape << instance);
+ PrintError(stringize() << page_name << ": " << "Instance events cannot occur behind coregion.",
+ shapelist() << shape << instance);
break;
}
break;
case ST_BMSC_MESSAGE_LOST:
case ST_BMSC_MESSAGE_FOUND:
- case ST_BMSC_ACTION:
- case ST_BMSC_CONDITION: // NOTE: hack - local action and condition behaves like a lost message
+ case ST_BMSC_CONDITION: // NOTE: hack - condition behaves like a lost message
switch(state)
{
case ST_EXPECTING_AREA:
@@ -978,7 +976,7 @@
/* no break */
case ST_STRICT:
{
- IncompleteMessagePtr message = find_message<IncompleteMessage>(messages, epos->shape_id);
+ IncompleteMessagePtr message = find_element<IncompleteMessage>(elements, epos->shape_id);
if(message == NULL)
continue;
@@ -991,12 +989,39 @@
}
case ST_COREGION:
- PrintError(stringize() << page_name << ": "
- << "Instance events cannot occur behind coregion.",
- shapelist() << shape << instance);
+ PrintError(stringize() << page_name << ": " << "Instance events cannot occur behind coregion.",
+ shapelist() << shape << instance);
break;
}
break;
+
+ case ST_BMSC_ACTION:
+ switch(state)
+ {
+ case ST_EXPECTING_AREA:
+ ipos->second->add_area(strict_area = new StrictOrderArea());
+ state = ST_STRICT;
+ /* no break */
+ case ST_STRICT:
+ {
+ LocalActionPtr act = find_element<LocalAction>(elements, epos->shape_id);
+ if(act == NULL)
+ continue;
+
+ LocalActionEventPtr event = strict_area->add_event(new LocalActionEvent());
+ event->set_position(ConvertEventPoint(instance, epos->event_pos));
+ act->glue_event(event);
+
+ events.insert(std::make_pair<SPoint,EventPtr>(point_to_page(instance, epos->event_pos), event));
+ break;
+ }
+
+ case ST_COREGION:
+ PrintError(stringize() << page_name << ": " << "Instance events cannot occur behind coregion.",
+ shapelist() << shape << instance);
+ break;
+ }
+ break;
case ST_BMSC_COREGION:
{
@@ -1006,15 +1031,14 @@
case ST_STRICT:
if(epos->event_type == SStrictOrder::ET_OUTGOING)
{
- ipos->second->add_area(coregion_area = create_coregion_area(events, messages, shape));
+ ipos->second->add_area(coregion_area = create_coregion_area(events, elements, shape));
coregion_area->set_begin_height(ConvertCoordinate(instance, epos->event_height));
coregion_area->set_width(shape->CellsSRC[visSectionObject][visRowXFormOut][visXFormHeight]->Result[visMillimeters]);
}
else
{
- PrintError(stringize() << page_name << ": "
- << "Misdirected coregion.",
- shapelist() << shape);
+ PrintError(stringize() << page_name << ": " << "Misdirected coregion.",
+ shapelist() << shape);
}
state = ST_COREGION;
@@ -1024,9 +1048,8 @@
case ST_COREGION:
if(coregion_id != epos->shape_id)
{
- PrintError(stringize() << page_name << ": "
- << "Overlapping coregion.",
- shapelist() << shape);
+ PrintError(stringize() << page_name << ": " << "Overlapping coregion.",
+ shapelist() << shape);
}
else if(epos->event_type == SStrictOrder::ET_INCOMING)
{
@@ -1049,24 +1072,34 @@
{
Visio::IVShapePtr shape = vsoPage->Shapes->ItemFromID[coregion_id];
- PrintError(stringize() << page_name << ": "
- << "Disconnected coregion.",
- shapelist() << shape);
+ PrintError(stringize() << page_name << ": " << "Disconnected coregion.",
+ shapelist() << shape);
}
}
- // walk through detected messages: check all messages are connected
- for(MscMessageMap::const_iterator mpos = messages.begin();
- mpos != messages.end(); mpos++)
+ // walk through detected elements: check all glueable elements are connected
+ for(MscElementMap::const_iterator epos = elements.begin(); epos != elements.end(); mpos++)
{
Visio::IVShapePtr shape = vsoPage->Shapes->ItemFromID[mpos->first];
-
- if(!mpos->second->is_glued())
+ MscElementPtr el = epos->second;
+
+ MscMessagePtr msg_el = boost::dynamic_pointer_cast<MscMessage>(el);
+ if (msg_el != NULL)
{
- PrintError(stringize() << page_name << ": "
- << "Disconnected message '" << shape->Name << "'",
- shapelist() << shape);
+ if (!msg_el->is_glued())
+ PrintError(stringize() << page_name << ": " << "Disconnected message '" << shape->Name << "'",
+ shapelist() << shape);
+ continue;
}
+
+ LocalActionPtr act_el = boost::dynamic_pointer_cast<LocalAction>(el);
+ if (act_el != NULL)
+ {
+ if (!act_el->is_glued())
+ PrintError(stringize() << page_name << ": " << "Disconnected message '" << shape->Name << "'",
+ shapelist() << shape);
+ continue;
+ }
}
// walk though all detected time relations: create measurements
Modified: branches/conditions/src/view/visio/addon/extract.h
===================================================================
--- branches/conditions/src/view/visio/addon/extract.h 2013-05-26 00:24:04 UTC (rev 1820)
+++ branches/conditions/src/view/visio/addon/extract.h 2013-05-26 14:36:20 UTC (rev 1821)
@@ -164,22 +164,23 @@
// contains the sematically first event, if multiple events are attached
typedef std::map<SPoint,EventPtr> EventPointMap;
+ typedef std::map<long,MscElementPtr> MscElementMap;
typedef std::map<long,MscMessagePtr> MscMessageMap;
typedef std::map<long,TimeRelationEventPtr> TimeRelationEventMap;
typedef std::map<long,TimeRelationRefNodePtr> TimeRelationRefNodeMap;
template<class M>
- boost::intrusive_ptr<M> find_message(const MscMessageMap& messages, long id)
+ boost::intrusive_ptr<M> find_element(const MscElementMap& elements, long id)
{
- MscMessageMap::const_iterator mpos = messages.find(id);
- if(mpos == messages.end())
+ MscElementMap::const_iterator mpos = elements.find(id);
+ if(mpos == elements.end())
return NULL;
return boost::dynamic_pointer_cast<M>(mpos->second);
}
//! process the given coregion and build a relevant CoregionArea
- CoregionAreaPtr create_coregion_area(EventPointMap& events, const MscMessageMap& messages,
+ CoregionAreaPtr create_coregion_area(EventPointMap& events, const MscElementMap& elements,
Visio::IVShapePtr coregion);
struct SStrictOrder
Modified: branches/conditions/src/view/visio/addon/visualize.cpp
===================================================================
--- branches/conditions/src/view/visio/addon/visualize.cpp 2013-05-26 00:24:04 UTC (rev 1820)
+++ branches/conditions/src/view/visio/addon/visualize.cpp 2013-05-26 14:36:20 UTC (rev 1821)
@@ -270,31 +270,37 @@
}
}
-Visio::IVShapePtr CDrawingVisualizer::drop_message(Visio::IVPagePtr vsoPage, MessagePtrMap& messages,
- MscMessagePtr message, Visio::IVMasterPtr master)
+Visio::IVShapePtr CDrawingVisualizer::drop_shape(Visio::IVPagePtr vsoPage, ElementPtrMap& shapes,
+ MscElementPtr element, Visio::IVMasterPtr master)
{
- Visio::IVShapePtr msg = messages[message];
- if(msg != NULL)
- return msg;
+ Visio::IVShapePtr shape = shapes[element];
+ if(shape != NULL)
+ return shape;
- msg = vsoPage->Drop(master, 0, 0);
+ shape = vsoPage->Drop(master, 0, 0);
- switch(message->get_marked())
+ switch(element->get_marked())
{
- case NONE: CShapeUtils::MarkShape(msg, SC_BLACK); break;
- case MARKED: CShapeUtils::MarkShape(msg, SC_RED); break;
- case ADDED: CShapeUtils::MarkShape(msg, SC_DARK_GREEN); break;
- case REMOVED: CShapeUtils::MarkShape(msg, SC_RED); break;
+ case NONE: CShapeUtils::MarkShape(shape, SC_BLACK); break;
+ case MARKED: CShapeUtils::MarkShape(shape, SC_RED); break;
+ case ADDED: CShapeUtils::MarkShape(shape, SC_DARK_GREEN); break;
+ case REMOVED: CShapeUtils::MarkShape(shape, SC_RED); break;
default: throw std::runtime_error("Error: unexpected behaviour");
}
- msg->Text = message->get_label().c_str();
- messages[message] = msg;
+ if (boost::dynamic_pointer_cast<Message>(element) != NULL)
+ shape->Text = boost::dynamic_pointer_cast<Message>(element)->get_label().c_str();
+ else if (boost::dynamic_pointer_cast<LocalAction>(element) != NULL)
+ shape->Text = boost::dynamic_pointer_cast<LocalAction>(element)->get_statement().c_str();
+ else
+ throw std::runtime_error("Error: unknown element type");
+
+ shapes[element] = shape;
- return msg;
+ return shape;
}
-void CDrawingVisualizer::show_event(Visio::IVPagePtr vsoPage, MessagePtrMap& messages,
+void CDrawingVisualizer::show_event(Visio::IVPagePtr vsoPage, ElementPtrMap& shapes,
Visio::IVShapePtr parent, EventPtr event)
{
MessageEventPtr msg_event = boost::dynamic_pointer_cast<MessageEvent>(event);
@@ -303,7 +309,7 @@
CompleteMessagePtr complete_message = msg_event->get_complete_message();
if(complete_message != NULL)
{
- Visio::IVShapePtr msg = drop_message(vsoPage, messages, complete_message, find_master(ST_BMSC_MESSAGE));
+ Visio::IVShapePtr msg = drop_shape(vsoPage, shapes, complete_message, find_master(ST_BMSC_MESSAGE));
if(complete_message->get_send_event() == event)
CShapeUtils::GlueBeginToPos(msg, parent, event->get_position());
@@ -316,24 +322,13 @@
{
if(incomplete_message->is_lost())
{
- // NOTE: hack - for local actions, a lost message is (mis)used until the object model is fixed
+ // NOTE: hack - for conditions, a lost message is (mis)used until the object model is fixed
// REF: unhack
- LocalAction* local_action = dynamic_cast<LocalAction*>(incomplete_message.get());
LocalCondition* local_condition = dynamic_cas...
[truncated message content] |
|
From: <ob...@us...> - 2013-05-26 00:24:07
|
Revision: 1820
http://sourceforge.net/p/scstudio/code/1820
Author: obouda
Date: 2013-05-26 00:24:04 +0000 (Sun, 26 May 2013)
Log Message:
-----------
deleted MscMessage.cpp - all those tiny method bodies were inlined
Modified Paths:
--------------
branches/conditions/src/data/CMakeLists.txt
branches/conditions/src/data/msc/MscMessage.h
Removed Paths:
-------------
branches/conditions/src/data/msc/MscMessage.cpp
Modified: branches/conditions/src/data/CMakeLists.txt
===================================================================
--- branches/conditions/src/data/CMakeLists.txt 2013-05-26 00:23:02 UTC (rev 1819)
+++ branches/conditions/src/data/CMakeLists.txt 2013-05-26 00:24:04 UTC (rev 1820)
@@ -73,7 +73,6 @@
msc/Msc.h
msc/MscElement.h
msc/MscElementTmpl.h
- msc/MscMessage.cpp
msc/MscMessage.h
msc/NodeRelation.cpp
msc/NodeRelation.h
Deleted: branches/conditions/src/data/msc/MscMessage.cpp
===================================================================
--- branches/conditions/src/data/msc/MscMessage.cpp 2013-05-26 00:23:02 UTC (rev 1819)
+++ branches/conditions/src/data/msc/MscMessage.cpp 2013-05-26 00:24:04 UTC (rev 1820)
@@ -1,39 +0,0 @@
-/*
- * scstudio - Sequence Chart Studio
- * http://scstudio.sourceforge.net
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License version 2.1, as published by the Free Software Foundation.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * Copyright (c) 2013 Ondrej Bouda <ob...@ma...>
- *
- * $Id$
- */
-
-#include "data/msc.h"
-
-MscMessage::MscMessage(const std::wstring& label):
-MscElementTmpl<MscMessage>(),m_label(label)
-{
-}
-
-MscMessage::MscMessage(MscMessage* original):
-MscElementTmpl<MscMessage>(original)
-{
- if(original)
- {
- m_label = original->get_label();
- }
-}
-
-MscMessage::~MscMessage()
-{
-}
-
-
Modified: branches/conditions/src/data/msc/MscMessage.h
===================================================================
--- branches/conditions/src/data/msc/MscMessage.h 2013-05-26 00:23:02 UTC (rev 1819)
+++ branches/conditions/src/data/msc/MscMessage.h 2013-05-26 00:24:04 UTC (rev 1820)
@@ -36,11 +36,19 @@
* @param receiver - receiving instance
* @param label - label of message
*/
- MscMessage(const std::wstring& label=L"");
+ MscMessage(const std::wstring& label=L"") : MscElementTmpl<MscMessage>(), m_label(label)
+ {
+ }
- MscMessage(MscMessage* original);
+ MscMessage(MscMessage* original) : MscElementTmpl<MscMessage>(original)
+ {
+ if(original)
+ m_label = original->get_label();
+ }
- virtual ~MscMessage();
+ virtual ~MscMessage()
+ {
+ }
const std::wstring& get_label() const
{
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <ob...@us...> - 2013-05-26 00:23:05
|
Revision: 1819
http://sourceforge.net/p/scstudio/code/1819
Author: obouda
Date: 2013-05-26 00:23:02 +0000 (Sun, 26 May 2013)
Log Message:
-----------
svn:keywords property for auto-generating Id - fixed (was svn:keyword)
Property Changed:
----------------
branches/conditions/src/data/msc/MessageEvent.h
branches/conditions/src/data/msc/StrictOrderArea.cpp
Index: branches/conditions/src/data/msc/MessageEvent.h
===================================================================
--- branches/conditions/src/data/msc/MessageEvent.h 2013-05-26 00:20:36 UTC (rev 1818)
+++ branches/conditions/src/data/msc/MessageEvent.h 2013-05-26 00:23:02 UTC (rev 1819)
Property changes on: branches/conditions/src/data/msc/MessageEvent.h
___________________________________________________________________
Deleted: svn:keyword
## -1 +0,0 ##
-Id
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: branches/conditions/src/data/msc/StrictOrderArea.cpp
===================================================================
--- branches/conditions/src/data/msc/StrictOrderArea.cpp 2013-05-26 00:20:36 UTC (rev 1818)
+++ branches/conditions/src/data/msc/StrictOrderArea.cpp 2013-05-26 00:23:02 UTC (rev 1819)
Property changes on: branches/conditions/src/data/msc/StrictOrderArea.cpp
___________________________________________________________________
Deleted: svn:keyword
## -1 +0,0 ##
-Id
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <ob...@us...> - 2013-05-26 00:20:39
|
Revision: 1818
http://sourceforge.net/p/scstudio/code/1818
Author: obouda
Date: 2013-05-26 00:20:36 +0000 (Sun, 26 May 2013)
Log Message:
-----------
svn:keywords property for auto-generating Id
Property Changed:
----------------
branches/conditions/src/data/msc/EventArea.cpp
branches/conditions/src/data/msc/MessageEvent.h
branches/conditions/src/data/msc/StrictOrderArea.cpp
Index: branches/conditions/src/data/msc/EventArea.cpp
===================================================================
--- branches/conditions/src/data/msc/EventArea.cpp 2013-05-25 23:55:14 UTC (rev 1817)
+++ branches/conditions/src/data/msc/EventArea.cpp 2013-05-26 00:20:36 UTC (rev 1818)
Property changes on: branches/conditions/src/data/msc/EventArea.cpp
___________________________________________________________________
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: branches/conditions/src/data/msc/MessageEvent.h
===================================================================
--- branches/conditions/src/data/msc/MessageEvent.h 2013-05-25 23:55:14 UTC (rev 1817)
+++ branches/conditions/src/data/msc/MessageEvent.h 2013-05-26 00:20:36 UTC (rev 1818)
Property changes on: branches/conditions/src/data/msc/MessageEvent.h
___________________________________________________________________
Added: svn:keyword
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: branches/conditions/src/data/msc/StrictOrderArea.cpp
===================================================================
--- branches/conditions/src/data/msc/StrictOrderArea.cpp 2013-05-25 23:55:14 UTC (rev 1817)
+++ branches/conditions/src/data/msc/StrictOrderArea.cpp 2013-05-26 00:20:36 UTC (rev 1818)
Property changes on: branches/conditions/src/data/msc/StrictOrderArea.cpp
___________________________________________________________________
Added: svn:keyword
## -0,0 +1 ##
+Id
\ No newline at end of property
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <ob...@us...> - 2013-05-25 23:55:17
|
Revision: 1817
http://sourceforge.net/p/scstudio/code/1817
Author: obouda
Date: 2013-05-25 23:55:14 +0000 (Sat, 25 May 2013)
Log Message:
-----------
put out some comments - all code should now be refactored for the new internal data structure version, with Event class as a common base for arbitrary types of events
Modified Paths:
--------------
branches/conditions/src/data/dfs_events_traverser.cpp
branches/conditions/src/data/dfs_events_traverser.h
Modified: branches/conditions/src/data/dfs_events_traverser.cpp
===================================================================
--- branches/conditions/src/data/dfs_events_traverser.cpp 2013-05-25 21:01:42 UTC (rev 1816)
+++ branches/conditions/src/data/dfs_events_traverser.cpp 2013-05-25 23:55:14 UTC (rev 1817)
@@ -100,7 +100,6 @@
}
}
-// refactored
void DFSEventsTraverser::traverse_matching_event(Event* event)
{
MessageEvent* msg_event = dynamic_cast<MessageEvent*>(event);
Modified: branches/conditions/src/data/dfs_events_traverser.h
===================================================================
--- branches/conditions/src/data/dfs_events_traverser.h 2013-05-25 21:01:42 UTC (rev 1816)
+++ branches/conditions/src/data/dfs_events_traverser.h 2013-05-25 23:55:14 UTC (rev 1817)
@@ -102,7 +102,6 @@
/**
* Listener for sender-receiver relations.
*/
-// refactored
class SCMSC_EXPORT SendReceivePairListener
{
public:
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <tm...@us...> - 2013-05-25 21:01:45
|
Revision: 1816
http://sourceforge.net/p/scstudio/code/1816
Author: tmarton
Date: 2013-05-25 21:01:42 +0000 (Sat, 25 May 2013)
Log Message:
-----------
TimeRelevantOrdering tests
Modified Paths:
--------------
trunk/tests/CMakeLists.txt
trunk/tests/time_relevant_ordering/CMakeLists.txt
Added Paths:
-----------
trunk/tests/time_relevant_ordering/reload.py
trunk/tests/time_relevant_ordering/time_relevant_ordering
trunk/tests/time_relevant_ordering/tro_diff.py
trunk/tests/time_relevant_ordering/tro_test00.mpr
trunk/tests/time_relevant_ordering/tro_test00.tex.result
trunk/tests/time_relevant_ordering/tro_test01.mpr
trunk/tests/time_relevant_ordering/tro_test01.tex.result
trunk/tests/time_relevant_ordering/tro_test02.mpr
trunk/tests/time_relevant_ordering/tro_test02.tex.result
trunk/tests/time_relevant_ordering/tro_test03.mpr
trunk/tests/time_relevant_ordering/tro_test03.tex.result
trunk/tests/time_relevant_ordering/tro_test04.mpr
trunk/tests/time_relevant_ordering/tro_test04.tex.result
trunk/tests/time_relevant_ordering/tro_test05.mpr
trunk/tests/time_relevant_ordering/tro_test05.tex.result
trunk/tests/time_relevant_ordering/tro_test06.mpr
trunk/tests/time_relevant_ordering/tro_test06.tex.result
trunk/tests/time_relevant_ordering/tro_test07.mpr
trunk/tests/time_relevant_ordering/tro_test07.tex.result
trunk/tests/time_relevant_ordering/tro_test08.mpr
trunk/tests/time_relevant_ordering/tro_test08.tex.result
trunk/tests/time_relevant_ordering/tro_test09.mpr
trunk/tests/time_relevant_ordering/tro_test09.tex.result
trunk/tests/time_relevant_ordering/tro_test10.mpr
trunk/tests/time_relevant_ordering/tro_test10.tex.result
trunk/tests/time_relevant_ordering/tro_test11.mpr
trunk/tests/time_relevant_ordering/tro_test11.tex.result
trunk/tests/time_relevant_ordering/tro_test12.mpr
trunk/tests/time_relevant_ordering/tro_test12.tex.result
trunk/tests/time_relevant_ordering/tro_test13.mpr
trunk/tests/time_relevant_ordering/tro_test13.tex.result
trunk/tests/time_relevant_ordering/tro_test14.mpr
trunk/tests/time_relevant_ordering/tro_test14.tex.result
trunk/tests/time_relevant_ordering/tro_test15.mpr
trunk/tests/time_relevant_ordering/tro_test15.tex.result
trunk/tests/time_relevant_ordering/tro_test16.mpr
trunk/tests/time_relevant_ordering/tro_test16.tex.result
trunk/tests/time_relevant_ordering/tro_test17.mpr
trunk/tests/time_relevant_ordering/tro_test17.tex.result
trunk/tests/time_relevant_ordering/tro_test18.mpr
trunk/tests/time_relevant_ordering/tro_test18.tex.result
trunk/tests/time_relevant_ordering/tro_test19.mpr
trunk/tests/time_relevant_ordering/tro_test19.tex.result
trunk/tests/time_relevant_ordering/tro_test20.mpr
trunk/tests/time_relevant_ordering/tro_test20.tex.result
trunk/tests/time_relevant_ordering/tro_test21.mpr
trunk/tests/time_relevant_ordering/tro_test21.tex.result
trunk/tests/time_relevant_ordering/tro_test22.mpr
trunk/tests/time_relevant_ordering/tro_test22.tex.result
trunk/tests/time_relevant_ordering/tro_test23.mpr
trunk/tests/time_relevant_ordering/tro_test23.tex.result
trunk/tests/time_relevant_ordering/tro_test24.mpr
trunk/tests/time_relevant_ordering/tro_test24.tex.result
trunk/tests/time_relevant_ordering/tro_test25.mpr
trunk/tests/time_relevant_ordering/tro_test25.tex.result
trunk/tests/time_relevant_ordering/tro_test26.mpr
trunk/tests/time_relevant_ordering/tro_test26.tex.result
trunk/tests/time_relevant_ordering/tro_test27.mpr
trunk/tests/time_relevant_ordering/tro_test27.tex.result
trunk/tests/time_relevant_ordering/tro_test28.mpr
trunk/tests/time_relevant_ordering/tro_test28.tex.result
trunk/tests/time_relevant_ordering/tro_test29.mpr
trunk/tests/time_relevant_ordering/tro_test29.tex.result
trunk/tests/time_relevant_ordering/tro_test30.mpr
trunk/tests/time_relevant_ordering/tro_test30.tex.result
Modified: trunk/tests/CMakeLists.txt
===================================================================
--- trunk/tests/CMakeLists.txt 2013-05-25 17:54:57 UTC (rev 1815)
+++ trunk/tests/CMakeLists.txt 2013-05-25 21:01:42 UTC (rev 1816)
@@ -111,7 +111,6 @@
ENDMACRO(ADD_Z120_TEST)
ADD_SUBDIRECTORY(z120_test)
-ADD_SUBDIRECTORY(time_relevant_ordering)
SET(EXPORTTEX_SEQUENCE 0)
MACRO(ADD_EXPORTTEX_TEST FILE SATISFIED)
@@ -126,18 +125,19 @@
MATH(EXPR EXPORTTEX_SEQUENCE ${EXPORTTEX_SEQUENCE}+1)
ENDMACRO(ADD_EXPORTTEX_TEST)
-SET(EXPORTTEX_SEQUENCE 0)
-MACRO(ADD_EXPORTTEX_TEST FILE SATISFIED)
- GET_TARGET_PROPERTY(EXPORTTEX_TEST_EXECUTABLE exporttex_test LOCATION)
+SET(TRO_SEQUENCE 0)
+MACRO(ADD_TRO_TEST FILE SATISFIED)
+ GET_TARGET_PROPERTY(TRO_TEST_EXECUTABLE tro_test LOCATION)
# Replace the "$(IntDir)", "$(OutDir)", or "$(CONFIGURATION)"
# depending on the generator being used with the test-time variable.
STRING(REGEX REPLACE "\\$\\(.*\\)" "\${CTEST_CONFIGURATION_TYPE}"
- EXPORTTEX_TEST_EXECUTABLE "${EXPORTTEX_TEST_EXECUTABLE}")
+ TRO_TEST_EXECUTABLE "${TRO_TEST_EXECUTABLE}")
- ADD_TEST("EXPORTTEX_test-${EXPORTTEX_SEQUENCE}-${FILE}"
- ${PYTHON_EXECUTABLE} "${CMAKE_SOURCE_DIR}/tests/exporttex_test/exporttex_diff.py" "${EXPORTTEX_TEST_EXECUTABLE}" "${CMAKE_CURRENT_SOURCE_DIR}/${FILE}" ${SATISFIED})
- MATH(EXPR EXPORTTEX_SEQUENCE ${EXPORTTEX_SEQUENCE}+1)
-ENDMACRO(ADD_EXPORTTEX_TEST)
+ ADD_TEST("TRO_test-${TRO_SEQUENCE}-${FILE}"
+ ${PYTHON_EXECUTABLE} "${CMAKE_SOURCE_DIR}/tests/time_relevant_ordering/tro_diff.py" "${TRO_TEST_EXECUTABLE}" "${CMAKE_CURRENT_SOURCE_DIR}/${FILE}" ${SATISFIED})
+ MATH(EXPR TRO_SEQUENCE ${TRO_SEQUENCE}+1)
+ENDMACRO(ADD_TRO_TEST)
+ADD_SUBDIRECTORY(time_relevant_ordering)
SET(PCAP_SEQUENCE 0)
MACRO(ADD_PCAP_TEST FILE1 FILE SATISFIED)
Modified: trunk/tests/time_relevant_ordering/CMakeLists.txt
===================================================================
--- trunk/tests/time_relevant_ordering/CMakeLists.txt 2013-05-25 17:54:57 UTC (rev 1815)
+++ trunk/tests/time_relevant_ordering/CMakeLists.txt 2013-05-25 21:01:42 UTC (rev 1816)
@@ -1,23 +1,43 @@
FIND_PACKAGE(PythonInterp REQUIRED)
-ADD_EXECUTABLE(time_relevant_ordering
- time_relevant_ordering_test
+ADD_EXECUTABLE(tro_test
+ time_relevant_ordering_test.cpp
)
-TARGET_LINK_LIBRARIES(time_relevant_ordering
+TARGET_LINK_LIBRARIES(tro_test
sctimerelevantordering
+ sctex
scZ120
- sctex
scbeautify
)
-ADD_TEST(test1.mpr 1)
-ADD_TEST(test2.mpr 1)
-ADD_TEST(test3.mpr 1)
-ADD_TEST(test4.mpr 1)
-
-
-
-
-
-
-# $Id$
+ADD_TRO_TEST(tro_test00.mpr 1)
+ADD_TRO_TEST(tro_test01.mpr 1)
+ADD_TRO_TEST(tro_test02.mpr 1)
+ADD_TRO_TEST(tro_test03.mpr 1)
+ADD_TRO_TEST(tro_test04.mpr 1)
+ADD_TRO_TEST(tro_test05.mpr 1)
+ADD_TRO_TEST(tro_test06.mpr 1)
+ADD_TRO_TEST(tro_test07.mpr 1)
+ADD_TRO_TEST(tro_test08.mpr 1)
+ADD_TRO_TEST(tro_test09.mpr 1)
+ADD_TRO_TEST(tro_test10.mpr 1)
+ADD_TRO_TEST(tro_test11.mpr 1)
+ADD_TRO_TEST(tro_test12.mpr 1)
+ADD_TRO_TEST(tro_test13.mpr 1)
+ADD_TRO_TEST(tro_test14.mpr 1)
+ADD_TRO_TEST(tro_test15.mpr 1)
+ADD_TRO_TEST(tro_test16.mpr 1)
+ADD_TRO_TEST(tro_test17.mpr 1)
+ADD_TRO_TEST(tro_test18.mpr 1)
+ADD_TRO_TEST(tro_test19.mpr 1)
+ADD_TRO_TEST(tro_test20.mpr 1)
+ADD_TRO_TEST(tro_test21.mpr 1)
+ADD_TRO_TEST(tro_test22.mpr 1)
+ADD_TRO_TEST(tro_test23.mpr 1)
+ADD_TRO_TEST(tro_test24.mpr 1)
+ADD_TRO_TEST(tro_test25.mpr 1)
+ADD_TRO_TEST(tro_test26.mpr 1)
+ADD_TRO_TEST(tro_test27.mpr 1)
+ADD_TRO_TEST(tro_test28.mpr 1)
+ADD_TRO_TEST(tro_test29.mpr 1)
+ADD_TRO_TEST(tro_test30.mpr 1)
Added: trunk/tests/time_relevant_ordering/reload.py
===================================================================
--- trunk/tests/time_relevant_ordering/reload.py (rev 0)
+++ trunk/tests/time_relevant_ordering/reload.py 2013-05-25 21:01:42 UTC (rev 1816)
@@ -0,0 +1,56 @@
+#!/usr/bin/env python
+import subprocess
+import difflib
+import sys
+import glob
+import os
+
+#CMakeLists.txt
+cmakefile = open("./CMakeLists.txt","w")
+cmake_out = "FIND_PACKAGE(PythonInterp REQUIRED)\n\n" + \
+ "ADD_EXECUTABLE(tro_test\n" + \
+ " time_relevant_ordering_test.cpp\n)\n" + \
+ "TARGET_LINK_LIBRARIES(tro_test\n" + \
+ " sctimerelevantordering\n sctex\n scZ120\n scbeautify\n)\n\n"
+cmakefile.write(cmake_out)
+
+#generate new result files and diff with old ones
+diff_num = 0
+log_file = open("makeTest.log","w")
+#tro_test files
+for x in range(0,31):
+ file_name = "tro_test%02.d" % x
+ cmakefile.write("ADD_TRO_TEST(%s.mpr 1)\n" % file_name)
+ log_file.write("##########\n%s\n#########\n" % file_name)
+ try:
+ os.rename(file_name + ".tex.result", file_name + ".tex.old")
+ p = subprocess.Popen(["./tro_test", file_name+".mpr", "1"],stdout=subprocess.PIPE, stderr=subprocess.PIPE, universal_newlines=True)
+ output = p.stderr.readlines() + p.stdout.readlines()
+ log_file.writelines(p.stderr.readlines())
+ fo = open(file_name + ".tex.result", "w")
+ fo.writelines(output)
+ fo.close()
+ expected_output = open(file_name + ".tex.old", "rt")
+ result = difflib.unified_diff(expected_output.readlines(), output)
+ result_lines = 0
+ for line in result:
+ log_file.write(line,)
+ result_lines += 1
+ if result_lines == 0:
+ log_file.write("-------\nPASSED\n")
+ os.remove(file_name + ".tex.old")
+ else:
+ log_file.write("-------\nFAILED\n")
+ print("FAILED file: %s\n" % file_name)
+ expected_output.close();
+ except IOError:
+ log_file.write("IOError\n")
+ except:
+ log_file.write("Error\n")
+ p = subprocess.Popen(["./tro_test", file_name+".mpr", "1"], stdout=subprocess.PIPE, stderr=subprocess.PIPE, universal_newlines=True)
+ output = p.stderr.readlines() + p.stdout.readlines()
+ fo = open(file_name + ".tex.result", "w")
+ fo.writelines(output)
+ fo.close()
+log_file.close()
+cmakefile.close()
Property changes on: trunk/tests/time_relevant_ordering/reload.py
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: trunk/tests/time_relevant_ordering/time_relevant_ordering
===================================================================
(Binary files differ)
Index: trunk/tests/time_relevant_ordering/time_relevant_ordering
===================================================================
--- trunk/tests/time_relevant_ordering/time_relevant_ordering 2013-05-25 17:54:57 UTC (rev 1815)
+++ trunk/tests/time_relevant_ordering/time_relevant_ordering 2013-05-25 21:01:42 UTC (rev 1816)
Property changes on: trunk/tests/time_relevant_ordering/time_relevant_ordering
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Added: trunk/tests/time_relevant_ordering/tro_diff.py
===================================================================
--- trunk/tests/time_relevant_ordering/tro_diff.py (rev 0)
+++ trunk/tests/time_relevant_ordering/tro_diff.py 2013-05-25 21:01:42 UTC (rev 1816)
@@ -0,0 +1,58 @@
+#!/usr/bin/env python
+import subprocess
+import difflib
+import sys
+import glob
+
+p = subprocess.Popen([sys.argv[1], sys.argv[2], sys.argv[3]], stdout=subprocess.PIPE, stderr=subprocess.PIPE, universal_newlines=True)
+
+output = p.stdout.readlines() + p.stderr.readlines()
+# print the output as it may contain valgrind error reports
+# note: ctest expects the valgring errors at stderr
+sys.stderr.writelines(output)
+
+if int(sys.argv[3]) == 0:
+ exit = p.wait()
+ sys.exit(exit)
+
+else:
+ result_files = glob.glob(sys.argv[2][:len(sys.argv[2])-3] + "tex.result*")
+ # if no result file, return the error code
+ if len(result_files) == 0:
+ exit = p.wait()
+ sys.exit(1)
+
+ error_count = 0
+ passed_count = 0
+ for result_file in result_files:
+ try:
+ expected_output = open(result_file, "rt")
+ except IOError:
+ error_count = error_count+1
+ print("----------------------------------------------------------")
+ print("FAILED: cannot open", result_file)
+ continue
+
+ result = difflib.unified_diff(expected_output.readlines(), output)
+ result_lines = 0
+ # print the differences between the real and the expected output
+ for line in result:
+ if result_lines == 0:
+ error_count = error_count+1
+ print("----------------------------------------------------------")
+ print("FAILED: does not match", result_file)
+
+ print(line,)
+ result_lines = result_lines + 1
+
+ if result_lines == 0:
+ passed_count = passed_count + 1
+ print("----------------------------------------------------------")
+ print("PASSED: matches", result_file)
+
+ if passed_count > 0:
+ sys.exit(0)
+ else:
+ sys.exit(error_count)
+
+# $Id: z120_diff.py 1269 2012-01-09 12:34:16Z xrehak $
Property changes on: trunk/tests/time_relevant_ordering/tro_diff.py
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: trunk/tests/time_relevant_ordering/tro_test00.mpr
===================================================================
--- trunk/tests/time_relevant_ordering/tro_test00.mpr (rev 0)
+++ trunk/tests/time_relevant_ordering/tro_test00.mpr 2013-05-25 21:01:42 UTC (rev 1816)
@@ -0,0 +1,13 @@
+mscdocument Drawing1;
+msc Page_1;
+inst Instance_1;
+inst Instance_2;
+Instance_1: instance;
+out NAME,0 to Instance_2;
+time [@0];
+endinstance;
+Instance_2: instance;
+in NAME,0 from Instance_1;
+time [@0];
+endinstance;
+endmsc;
Property changes on: trunk/tests/time_relevant_ordering/tro_test00.mpr
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: trunk/tests/time_relevant_ordering/tro_test00.tex.result
===================================================================
--- trunk/tests/time_relevant_ordering/tro_test00.tex.result (rev 0)
+++ trunk/tests/time_relevant_ordering/tro_test00.tex.result 2013-05-25 21:01:42 UTC (rev 1816)
@@ -0,0 +1,93 @@
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%% You can download Msc5.sty package from:
+%%%% http://is.muni.cz/www/374320/msc5.sty
+%%%% Documentation:
+%%%% http://is.muni.cz/www/374320/manualNew.pdf
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+
+\documentclass{article}
+\usepackage{msc5}
+\usepackage[a4paper]{geometry}
+\begin{document}
+\drawframe{no}
+\section*{tro\_test00}
+\setmsckeyword{Page\_1}
+\begin{msc}{}
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%% Configuration header
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%%%% Scale:
+\def\mscScaleX{1.0}
+\def\mscScaleY{1.0}
+
+%%%% Lines width:
+\pgfsetlinewidth{0.4pt}
+
+%%%% Picture box width:
+\setlength{\envinstdist}{20mm*\real{\mscScaleX}}
+
+%%%% Picture box y-padding:
+\setlength{\topheaddist}{\topheaddist}
+\setlength{\bottomfootdist}{\bottomfootdist}
+
+%%%% Instance first and last level height:
+\setlength{\firstlevelheight}{13mm*\real{\mscScaleY}}
+\setlength{\lastlevelheight}{11mm*\real{\mscScaleY}}
+
+
+%%%% Slope:
+\def\slopeA{0mm*\real{\mscScaleY}}
+
+
+%%%% Width of absolute time:
+\def\absoluteTimeWidthA{10mm*\real{\mscScaleX}}
+
+
+%%%% Absolute time slope:
+\def\absoluteTimeSlopeA{5mm*\real{\mscScaleY}}
+
+\setlength{\markdist}{\absoluteTimeSlopeA}
+
+%%%% Width od time interval:
+\def\timeIntervalWidthA{7mm*\real{\mscScaleX}}
+
+
+%%%% Ordering width:
+\def\orderingWidthA{3mm*\real{\mscScaleX}}
+
+
+%%%% Width of instance head/foot:
+\def\instanceWidthA{15mm*\real{\mscScaleX}}
+
+\setlength{\instwidth}{\instanceWidthA}
+
+%%%% Height of instance head/foot:
+\def\instanceHeightA{3mm*\real{\mscScaleY}}
+
+\setlength{\instheadheight}{\instanceHeightA}
+
+\setlength{\instfootheight}{\instheadheight}
+
+%%%% Space between instances:
+\def\instanceSpaceA{30mm*\real{\mscScaleX}}
+
+\setlength{\instdist}{\instanceSpaceA}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%% End of configuration header
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\declinst{0_inst}{Instance\_1}{}
+\declinst{1_inst}{Instance\_2}{}
+
+\setlength{\selfmesswidth}{\absoluteTimeWidthA}
+\mscmark[tl]{@[0]}{0_inst}
+\mess{NAME}{0_inst}[0.3]{1_inst}[1]
+\setlength{\selfmesswidth}{\absoluteTimeWidthA}
+\mscmark[tr]{@[0]}{1_inst}
+\end{msc}
+\end{document}
Added: trunk/tests/time_relevant_ordering/tro_test01.mpr
===================================================================
--- trunk/tests/time_relevant_ordering/tro_test01.mpr (rev 0)
+++ trunk/tests/time_relevant_ordering/tro_test01.mpr 2013-05-25 21:01:42 UTC (rev 1816)
@@ -0,0 +1,12 @@
+mscdocument Drawing1;
+msc Page_1;
+inst Instance_1;
+inst Instance_2;
+Instance_1: instance;
+out NAME,0 to Instance_2;
+time [@0];
+endinstance;
+Instance_2: instance;
+in NAME,0 from Instance_1;
+endinstance;
+endmsc;
Property changes on: trunk/tests/time_relevant_ordering/tro_test01.mpr
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: trunk/tests/time_relevant_ordering/tro_test01.tex.result
===================================================================
--- trunk/tests/time_relevant_ordering/tro_test01.tex.result (rev 0)
+++ trunk/tests/time_relevant_ordering/tro_test01.tex.result 2013-05-25 21:01:42 UTC (rev 1816)
@@ -0,0 +1,91 @@
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%% You can download Msc5.sty package from:
+%%%% http://is.muni.cz/www/374320/msc5.sty
+%%%% Documentation:
+%%%% http://is.muni.cz/www/374320/manualNew.pdf
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+
+\documentclass{article}
+\usepackage{msc5}
+\usepackage[a4paper]{geometry}
+\begin{document}
+\drawframe{no}
+\section*{tro\_test01}
+\setmsckeyword{Page\_1}
+\begin{msc}{}
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%% Configuration header
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%%%% Scale:
+\def\mscScaleX{1.0}
+\def\mscScaleY{1.0}
+
+%%%% Lines width:
+\pgfsetlinewidth{0.4pt}
+
+%%%% Picture box width:
+\setlength{\envinstdist}{20mm*\real{\mscScaleX}}
+
+%%%% Picture box y-padding:
+\setlength{\topheaddist}{\topheaddist}
+\setlength{\bottomfootdist}{\bottomfootdist}
+
+%%%% Instance first and last level height:
+\setlength{\firstlevelheight}{13mm*\real{\mscScaleY}}
+\setlength{\lastlevelheight}{11mm*\real{\mscScaleY}}
+
+
+%%%% Slope:
+\def\slopeA{0mm*\real{\mscScaleY}}
+
+
+%%%% Width of absolute time:
+\def\absoluteTimeWidthA{10mm*\real{\mscScaleX}}
+
+
+%%%% Absolute time slope:
+\def\absoluteTimeSlopeA{5mm*\real{\mscScaleY}}
+
+\setlength{\markdist}{\absoluteTimeSlopeA}
+
+%%%% Width od time interval:
+\def\timeIntervalWidthA{7mm*\real{\mscScaleX}}
+
+
+%%%% Ordering width:
+\def\orderingWidthA{3mm*\real{\mscScaleX}}
+
+
+%%%% Width of instance head/foot:
+\def\instanceWidthA{15mm*\real{\mscScaleX}}
+
+\setlength{\instwidth}{\instanceWidthA}
+
+%%%% Height of instance head/foot:
+\def\instanceHeightA{3mm*\real{\mscScaleY}}
+
+\setlength{\instheadheight}{\instanceHeightA}
+
+\setlength{\instfootheight}{\instheadheight}
+
+%%%% Space between instances:
+\def\instanceSpaceA{30mm*\real{\mscScaleX}}
+
+\setlength{\instdist}{\instanceSpaceA}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%% End of configuration header
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\declinst{0_inst}{Instance\_1}{}
+\declinst{1_inst}{Instance\_2}{}
+
+\setlength{\selfmesswidth}{\absoluteTimeWidthA}
+\mscmark[tl]{@[0]}{0_inst}
+\mess{NAME}{0_inst}[0.3]{1_inst}[1]
+\end{msc}
+\end{document}
Added: trunk/tests/time_relevant_ordering/tro_test02.mpr
===================================================================
--- trunk/tests/time_relevant_ordering/tro_test02.mpr (rev 0)
+++ trunk/tests/time_relevant_ordering/tro_test02.mpr 2013-05-25 21:01:42 UTC (rev 1816)
@@ -0,0 +1,14 @@
+mscdocument Drawing1;
+msc Page_1;
+inst Instance_1;
+inst Instance_2;
+Instance_1: instance;
+out Message_1,0 to Instance_2;
+time [@0];
+in Message_2,1 from Instance_2;
+endinstance;
+Instance_2: instance;
+in Message_1,0 from Instance_1;
+out Message_2,1 to Instance_1;
+endinstance;
+endmsc;
Added: trunk/tests/time_relevant_ordering/tro_test02.tex.result
===================================================================
--- trunk/tests/time_relevant_ordering/tro_test02.tex.result (rev 0)
+++ trunk/tests/time_relevant_ordering/tro_test02.tex.result 2013-05-25 21:01:42 UTC (rev 1816)
@@ -0,0 +1,102 @@
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%% You can download Msc5.sty package from:
+%%%% http://is.muni.cz/www/374320/msc5.sty
+%%%% Documentation:
+%%%% http://is.muni.cz/www/374320/manualNew.pdf
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+
+\documentclass{article}
+\usepackage{msc5}
+\usepackage[a4paper]{geometry}
+\begin{document}
+\drawframe{no}
+\section*{tro\_test02}
+\setmsckeyword{Page\_1}
+\begin{msc}{}
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%% Configuration header
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%%%% Scale:
+\def\mscScaleX{1.0}
+\def\mscScaleY{1.0}
+
+%%%% Lines width:
+\pgfsetlinewidth{0.4pt}
+
+%%%% Picture box width:
+\setlength{\envinstdist}{20mm*\real{\mscScaleX}}
+
+%%%% Picture box y-padding:
+\setlength{\topheaddist}{\topheaddist}
+\setlength{\bottomfootdist}{\bottomfootdist}
+
+%%%% Instance first and last level height:
+\setlength{\firstlevelheight}{13mm*\real{\mscScaleY}}
+\setlength{\lastlevelheight}{11mm*\real{\mscScaleY}}
+
+%%%% Levels:
+\def\levelA{8mm*\real{\mscScaleY}}
+
+\setlength{\levelheight}{\levelA}
+
+
+%%%% Slope:
+\def\slopeA{0mm*\real{\mscScaleY}}
+
+
+%%%% Width of absolute time:
+\def\absoluteTimeWidthA{10mm*\real{\mscScaleX}}
+
+
+%%%% Absolute time slope:
+\def\absoluteTimeSlopeA{5mm*\real{\mscScaleY}}
+
+\setlength{\markdist}{\absoluteTimeSlopeA}
+
+%%%% Width od time interval:
+\def\timeIntervalWidthA{7mm*\real{\mscScaleX}}
+
+
+%%%% Ordering width:
+\def\orderingWidthA{3mm*\real{\mscScaleX}}
+
+
+%%%% Width of instance head/foot:
+\def\instanceWidthA{15mm*\real{\mscScaleX}}
+
+\setlength{\instwidth}{\instanceWidthA}
+
+%%%% Height of instance head/foot:
+\def\instanceHeightA{3mm*\real{\mscScaleY}}
+
+\setlength{\instheadheight}{\instanceHeightA}
+
+\setlength{\instfootheight}{\instheadheight}
+
+%%%% Space between instances:
+\def\instanceSpaceA{30mm*\real{\mscScaleX}}
+
+\setlength{\instdist}{\instanceSpaceA}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%% End of configuration header
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\declinst{0_inst}{Instance\_1}{}
+\declinst{1_inst}{Instance\_2}{}
+
+\setlength{\selfmesswidth}{\absoluteTimeWidthA}
+\mscmark[tl]{@[0]}{0_inst}
+\setlength{\levelheight}{\slopeA}
+\mess{Message\_1}{0_inst}[0.3]{1_inst}[1]
+\setlength{\levelheight}{\levelA}
+\nextlevel
+
+\setlength{\levelheight}{\slopeA}
+\mess{Message\_2}{1_inst}[0.3]{0_inst}[1]
+\end{msc}
+\end{document}
Added: trunk/tests/time_relevant_ordering/tro_test03.mpr
===================================================================
--- trunk/tests/time_relevant_ordering/tro_test03.mpr (rev 0)
+++ trunk/tests/time_relevant_ordering/tro_test03.mpr 2013-05-25 21:01:42 UTC (rev 1816)
@@ -0,0 +1,15 @@
+mscdocument Drawing1;
+msc Page_1;
+inst Instance_1;
+inst Instance_2;
+Instance_1: instance;
+out Message_1,0 to Instance_2;
+time [@0];
+in Message_2,1 from Instance_2;
+time [@1];
+endinstance;
+Instance_2: instance;
+in Message_1,0 from Instance_1;
+out Message_2,1 to Instance_1;
+endinstance;
+endmsc;
Added: trunk/tests/time_relevant_ordering/tro_test03.tex.result
===================================================================
--- trunk/tests/time_relevant_ordering/tro_test03.tex.result (rev 0)
+++ trunk/tests/time_relevant_ordering/tro_test03.tex.result 2013-05-25 21:01:42 UTC (rev 1816)
@@ -0,0 +1,105 @@
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%% You can download Msc5.sty package from:
+%%%% http://is.muni.cz/www/374320/msc5.sty
+%%%% Documentation:
+%%%% http://is.muni.cz/www/374320/manualNew.pdf
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+
+\documentclass{article}
+\usepackage{msc5}
+\usepackage[a4paper]{geometry}
+\begin{document}
+\drawframe{no}
+\section*{tro\_test03}
+\setmsckeyword{Page\_1}
+\begin{msc}{}
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%% Configuration header
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%%%% Scale:
+\def\mscScaleX{1.0}
+\def\mscScaleY{1.0}
+
+%%%% Lines width:
+\pgfsetlinewidth{0.4pt}
+
+%%%% Picture box width:
+\setlength{\envinstdist}{20mm*\real{\mscScaleX}}
+
+%%%% Picture box y-padding:
+\setlength{\topheaddist}{\topheaddist}
+\setlength{\bottomfootdist}{\bottomfootdist}
+
+%%%% Instance first and last level height:
+\setlength{\firstlevelheight}{13mm*\real{\mscScaleY}}
+\setlength{\lastlevelheight}{11mm*\real{\mscScaleY}}
+
+%%%% Levels:
+\def\levelA{8mm*\real{\mscScaleY}}
+
+\setlength{\levelheight}{\levelA}
+
+
+%%%% Slope:
+\def\slopeA{0mm*\real{\mscScaleY}}
+\def\slopeB{8mm*\real{\mscScaleY}}
+
+
+%%%% Width of absolute time:
+\def\absoluteTimeWidthA{10mm*\real{\mscScaleX}}
+
+
+%%%% Absolute time slope:
+\def\absoluteTimeSlopeA{5mm*\real{\mscScaleY}}
+
+\setlength{\markdist}{\absoluteTimeSlopeA}
+
+%%%% Width od time interval:
+\def\timeIntervalWidthA{7mm*\real{\mscScaleX}}
+
+
+%%%% Ordering width:
+\def\orderingWidthA{3mm*\real{\mscScaleX}}
+
+
+%%%% Width of instance head/foot:
+\def\instanceWidthA{15mm*\real{\mscScaleX}}
+
+\setlength{\instwidth}{\instanceWidthA}
+
+%%%% Height of instance head/foot:
+\def\instanceHeightA{3mm*\real{\mscScaleY}}
+
+\setlength{\instheadheight}{\instanceHeightA}
+
+\setlength{\instfootheight}{\instheadheight}
+
+%%%% Space between instances:
+\def\instanceSpaceA{30mm*\real{\mscScaleX}}
+
+\setlength{\instdist}{\instanceSpaceA}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%% End of configuration header
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\declinst{0_inst}{Instance\_1}{}
+\declinst{1_inst}{Instance\_2}{}
+
+\setlength{\selfmesswidth}{\absoluteTimeWidthA}
+\mscmark[tl]{@[0]}{0_inst}
+\setlength{\levelheight}{\slopeA}
+\mess{Message\_1}{0_inst}[0.3]{1_inst}[1]
+\setlength{\levelheight}{\levelA}
+\nextlevel
+
+\mess{Message\_2}{1_inst}[0.3]{0_inst}[1]
+\nextlevel
+
+\mscmark[tl]{@[1]}{0_inst}
+\end{msc}
+\end{document}
Added: trunk/tests/time_relevant_ordering/tro_test04.mpr
===================================================================
--- trunk/tests/time_relevant_ordering/tro_test04.mpr (rev 0)
+++ trunk/tests/time_relevant_ordering/tro_test04.mpr 2013-05-25 21:01:42 UTC (rev 1816)
@@ -0,0 +1,16 @@
+mscdocument Drawing1;
+msc Page_1;
+inst Instance_1;
+inst Instance_2;
+Instance_1: instance;
+out Message_1,0 to Instance_2;
+time [@1];
+in Message_2,1 from Instance_2;
+time [@3];
+endinstance;
+Instance_2: instance;
+out Message_2,1 to Instance_1;
+in Message_1,0 from Instance_1;
+time [@2];
+endinstance;
+endmsc;
Added: trunk/tests/time_relevant_ordering/tro_test04.tex.result
===================================================================
--- trunk/tests/time_relevant_ordering/tro_test04.tex.result (rev 0)
+++ trunk/tests/time_relevant_ordering/tro_test04.tex.result 2013-05-25 21:01:42 UTC (rev 1816)
@@ -0,0 +1,110 @@
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%% You can download Msc5.sty package from:
+%%%% http://is.muni.cz/www/374320/msc5.sty
+%%%% Documentation:
+%%%% http://is.muni.cz/www/374320/manualNew.pdf
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+
+\documentclass{article}
+\usepackage{msc5}
+\usepackage[a4paper]{geometry}
+\begin{document}
+\drawframe{no}
+\section*{tro\_test04}
+\setmsckeyword{Page\_1}
+\begin{msc}{}
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%% Configuration header
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%%%% Scale:
+\def\mscScaleX{1.0}
+\def\mscScaleY{1.0}
+
+%%%% Lines width:
+\pgfsetlinewidth{0.4pt}
+
+%%%% Picture box width:
+\setlength{\envinstdist}{20mm*\real{\mscScaleX}}
+
+%%%% Picture box y-padding:
+\setlength{\topheaddist}{\topheaddist}
+\setlength{\bottomfootdist}{\bottomfootdist}
+
+%%%% Instance first and last level height:
+\setlength{\firstlevelheight}{13mm*\real{\mscScaleY}}
+\setlength{\lastlevelheight}{11mm*\real{\mscScaleY}}
+
+%%%% Levels:
+\def\levelA{8mm*\real{\mscScaleY}}
+
+\setlength{\levelheight}{\levelA}
+
+
+%%%% Slope:
+\def\slopeA{8mm*\real{\mscScaleY}}
+\def\slopeB{\levelA+\slopeA+\levelA}
+
+
+%%%% Width of absolute time:
+\def\absoluteTimeWidthA{10mm*\real{\mscScaleX}}
+
+
+%%%% Absolute time slope:
+\def\absoluteTimeSlopeA{5mm*\real{\mscScaleY}}
+
+\setlength{\markdist}{\absoluteTimeSlopeA}
+
+%%%% Width od time interval:
+\def\timeIntervalWidthA{7mm*\real{\mscScaleX}}
+
+
+%%%% Ordering width:
+\def\orderingWidthA{3mm*\real{\mscScaleX}}
+
+
+%%%% Width of instance head/foot:
+\def\instanceWidthA{15mm*\real{\mscScaleX}}
+
+\setlength{\instwidth}{\instanceWidthA}
+
+%%%% Height of instance head/foot:
+\def\instanceHeightA{3mm*\real{\mscScaleY}}
+
+\setlength{\instheadheight}{\instanceHeightA}
+
+\setlength{\instfootheight}{\instheadheight}
+
+%%%% Space between instances:
+\def\instanceSpaceA{30mm*\real{\mscScaleX}}
+
+\setlength{\instdist}{\instanceSpaceA}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%% End of configuration header
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\declinst{0_inst}{Instance\_1}{}
+\declinst{1_inst}{Instance\_2}{}
+
+\setlength{\levelheight}{\slopeB}
+\mess{Message\_2}{1_inst}[0.3]{0_inst}[1]
+\setlength{\levelheight}{\levelA}
+\nextlevel
+
+\setlength{\selfmesswidth}{\absoluteTimeWidthA}
+\mscmark[tl]{@[1]}{0_inst}
+\mess{Message\_1}{0_inst}[0.3]{1_inst}[1]
+\nextlevel
+
+\setlength{\selfmesswidth}{\absoluteTimeWidthA}
+\mscmark[tr]{@[2]}{1_inst}
+\nextlevel
+
+\setlength{\selfmesswidth}{\absoluteTimeWidthA}
+\mscmark[tl]{@[3]}{0_inst}
+\end{msc}
+\end{document}
Added: trunk/tests/time_relevant_ordering/tro_test05.mpr
===================================================================
--- trunk/tests/time_relevant_ordering/tro_test05.mpr (rev 0)
+++ trunk/tests/time_relevant_ordering/tro_test05.mpr 2013-05-25 21:01:42 UTC (rev 1816)
@@ -0,0 +1,20 @@
+mscdocument Drawing1;
+msc Page_1;
+inst Instance_1;
+inst Instance_2;
+inst Instance_3;
+Instance_1: instance;
+out Message_1,0 to Instance_2;
+in Message_4,1 from Instance_3;
+endinstance;
+Instance_2: instance;
+in Message_1,0 from Instance_1;
+out Message_2,2 to Instance_3;
+in Message_3,3 from Instance_3;
+endinstance;
+Instance_3: instance;
+in Message_2,2 from Instance_2;
+out Message_3,3 to Instance_2;
+out Message_4,1 to Instance_1;
+endinstance;
+endmsc;
Added: trunk/tests/time_relevant_ordering/tro_test05.tex.result
===================================================================
--- trunk/tests/time_relevant_ordering/tro_test05.tex.result (rev 0)
+++ trunk/tests/time_relevant_ordering/tro_test05.tex.result 2013-05-25 21:01:42 UTC (rev 1816)
@@ -0,0 +1,102 @@
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%% You can download Msc5.sty package from:
+%%%% http://is.muni.cz/www/374320/msc5.sty
+%%%% Documentation:
+%%%% http://is.muni.cz/www/374320/manualNew.pdf
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+
+\documentclass{article}
+\usepackage{msc5}
+\usepackage[a4paper]{geometry}
+\begin{document}
+\drawframe{no}
+\section*{tro\_test05}
+\setmsckeyword{Page\_1}
+\begin{msc}{}
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%% Configuration header
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%%%% Scale:
+\def\mscScaleX{1.0}
+\def\mscScaleY{1.0}
+
+%%%% Lines width:
+\pgfsetlinewidth{0.4pt}
+
+%%%% Picture box width:
+\setlength{\envinstdist}{15mm*\real{\mscScaleX}}
+
+%%%% Picture box y-padding:
+\setlength{\topheaddist}{\topheaddist}
+\setlength{\bottomfootdist}{\bottomfootdist}
+
+%%%% Instance first and last level height:
+\setlength{\firstlevelheight}{5mm*\real{\mscScaleY}}
+\setlength{\lastlevelheight}{5mm*\real{\mscScaleY}}
+
+%%%% Levels:
+\def\levelA{5mm*\real{\mscScaleY}}
+
+\setlength{\levelheight}{\levelA}
+
+
+%%%% Slope:
+\def\slopeA{0mm*\real{\mscScaleY}}
+
+
+%%%% Width od time interval:
+\def\timeIntervalWidthA{7mm*\real{\mscScaleX}}
+
+
+%%%% Ordering width:
+\def\orderingWidthA{3mm*\real{\mscScaleX}}
+
+
+%%%% Width of instance head/foot:
+\def\instanceWidthA{10mm*\real{\mscScaleX}}
+
+\setlength{\instwidth}{\instanceWidthA}
+
+%%%% Height of instance head/foot:
+\def\instanceHeightA{3mm*\real{\mscScaleY}}
+
+\setlength{\instheadheight}{\instanceHeightA}
+
+\setlength{\instfootheight}{\instheadheight}
+
+%%%% Space between instances:
+\def\instanceSpaceA{25mm*\real{\mscScaleX}}
+
+\setlength{\instdist}{\instanceSpaceA}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%% End of configuration header
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\declinst{0_inst}{Instance\_1}{}
+\declinst{1_inst}{Instance\_2}{}
+\declinst{2_inst}{Instance\_3}{}
+
+\setlength{\levelheight}{\slopeA}
+\mess{Message\_1}{0_inst}[0.3]{1_inst}[1]
+\setlength{\levelheight}{\levelA}
+\nextlevel
+
+\setlength{\levelheight}{\slopeA}
+\mess{Message\_2}{1_inst}[0.3]{2_inst}[1]
+\setlength{\levelheight}{\levelA}
+\nextlevel
+
+\setlength{\levelheight}{\slopeA}
+\mess{Message\_3}{2_inst}[0.3]{1_inst}[1]
+\setlength{\levelheight}{\levelA}
+\nextlevel
+
+\setlength{\levelheight}{\slopeA}
+\mess{Message\_4}{2_inst}[0.3]{0_inst}[1]
+\end{msc}
+\end{document}
Added: trunk/tests/time_relevant_ordering/tro_test06.mpr
===================================================================
--- trunk/tests/time_relevant_ordering/tro_test06.mpr (rev 0)
+++ trunk/tests/time_relevant_ordering/tro_test06.mpr 2013-05-25 21:01:42 UTC (rev 1816)
@@ -0,0 +1,22 @@
+mscdocument Drawing1;
+msc Page_1;
+inst Instance_1;
+inst Instance_2;
+inst Instance_3;
+Instance_1: instance;
+out Message_1,0 to Instance_2;
+time [@0];
+in Message_4,1 from Instance_3;
+endinstance;
+Instance_2: instance;
+in Message_1,0 from Instance_1;
+out Message_2,2 to Instance_3;
+in Message_3,3 from Instance_3;
+endinstance;
+Instance_3: instance;
+in Message_2,2 from Instance_2;
+time [@2];
+out Message_3,3 to Instance_2;
+out Message_4,1 to Instance_1;
+endinstance;
+endmsc;
Added: trunk/tests/time_relevant_ordering/tro_test06.tex.result
===================================================================
--- trunk/tests/time_relevant_ordering/tro_test06.tex.result (rev 0)
+++ trunk/tests/time_relevant_ordering/tro_test06.tex.result 2013-05-25 21:01:42 UTC (rev 1816)
@@ -0,0 +1,122 @@
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%% You can download Msc5.sty package from:
+%%%% http://is.muni.cz/www/374320/msc5.sty
+%%%% Documentation:
+%%%% http://is.muni.cz/www/374320/manualNew.pdf
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+
+\documentclass{article}
+\usepackage{msc5}
+\usepackage[a4paper]{geometry}
+\begin{document}
+\drawframe{no}
+\section*{tro\_test06}
+\setmsckeyword{Page\_1}
+\begin{msc}{}
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%% Configuration header
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%%%% Scale:
+\def\mscScaleX{1.0}
+\def\mscScaleY{1.0}
+
+%%%% Lines width:
+\pgfsetlinewidth{0.4pt}
+
+%%%% Picture box width:
+\setlength{\envinstdist}{20mm*\real{\mscScaleX}}
+
+%%%% Picture box y-padding:
+\setlength{\topheaddist}{\topheaddist}
+\setlength{\bottomfootdist}{\bottomfootdist}
+
+%%%% Instance first and last level height:
+\setlength{\firstlevelheight}{13mm*\real{\mscScaleY}}
+\setlength{\lastlevelheight}{11mm*\real{\mscScaleY}}
+
+%%%% Levels:
+\def\levelA{8mm*\real{\mscScaleY}}
+
+\setlength{\levelheight}{\levelA}
+
+
+%%%% Slope:
+\def\slopeA{0mm*\real{\mscScaleY}}
+\def\slopeB{\levelA+\levelA}
+\def\slopeC{\levelA+\levelA}
+\def\slopeD{\levelA+\levelA+\levelA+\levelA}
+
+
+%%%% Width of absolute time:
+\def\absoluteTimeWidthA{10mm*\real{\mscScaleX}}
+
+
+%%%% Absolute time slope:
+\def\absoluteTimeSlopeA{5mm*\real{\mscScaleY}}
+
+\setlength{\markdist}{\absoluteTimeSlopeA}
+
+%%%% Width od time interval:
+\def\timeIntervalWidthA{7mm*\real{\mscScaleX}}
+
+
+%%%% Ordering width:
+\def\orderingWidthA{3mm*\real{\mscScaleX}}
+
+
+%%%% Width of instance head/foot:
+\def\instanceWidthA{15mm*\real{\mscScaleX}}
+
+\setlength{\instwidth}{\instanceWidthA}
+
+%%%% Height of instance head/foot:
+\def\instanceHeightA{3mm*\real{\mscScaleY}}
+
+\setlength{\instheadheight}{\instanceHeightA}
+
+\setlength{\instfootheight}{\instheadheight}
+
+%%%% Space between instances:
+\def\instanceSpaceA{30mm*\real{\mscScaleX}}
+
+\setlength{\instdist}{\instanceSpaceA}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%% End of configuration header
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\declinst{0_inst}{Instance\_1}{}
+\declinst{1_inst}{Instance\_2}{}
+\declinst{2_inst}{Instance\_3}{}
+
+\setlength{\selfmesswidth}{\absoluteTimeWidthA}
+\mscmark[tl]{@[0]}{0_inst}
+\setlength{\levelheight}{\slopeA}
+\mess{Message\_1}{0_inst}[0.3]{1_inst}[1]
+\setlength{\levelheight}{\levelA}
+\nextlevel
+
+\setlength{\levelheight}{\slopeB}
+\mess{Message\_2}{1_inst}[0.3]{2_inst}[1]
+\setlength{\levelheight}{\levelA}
+\nextlevel
+
+\nextlevel
+
+\setlength{\selfmesswidth}{\absoluteTimeWidthA}
+\mscmark[tr]{@[2]}{2_inst}
+\nextlevel
+
+\setlength{\levelheight}{\slopeB}
+\mess{Message\_3}{2_inst}[0.3]{1_inst}[-1]
+\setlength{\levelheight}{\levelA}
+\nextlevel
+
+\setlength{\levelheight}{32mm}
+\mess{Message\_4}{2_inst}[0.3]{0_inst}[-1]
+\end{msc}
+\end{document}
Added: trunk/tests/time_relevant_ordering/tro_test07.mpr
===================================================================
--- trunk/tests/time_relevant_ordering/tro_test07.mpr (rev 0)
+++ trunk/tests/time_relevant_ordering/tro_test07.mpr 2013-05-25 21:01:42 UTC (rev 1816)
@@ -0,0 +1,28 @@
+mscdocument Drawing1;
+msc Page_1;
+inst Instance_1;
+inst Instance_2;
+inst Instance_3;
+Instance_1: instance;
+out Message_1,0 to Instance_2;
+time [@1];
+in Message_4,1 from Instance_3;
+time [@8];
+endinstance;
+Instance_2: instance;
+in Message_1,0 from Instance_1;
+time [@2];
+out Message_2,2 to Instance_3;
+time [@3];
+in Message_3,3 from Instance_3;
+time [@6];
+endinstance;
+Instance_3: instance;
+in Message_2,2 from Instance_2;
+time [@4];
+out Message_3,3 to Instance_2;
+time [@5];
+out Message_4,1 to Instance_1;
+time [@7];
+endinstance;
+endmsc;
Added: trunk/tests/time_relevant_ordering/tro_test07.tex.result
===================================================================
--- trunk/tests/time_relevant_ordering/tro_test07.tex.result (rev 0)
+++ trunk/tests/time_relevant_ordering/tro_test07.tex.result 2013-05-25 21:01:42 UTC (rev 1816)
@@ -0,0 +1,127 @@
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%% You can download Msc5.sty package from:
+%%%% http://is.muni.cz/www/374320/msc5.sty
+%%%% Documentation:
+%%%% http://is.muni.cz/www/374320/manualNew.pdf
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+
+\documentclass{article}
+\usepackage{msc5}
+\usepackage[a4paper]{geometry}
+\begin{document}
+\drawframe{no}
+\section*{tro\_test07}
+\setmsckeyword{Page\_1}
+\begin{msc}{}
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%% Configuration header
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%%%% Scale:
+\def\mscScaleX{1.0}
+\def\mscScaleY{1.0}
+
+%%%% Lines width:
+\pgfsetlinewidth{0.4pt}
+
+%%%% Picture box width:
+\setlength{\envinstdist}{20mm*\real{\mscScaleX}}
+
+%%%% Picture box y-padding:
+\setlength{\topheaddist}{\topheaddist}
+\setlength{\bottomfootdist}{\bottomfootdist}
+
+%%%% Instance first and last level height:
+\setlength{\firstlevelheight}{13mm*\real{\mscScaleY}}
+\setlength{\lastlevelheight}{11mm*\real{\mscScaleY}}
+
+%%%% Levels:
+\def\levelA{8mm*\real{\mscScaleY}}
+
+\setlength{\levelheight}{\levelA}
+
+
+%%%% Slope:
+\def\slopeA{8mm*\real{\mscScaleY}}
+
+
+%%%% Width of absolute time:
+\def\absoluteTimeWidthA{10mm*\real{\mscScaleX}}
+
+
+%%%% Absolute time slope:
+\def\absoluteTimeSlopeA{5mm*\real{\mscScaleY}}
+
+\setlength{\markdist}{\absoluteTimeSlopeA}
+
+%%%% Width od time interval:
+\def\timeIntervalWidthA{7mm*\real{\mscScaleX}}
+
+
+%%%% Ordering width:
+\def\orderingWidthA{3mm*\real{\mscScaleX}}
+
+
+%%%% Width of instance head/foot:
+\def\instanceWidthA{15mm*\real{\mscScaleX}}
+
+\setlength{\instwidth}{\instanceWidthA}
+
+%%%% Height of instance head/foot:
+\def\instanceHeightA{3mm*\real{\mscScaleY}}
+
+\setlength{\instheadheight}{\instanceHeightA}
+
+\setlength{\instfootheight}{\instheadheight}
+
+%%%% Space between instances:
+\def\instanceSpaceA{30mm*\real{\mscScaleX}}
+
+\setlength{\instdist}{\instanceSpaceA}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%% End of configuration header
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\declinst{0_inst}{Instance\_1}{}
+\declinst{1_inst}{Instance\_2}{}
+\declinst{2_inst}{Instance\_3}{}
+
+\setlength{\selfmesswidth}{\absoluteTimeWidthA}
+\mscmark[tl]{@[1]}{0_inst}
+\mess{Message\_1}{0_inst}[0.3]{1_inst}[1]
+\nextlevel
+
+\setlength{\selfmesswidth}{\absoluteTimeWidthA}
+\mscmark[tr]{@[2]}{1_inst}
+\nextlevel
+
+\setlength{\selfmesswidth}{\absoluteTimeWidthA}
+\mscmark[tl]{@[3]}{1_inst}
+\mess{Message\_2}{1_inst}[0.3]{2_inst}[1]
+\nextlevel
+
+\setlength{\selfmesswidth}{\absoluteTimeWidthA}
+\mscmark[tr]{@[4]}{2_inst}
+\nextlevel
+
+\mscmark[tr]{@[5]}{2_inst}
+\mess{Message\_3}{2_inst}[0.3]{1_inst}[1]
+\nextlevel
+
+\setlength{\selfmesswidth}{\absoluteTimeWidthA}
+\mscmark[tl]{@[6]}{1_inst}
+\nextlevel
+
+\setlength{\selfmesswidth}{\absoluteTimeWidthA}
+\mscmark[tr]{@[7]}{2_inst}
+\mess{Message\_4}{2_inst}[0.3]{0_inst}[1]
+\nextlevel
+
+\setlength{\selfmesswidth}{\absoluteTimeWidthA}
+\mscmark[tl]{@[8]}{0_inst}
+\end{msc}
+\end{document}
Added: trunk/tests/time_relevant_ordering/tro_test08.mpr
===================================================================
--- trunk/tests/time_relevant_ordering/tro_test08.mpr (rev 0)
+++ trunk/tests/time_relevant_ordering/tro_test08.mpr 2013-05-25 21:01:42 UTC (rev 1816)
@@ -0,0 +1,20 @@
+mscdocument Drawing1;
+msc Page_1;
+inst Instance_1;
+inst Instance_2;
+inst Instance_3;
+Instance_1: instance;
+out Message_1,0 to Instance_2;
+time @[2,5];
+endinstance;
+Instance_2: instance;
+in Message_1,0 from Instance_1;
+time @[0,8];
+out Message_2,1 to Instance_3;
+time @[0,8];
+endinstance;
+Instance_3: instance;
+in Message_2,1 from Instance_2;
+time @[1,2];
+endinstance;
+endmsc;
Added: trunk/tests/time_relevant_ordering/tro_test08.tex.result
===================================================================
--- trunk/tests/time_relevant_ordering/tro_test08.tex.result (rev 0)
+++ trunk/tests/time_relevant_ordering/tro_test08.tex.result 2013-05-25 21:01:42 UTC (rev 1816)
@@ -0,0 +1,109 @@
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%% You can download Msc5.sty package from:
+%%%% http://is.muni.cz/www/374320/msc5.sty
+%%%% Documentation:
+%%%% http://is.muni.cz/www/374320/manualNew.pdf
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+
+\documentclass{article}
+\usepackage{msc5}
+\usepackage[a4paper]{geometry}
+\begin{document}
+\drawframe{no}
+\section*{tro\_test08}
+\setmsckeyword{Page\_1}
+\begin{msc}{}
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%% Configuration header
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%%%% Scale:
+\def\mscScaleX{1.0}
+\def\mscScaleY{1.0}
+
+%%%% Lines width:
+\pgfsetlinewidth{0.4pt}
+
+%%%% Picture box width:
+\setlength{\envinstdist}{20mm*\real{\mscScaleX}}
+
+%%%% Picture box y-padding:
+\setlength{\topheaddist}{\topheaddist}
+\setlength{\bottomfootdist}{\bottomfootdist}
+
+%%%% Instance first and last level height:
+\setlength{\firstlevelheight}{13mm*\real{\mscScaleY}}
+\setlength{\lastlevelheight}{11mm*\real{\mscScaleY}}
+
+%%%% Levels:
+\def\levelA{8mm*\real{\mscScaleY}}
+
+\setlength{\levelheight}{\levelA}
+
+
+%%%% Slope:
+\def\slopeA{0mm*\real{\mscScaleY}}
+
+
+%%%% Width of absolute time:
+\def\absoluteTimeWidthA{10mm*\real{\mscScaleX}}
+
+
+%%%% Absolute time slope:
+\def\absoluteTimeSlopeA{5mm*\real{\mscScaleY}}
+
+\setlength{\markdist}{\absoluteTimeSlopeA}
+
+%%%% Width od time interval:
+\def\timeIntervalWidthA{7mm*\real{\mscScaleX}}
+
+
+%%%% Ordering width:
+\def\orderingWidthA{3mm*\real{\mscScaleX}}
+
+
+%%%% Width of instance head/foot:
+\def\instanceWidthA{15mm*\real{\mscScaleX}}
+
+\setlength{\instwidth}{\instanceWidthA}
+
+%%%% Height of instance head/foot:
+\def\instanceHeightA{3mm*\real{\mscScaleY}}
+
+\setlength{\instheadheight}{\instanceHeightA}
+
+\setlength{\instfootheight}{\instheadheight}
+
+%%%% Space between instances:
+\def\instanceSpaceA{30mm*\real{\mscScaleX}}
+
+\setlength{\instdist}{\instanceSpaceA}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%% End of configuration header
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\declinst{0_inst}{Instance\_1}{}
+\declinst{1_inst}{Instance\_2}{}
+\declinst{2_inst}{Instance\_3}{}
+
+\setlength{\selfmesswidth}{\absoluteTimeWidthA}
+\mscmark[tl]{@[2,5]}{0_inst}
+\setlength{\levelheight}{\slopeA}
+\mess{Message\_1}{0_inst}[0.3]{1_inst}[1]
+\setlength{\selfmesswidth}{\absoluteTimeWidthA}
+\mscmark[tr]{@[2,8]}{1_inst}
+\setlength{\levelheight}{\levelA}
+\nextlevel
+
+\setlength{\selfmesswidth}{\absoluteTimeWidthA}
+\mscmark[tl]{@[2,8]}{1_inst}
+\setlength{\levelheight}{\slopeA}
+\mess{Message\_2}{1_inst}[0.3]{2_inst}[1]
+\setlength{\selfmesswidth}{\absoluteTimeWidthA}
+\mscmark[tr]{@[2]}{2_inst}
+\end{msc}
+\end{document}
Added: trunk/tests/time_relevant_ordering/tro_test09.mpr
===================================================================
--- trunk/tests/time_relevant_ordering/tro_test09.mpr (rev 0)
+++ trunk/tests/time_relevant_ordering/tro_test09.mpr 2013-05-25 21:01:42 UTC (rev 1816)
@@ -0,0 +1,17 @@
+mscdocument Drawing1;
+msc Page_1;
+inst Instance_1;
+inst Instance_2;
+Instance_1: instance;
+out Message_1,0 to Instance_2;
+time @[3,100];
+in Message_2,1 from Instance_2;
+time [@100];
+endinstance;
+Instance_2: instance;
+out Message_2,1 to Instance_1;
+time @[0,8];
+in Message_1,0 from Instance_1;
+time @[0,1000];
+endinstance;
+endmsc;
Added: trunk/tests/time_relevant_ordering/tro_test09.tex.result
===================================================================
--- trunk/tests/time_relevant_ordering/tro_test09.tex.result (rev 0)
+++ trunk/tests/time_relevant_ordering/tro_test09.tex.result 2013-05-25 21:01:42 UTC (rev 1816)
@@ -0,0 +1,113 @@
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%% You can download Msc5.sty package from:
+%%%% http://is.muni.cz/www/374320/msc5.sty
+%%%% Documentation:
+%%%% http://is.muni.cz/www/374320/manualNew.pdf
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+
+\documentclass{article}
+\usepackage{msc5}
+\usepackage[a4paper]{geometry}
+\begin{document}
+\drawframe{no}
+\section*{tro\_test09}
+\setmsckeyword{Page\_1}
+\begin{msc}{}
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%% Configuration header
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%%%% Scale:
+\def\mscScaleX{1.0}
+\def\mscScaleY{1.0}
+
+%%%% Lines width:
+\pgfsetlinewidth{0.4pt}
+
+%%%% Picture box width:
+\setlength{\envinstdist}{20mm*\real{\mscScaleX}}
+
+%%%% Picture box y-padding:
+\setlength{\topheaddist}{\topheaddist}
+\setlength{\bottomfootdist}{\bottomfootdist}
+
+%%%% Instance first and last level height:
+\setlength{\firstlevelheight}{13mm*\real{\mscScaleY}}
+\setlength{\lastlevelheight}{11mm*\real{\mscScaleY}}
+
+%%%% Levels:
+\def\levelA{8mm*\real{\mscScaleY}}
+\def\levelB{16mm*\real{\mscScaleY}}
+
+\setlength{\levelheight}{\levelA}
+
+
+%%%% Slope:
+\def\slopeA{0mm*\real{\mscScaleY}}
+\def\slopeB{\levelA+\levelB}
+
+
+%%%% Width of absolute time:
+\def\absoluteTimeWidthA{10mm*\real{\mscScaleX}}
+
+
+%%%% Absolute time slope:
+\def\absoluteTimeSlopeA{5mm*\real{\mscScaleY}}
+
+\setlength{\markdist}{\absoluteTimeSlopeA}
+
+%%%% Width od time interval:
+\def\timeIntervalWidthA{7mm*\real{\mscScaleX}}
+
+
+%%%% Ordering width:
+\def\orderingWidthA{3mm*\real{\mscScaleX}}
+
+
+%%%% Width of instance head/foot:
+\def\instanceWidthA{15mm*\real{\mscScaleX}}
+
+\setlength{\instwidth}{\instanceWidthA}
+
+%%%% Height of instance head/foot:
+\def\instanceHeightA{3mm*\real{\mscScaleY}}
+
+\setlength{\instheadheight}{\instanceHeightA}
+
+\setlength{\instfootheight}{\instheadheight}
+
+%%%% Space between instances:
+\def\instanceSpaceA{30mm*\real{\mscScaleX}}
+
+\setlength{\instdist}{\instanceSpaceA}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%% End of configuration header
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\declinst{0_inst}{Instance\_1}{}
+\declinst{1_inst}{Instance\_2}{}
+
+\setlength{\selfmesswidth}{\absoluteTimeWidthA}
+\mscmark[tr]{@[0,8]}{1_inst}
+\setlength{\levelheight}{\slopeB}
+\mess{Message\_2}{1_inst}[0.3]{0_inst}[1]
+\setlength{\levelheight}{\levelA}
+\nextlevel
+
+\setlength{\selfmesswidth}{\absoluteTimeWidthA}
+\mscmark[tl]{@[3,100]}{0_inst}
+\setlength{\levelheight}{\slopeA}
+\mess{Message\_1}{0_inst}[0.3]{1_inst}[1]
+\setlength{\selfmesswidth}{\absoluteTimeWidthA}
+\mscmark[tr]{@[3,1000]}{1_inst}
+\setlength{\levelheight}{\levelB}
+\nextlevel
+
+\setlength{\selfmesswidth}{\absoluteTimeWidthA}
+\mscmark[tl]{@[100]}{0_inst}
+\end{msc}
+\end{document}
Added: trunk/tests/time_relevant_ordering/tro_test10.mpr
===================================================================
--- trunk/tests/time_relevant_ordering/tro_test10.mpr (rev 0)
+++ trunk/tests/time_relevant_ordering/tro_test10.mpr 2013-05-25 21:01:42 UTC (rev 1816)
@@ -0,0 +1,24 @@
+mscdocument Drawing1;
+msc Page_1;
+inst Instance_1;
+inst Instance_2;
+inst Instance_3;
+Instance_1: instance;
+out Message_1,0 to Instance_2;
+time @[3,4];
+endinstance;
+Instance_2: instance;
+out Message_2,1 to Instance_3;
+time @[0,4];
+in Message_1,0 from Instance_1;
+time @[0,4];
+out Message_3,2 to Instance_3;
+time @[4,8];
+endinstance;
+Instance_3: instance;
+in Message_2,1 from Instance_2;
+time @[2,6];
+in Message_3,2 from Instance_2;
+time [@5];
+endinstance;
+endmsc;
Added: trunk/tests/time_relevant_ordering/tro_test10.tex.result
===================================================================
--- trunk/tests/time_relevant_ordering/tro_test10.tex.result (rev 0)
+++ trunk/tests/time_relevant_ordering/tro_test10.tex.result 2013-05-25 21:01:42 UTC (rev 1816)
@@ -0,0 +1,120 @@
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%% You can download Msc5.sty package from:
+%%%% http://is.muni.cz/www/374320/msc5.sty
+%%%% Documentation:
+%%%% http://is.muni.cz/www/374320/manualNew.pdf
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+
+\documentclass{article}
+\usepackage{msc5}
+\usepackage[a4paper]{geometry}
+\begin{document}
+\drawframe{no}
+\section*{tro\_test10}
+\setmsckeyword{Page\_1}
+\begin{msc}{}
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%% Configuration header
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%%%% Scale:
+\def\mscScaleX{1.0}
+\def\mscScaleY{1.0}
+
+%%%% Lines width:
+\pgfsetlinewidth{0.4pt}
+
+%%%% Picture box width:
+\setlength{\envinstdist}{20mm*\real{\mscScaleX}}
+
+%%%% Picture box y-padding:
+\setlength{\topheaddist}{\topheaddist}
+\setlength{\bottomfootdist}{\bottomfootdist}
+
+%%%% Instance first and last level height:
+\setlength{\firstlevelheight}{13mm*\real{\mscScaleY}}
+\setlength{\lastlevelheight}{11mm*\real{\mscScaleY}}
+
+%%%% Levels:
+\def\levelA{8mm*\real{\mscScaleY}}
+
+\setlength{\levelheight}{\levelA}
+
+
+%%%% Slope:
+\def\slopeA{0mm*\real{\mscScaleY}}
+\def\slopeB{8mm*\real{\mscScaleY}}
+
+
+%%%% Width of absolute time:
+\def\absoluteTimeWidthA{10mm*\real{\mscScaleX}}
+
+
+%%%% Absolute time slope:
+\def\absoluteTimeSlopeA{5mm*\real{\mscScaleY}}
+
+\setlength{\markdist}{\absoluteTimeSlopeA}
+
+%%%% Width od time interval:
+\def\timeIntervalWidthA{7mm*\real{\mscScaleX}}
+
+
+%%%% Ordering width:
+\def\orderingWidthA{3mm*\real{\mscScaleX}}
+
+
+%%%% Width of instance head/foot:
+\def\instanceWidthA{15mm*\real{\mscScaleX}}
+
+\setlength{\instwidth}{\instanceWidthA}
+
+%%%% Height of instance head/foot:
+\def\instanceHeightA{3mm*\real{\mscScaleY}}
+
+\setlength{\instheadheight}{\instanceHeightA}
+
+\setlength{\instfootheight}{\instheadheight}
+
+%%%% Space between instances:
+\def\instanceSpaceA{30mm*\real{\mscScaleX}}
+
+\setlength{\instdist}{\instanceSpaceA}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%% End of configuration header
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\declinst{0_inst}{Instance\_1}{}
+\declinst{1_inst}{Instance\_2}{}
+\declinst{2_inst}{Instance\_3}{}
+
+\setlength{\selfmesswidth}{\absoluteTimeWidthA}
+\mscmark[tl]{@[0,4]}{1_inst}
+\mess{Message\_2}{1_inst}[0.3]{2_inst}[1]
+\nextlevel
+
+\setlength{\selfmesswidth}{\absoluteTimeWidthA}
+\mscmark[tr]{@[2,6]}{2_inst}
+\nextlevel
+
+\setlength{\selfmesswidth}{\absoluteTimeWidthA}
+\mscmark[tl]{@[3,4]}{0_inst}
+\setlength{\levelheight}{\slopeA}
+\mess{Message\_1}{0_inst}[0.3]{1_inst}[1]
+\setlength{\selfmesswidth}{\absoluteTimeWidthA}
+\mscmark[tr]{@[3,4]}{1_inst}
+\setlength{\levelheight}{\levelA}
+\nextlevel
+
+\setlength{\selfmesswidth}{\absoluteTimeWidthA}
+\mscmark[tl]{@[4,8]}{1_inst}
+\mess{Message\_3}{1_inst}[0.3]{2_inst}[1]
+\nextlevel
+
+\setlength{\selfmesswidth}{\absoluteTimeWidthA}
+\mscmark[tr]{@[5]}{2_inst}
+\end{msc}
+\end{document}
Added: trunk/tests/time_relevant_ordering/tro_test11.mpr
===================================================================
--- trunk/tests/time_relevant_ordering/tro_test11.mpr (rev 0)
+++ trunk/tests/time_relevant_ordering/tro_test11.mpr 2013-05-25 21:01:42 UTC (rev 1816)
@@ -0,0 +1,25 @@
+mscdocument connection_termination;
+msc Pcap;
+inst 192.168.10.226;
+inst 192.168.11.12;
+192.168.10.226: instance;
+out Ethernet_II._I_IPv4_SRC_19707_DST_23_TCP_FIN_ACK_SEQ_1_ACK_1_,0 to 192.168.11.12;
+time [@0];
+in Ethernet_II._I_IPv4_SRC_23_DST_19707_TCP_ACK_SEQ_1_ACK_2_,1 from 192.168.11.12;
+time [@0.00433];
+in Ethernet_II._I_IPv4_SRC_23_DST_19707_TCP_FIN_ACK_SEQ_1_ACK_2_,2 from 192.168.11.12;
+time [@0.015354];
+out Ethernet_II._I_IPv4_SRC_19707_DST_23_TCP_ACK_SEQ_2_ACK_2_,3 to 192.168.11.12;
+time [@0.015461];
+endinstance;
+192.168.11.12: instance;
+in Ethernet_II._I_IPv4_SRC_19707_DST_23_TCP_FIN_ACK_SEQ_1_ACK_1_,0 from 192.168.10.226;
+time [@0];
+out Ethernet_II._I_IPv4_SRC_23_DST_19707_TCP_ACK_SEQ_1_ACK_2_,1 to 192.168.10.226;
+time [@0.00433];
+out Ethernet_II._I_IPv4_SRC_23_DST_19707_TCP_FIN_ACK_SEQ_1_ACK_2_,2 to 192.168.10.226;
+time [@0.015354];
+in Ethernet_II._I_IPv4_SRC_19707_DST_23_TCP_ACK_SEQ_2_ACK_2_,3 from 192.168.10.226;
+time [@0.015461];
+endinstance;
+endmsc;
Added: trunk/tests/time_relevant_ordering/tro_test11.tex.result
===================================================================
--- trunk/tests/time_relevant_ordering/tro_test11.tex.result (rev 0)
+++ trunk/tests/time_relevant_ordering/tro_test11.tex.result 2013-05-25 21:01:42 UTC (rev 1816)
@@ -0,0 +1,126 @@
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%% You can download Msc5.sty package from:
+%%%% http://is.muni.cz/www/374320/msc5.sty
+%%%% Documentation:
+%%%% http://is.muni.cz/www/374320/manualNew.pdf
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+
+\documentclass{article}
+\usepackage{msc5}
+\usepackage[a4paper]{geometry}
+\begin{document}
+\drawframe{no}
+\section*{tro\_test11}
+\setmsckeyword{Pcap}
+\begin{msc}{}
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%% Configuration header
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%%%% Scale:
+\def\mscScaleX{1.0}
+\def\mscScaleY{1.0}
+
+%%%% Lines width:
+\pgfsetlinewidth{0.4pt}
+
+%%%% Picture box width:
+\setlength{\envinstdist}{20mm*\real{\mscScaleX}}
+
+%%%% Picture box y-padding:
+\setlength{\topheaddist}{\topheaddist}
+\setlength{\bottomfootdist}{\bottomfootdist}
+
+%%%% Instance first and last level height:
+\setlength{\firstlevelheight}{13mm*\real{\mscScaleY}}
+\setlength{\lastlevelheight}{11mm*\real{\mscScaleY}}
+
+%%%% Levels:
+\def\levelA{8mm*\real{\mscScaleY}}
+
+\setlength{\levelheight}{\levelA}
+
+
+%%%% Slope:
+\def\slopeA{0mm*\real{\mscScaleY}}
+
+
+%%%% Width of absolute time:
+\def\absoluteTimeWidthA{10mm*\real{\mscScaleX}}
+
+
+%%%% Absolute time slope:
+\def\absoluteTimeSlopeA{5mm*\real{\mscScaleY}}
+
+\setlength{\markdist}{\absoluteTimeSlopeA}
+
+%%%% Width od time interval:
+\def\timeIntervalWidthA{7mm*\real{\mscScaleX}}
+
+
+%%%% Ordering width:
+\def\orderingWidthA{3mm*\real{\mscScaleX}}
+
+
+%%%% Width of instance head/foot:
+\def\instanceWidthA{15mm*\real{\mscScaleX}}
+
+\setlength{\instwidth}{\instanceWidthA}
+
+%%%% Height of instance head/foot:
+\def\instanceHeightA{3mm*\real{\mscScaleY}}
+
+\setlength{\instheadheight}{\instanceHeightA}
+
+\setlength{\instfootheight}{\instheadheight}
+
+%%%% Space between instances:
+\def\instanceSpaceA{30mm*\real{\mscScaleX}}
+
+\setlength{\instdist}{\instanceSpaceA}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%% End of configuration header
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\declinst{0_inst}{192.168.10.226}{}
+\declinst{1_inst}{192.168.11.12}{}
+
+\setlength{\selfmesswidth}{\absoluteTimeWidthA}
+\mscmark[tl]{@[0]}{0_inst}
+\setlength{\levelheight}{\slopeA}
+\mess{Ethernet\_II.\_I\_IPv4\_SRC\_19707\_DST\_23\_TCP\_FIN\_ACK\_SEQ\_1\_ACK\_1\_}{0_inst}[0.3]{1_inst}[1]
+\setlength{\selfmesswidth}{\absoluteTimeWidthA}
+\mscmark[tr]{@[0]}{1_inst}
+\setlength{\levelheight}{\levelA}
+\nextlevel
+
+\setlength{\selfmesswidth}{\absoluteTimeWidthA}
+\mscmark[tl]{@[0.00433]}{0_inst}
+\setlength{\selfmesswidth}{\absoluteTimeWidthA}
+\mscmark[tr]{@[0.00433]}{1_inst}
+\setlength{\levelheight}{\slopeA}
+\mess{Ethernet\_II.\_I\_IPv4\_SRC\_23\_DST\_19707\_TCP\_ACK\_SEQ\_1\_ACK\_2\_}{1_inst}[0.3]{0_inst}[1]
+\setlength{\levelheight}{\levelA}
+\nextlevel
+
+\setlength{\selfmesswidth}{\absoluteTimeWidthA}
+\mscmark[tl]{@[0.015354]}{0_inst}
+\setlength{\selfmesswidth}{\absoluteTimeWidthA}
+\mscmark[tr]{@[0.015354]}{1_inst}
+\setlength{\levelheight}{\slopeA}
+\mess{Ethernet\_II.\_I\_IPv4\_SRC\_23\_DST\_19707\_TCP\_FIN\_ACK\_SEQ\_1\_ACK\_2\_}{1_inst}[0.3]{0_inst}[1]
+\setlength{\levelheight}{\levelA}
+\nextlevel
+
+\setlength{\selfmesswidth}{\absoluteTimeWidthA}
+\mscmark[tl]{@[0.015461]}{0_inst}
+\setlength{\levelheight}{\slopeA}
+\mess{Ethernet\_II.\_I\_IPv4\_SRC\_19707\_DST\_23\_TCP\_ACK\_SEQ\_2\_ACK\_2\_}{0_inst}[0.3]{1_inst}[1]
+\setlength{\selfmesswidth}{\absoluteTimeWidthA}
+\mscmark[tr]{@[0.015461]}{1_inst}
+\end{msc}
+\end{document}
Added: trunk/tests/time_relevant_ordering/tro_test12.mpr
===================================================================
--- trunk/tests/time_relevant_ordering/tro_test12.mpr (rev 0)
+++ trunk/tests/time_relevant_ordering/tro_test12.mpr 2013-05-25 21:01:42 UTC (rev 1816)
@@ -0,0 +1,182 @@
+mscdocument NTP_sync;
+msc Pcap;
+inst 192.168.50.50;
+inst 192.168.0.1;
+inst 67.129.68.9;
+inst 69.44.57.60;
+inst 207.234.209.181;
+inst 209.132.176.4;
+inst 216.27.185.42;
+inst 24.34.79.42;
+inst 24.123.202.230;
+inst 63.164.62.249;
+inst 64.112.189.11;
+inst 65.125.233.206;
+inst 66.33.206.5;
+inst 66.33.216.11;
+inst 66.92.68.246;
+inst 66.111.46.200;
+inst 66.115.136.4;
+192.168.50.50: instance;
+out 1_DNS_QUERY_us.pool.ntp.org_,0 to 192.168.0.1;
+time [@0];
+in 2_DNS_RESP_us.pool.ntp.org_,1 from 192.168.0.1;
+time [@0.006946];
+out 3_NBNS_,2 to 67.129.68.9;
+time [@0.016303];
+out 4_NBNS_,3 to 69.44.57.60;
+time [@0.016634];
+out 5_NBNS_,4 to 207.234.209.181;
+time [@0.017088];
+out 6_NBNS_,5 to 209.132.176.4;
+time [@0.017483];
+out 7_NBNS_,6 to 216.27.185.42;
+time [@0.017905];
+out 8_NBNS_,7 to 24.34.79.42;
+time [@0.018303];
+out 9_NBNS_,8 to 24.123.202.230;
+time [@0.018785];
+out 10_NBNS_,9 to 63.164.62.249;
+time [@0.019231];
+out 11_NBNS_,10 to 64.112.189.11;
+time [@0.019953];
+out 12_NBNS_,11 to 65.125.233.206;
+time [@0.020601];
+out 13_NBNS_,12 to 66.33.206.5;
+time [@0.021393];
+out 14_NBNS_,13 to 66.33.216.11;
+time [@0.022194];
+out 15_NBNS_,14 to 66.92.68.246;
+time [@0.022803];
+out 16_NBNS_,15 to 66.111.46.200;
+time [@0.02...
[truncated message content] |
|
From: <ob...@us...> - 2013-05-25 17:55:00
|
Revision: 1815
http://sourceforge.net/p/scstudio/code/1815
Author: obouda
Date: 2013-05-25 17:54:57 +0000 (Sat, 25 May 2013)
Log Message:
-----------
generalized Visio extractors from MessageEvent to Event
Modified Paths:
--------------
branches/conditions/src/view/visio/addon/extract.cpp
branches/conditions/src/view/visio/addon/extract.h
Modified: branches/conditions/src/view/visio/addon/extract.cpp
===================================================================
--- branches/conditions/src/view/visio/addon/extract.cpp 2013-05-25 17:20:58 UTC (rev 1814)
+++ branches/conditions/src/view/visio/addon/extract.cpp 2013-05-25 17:54:57 UTC (rev 1815)
@@ -344,13 +344,13 @@
assert_no_FromConnects(shape->Shapes->Item[i]);
}
-CoregionAreaPtr CDrawingExtractor::create_coregion_area(MessageEventPointMap& events,
+CoregionAreaPtr CDrawingExtractor::create_coregion_area(EventPointMap& events,
const MscMessageMap& messages, Visio::IVShapePtr coregion)
{
Visio::IVPagePtr vsoPage = coregion->ContainingPage;
std::wstring page_name = (const wchar_t*)vsoPage->Name;
- typedef std::multimap<SPoint,MessageEventPtr> TCoregionEvents;
+ typedef std::multimap<SPoint,EventPtr> TCoregionEvents;
TCoregionEvents coregion_events; // events in this coregion
std::set<long> relations;
@@ -368,7 +368,7 @@
// shape connected to this point
Visio::IVShapePtr shape = connect->FromSheet;
- MessageEventPtr event;
+ EventPtr event;
// connect the message
TShapeType type = get_shape_type(shape);
@@ -380,16 +380,17 @@
if(message == NULL)
continue;
// create coregion event
- event = area->add_event(new MessageEvent());
- event->set_position(ConvertEventPoint(coregion, pos));
+ MessageEventPtr msg_event = area->add_event(new MessageEvent());
+ event = msg_event;
+ msg_event->set_position(ConvertEventPoint(coregion, pos));
// connect the message
switch(connect->FromPart)
{
case visBegin:
- message->glue_send_event(event);
+ message->glue_send_event(msg_event);
break;
case visEnd:
- message->glue_receive_event(event);
+ message->glue_receive_event(msg_event);
break;
default:
@@ -407,11 +408,12 @@
if(message == NULL)
continue;
// create coregion event
- event = area->add_event(new MessageEvent());
- event->set_position(ConvertEventPoint(coregion, pos));
+ MessageEventPtr msg_event = area->add_event(new MessageEvent());
+ event = msg_event;
+ msg_event->set_position(ConvertEventPoint(coregion, pos));
// connect the message
if(connect->FromPart == visBegin)
- message->glue_event(event);
+ message->glue_event(msg_event);
else
{
PrintError(stringize() << page_name << ": "
@@ -427,11 +429,12 @@
if(message == NULL)
continue;
// create coregion event
- event = area->add_event(new MessageEvent());
- event->set_position(ConvertEventPoint(coregion, pos));
+ MessageEventPtr msg_event = area->add_event(new MessageEvent());
+ event = msg_event;
+ msg_event->set_position(ConvertEventPoint(coregion, pos));
// connect the message
if(connect->FromPart == visEnd)
- message->glue_event(event);
+ message->glue_event(msg_event);
else
{
PrintError(stringize() << page_name << ": "
@@ -529,8 +532,10 @@
{
// the position is determined from the arrow
if(connect1->FromPart == visBegin && connect2->FromPart == visEnd)
+ // FIXME: typecasting to CoregionArea and adding the same object as an event?
dynamic_cast<CoregionArea*>(event1->second.get())->add_successor_rel(event1->second.get(), event2->second.get());
else if(connect2->FromPart == visBegin && connect1->FromPart == visEnd)
+ // FIXME: typecasting to CoregionArea and adding the same object as an event?
dynamic_cast<CoregionArea*>(event2->second.get())->add_successor_rel(event2->second.get(), event1->second.get());
else
{
@@ -573,7 +578,7 @@
m_msc_cache[pageId] = bmsc;
// temporary mappers Visio shape-id --> msc.h
- MessageEventPointMap events; // all events in the drawing
+ EventPointMap events; // all events in the drawing
std::map<long,InstancePtr> instances;
MscMessageMap messages;
TimeRelationEventMap time_relations;
@@ -949,7 +954,7 @@
else if(epos->event_type == SStrictOrder::ET_INCOMING)
message->glue_receive_event(event);
- events.insert(std::make_pair<SPoint,MessageEventPtr>(point_to_page(instance, epos->event_pos), event));
+ events.insert(std::make_pair<SPoint,EventPtr>(point_to_page(instance, epos->event_pos), event));
break;
}
@@ -981,7 +986,7 @@
event->set_position(ConvertEventPoint(instance, epos->event_pos));
message->glue_event(event);
- events.insert(std::make_pair<SPoint,MessageEventPtr>(point_to_page(instance, epos->event_pos), event));
+ events.insert(std::make_pair<SPoint,EventPtr>(point_to_page(instance, epos->event_pos), event));
break;
}
@@ -1074,13 +1079,13 @@
point_a.m_x = shape->CellsSRC[visSectionObject][visRowXForm1D][vis1DBeginX]->Result[0];
point_a.m_y = shape->CellsSRC[visSectionObject][visRowXForm1D][vis1DBeginY]->Result[0];
// find event at point a
- MessageEventPointMap::iterator event_a = events.find(point_a);
+ EventPointMap::iterator event_a = events.find(point_a);
SPoint point_b;
point_b.m_x = shape->CellsSRC[visSectionObject][visRowXForm1D][vis1DEndX]->Result[0];
point_b.m_y = shape->CellsSRC[visSectionObject][visRowXForm1D][vis1DEndY]->Result[0];
// find event at point b
- MessageEventPointMap::iterator event_b = events.find(point_b);
+ EventPointMap::iterator event_b = events.find(point_b);
if(event_a == events.end() || event_b == events.end())
{
@@ -1113,7 +1118,7 @@
point.m_x = shape->CellsSRC[visSectionObject][visRowXForm1D][vis1DBeginX]->Result[0];
point.m_y = shape->CellsSRC[visSectionObject][visRowXForm1D][vis1DBeginY]->Result[0];
// find event at the point
- MessageEventPointMap::iterator event = events.find(point);
+ EventPointMap::iterator event = events.find(point);
if(event != events.end())
{
@@ -1138,7 +1143,7 @@
point.m_x = shape->CellsSRC[visSectionObject][visRowXForm1D][vis1DBeginX]->Result[0];
point.m_y = shape->CellsSRC[visSectionObject][visRowXForm1D][vis1DBeginY]->Result[0];
// find event at the point
- MessageEventPointMap::iterator event = events.find(point);
+ EventPointMap::iterator event = events.find(point);
if(event != events.end())
{
Modified: branches/conditions/src/view/visio/addon/extract.h
===================================================================
--- branches/conditions/src/view/visio/addon/extract.h 2013-05-25 17:20:58 UTC (rev 1814)
+++ branches/conditions/src/view/visio/addon/extract.h 2013-05-25 17:54:57 UTC (rev 1815)
@@ -162,7 +162,7 @@
// event at given page coordinates
// contains the sematically first event, if multiple events are attached
- typedef std::map<SPoint,MessageEventPtr> MessageEventPointMap;
+ typedef std::map<SPoint,EventPtr> EventPointMap;
typedef std::map<long,MscMessagePtr> MscMessageMap;
typedef std::map<long,TimeRelationEventPtr> TimeRelationEventMap;
@@ -179,7 +179,7 @@
}
//! process the given coregion and build a relevant CoregionArea
- CoregionAreaPtr create_coregion_area(MessageEventPointMap& events, const MscMessageMap& messages,
+ CoregionAreaPtr create_coregion_area(EventPointMap& events, const MscMessageMap& messages,
Visio::IVShapePtr coregion);
struct SStrictOrder
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <ob...@us...> - 2013-05-25 17:21:01
|
Revision: 1814
http://sourceforge.net/p/scstudio/code/1814
Author: obouda
Date: 2013-05-25 17:20:58 +0000 (Sat, 25 May 2013)
Log Message:
-----------
removed an unused EventRecognizer class
Modified Paths:
--------------
branches/conditions/src/check/pseudocode/utils.h
Modified: branches/conditions/src/check/pseudocode/utils.h
===================================================================
--- branches/conditions/src/check/pseudocode/utils.h 2013-05-25 17:18:31 UTC (rev 1813)
+++ branches/conditions/src/check/pseudocode/utils.h 2013-05-25 17:20:58 UTC (rev 1814)
@@ -100,16 +100,6 @@
}
};
-class EventRecognizer
-{
-public:
-
- static bool is_matched_receive(MessageEvent* e)
- {
- return e->is_matched() && e->is_receive();
- }
-};
-
/**
* \brief Handles visual closure on bmsc
* Init DFSEventsTraverser, TopologicalOrderListener
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|