diff options
Diffstat (limited to 'macros/latex/contrib/msc/manual.tex')
-rw-r--r-- | macros/latex/contrib/msc/manual.tex | 2841 |
1 files changed, 0 insertions, 2841 deletions
diff --git a/macros/latex/contrib/msc/manual.tex b/macros/latex/contrib/msc/manual.tex deleted file mode 100644 index d6025770fe..0000000000 --- a/macros/latex/contrib/msc/manual.tex +++ /dev/null @@ -1,2841 +0,0 @@ -% file: manual.tex -% Copyright 2008 V. Bos, T. van Deursen, and S. Mauw -% This file is part of the MSC Macro Package. -% -\documentclass[12pt,a4paper]{article} -\usepackage{a4wide} -\usepackage{url} -\usepackage{moreverb} -\usepackage{multicol} -\usepackage{msc} - -% we allow a ragged right -\setlength{\rightskip}{0pt plus 0.05\linewidth minus 0pt} - - - - - -\newlength{\rpwidth} -\setlength{\rpwidth}{.5cm} -\newlength{\rpheight} -\setlength{\rpheight}{0.5\levelheight} -\newcommand{\rpN}{% - \psframe(-0.5\rpwidth,-\rpheight)(0.5\rpwidth,0\rpheight)% - \rput[B](0\rpwidth,-0.8\rpheight){\tiny \textsc{n}}% - \pscircle[fillstyle=solid,fillcolor=black](0\rpwidth,0\rpheight){.5\labeldist}% -} -\newcommand{\rpNE}{% - \psframe(-\rpwidth,-\rpheight)(0\rpwidth,0\rpheight)% - \rput[B](-.5\rpwidth,-0.8\rpheight){\tiny \textsc{ne}}% - \pscircle[fillstyle=solid,fillcolor=black](0\rpwidth,0\rpheight){.5\labeldist}% -} -\newcommand{\rpE}{% - \psframe(-\rpwidth,-.5\rpheight)(0\rpwidth,.5\rpheight)% - \rput[B](-.5\rpwidth,-0.3\rpheight){\tiny \textsc{e}}% - \pscircle[fillstyle=solid,fillcolor=black](0\rpwidth,0\rpheight){.5\labeldist}% -} -\newcommand{\rpSE}{% - \psframe(-\rpwidth,0\rpheight)(0\rpwidth,\rpheight)% - \rput[B](-.5\rpwidth,0.2\rpheight){\tiny \textsc{se}}% - \pscircle[fillstyle=solid,fillcolor=black](0\rpwidth,0\rpheight){.5\labeldist}% -} -\newcommand{\rpS}{% - \psframe(-.5\rpwidth,\rpheight)(.5\rpwidth,0\rpheight)% - \rput[t](0\rpwidth,0.8\rpheight){\tiny \textsc{s}}% - \pscircle[fillstyle=solid,fillcolor=black](0\rpwidth,0\rpheight){.5\labeldist}% -} -\newcommand{\rpSW}{% - \psframe(0\rpwidth,0\rpheight)(\rpwidth,\rpheight)% - \rput[B](.5\rpwidth,0.2\rpheight){\tiny \textsc{sw}}% - \pscircle[fillstyle=solid,fillcolor=black](0\rpwidth,0\rpheight){.5\labeldist}% -} -\newcommand{\rpW}{% - \psframe(0\rpwidth,-.5\rpheight)(\rpwidth,.5\rpheight)% - \rput[B](.5\rpwidth,-0.3\rpheight){\tiny \textsc{w}}% - \pscircle[fillstyle=solid,fillcolor=black](0\rpwidth,0\rpheight){.5\labeldist}% -} -\newcommand{\rpNW}{% - \psframe(0\rpwidth,-\rpheight)(\rpwidth,0\rpheight)% - \rput[B](.5\rpwidth,-0.8\rpheight){\tiny \textsc{nw}}% - \pscircle[fillstyle=solid,fillcolor=black](0\rpwidth,0\rpheight){.5\labeldist}% -} - - - - - -% The following code is taken from the doc package. It defines a global -% macro \bslash that produces a bslash (if present in the current font). -\makeatletter -{\catcode`\|=\z@ \catcode`\\=12 |gdef|bslash{\}} -\makeatother -\newcommand{\cmd}[1]{\texttt{\bslash #1}} - -\newcommand{\acro}[1]{{#1}} - -\newcommand{\MSC}{\acro{MSC}} -\newcommand{\HMSC}{\acro{HMSC}} -\newcommand{\MSCdoc}{\MSC{}doc} -\newcommand{\mscpack}{\MSC{} macro package} - -\newcommand{\env}[1]{\texttt{#1}} -\newcommand{\opt}[1]{[#1]} -\newcommand{\cmdarg}[1]{\{\emph{#1}\}} -\newcommand{\coordarg}[1]{\emph{#1}} -\newcommand{\coordargs}[2]{(\coordarg{#1},\coordarg{#2})} -\newcommand{\lnsvalue}[3]{large/normal/small value #1/#2/#3} - -\newenvironment{defs}{% - \begin{list}{}% - {\setlength{\labelwidth}{0pt}% - \setlength{\labelsep}{1em}% - \setlength{\leftmargin}{1em}% - \setlength{\parsep}{1ex}% - \setlength{\listparindent}{0pt}% - \setlength{\rightmargin}{0pt}% - \renewcommand{\makelabel}[1]{##1}% - \raggedright% - }% - }{% - \end{list}} - - - -\title{ - A \LaTeX\ macro package for Message Sequence Charts\\{\large User Manual} -} - -\author{ - \begin{tabular}{c} - \begin{tabular}{ccc} - Victor Bos & - Ton van Deursen & - Sjouke Mauw \\ - & - \scriptsize Universit\'e du Luxembourg & - \scriptsize Universit\'e du Luxembourg \\[-0.8ex] - \scriptsize \texttt{victor.bos@ssf.fi} & - \scriptsize \texttt{ton.vandeursen@uni.lu} & - \scriptsize \texttt{sjouke.mauw@uni.lu} - \end{tabular}\\ - \end{tabular} -} - -\date{\small Version \mscversion, last update \today\\ - Describing \mscpack{} version \mscversion} - -\begin{document} - - -\maketitle - -\begin{abstract} -\noindent -The \mscpack{} facilitates the \LaTeX\ user to easily include -Message Sequence Charts in his texts. This document describes the -design and use of the \mscpack. -\end{abstract} - -\tableofcontents -\section{New} -\label{new} - -\paragraph{Version~1.16} solves a bug that was due to a change in -syntax of the \verb+scalebox+ macro in the \verb+PSTricks+ package. - -The \verb+action+ and \verb+condition+ macros are extended with a -starred option. The starred version of the macros automatically -adjusts the size of the rectangle and hexagon based on the size of the -contents. - -\paragraph{Version~1.13} has a reimplementation of message commands in MSC -diagrams. The affected commands are: \verb+\create+, \verb+\found+, -\verb+\lost+, \verb+\mess+, and \verb+\order+. The new implementation -provides more control over the placement of message labels. - -The command \verb+\selfmesslabelpos+ has been removed. - -The bounding box bug has been partly solved. Now, a white \verb+\fbox+ -is drawn around every (msc, mscdoc, hmsc) diagram. This makes it -possible for \texttt{dvips -E} to compute the correct bounding box for -the diagrams. Due to the \verb+\fbox+, each diagram is extended with -0.3pt on each side (left, top, right, and bottom). This bugfix fails -if the background is not white. The xdvi program shows the white -\verb+\fbox+ in black with the result that diagrams have two visible -frames. This seems to be a bug of xdvi. - -The lines around comments (\verb+\msccomment+, Section~\ref{comments}) -are changed from gray into black. The reason for this is that the gray -lines became invisible after converting the document to HTML. - -\paragraph{Version~1.12} is a non-public version. It features a preliminary -implementation of message label position control. - -\paragraph{Version~1.11} is a mainly a bugfix of version~1.10a, see~\cite{BM02b}. -The next list shows the new features of version~1.10a compared to -version 1.4. - -\begin{itemize} -\item Support for method replies (dashed message arrows):\cmd{mess*} (Section~\ref{messages}) -\item Fat instances, i.e., double line instances (Section~\ref{instances}) -\item Comments (Section~\ref{comments}) -\item Coregions are now special cases of regions (which includes also -activation and suspension regions). The \cmd{coregionstart} and -\cmd{coregionend} commands are obsolete and the \cmd{coregionbarwidth} -is replaced by \cmd{regionbarwidth}. -\item Gates (Section~\ref{gates}) -\item High-level \MSC{}'s (Section~\ref{hmsc}) -\item \cmd{inlinestart} has additional optional argument to allow for different left and right overlap (Section~\ref{inlines}) -\item \MSCdoc{}s (Section~\ref{mscdoc}) -\item Reference manual~\cite{BM02} -\item \cmd{referencestart} has additional optional argument to allow for different left and right overlap (Section~\ref{references}) -\item Regions: generalization of coregions supporting activations, suspension, and coregions (Section~\ref{regions}) -\item Time measurements (Section~\ref{measurements}) -\end{itemize} - - -\section{Introduction} -\label{introduction} - -The \MSC{} language is a visual language for the description of the -interaction between different components of a system. -This language is standardized by the ITU (International -Telecommunication Union) in Recommendation Z.120~\cite{z120}. An -introductory text on \MSC{} can be found -in~\cite{RudolphGrabowskiGraubmann96}. \MSC{}s have a -wide application domain, ranging from requirements specification to -testing and documentation. -An example of a Message Sequence Chart is in Figure~\ref{quick}. - -In order to support easy drawing of \MSC{}s in \LaTeX\ documents, we have -developed the \mscpack. The current version of the \mscpack{} -supports the following \MSC{} constructs: \MSC{} frame, instances (both -single line width and double line width), messages (including -self-messages and messages to the environment), actions, singular and -combined timer events (set, timeout, reset, set-timeout, set-stop), -lost and found messages, generalized order, conditions, coregions, -activation regions, suspension regions, gates, instance creation, -instance stop, time measurements, references, and inline -expressions. In addition, there is support for \HMSC{}'s (high-level -\MSC{}s) and \MSCdoc{}s. - -In this manual we explain the design and the use of the \mscpack. For -a complete overview of all features, we refer to the reference -manual~\cite{BM02}, which is included in the distribution under the -name \verb+refman.ps+. Another way to learn how to use the \mscpack{} -is to have a look at the \LaTeX{} source code of the manual and the -source code of the reference manual. They are included in the -distribution under the names \verb+manual.tex+ and \verb+refman.tex+, -respectively. The \MSC{} constructs are simply introduced as -syntactic constructs. This paper is not meant to describe their use or -meaning. - -We list the backgrounds of the package and some design decisions in -Section~\ref{background}. -Section~\ref{install} contains notes on installing the -package. Section~\ref{quickstart} contains an example of using the -package. It allows the impatient reader to quickly start using the -package. The details of using the package are explained in -Section~\ref{use}. In Section~\ref{parameters} the parameters are -explained which determine detailed layout of the various symbols. -A large but meaningless example is given in -Section~\ref{example}. - - -\section{Background and motivation} -\label{background} -Several commercial and non-commercial tools are available, which -support drawing or generating Message Sequence Charts. However, these -tools are in general not freely available and often not flexible -enough to satisfy all user's wishes with respect to the layout and -graphical appearance of an \MSC{}. -Therefore, people often use general drawing tools, such as {\em xfig} -to draw \MSC{}s. However flexible this approach is, it takes quite some -effort to produce nice \MSC{} drawings in a tool which is not dedicated -to \MSC{}s. Furthermore, when drawing a number of \MSC{}s it requires some -preciseness in order to obtain a consistent set of \MSC{}s. - -For these reasons, we have started the design of a set of -\LaTeX\ macros which support the drawing of \MSC{}s. In this way, an \MSC{} can be -represented in \LaTeX\ in a textual format and compiled into -e.g.\ PostScript. - -We aimed at satisfying the following requirements and design -decisions. -\begin{itemize} -\item -The package should follow the ITU standard with respect to shape and -placement of the symbols. (The current version supports -the \MSC2000 standard.) -\item -Static and dynamic semantics are not considered. The user is allowed -to violate all semantical restrictions and draw inconsistent \MSC{}s. -The package only supports elementary syntactical requirements. -\item -The package should offer functionality at the right level of -abstraction. Rather than supplying coordinates of pixels, the -user should be able to express the placement of symbols in terms of -{\em levels}. -Nevertheless, the textual representation of \MSC{}s as defined by the ITU -standard has a level of abstraction which is too high for our purposes. -It lacks information about the actual positioning of the \MSC{} symbols, -while we think that in our package this should be under user control. -\item -There should be only minimal automatic restructuring and layout of the -\MSC{} (e.g.\ the relative positioning of two messages should be as -defined by the user, even if the messages are not causally ordered). -\item -The user can customize the appearance of the \MSC{}s by manipulating -an appropriate set of parameters. -\end{itemize} - -\section{Installation, copyright and system requirements} -\label{install} - -The \mscpack{} is still under development. The authors -appreciate any comments and suggestions for improvements. The most -recent version of the package can be downloaded from -\url{http://satoss.uni.lu/mscpackage/}. - - -The \mscpack{} has a \emph{LaTeX Project Public License} -(LPPL), see~\url{http://www.latex-project.org/lppl.txt}: -{\small -\verbatiminput{COPYRIGHT} -} As such, it is free of charge and can be freely -distributed. Furthermore, it is allowed to make modifications to the -package, provided that modified versions get different names. The -authors accept no liability with respect to the functioning of the -package. - -The \mscpack{} runs with \LaTeXe. It has been tested with \LaTeXe\ -version dated 1998/06/01 using \TeX\ version 3.14159. The following -additional packages are required: \textsf{pstricks}, \textsf{calc}, -\textsf{ifthen}, and \textsf{color}. These packages are in general -part of the standard \LaTeXe\ distribution. These additional packages -can be obtained from the {\em ctan} database for \LaTeX\, e.g.\ via -the following URL: \url{http://www.tex.ac.uk/}. The \textsf{pstricks} -package is described in~\cite[Chapter~4]{GSM97}. The generated output -can only be previewed with recent previewing software (e.g.\ xdvi -version 20c). It may be needed to update all \LaTeX\ related software -to a more recent version in order to smoothly work with the \mscpack. - -The \mscpack{} can be installed easily. Just put the file -\verb+msc.sty+ in a directory which is searched by \LaTeX{} for style -files. The set of directories actually searched depends on the \TeX\ -installation, but often the {\em current directory} is included. UNIX -users may have to set the environment variable \texttt{\$TEXINPUTS} to -an appropriate value. For more details on this topic consult -documentation of your \TeX\ installation. - -%The following text is currently not applicable -sm -% -%A problem may occur when using more packages than the \MSC{} macro -%package in your \LaTeX\ document. This happens, e.g.\ when using the -%{\em epsfig} package. These problems are due to the combination of -%several packages which are required (but not provided) by the \MSC{} -%macro package. The solution is to change the order of the -%\verb+usepackage+ clauses. - -\section{Quick start} -\label{quickstart} -The \mscpack{} is easy to use. -Below is an example of the use of the package and -Figure~\ref{quick} shows the generated \MSC{}. - -{\small -\begin{verbatim} -\documentclass{article} -\usepackage{msc} -\begin{document} - -\begin{msc}{Example} - -\declinst{usr}{User}{} -\declinst{m1}{Machine 1}{control} -\declinst{m2}{Machine 2}{drill} -\declinst{m3}{Machine 3}{test} - -\mess{startm1}{usr}{m1} -\nextlevel -\mess{startm2}{m1}{m2} -\nextlevel -\mess{continue}{m2}{m3} -\mess{log}{m1}{envleft} -\nextlevel -\mess{output}{m3}{usr}[2] -\nextlevel -\mess{free}{m1}{usr} -\nextlevel - -\end{msc} - -\end{document} - -\end{verbatim} -} - -\begin{figure}[htb] -\begin{center} - -\begin{msc}{Example} - -\declinst{usr}{User}{} -\declinst{m1}{Machine 1}{control} -\declinst{m2}{Machine 2}{drill} -\declinst{m3}{Machine 3}{test} - -\mess{startm1}{usr}{m1} -\nextlevel -\mess{startm2}{m1}{m2} -\nextlevel -\mess{continue}{m2}{m3} -\mess{log}{m1}{envleft} -\nextlevel -\mess{output}{m3}{usr}[2] -\nextlevel -\mess{free}{m1}{usr} -\nextlevel - -\end{msc} - -\end{center} -\caption{The generated \MSC{}} -\label{quick} -\end{figure} - -The \mscpack{} is activated by the clause -\verb+\usepackage{msc}+. -This package contains, among others, a -definition of the environment \verb+msc+. -This environment is used to draw \MSC{}s. The \MSC{} definition is surrounded by -the clauses \verb+\begin{msc}{Example}+ and \verb+\end{msc}+. The name of -the \MSC{}, {\tt Example}, is displayed in the upper-left corner of the -\MSC{}. - -The next four lines define the \emph{instances}: -\verb+\declinst{m1}{Machine 1}{control}+ defines an instance with -\emph{nickname} \verb+m1+ and a description consisting of two parts, -namely, \verb+Machine 1+ and \verb+control+. The nickname is used in -all subsequent references to this instance. The first part of the -description is drawn above the rectangular instance head symbol, and -the second part of the description is drawn inside the instance head -symbol. - -The following lines contain the definitions of the messages. Every -message has a source and a destination instance. The clause -\verb+\mess{startm1}{usr}{m1}+ defines a message with name {\tt -startm1}, which goes from instance {\tt usr} to instance {\tt m1}. - -In order to control the vertical placement of the messages, the \MSC{} is -divided into levels. At every level, any number of messages may start. -The vertical position of the end point of a message is determined -by the optional fourth argument of the message definition, as in the -clause \verb+\mess{output}{m2}{user}[2]+. -This argument is the vertical offset (in number of levels) between the -start point of the message (i.e.\ the current level) and its end point. -If the value is 0 the message is drawn horizontally. A negative offset -means that the arrow has an upward slope. - -The clause \verb+\nextlevel+ is used to advance to the next level. - -\section{Use of the \mscpack} -\label{use} - -\subsection{The \MSC{} frame} -\label{mscframe} -The \verb+msc+ environment is used for making \MSC{} definitions. Thus, such a -definition looks as follows. - -\begin{verbatim} -\begin{msc}[headerpos]{mscname} -...definition of the MSC... -\end{msc} -\end{verbatim} - -This draws the frame and the header of the \MSC{}. -The argument \verb+mscname+ is the name of the \MSC{}. -The header of an \MSC{} is formed from the keyword \verb+msc+, followed -by the \verb+mscname+. Positioning of this header is controlled by -the optional argument \verb+headerpos+. This argument can have values -\verb+l+ (for a left aligned header), \verb+c+ (for a centered header) -and \verb+r+ (for a right aligned header). -The default value of \verb+headerpos+ is \verb+l+. - -The size of the \MSC{} frame is determined vertically by the number of levels -occurring in the \MSC{} (see Section~\ref{levels}) and horizontally by -the number of instances (see Section~\ref{instances}). - -The parameter \verb+\topnamedist+ controls the distance between the -top of the \MSC{} frame and the header (see Section~\ref{parameters}). -The parameter \verb+\leftnamedist+ controls the distance between the -left of the \MSC{} frame and the header if the \verb+headerpos+ is -\verb+l+ and it controls the distance between the right of the \MSC{} -frame and the header if \verb+headerpos+ is \verb+r+ (see -Section~\ref{parameters}). - -\subsection{Levels} -\label{levels} -An \MSC{} is vertically divided in {\em levels}. All events in an \MSC{} are -attached to a certain level, or stretch out over several levels. -Any number of events can be drawn at a certain level. -An event will always be drawn (or started) at the current level, unless a level -offset is specified (see e.g.\ the \verb+\mess+ command in -Section~\ref{messages}). The level offset is an integer number, which -denotes at which level, relative to the current level, an event should -be drawn. -Drawing starts at level 0. -The following command is used to advance to the next level. -\begin{verbatim} -\nextlevel[leveloffset] -\end{verbatim} - -The \verb+leveloffset+ is an integer value which denotes the number of -levels to advance. By default, the value of \verb+leveloffset+ is 1, -which means drawing continues at the next level. Setting -\verb+leveloffset+ to a negative value may result in unexpected -drawings, however, see the \emph{Tricks} section in the reference -manual~\cite{BM02}. - -There are three parameters which control the size of the levels (see -Section~\ref{parameters}). These are \verb+\firstlevelheight+ (the -distance between the instance start symbol and the first level), -\verb+\levelheight+ (the distance between two consecutive levels), and -\verb+\lastlevelheight+ (the distance between the last level and the -instance end symbol). Figure~\ref{parametersfig} on -page~\pageref{parametersfig} shows all lengths of the \mscpack. - -\subsection{Instances} -\label{instances} -All instances have to be declared before they can be used. An instance -consists of an instance head symbol with an associated name, an -instance axis and an instance end symbol. Normal instances have a -single line axis. Fat instances have a double line axis. The order of -the instance declarations determines the order in which the instances -occur in the drawing. - -An instance is declared with the following command. - -\begin{verbatim} -\declinst(*){nickname}{instancenameabove}{instancenamewithin} -\end{verbatim} - -The starred version produces a fat instance. -The \verb+nickname+ is used for referring to this instance in the rest of the -\MSC{} definition. -The \verb+instancenameabove+ is put above the instance head symbol. -The \verb+instancenamewithin+ is put inside the instance head symbol. - -Several parameters allow the user to customize the shape and -positioning of instances (see Section~\ref{parameters}). These are -\verb+\topheaddist+ (the distance between the top of the \MSC{} and the -instance head symbol), \verb+\instheadheight+ (the height of the -instance head symbol), \verb+\instfootheight+ (the height of the -instance foot symbol), \verb+\bottomfootdist+ (the distance between -the instance foot symbol and the bottom of the \MSC{} frame), -\verb+\instwidth+ (the width of the instance head and foot symbols), -\verb+\instdist+ (the distance between two instance axes), -\verb+\envinstdist+ (the distance between the edge of the \MSC{} and the -first/last instance axis), and \verb+\labeldist+ (the distance between -the instance head symbol and the part of the instance name drawn above -the head symbol). The command \verb+\setfootcolor{color}+ sets the -fill color of the footer symbol. Valid color values are, e.g., -\texttt{black} (default), \texttt{white}, and \texttt{gray}. - -The following \MSC{} shows the declaration of an \MSC{} with three -instances. The first and the last are normal instances (one line axis) -whereas the second is a fat instance (double line axis). The second -line, \verb+\setmscvalues{small}+, indicates that the small drawing -style should be used (see Section~\ref{parameters}). - -\medskip - -\begin{minipage}[c]{0.4\linewidth} -\begin{msc}[l]{instances} -\setmscvalues{small} - -\declinst{i}{above}{within} -\declinst*{j}{}{j} -\declinst{k}{k}{} - -\end{msc} -\end{minipage} -% -\begin{minipage}[c]{0.5\linewidth} -{\small -\begin{verbatim} -\begin{msc}{instances} -\setmscvalues{small} - -\declinst{i}{above}{within} -\declinst*{j}{}{j} -\declinst{k}{k}{} - -\end{msc} -\end{verbatim} -} -\end{minipage} - - -\subsection{Messages} -\label{messages} -A message is denoted by an arrow from the sending instance to the -receiving instance. The instances are referred to by their nicknames. -A message is defined with the following command. - -\begin{verbatim} -\mess(*)[pos]{name}[labelpos]{sender}[placement]{receiver}[leveloffset] -\end{verbatim} -The \verb+name+ of the message may be any string. The \mscpack{} -processes the \verb+name+ argument in LR-mode, -see~\cite[page~36]{Lam94}. This means that the string will consist of -one line. To generate multi-line message names, use the standard -\cmd{parbox} command, see the \emph{Tricks} section in the reference -manual~\cite{BM02}. By default, the name of a message label is drawn -above the center of the arrow, but the optional parameters \verb+pos+, -\verb+labelpos+, and \verb+placement+ influence the actual location, -as described below. The arrow starts at the current level at the -sending instance. The arrow ends at the current level plus the -\verb+leveloffset+, at the receiving instance. The \verb+leveloffset+ -is an optional integer argument with default value 0. The -\verb+sender+ and \verb+receiver+ should be the nicknames of declared -instances. - -In case the sending and the receiving instance are the same, the -message is a \emph{self message}. A self message is drawn as a -polyline connecting the instance axis to itself. - -The starred version of the command, \verb+\mess*+, produces the same -result as \verb+\mess+, except that the arrow is drawn with a dashed -line. This can be used to draw a {\em method reply} (see~\cite{z120}). - -As mentioned above, placement of the message and its label is -controlled by the optional parameters \verb+pos+, \verb+labelpos+, and -\verb+placement+. In case of a self message, \verb+pos+ denotes the -position of the arrow with respect to the instance axis. Valid values -are \verb+l+ (left) and \verb+r+ (right). The default value is -\verb+l+. In case of a non-self message, the \verb+pos+ parameter is -ignored. - -Whereas the \verb+pos+ parameter defines the position of the arrow -symbol with respect to the instance axis, the \verb+labelpos+ -parameter defines the position of the message label with -respect to the message arrow. In case of a self message, valid values -for \verb+labelpos+ are \verb+l+ (left) and~\verb+r+ (right). The -default value is equal to the, possibly user defined, value of the -\verb+pos+ parameter. In case of a non-self message, valid values for -\verb+labelpos+ are \verb+t+ (on top) and~\verb+b+ (below). The -default value is~\verb+t+. - -Finally, the \verb+placement+ parameter defines the relative distance -of the message label to the beginning of the message. Valid values are -real numbers in the closed interval $[0,1]$. The default value -is~$0.5$. While drawing a message, the \mscpack{} computes the -coordinates of the message label using \verb+placement+ and the length -and coordinates of the arrow. It then computes a \emph{reference -point} for the message label and places it on the coordinates just -computed. Figures \ref{fig:refpoints} (page~\pageref{fig:refpoints}) -and~\ref{fig:refpoints:B} (page~\pageref{fig:refpoints:B}) -schematically show the reference points for message labels. In the -first figure, the labels are located at the default position. In the -second figure, all labels are shifted along the arrow by setting -$\verb+placement+ = 0.9$. The \verb+\lost+ and \verb+\found+ commands -(Section~\ref{lostfound}) and the \verb+\create+ -(Section~\ref{createstop}) command use the same method to determine -reference points and message label locations. Note that the boxes with -the location of the reference points are not generated by the \LaTeX{} -code given in Figures \ref{fig:refpoints} and~\ref{fig:refpoints:B}; -we enriched the \LaTeX{} code with some extra \textsf{pstricks} code -(see \LaTeX{} source code of this document). - -In addition to label position control, there are three ways to control -the shape of messages (see Section~\ref{parameters}). These are: -\verb+\selfmesswidth+ (a parameter to specify the width of the -polyline used for drawing self-messages), \verb+\labeldist+ (a -parameter to specify the distance between the label of a message and -the message arrow), and \verb+\messarrowscale{size}+ (a command to set -the size of the arrow head of a message). \verb+size+ should be -positive real number. - -Messages to or from the environment (i.e.\ the left or the right side -of the \MSC{} frame) can be -specified by setting the sender or the receiver argument to one of the values -\verb+envleft+ or \verb+envright+. (Note: Since instances and -environments are treated equally in the implementation, at every position -where the nickname of an instance is required, also -\verb+envleft+ and \verb+envright+ are allowed.) - -The following \MSC{} shows an example of the use of messages. -In this sample \MSC{} and the following \MSC{}s in this section we will -not list the complete textual representations of the \MSC{}s. For brevity -we omit the environment call and the declarations of the instances. -Note the final \verb+\nextlevel+ command which is needed -to make the instance axis long enough to receive message -\verb+a+. - -\medskip - -\begin{minipage}[c]{0.4\linewidth} -\begin{msc}{messages} -\setmscvalues{small} -\setlength{\topheaddist}{0.8cm} - -\declinst{i}{}{i} -\declinst{j}{}{j} -\declinst{k}{}{k} - -\mess{a}{j}{i}[3] -\mess{self}{i}{i} -\nextlevel -\mess*{b}{j}{k} -\mess[b]{c}{k}{envright} -\nextlevel -\mess{d}{k}[.6]{i} -\nextlevel - -\end{msc} -\end{minipage} -% -\begin{minipage}[c]{0.5\linewidth} -{\small -\begin{verbatim} -\mess{a}{j}{i}[3] -\mess{self}{i}{i} -\nextlevel -\mess*{b}{j}{k} -\mess[b]{c}{k}{envright} -\nextlevel -\mess{d}{k}[.6]{i} -\nextlevel -\end{verbatim} -} -\end{minipage} - -\begin{figure}[htb] -\begin{minipage}{\linewidth} -\setmscvalues{small} -\begin{multicols}{2} -\begin{msc}{Label reference points} -\declinst{m0}{I0}{} -\declinst{m1}{I1}{} -\declinst{m2}{I2}{} -\nextlevel - -\mess{\rpS}{m0}{m1} -\nextlevel -\mess{\rpN}[b]{m1}{m2} -\nextlevel[2] - -\mess{\rpS}{m1}{m0} -\nextlevel -\mess{\rpN}[b]{m2}{m1} -\nextlevel[2] - -\mess{\rpE}{m0}{m0}[2] -\mess[r]{\rpW}{m2}{m2}[2] -\nextlevel[4] -\mess{\rpW}[r]{m0}{m0}[2] -\mess[r]{\rpE}[l]{m2}{m2}[2] -\nextlevel[6] - -\mess{\rpE}{m0}{m0}[-2] -\mess[r]{\rpW}{m2}{m2}[-2] -\nextlevel[4] -\mess{\rpW}[r]{m0}{m0}[-2] -\mess[r]{\rpE}[l]{m2}{m2}[-2] -\nextlevel[2] - -\mess{\rpSW}{m0}{m1}[2] -\mess{\rpNE}[b]{m1}{m2}[2] -\nextlevel[6] - -\mess{\rpSW}{m1}{m0}[-2] -\mess{\rpNE}[b]{m2}{m1}[-2] -\nextlevel[2] - -\mess{\rpSE}{m1}{m0}[2] -\mess{\rpNW}[b]{m2}{m1}[2] -\nextlevel[6] - -\mess{\rpSE}{m0}{m1}[-2] -\mess{\rpNW}[b]{m1}{m2}[-2] -\nextlevel[2] -\end{msc} -\bigskip - -\scriptsize -\begin{verbatim} -\begin{msc}{Label reference points} -\declinst{m0}{I0}{} -\declinst{m1}{I1}{} -\declinst{m2}{I2}{} -\nextlevel - -\mess{S}{m0}{m1} -\nextlevel -\mess{N}[b]{m1}{m2} -\nextlevel[2] - -\mess{S}{m1}{m0} -\nextlevel -\mess{N}[b]{m2}{m1} -\nextlevel[2] - -\mess{E}{m0}{m0}[2] -\mess[r]{W}{m2}{m2}[2] -\nextlevel[4] -\mess{W}[r]{m0}{m0}[2] -\mess[r]{E}[l]{m2}{m2}[2] -\nextlevel[6] - -\mess{E}{m0}{m0}[-2] -\mess[r]{W}{m2}{m2}[-2] -\nextlevel[4] -\mess{W}[r]{m0}{m0}[-2] -\mess[r]{E}[l]{m2}{m2}[-2] -\nextlevel[2] - -\mess{SW}{m0}{m1}[2] -\mess{NE}[b]{m1}{m2}[2] -\nextlevel[6] - -\mess{SW}{m1}{m0}[-2] -\mess{NE}[b]{m2}{m1}[-2] -\nextlevel[2] - -\mess{SE}{m1}{m0}[2] -\mess{NW}[b]{m2}{m1}[2] -\nextlevel[6] - -\mess{SE}{m0}{m1}[-2] -\mess{NW}[b]{m1}{m2}[-2] -\nextlevel[2] -\end{msc} -\end{verbatim} -\end{multicols} -\end{minipage} -\caption{Reference points of message labels} -\label{fig:refpoints} -\end{figure} - - -\begin{figure}[htb] -\begin{minipage}{\linewidth} -\setmscvalues{small} -\begin{multicols}{2} -\begin{msc}{Label reference points (2)} -\declinst{m0}{I0}{} -\declinst{m1}{I1}{} -\declinst{m2}{I2}{} -\nextlevel - -\mess{\rpS}{m0}[.9]{m1} -\nextlevel -\mess{\rpN}[b]{m1}[.9]{m2} -\nextlevel[2] - -\mess{\rpS}{m1}[.9]{m0} -\nextlevel -\mess{\rpN}[b]{m2}{m1} -\nextlevel[2] - -\mess{\rpE}{m0}[.9]{m0}[2] -\mess[r]{\rpW}{m2}[.9]{m2}[2] -\nextlevel[4] -\mess{\rpW}[r]{m0}[.9]{m0}[2] -\mess[r]{\rpE}[l]{m2}[.9]{m2}[2] -\nextlevel[6] - -\mess{\rpE}{m0}[.9]{m0}[-2] -\mess[r]{\rpW}{m2}[.9]{m2}[-2] -\nextlevel[4] -\mess{\rpW}[r]{m0}[.9]{m0}[-2] -\mess[r]{\rpE}[l]{m2}[.9]{m2}[-2] -\nextlevel[2] - -\mess{\rpSW}{m0}[.9]{m1}[2] -\mess{\rpNE}[b]{m1}[.9]{m2}[2] -\nextlevel[6] - -\mess{\rpSW}{m1}[.9]{m0}[-2] -\mess{\rpNE}[b]{m2}[.9]{m1}[-2] -\nextlevel[2] - -\mess{\rpSE}{m1}[.9]{m0}[2] -\mess{\rpNW}[b]{m2}[.9]{m1}[2] -\nextlevel[6] - -\mess{\rpSE}{m0}[.9]{m1}[-2] -\mess{\rpNW}[b]{m1}[.9]{m2}[-2] -\nextlevel[2] -\end{msc} -\bigskip - -\scriptsize -\begin{verbatim} -\begin{msc}{Label reference points (2)} -\declinst{m0}{I0}{} -\declinst{m1}{I1}{} -\declinst{m2}{I2}{} -\nextlevel - -\mess{S}{m0}[.9]{m1} -\nextlevel -\mess{N}[b]{m1}[.9]{m2} -\nextlevel[2] - -\mess{S}{m1}[.9]{m0} -\nextlevel -\mess{N}[b]{m2}{m1} -\nextlevel[2] - -\mess{E}{m0}[.9]{m0}[2] -\mess[r]{W}{m2}[.9]{m2}[2] -\nextlevel[4] -\mess{W}[r]{m0}[.9]{m0}[2] -\mess[r]{E}[l]{m2}[.9]{m2}[2] -\nextlevel[6] - -\mess{E}{m0}[.9]{m0}[-2] -\mess[r]{W}{m2}[.9]{m2}[-2] -\nextlevel[4] -\mess{W}[r]{m0}[.9]{m0}[-2] -\mess[r]{E}[l]{m2}[.9]{m2}[-2] -\nextlevel[2] - -\mess{SW}{m0}[.9]{m1}[2] -\mess{NE}[b]{m1}[.9]{m2}[2] -\nextlevel[6] - -\mess{SW}{m1}[.9]{m0}[-2] -\mess{NE}[b]{m2}[.9]{m1}[-2] -\nextlevel[2] - -\mess{SE}{m1}[.9]{m0}[2] -\mess{NW}[b]{m2}[.9]{m1}[2] -\nextlevel[6] - -\mess{SE}{m0}[.9]{m1}[-2] -\mess{NW}[b]{m1}[.9]{m2}[-2] -\nextlevel[2] -\end{msc} -\end{verbatim} -\end{multicols} -\end{minipage} -\caption{Reference points of shifted message labels} -\label{fig:refpoints:B} -\end{figure} - - -\subsection{Comments} -\label{comments} - -Comments are additional texts to clarify (events on) an instance. The -following command can be used to add comments to an \MSC{} diagram. - -\begin{verbatim} -\msccomment[position]{text}{instname} -\end{verbatim} - -The \verb|instname| parameter defines the instance to which the -comment is attached. The text of the comment is specified by the -\verb|text| parameter and is processed in LR-mode. The \verb|position| -parameter defines the horizontal position of the comment relative to -its instance. Valid values of \verb|position| are \verb|l| (left), -\verb|r| (right), or any \LaTeX{} length. Its default value -is~\verb|l|. If the value of \verb|position| is \verb|l| -(or~\verb|r|), the comment will be placed \verb|\msccommentdist| units -to the left (or right) of the \verb|instname| instance. If -\verb|position| is a \LaTeX{} length, the comment will be placed -\verb|position| units from the \verb|instname| instance. A negative -length puts the comment to the left and a positive length puts the -comment to the right of the instance. - -The following diagram shows how to use comments. In this diagram, the -distance between the frame and the instances (\verb|\envinstdist|) is -doubled in order to fit the comments inside the frame. - -\medskip -\begin{minipage}[c]{0.4\linewidth} -\setmscvalues{small} -\begin{msc}{comments} -\setlength{\envinstdist}{2\envinstdist} -\declinst{i}{}{i} -\declinst{j}{}{j} -\mess{a}{i}{j}[2] -\msccomment{start}{i} -\nextlevel[2] -\msccomment[r]{end}{j} -\nextlevel -\end{msc} -\end{minipage} -% -\begin{minipage}[c]{0.54\linewidth} -{\small -\begin{verbatim} -\setlength{\envinstdist}{2\envinstdist} -\declinst{i}{}{i} -\declinst{j}{}{j} -\mess{a}{i}{j}[2] -\msccomment{start}{i} -\nextlevel[2] -\msccomment[r]{end}{j} -\nextlevel -\end{verbatim} -} -\end{minipage} - - - - -\subsection{Actions} -\label{actions} -An instance can perform an action, which is denoted by a rectangle. - -\begin{verbatim} -\action(*){name}{instance} -\end{verbatim} - -The action is attached at the current level to the \verb+instance+. -The \verb+name+ is centered inside the action symbol and is processed -in LR-mode. - -The following parameters determine the detailed drawing of the action -symbol (see Section~\ref{parameters}): -\verb+\actionwidth+ (the width of the action symbol), and -\verb+\actionheight+ (the height of the action symbol). - -The starred version of the command, \verb+\action*+, produces the same -result as \verb+\action+, except that the height and width of the -action symbol are adjusted to fit the contents of the rectangle. - -The next example shows that after an action often a multiple level -increment is needed to obtain nice pictures. - -\medskip - -\begin{minipage}[c]{0.4\linewidth} -\begin{msc}{action} -\setmscvalues{small} -%\setlength{\topheaddist}{0.8cm} - -\declinst{i}{}{i} -\declinst{j}{}{j} - -\mess{a}{j}{i} -\nextlevel -\action{doit}{i} -\nextlevel[2] -\mess{b}{i}{j} - -\end{msc} -\end{minipage} -% -\begin{minipage}[c]{0.5\linewidth} -{\small -\begin{verbatim} -\mess{a}{j}{i} -\nextlevel -\action{doit}{i} -\nextlevel[2] -\mess{b}{i}{j} -\end{verbatim} -} -\end{minipage} - - -\subsection{Timers} -\label{timers} -There are five commands to draw timer events. -\begin{verbatim} -\settimer[placement]{name}{instance} -\timeout[placement]{name}{instance} -\stoptimer[placement]{name}{instance} -\settimeout[placement]{name}{instance}[offset] -\setstoptimer[placement]{name}{instance}[offset] -\end{verbatim} - -Setting of a timer is drawn as a line connecting the \verb+instance+ -to the {\em hour glass} symbol. The \verb+name+ is put near this -symbol. A time-out is represented by an arrow from an -{\em hour glass} symbol to the \verb+instance+. Stopping a timer is -drawn as a line connecting the \verb+instance+ with the timer stop -symbol (denoted by a cross). -The command \verb+\settimeout+ is a combination of the setting of a -timer and a time out. The \verb+offset+ denotes the number of levels -between the two events. The default value for \verb+offset+ is 2. -Likewise, \verb+\setstoptimer+ is a combination -of the setting of a timer and stopping a timer. - -The optional argument \verb+placement+ can have values -\verb+l+ (meaning that the timer is drawn left of the instance axis) -and \verb+r+ (meaning that the timer is drawn right of the instance -axis). By default it is drawn at the left side of the instance. - -Several parameters can be used to control the detailed layout of timer -symbols (see Section~\ref{parameters}): -\verb+\timerwidth+ (the width of the hour glass and time out symbols), -\verb+\selfmesswidth+ (the length of the arm between the symbol -and the instance axis), and -\verb+\labeldist+ (the distance between the name and the timersymbol). -Furthermore, the size of the arrow head can be controlled with the -command \verb+\messarrowscale{size}+. - -The various timer symbols are shown in the following example. - -\medskip - -\begin{minipage}[c]{0.4\linewidth} -\begin{msc}{timers} -\setmscvalues{small} -\setlength{\topheaddist}{0.8cm} - -\declinst{i}{}{i} -\declinst{j}{}{j} -\declinst{k}{}{k} - -\settimer{T,50}{j} -\setstoptimer[r]{V}{k}[6] -\nextlevel[2] -\timeout{T}{j} -\settimeout{U}{i} -\nextlevel[2] -\settimer[r]{T,20}{j} -\nextlevel[2] -\stoptimer[r]{T}{j} - -\end{msc} -\end{minipage} -% -\begin{minipage}[c]{0.5\linewidth} -{\small -\begin{verbatim} -\settimer{T,50}{j} -\setstoptimer[r]{V}{k}[6] -\nextlevel[2] -\timeout{T}{j} -\settimeout{U}{i} -\nextlevel[2] -\settimer[r]{T,20}{j} -\nextlevel[2] -\stoptimer[r]{T}{j} -\end{verbatim} -} -\end{minipage} - -\subsection{Time measurements} -\label{measurements} -There are several commands to add time measurements to an \MSC{}. - -\begin{verbatim} -\mscmark[placement]{name}{instance} -\measure(*)[placement]{name}{instance1}{instance2}[offset] -\measurestart(*)[placement]{name}{instance}{gate} -\measureend(*)[placement]{name}{instance}{gate} -\end{verbatim} - -An absolute time stamp is attached to an event on an \verb+instance+ -with the command -\verb+mscmark+. The \verb+name+ is the text attached to the mark symbol, -which is a dashed polyline. -The position of the mark symbol relative to the marked event is -determined by the \verb+placement+. -(\verb+tl+ means top-left, \verb+tr+ means top-right, \verb+bl+ means -bottom-left, and \verb+br+ means bottom-right). - -A \verb+\measure+ connects two events from \verb+instance1+ and -\verb+instance2+. The first event is at the current level. The second -event is \verb+offset+ levels lower than the first event. The -\verb+name+ is attached to the measure symbol. The measure symbol can -be placed at the left or at the right of \verb+instance1+. This is -controlled by the optional argument \verb+placement+, which can have -values \verb+l+ and \verb+r+. - -In case the two events are far apart, the measure may be split in two -parts. The first part is drawn with the \verb+\measurestart+ command -and the second part with the \verb+\measureend+ command. The points -where these two parts should be connected are drawn by a small circle, -to which the text \verb+gate+ is attached. - -There are two equivalent forms of the measurement symbol. The first -form, where the arrow heads are at the inside of the measured -interval, is the default form. The second form, where the arrow heads -are at the outside of the measured interval, is obtained by the -commands \verb+\measure*+, \verb+\measurestart*+, and -\verb+\measureend*+. - - -Several parameters can be used to control the detailed layout of the -time measurement symbols (see Section~\ref{parameters}): -\verb+\labeldist+ (a parameter to specify the distance between the -label of a measurement and the measurement symbol), -\verb+\messarrowscale{size}+ (a command to set the size of the arrow -head), -\verb+\selfmesswidth+ (specifies the width of the measurement -symbols). - -The following example illustrates marks and measurements in an \MSC{}. In -order to include the marks inside the frame of the diagram, the -distance between the frame and the instances (called -\verb+\envinstdist+) is increased (before the instances are declared). - -\medskip - -\begin{minipage}[c]{0.5\linewidth} -\begin{msc}{Time measurements} -\setmscvalues{small} -\setlength{\envinstdist} - {2\envinstdist} - -\declinst{i}{}{i} -\declinst{j}{}{j} -\declinst{k}{}{k} - -\mess{m1}{i}{j}[1] -\mscmark{t=0.0}{i} -\measure{0.6}{i}{j}[4] -\nextlevel -\mscmark[tr]{t=0.3}{j} -\nextlevel[3] -\mess{m2}{j}{k} -\measurestart*[r]{0.2}{k}{g} -\nextlevel[6] -\mess{m3}{k}{i} -\mscmark[bl]{t=1.0}{i} -\measureend*[r]{0.2}{k}{g} -\nextlevel -\end{msc} -\end{minipage} -% -\begin{minipage}[c]{0.44\linewidth} -{\small -\begin{verbatim} -\setlength{\envinstdist} - {2\envinstdist} -\declinst{i}{}{i} -\declinst{j}{}{j} -\declinst{k}{}{k} -\mess{m1}{i}{j}[1] -\mscmark{t=0.0}{i} -\measure{0.6}{i}{j}[4] -\nextlevel -\mscmark[tr]{t=0.3}{j} -\nextlevel[3] -\mess{m2}{j}{k} -\measurestart*[r]{0.2}{k}{g} -\nextlevel[6] -\mess{m3}{k}{i} -\mscmark[bl]{t=1.0}{i} -\measureend*[r]{0.2}{k}{g} -\nextlevel -\end{verbatim} -} -\end{minipage} - - -\subsection{Lost and found messages} -\label{lostfound} -A lost message is denoted by an arrow starting at an instance and -ending at a filled circle. A found message is denoted by an arrow -starting at an open circle and ending at an instance. - -The following commands are used to define lost and found messages. -\begin{verbatim} -\lost[pos]{name}[labelpos]{gate}{instance}[placement] -\found[pos]{name}[labelpos]{gate}{instance}[placement] -\end{verbatim} - -The argument \verb+instance+ determines the instance to which the -arrow is attached. The \verb+name+ of the message is put above the -message arrow. The \verb+gate+ is a text associated to the circle. -The optional arguments \verb+pos+, \verb+labelpos+, and -\verb+placement+ have the same function as in the \verb+\mess+ command -(Section~\ref{messages}). That is, \verb+pos+ controls the placement -of the lost or or found message with respect to the instance -axis. Valid values are \verb+l+ (left) and~\verb+r+ (right). The -default value is~\verb+l+. The optional parameters \verb+labelpos+ -and \verb+placement+ control the placement of \verb+name+ with respect -to the message arrow. Valid values for \verb+labelpos+ are \verb+t+ -(on top) and~\verb+b+ (below). The default value is~\verb+t+. Valid -values for \verb+placement+ are real numbers in the closed interval -$[0,1]$ and denote the relative distance of the message label -\verb+name+ to the beginning of the arrow. The default value for -\verb+placement+ is~$0.5$. - -Several parameters can be used to control the detailed layout of lost -and found messages (see Section~\ref{parameters}): -\verb+\lostsymbolradius+ (the radius of the circle), -\verb+\selfmesswidth+ (the length of the arrow), and -\verb+\labeldist+ (the distance between the name and the arrow). -Furthermore, the size of the arrow head can be controlled with the -command \verb+\messarrowscale{size}+. - -The following example shows a found and a lost message. - -\medskip - -\begin{minipage}[c]{0.4\linewidth} -\begin{msc}{lost and found} -\setmscvalues{small} -\setlength{\topheaddist}{0.8cm} - -\declinst{i}{}{i} -\declinst{j}{}{j} - -\found{m}{g}{i} -\nextlevel -\mess{p}{i}{j} -\nextlevel -\lost[r]{n}{}{j} - -\end{msc} -\end{minipage} -% -\begin{minipage}[c]{0.5\linewidth} -{\small -\begin{verbatim} -\found{m}{g}{i} -\nextlevel -\mess{p}{i}{j} -\nextlevel -\lost[r]{n}{}{j} -\end{verbatim} -} -\end{minipage} - - - -\subsection{Conditions} -\label{conditions} -A condition is denoted by a hexagon. It is used to express that the -system has entered a certain state. A condition relates to a number of -instances. All conditions which take part in the condition are covered -by the condition symbol. The other instances are drawn through the -condition symbol. -The following command is used to draw a condition. - -\begin{verbatim} -\condition{text}{instancelist} -\end{verbatim} - -The \verb+text+ is placed in the center of the condition. The -\verb+instancelist+ expresses which instances take part in the -condition. It is a list of nicknames of instances, separated by -commas. Take care not to add extra white space around the nicknames, -since this is considered part of the nickname in \LaTeX. -The order in which the instances are listed is immaterial. - -There are two parameters which control the shape of the condition -symbol (see Section~\ref{parameters}): -\verb+\conditionheight+ (the height of the condition symbol), and -\verb+\conditionoverlap+ (the width of the part of the condition -symbol which extends over the rightmost/leftmost contained instance -axis). - -The starred version of the command, \verb+\condition*+, produces the same -result as \verb+\condition+, except that the height and width of the -condition symbol are adjusted to fit the contents of the hexagon. - -The following example contains some conditions. - -\medskip - -\begin{minipage}[c]{0.4\linewidth} -\begin{msc}{conditions} -\setmscvalues{small} -\setlength{\topheaddist}{0.8cm} - -\declinst{i}{}{i} -\declinst{j}{}{j} -\declinst{k}{}{k} - -\condition{some condition}{i,k} -\nextlevel[3] -\mess{m}{i}{j} -\action{a}{k} -\nextlevel -\condition{C}{i} -\nextlevel[2] -\condition{A, B, C}{i,j,k} -\nextlevel[2] - -\end{msc} -\end{minipage} -% -\begin{minipage}[c]{0.5\linewidth} -{\small -\begin{verbatim} -\condition{some condition}{i,k} -\nextlevel[3] -\mess{m}{i}{j} -\action{a}{k} -\nextlevel -\condition{C}{i} -\nextlevel[2] -\condition{A, B, C}{i,j,k} -\nextlevel[2] -\end{verbatim} -} -\end{minipage} - -\subsection{Generalized ordering} -\label{ordering} -A generalized order is treated much like a regular message (see -Section~\ref{messages}). There -are three differences: a generalized order is drawn with a -dotted line, it has no label, and the arrow head is in the middle of -the line. A generalized order is defined with the following command. -\begin{verbatim} -\order[pos]{sender}{receiver}[leveloffset] -\end{verbatim} -The \verb+sender+ and \verb+receiver+ are the nicknames of the -instances which are connected by the generalized ordering symbol. -At the \verb+receiver+ instance, the generalized ordering symbol ends -at the current level plus the \verb+leveloffset+. The -\verb+leveloffset+ is an optional integer value, with default 0. - -In case \verb+sender+ and \verb+receiver+ denote the same instance, -the order is a \emph{self order}. The placement of the order arrow of -a self order is controlled by the optional argument \verb+pos+. It -can have values \verb+l+ (meaning that the ordering symbol is drawn -left of the instance axis) and \verb+r+ (meaning that the ordering -symbol is drawn right of the instance axis). By default it is drawn at -the left side of the instance. For non-self orders, the \verb+pos+ -argument is ignored. - -Additionally, there are two ways to control the shape -of the generalized ordering symbol (see Section~\ref{parameters}). -These are: -\verb+\selfmesswidth+ (a parameter to specify the width of the polyline used for -drawing orderings on a single instance axis). -and -\verb+\messarrowscale{size}+ (a command to set the size of the arrow -head in the ordering symbol). - -Orderings to or from the environment (i.e.\ the left or the right side -of the \MSC{} frame) can be -specified by setting the sender or the receiver argument to the value -\verb+envleft+ or \verb+envright+. - -An example of a generalized order is given in the following diagram. - - - -\medskip - -\begin{minipage}[c]{0.4\linewidth} -\begin{msc}{generalized order} -\setmscvalues{normal} -\setlength{\topheaddist}{0.8cm} - -\declinst{i}{}{i} -\declinst{j}{}{j} - -\mess{m}{envleft}{i} -\order{i}{j}[1] -\nextlevel -\mess{k}{j}{envright} -\nextlevel -\end{msc} -\end{minipage} -% -\begin{minipage}[c]{0.5\linewidth} -{\small -\begin{verbatim} -\mess{m}{envleft}{i} -\order{i}{j}[1] -\nextlevel -\mess{k}{j}{envright} -\end{verbatim} -} -\end{minipage} - - -\subsection{Instance regions} -\label{regions} -A part of the instance axis can be drawn in a different style. Such a -part is called an {\em instance region}. The following -regions are supported: -{\em coregion} (the instance axis is dashed, which means that the order of the -attached instances is immaterial), -{\em suspension region} (a small rectangle with dashed left and right -sides, which denotes that the instance is suspended), -{\em activation region} (a small filled rectangle, which denotes that -the instance has control). - -The following commands are used to draw an instance region. - -\begin{verbatim} -\regionstart{type}{instname} -\regionend{instname} -\end{verbatim} - -If the \verb+\regionstart+ command is used the instance axis of -\verb+instname+ is drawn in the shape determined by \verb+type+, -starting from the current level. The type can have values -\verb+coregion+, \verb+suspension+, and \verb+activation+. - -The shape of an instance region can be controlled with the following -parameters (see Section~\ref{parameters}): -\verb+\regionbarwidth+ (the width of the coregion start and end -symbol), -\verb+\instwidth+ (the width of the fat instance rectangle), -\verb+\regionwidth+ (the width of the activation and suspension rectangle). - -In the following example, several instance regions are demonstrated. -Notice the relative order of \verb|\mess|, \verb|\regionstart|, and -\verb|\regionend| commands. Interchanging lines -\verb|\regionstart{activation}{i}| and \verb|\mess{q}{j}{i}| makes the -arrow head of the~`q' message partly invisible. Also note that the -second activation region on~$i$ ends with a method reply -(which is produced by the command \cmd{mess*}). - -\medskip - -\begin{minipage}[c]{0.4\linewidth} -\begin{msc}{regions} -\setmscvalues{small} -\setlength{\topheaddist}{0.8cm} - -\declinst{i}{}{i} -\declinst{j}{}{j} -\declinst{k}{}{k} - -\regionstart{activation}{i} -\nextlevel[3] -\regionend{i} -\mess{m}{i}{j} -\nextlevel -\regionstart{coregion}{j} -\nextlevel -\regionstart{suspension}{k} -\mess{p}{j}{k} -\nextlevel -\regionstart{activation}{i} -\mess{q}{j}{i} -\nextlevel -\regionend{j} -\nextlevel[3] -\regionend{i} -\mess*{r}{i}{j} -\nextlevel -\mess{s}{j}{k} -\regionend{k} -\nextlevel -\end{msc} -\end{minipage} -% -\begin{minipage}[c]{0.5\linewidth} -{\scriptsize -\begin{verbatim} -\regionstart{activation}{i} -\nextlevel[3] -\regionend{i} -\mess{m}{i}{j} -\nextlevel -\regionstart{coregion}{j} -\nextlevel -\regionstart{suspension}{k} -\mess{p}{j}{k} -\nextlevel -\regionstart{activation}{i} -\mess{q}{j}{i} -\nextlevel -\regionend{j} -\nextlevel[3] -\regionend{i} -\mess*{r}{i}{j} -\nextlevel -\mess{s}{j}{k} -\regionend{k} -\nextlevel -\end{verbatim} -} -\end{minipage} - -In some situations, the gray-colored activation regions can hide -message-labels. \emph{Level back-up} can help in these situations, see -the \emph{Tricks} section in the reference manual~\cite{BM02}. - -\subsection{Instance creation and instance stop} -\label{createstop} -The \MSC{} language offers constructs for dynamic instance creation and -instance destruction. -An instance can dynamically create another instance by issuing a -create command. An instance creation is drawn as a dashed message -arrow. At the side of the arrow head, the instance head symbol for the -created instance is drawn. -An instance end symbol does not denote the end of the specified -process, but merely the end of its current description. Therefore, a -different symbol is needed which denotes that an instance stops before -the end of the \MSC{} in which it is contained. -The instance stop symbol is a cross. - -The following commands are used for instance creation and instance -stop. - -\begin{verbatim} -\dummyinst{createdinst} -\create{name} - [labelpos] - {creator} - [placement] - {createdinst} - {instancenameabove} - {instancenamewithin} -\stop{instance} -\end{verbatim} - -In order to reserve space for an instance which will be created -dynamically, the command \verb+dummyinst+ must be used. This command -is mixed with the declarations of normal instances (see the -\verb+declinst+ command, Section~\ref{instances}). -The argument \verb+createdinst+ is the nickname of the instance that -will be created later. - -An instance can be created with the \verb+\create+ command. -This command results in a dashed horizontal message arrow labeled with -\verb+name+. The arrow starts at the current level at the instance -with nickname \verb+creator+ and ends at the current level at the -instance head of the instance with nickname \verb+createdinst+. This -instance must have been declared first with the \verb+dummyinst+ -command. -The name of the created instance consists of two parts. The part -called \verb+instancenameabove+ is placed above the instance head and the -\verb+instancenamewithin+ is centered within the instance head. - -As with normal messages, placement of the message label is controlled -by the optional parameters \verb+labelpos+ and \verb+placement+. That -is, \verb+labelpos+ denotes the relative position of the message label -with respect to the message arrow. Valid values are \verb+t+ (on top) -and \verb+b+ (below). The default value is \verb+t+. The optional -parameter \verb+placement+ denotes the relative distance of the -message label with respect to the beginning of the arrow. Valid values -are real numbers in the closed interval $[0,1]$. The default value -is~$0.5$. See Figure~\ref{fig:refpoints} -(page~\pageref{fig:refpoints}) and its description in -Section~\ref{messages} for more information on the placement of -message labels. - -An instance is stopped with the \verb+\stop+ command. -The \verb+instance+ is the nickname of the stopped instance. The -instance axis is not drawn any further below the level at which the -\verb+\stop+ command is issued. Also, the instance foot symbol is not -drawn. - -The size of the stop symbol is determined by the parameter -\verb+\stopwidth+ (see Section~\ref{parameters}). -The following parameters apply to the instance head symbol: -\verb+\instheadheight+ (the height of the instance head symbol), -\verb+\instwidth+ (the width of the instance head symbol), -and -\verb+\labeldist+ (the distance between the instance head symbol and -the part of the instance name drawn above the head symbol). - -Take care not to specify any events on an instance which has not yet -been created or which has already -been stopped. This may lead to unexpected drawings. -However, it is possible to create an instance after it has stopped, -as showed in the next example. - -\medskip - -\begin{minipage}[c]{0.4\linewidth} -\begin{msc}{dynamic instances} -\setmscvalues{small} -\setlength{\topheaddist}{0.8cm} - -\declinst{i}{}{i} -\dummyinst{j} -\declinst{k}{}{k} - -\mess{p}{i}{k} -\nextlevel[3] -\create{kick}{k}{j}{}{j} -\nextlevel -\stop{k} -\nextlevel -\mess{ok}{j}{i} -\nextlevel -\stop{j} -\nextlevel[2] -\create{start}[b]{i}[.75]{k}{}{again} -\nextlevel[2] - -\end{msc} -\end{minipage} -% -\begin{minipage}[c]{0.5\linewidth} -{\small -\begin{verbatim} -\declinst{i}{}{i} -\dummyinst{j} -\declinst{k}{}{k} - -\mess{p}{i}{k} -\nextlevel[3] -\create{kick}{k}{j}{}{j} -\nextlevel -\stop{k} -\nextlevel -\mess{ok}{j}{i} -\nextlevel -\stop{j} -\nextlevel[2] -\create{start}[b]{i}[.75]{k}{}{again} -\nextlevel[2] -\end{verbatim} -} -\end{minipage} - -\subsection{\MSC{} references} -\label{references} -Within an \MSC{} a reference to other \MSC{}s can be included. Such a -reference is drawn as a rectangle with rounded corners, covering part -of the \MSC{}. The following commands are used to draw \MSC{} references. - -\begin{verbatim} -\referencestart[lo][ro]{nickname}{text}{leftinstance}{rightinstance} -\referenceend{nickname} -\end{verbatim} - -The reference symbol starts at the level where the -\verb+\referencestart+ command is used, and ends at the level where -the corresponding \verb+\referenceend+ command occurs. These commands -correspond if they have the same \verb+nickname+. The \verb+text+ is -placed in the center of the reference symbol. The reference covers all -instances from \verb+leftinstance+ to \verb+rightinstance+. The -distance between the left (right) edge of the reference symbol and the -leftmost (rightmost) covered instance axis is defined by the optional -overlap value \verb+lo+. The default value for \verb+lo+ in large/normal/small -\MSC{}s is 1.5/1/0.75 (see Section~\ref{parameters} for selecting -large, normal or small drawing mode). If the second optional value -\verb+ro+ is present too, the optional value \verb+lo+ defines the left -overlap and the optional value \verb+ro+ defines the right overlap. - -The left and right edge of the reference symbol are -\verb+nicknameleft+ and \verb+nicknameright+, where \verb+nickname+ is -the nickname of the \MSC{} reference as defined in the -\verb+\referencestart+ command. -These names can be used at every place where the nickname of an -instance is required, e.g.\ as the sender or receiver of a message. -This is shown in the following example. - -\medskip - -\begin{minipage}[c]{0.4\linewidth} -\begin{msc}{references} -\setmscvalues{small} -\setlength{\topheaddist}{0.8cm} - -\declinst{i}{}{i} -\declinst{j}{}{j} -\declinst{k}{}{k} - -\mess{a}{j}{k} -\nextlevel -\referencestart{r}{a reference}{i}{j} -\nextlevel -\mess{b}{rright}{k} -\nextlevel -\referenceend{r} -\nextlevel -\referencestart{p}{another reference}{i}{k} -\nextlevel -\mess{c}{envright}{pright} -\nextlevel[3] -\referenceend{p} - -\end{msc} -\end{minipage} -% -\begin{minipage}[c]{0.55\linewidth} -{\small -\begin{verbatim} -\mess{a}{j}{k} -\nextlevel -\referencestart{r}{a reference}{i}{j} -\nextlevel -\mess{b}{rright}{k} -\nextlevel -\referenceend{r} -\nextlevel -\referencestart{p}{another reference}{i}{k} -\nextlevel -\mess{c}{envright}{pright} -\nextlevel[3] -\referenceend{p} -\end{verbatim} -} -\end{minipage} - -\subsection{Inline expressions} -\label{inlines} -An inline expression is a part of an \MSC{} on which an operation is -defined. A rectangle surrounds the part of the \MSC{} containing the -operands. The operands are separated by horizontal dashed lines. -The operator is placed in the upper left corner of the inline -expression symbol. -The following commands are used to draw inline expressions. - -\begin{verbatim} -\inlinestart[lo][ro]{nickname}{operator}{leftinstance}{rightinstance} -\inlineseparator{nickname} -\inlineend(*){nickname} -\end{verbatim} - -The inline expression starts at the level where the \verb+\inlinestart+ -command occurs. The inline expression spans over the instances from -\verb+leftinstance+ to \verb+rightinstance+. The \verb+operand+ is -placed in the upper left corner of the rectangle. At every level where -a corresponding \verb+\inlineseparator+ command occurs, a dashed line -is drawn. The inline expression ends at the level where the -\verb+\inlineend+ command occurs. The \verb+nickname+ is used to match -corresponding commands. -The command \verb+\inlineend*+ does the same as the command -\verb+\inlineend+, except that the bottom line of the rectangle is -dashed. This is used to indicate that the operand is optional. - -The left and right edge of the inline expression symbol are named -\verb+nicknameleft+ and \verb+nicknameright+, where \verb+nickname+ is -the nickname of the inline expression as defined in the -\verb+\inlinestart+ command. -These names can be used at every place where the nickname of an -instance is required, e.g.\ as the sender or receiver of a message. - -The distance between the left (right) edge of the inline expression -symbol and -the leftmost (rightmost) included instance axis is defined by -the optional overlap value \verb+lo+. The default value for -large/normal/small \MSC{}s is -1.5/1/0.75 (see Section~\ref{parameters} for selecting large, normal or small -drawing mode). -If the second optional value -\verb+ro+ is present too, the optional value \verb+lo+ defines the left -overlap and the optional value \verb+ro+ defines the right overlap. -These options make it possible to easily draw nested inline expressions -as in the following example. - -\medskip - -\begin{minipage}[c]{0.4\linewidth} -\begin{msc}{inline expressions} -\setmscvalues{small} -\setlength{\topheaddist}{0.8cm} - - -\declinst{i}{}{i} -\declinst{j}{}{j} -\declinst{k}{}{k} - - -\inlinestart{exp1}{par}{i}{k} -\nextlevel -\mess{a}{k}{j} -\nextlevel -\inlinestart[0.6cm]{exp2}{alt}{i}{j} -\nextlevel[2] -\mess{b}{j}{i} -\nextlevel -\inlineseparator{exp2} -\nextlevel -\mess{c}{j}{i} -\nextlevel -\inlineend{exp2} -\nextlevel -\inlineseparator{exp1} -\nextlevel -\mess{d}{j}{k} -\nextlevel -\inlineend{exp1} -\nextlevel -\inlinestart{exp3}{opt}{i}{j} -\nextlevel -\mess{e}{envright}{exp3right} -\mess{e}{exp3right}{j} -\nextlevel -\mess{f}{j}{i} -\nextlevel -\inlineend*{exp3} - - -\end{msc} -\end{minipage} -% -\begin{minipage}[c]{0.5\linewidth} -{\scriptsize -\begin{verbatim} -\inlinestart{exp1}{par}{i}{k} -\nextlevel -\mess{a}{k}{j} -\nextlevel -\inlinestart[0.6cm]{exp2}{alt}{i}{j} -\nextlevel[2] -\mess{b}{j}{i} -\nextlevel -\inlineseparator{exp2} -\nextlevel -\mess{c}{j}{i} -\nextlevel -\inlineend{exp2} -\nextlevel -\inlineseparator{exp1} -\nextlevel -\mess{d}{j}{k} -\nextlevel -\inlineend{exp1} -\nextlevel -\inlinestart{exp3}{opt}{i}{j} -\nextlevel -\mess{e}{envright}{exp3right} -\mess{e}{exp3right}{j} -\nextlevel -\mess{f}{j}{i} -\nextlevel -\inlineend*{exp3} -\end{verbatim} -} -\end{minipage} - -\subsection{Gates} -\label{gates} - -A gate determines a connection point for messages. - -The following command can be used to draw gates. - -\begin{verbatim} -\gate(*)[hpos][vpos]{gatename}{instname} -\end{verbatim} - -The unstarred version produces a normal (invisible) gate. The starred -version produces a visible gate (a small dot). The gate is drawn at the -current level at the instance \verb+instname+ (which can also be the -left and right edge of e.g.\ an \MSC{} reference). The -\verb+gatename+ is attached to the gate. The positioning of the -\verb+gatename+ relative to the gate is determined by the values of -\verb+hpos+ (horizontal position) and \verb+vpos+ (vertical position). -Possible values for \verb+hpos+ are \verb+l+ (left, default) and -\verb+right+ (right). Possible values for \verb+vpos+ are \verb+t+ -(top, default), \verb+c+ (center), and \verb+b+ (bottom). - -There are several parameters to control the size and shape of the -gate symbol (see Section~\ref{parameters}). These are -\verb+\gatesymbolradius+ (sets the radius of the gate symbol), -\verb+\labeldist+ (the vertical distance between the gate name and -the gate). - -The next example shows a number of gates. - -\medskip - -\begin{minipage}[c]{0.4\linewidth} -\begin{msc}{gates} -\setmscvalues{small} - -\declinst{i}{}{i} -\declinst{j}{}{j} -\declinst{k}{}{k} -\referencestart{r}{ref}{i}{j} -\nextlevel -\gate{$g$}{rright} -\mess{b}{rright}{envright} -\gate[r][c]{$h$}{envright} -\nextlevel -\nextlevel -\mess{c}{rright}{k} -\gate*[l][b]{$h'$}{rright} -\nextlevel[2] -\referenceend{r} -\end{msc} -\end{minipage} -% -\begin{minipage}[c]{0.5\linewidth} -{\footnotesize -\begin{verbatim} -\declinst{i}{}{i} -\declinst{j}{}{j} -\declinst{k}{}{k} -\referencestart{r}{ref}{i}{j} -\nextlevel -\gate{$g$}{rright} -\mess{b}{rright}{envright} -\gate[r][c]{$h$}{envright} -\nextlevel -\nextlevel -\mess{c}{rright}{k} -\gate*[l][b]{$h'$}{rright} -\nextlevel[2] -\referenceend{r} -\end{verbatim} -} -\end{minipage} - - -\subsection{High-level \MSC{}s} -\label{hmsc} -A High-level \MSC{} (\HMSC{}) is a drawing which defines the relation between -a number of \MSC{}s. It is composed of a start symbol (an upside down -triangle), a number of end symbols (represented by triangles), a -number of \MSC{} references (these are rectangles with rounded corners), -a number of conditions (hexagons) and possibly several connection -points (circles). These symbols are connected by arrows. - -The following commands can be used to draw \HMSC{}s. - -\begin{verbatim} -\begin{hmsc}[headerpos]{hmscname}(llx,lly)(urx,ury) -\end{hmsc} -\hmscstartsymbol{nickname}(x,y) -\hmscendsymbol{nickname}(x,y) -\hmscreference{nickname}{text}(x,y) -\hmsccondition{nickname}{text}(x,y) -\hmscconnection{nickname}(x,y) -\arrow{from-nickname}[coord-list]{to-nickname} -\end{verbatim} - -In order to draw \HMSC{}s, a new environment is defined, which is called -\verb+hmsc+. The command to begin this environment has several -arguments. The argument \verb+headerpos+ is optional. It controls -positioning of the header of the \HMSC{}. This argument can have values -\verb+l+ (for a left aligned header), \verb+c+ (for a centered header) -and \verb+r+ (for a right aligned header). The header of an \HMSC{} is -formed from the keyword \verb+msc+, followed by the -\verb+hmscname+. The size of the \HMSC{} frame is determined by the -coordinates of the lower-left corner, \verb+(llx,lly)+, and the -coordinates of the upper-right corner, \verb+(urx,ury)+. - -The \HMSC{} grid is not drawn, but used to control the positioning of the -\HMSC{} symbols (\verb+startsymbol+, \verb+endsymbol+, \verb+reference+, -\verb+condition+, and \verb+connection+). -The center of each symbol is drawn on the grid point -with coordinates \verb+{x,y}+. Each symbol also has a \verb+nickname+ -for later reference. - -\HMSC{} symbols can be connected by means of the \verb+arrow+ command. -This draws an arrow from the symbol with nickname \verb+from-nickname+ -to the symbol with nickname \verb+to-nickname+. The optional argument -\verb+coord-list+ can be used if the line connecting the source and -the destination should not be straight. The \verb+coord-list+ has -the following syntax: \verb+(x1,y1)(x2,y2)...(xk,yk)+. This means -that the connecting line goes through the points with coordinates -(x1,y1), (x2,y2), \ldots, (xk,yk). - -Arrows always leave the start symbol at the bottom. They enter the end symbol -at the top. -Arrows start and end either at the middle of the top or at the middle -of the bottom of a reference and condition symbol. The incoming -(outgoing) direction of the arrow determines whether it will start -(end) at the top or at the bottom. - -There are several parameters to control the size and shape of the -symbols (see Section~\ref{parameters}). These are -\verb+\hmscconditionheight+ (the height of the condition symbol), -\verb+\hmscconditionwidth+ (the width of the condition symbol, -excluding the left and right angular parts), -\verb+\hmscreferenceheight+ (the height of the reference symbol), -\verb+\hmscreferencewidth+ (the width of the reference symbol), -\verb+\messarrowscale{size}+ (a command to set the size of the arrow -head of a connection line); -\verb+setconnectiontype(type)+ (set the shape of the polyline -connection the symbols; \verb+type+ can be \verb+straight+, -\verb+rounded+, and \verb+curved+), -\verb+\startsymbolwidth+ (the width of the start and end symbol), -\verb+\topnamedist+ (sets the distance between the top of the \HMSC{} frame -and the \HMSC{} header). - -An example of an \HMSC{} is in the following diagram. Notice that the -width and height of reference symbols are changed locally (i.e., -between \verb+{+ and \verb+}+ braces) just before the big -reference~\verb+b+ is defined. - -\medskip - -\noindent -\begin{minipage}[c]{0.375\linewidth} - -\begin{hmsc}{High level}(-3,0)(3,12) -\hmscstartsymbol{s}(0,10) -\hmscreference{a}{A}(0,9) -\hmscconnection{c}(0,7.5) -{ -\setlength{\hmscreferencewidth}{2cm} -\setlength{\hmscreferenceheight}{3\baselineskip} -\hmscreference{b}{\parbox{1.9cm} - {\centering - this is a big - hmsc reference} - }(0,6) -} -\hmsccondition{t}{Again}(1,4.25) -\hmsccondition{ok}{Ok}(0,3.5) -\hmsccondition{q}{\textit{Break}}(-2,3.5) -\hmscendsymbol{e1}(-2,2) -\hmscreference{do}{Do it!}(0,2) -\hmscendsymbol{e2}(0,1) - -\arrow{s}{a} -\arrow{a}{c} -\arrow{c}{b} -\arrow{c}[(-2,7.5)]{q} -\arrow{b}{q} -\arrow{q}{e1} -\arrow{b}{ok} -\arrow{ok}{do} -\arrow{do}{e2} -\arrow{b}{t} -\arrow{t}[(1,3.5)(2.5,3.5)(2.5,7.5)]{c} -\end{hmsc} -\end{minipage}\hfill -\begin{minipage}[c]{0.6\linewidth} -{\footnotesize -\begin{verbatim} -\begin{hmsc}{High level}(-3,0)(3,12) -\hmscstartsymbol{s}(0,10) -\hmscreference{a}{A}(0,9) -\hmscconnection{c}(0,7.5) -{\setlength{\hmscreferencewidth}{2cm} - \setlength{\hmscreferenceheight} - {3\baselineskip} - \hmscreference{b}{\parbox{1.9cm} - {\centering this is a big hmsc reference} - }(0,6)} -\hmsccondition{t}{Again}(1,4.5) -\hmsccondition{ok}{Ok}(0,3.5) -\hmsccondition{q}{\textit{Break}}(-2,3.5) -\hmscendsymbol{e1}(-2,2) -\hmscreference{do}{Do it!}(0,2) -\hmscendsymbol{e2}(0,1) -\arrow{s}{a} -\arrow{a}{c} -\arrow{c}{b} -\arrow{c}[(-2,7.5)]{q} -\arrow{b}{q} -\arrow{q}{e1} -\arrow{b}{ok} -\arrow{ok}{do} -\arrow{do}{e2} -\arrow{b}{t} -\arrow{t}[(1,3.5)(2.5,3.5)(2.5,7.5)]{c} -\end{hmsc} -\end{verbatim} -} -\end{minipage} - - -\subsection{\MSC{} documents} -\label{mscdoc} -An \MSCdoc{} is a drawing which contains various declarations -of objects used in the \MSC{} description. For drawing \MSCdoc{}s -he following commands are provided. - -\begin{verbatim} -\begin{mscdoc}[headerpos]{mscdocname}{text}(llx,lly)(urx,ury) -\end{mscdoc} -\reference{text}(x,y) -\separator{y} -\end{verbatim} - -As for \MSC{} and \HMSC{}, a new environment is defined, which is named -\verb+mscdoc+. The command to begin an \MSCdoc{} has several -arguments. The argument \verb+headerpos+ is optional. It controls -positioning of the header of the \MSCdoc{}. -This argument can have values -\verb+l+ (for a left aligned header), \verb+c+ (for a centered header) -and \verb+r+ (for a right aligned header). -The header of an \MSCdoc{} is formed from the keyword \verb+mscdocument+, -followed by the \verb+mscdocname+. -The \verb+text+ is placed left-aligned below the \MSCdoc{} header. -The size of the \MSCdoc{} frame is determined by -coordinates of the lower-left corner, \verb+(llx,lly)+, and the -coordinates of the upper-right corner, \verb+(urx,ury)+. - -The \MSCdoc{} grid is not drawn, but used to control the positioning of the -\MSC{} references. -The center of such a reference is drawn on the grid point -with coordinates \verb+{x,y}+. - -The \verb+separator+ command draws a dashed horizontal line. The \MSC{} -references above the separator are the exported, while the ones below -the separator are local. - -There are several parameters to control the size and shape of the -symbols (see Section~\ref{parameters}). -\verb+\mscdocreferenceheight+ (the height of the reference symbol), -\verb+\mscdocreferencewidth+ (the width of the reference symbol), -\verb+\topnamedist+ (sets the distance between the top of the \MSCdoc{} -frame and the \MSCdoc{} header). - -An example of an \MSCdoc{} is in the following diagram. Notice that -the size of references in an \MSCdoc{} had to be changed for the last -reference. - -\medskip - - -\begin{minipage}{0.4\linewidth} -\begin{mscdoc}{My declarations}% - (0,0)(6,8) -\reference{a}(1,6) -\reference{b}(3,6) -\reference{c}(1,4) -\reference{d}(3,4) -\separator{3} -\setlength{\mscdocreferencewidth}{4.5\mscunit} -\setlength{\mscdocreferenceheight}{2\baselineskip} -\reference{% - \parbox{4\mscunit}% - {\raggedright This is a - two-line reference}} - (3,1.5) -\end{mscdoc} -\end{minipage} -% -\begin{minipage}{0.5\linewidth} -{\small -\begin{verbatim} -\begin{mscdoc}{My declarations}% - (0,0)(6,8) -\reference{a}(1,6) -\reference{b}(3,6) -\reference{c}(1,4) -\reference{d}(3,4) -\separator{3} -\setlength{\mscdocreferencewidth} - {4.5\mscunit} -\setlength{\mscdocreferenceheight} - {2\baselineskip} -\reference{% - \parbox{4\mscunit}% - {\raggedright This is a - two-line reference}} - (3,1.5) -\end{mscdoc} -\end{verbatim} -} -\end{minipage} - - - -\section{Style parameters} -\label{parameters} - -By means of a collection of parameters, the graphical appearance of -an \MSC{} can be fine tuned to the user's taste. -The general parameters -are displayed in Figure~\ref{parametersfig} on page~\pageref{parametersfig}. - -%======================== -\begin{figure}[htb] -\vspace{2ex} %Needed to get enough white space before the top label of - %the figure. - -\newcommand{\printlength}[1]{\mbox{\footnotesize\ttfamily \char`\\#1}} -\begin{center} -\setmscvalues{normal} -\begin{msc}{Lengths} -\psset{linewidth=.4pt,dotsep=1pt} -\newlength{\lta} -\newlength{\ltb} -% \topnamedist -\psline[linestyle=dotted](1.5cm,-\topnamedist)(2.5cm,-\topnamedist) -\psline[arrowscale=1.3]{->}(2.5cm,.2cm)(2.5cm,0cm) -\setlength{\lta}{\topnamedist+.2cm} -\psline[arrowscale=1.3]{->}(2.5cm,-\lta)(2.5cm,-\topnamedist) -\rput[tl](2.5cm,.4cm){\printlength{topnamedist}} - -% \leftnamedist -\setlength{\lta}{\leftnamedist+10pt} -\setlength{\ltb}{\topnamedist} -\psline[linestyle=dotted,arrowscale=1.0]{->}(-10pt,-\ltb)(0,-\ltb) -\psline[linestyle=dotted,arrowscale=1.0]{->}(\lta,-\ltb)(\leftnamedist,-\ltb) -\psline[linestyle=dotted](\leftnamedist,10pt)(\leftnamedist,-\baselineskip) -\rput[br](-10pt,-\ltb){\printlength{leftnamedist}} - -% \topheaddist -\setlength{\lta}{\envinstdist+\instdist-.5\instwidth} -\psline[arrowscale=1.3,linestyle=dotted]{<->}(\lta,0cm)(\lta,-\topheaddist) -\rput[l](\lta,-.5\topheaddist){ \printlength{topheaddist}} - -% \bottomfootdist -\setlength{\ltb}{\topheaddist+\instheadheight+\firstlevelheight+\lastlevelheight+\instfootheight+\levelheight*12} -\setlength{\lta}{\envinstdist+2\instdist-.5\instwidth} -\rput[tl](\lta,-\ltb){\psline[arrowscale=1.3,linestyle=dotted]{<->}(0,0)(0,-\bottomfootdist)} -\setlength{\ltb}{\ltb+.5\bottomfootdist} -\rput[l](\lta,-\ltb){\printlength{bottomfootdist}} - -% \instheadheight -\setlength{\lta}{\envinstdist+2\instdist+.5\instwidth+.2cm} -\setlength{\ltb}{\topheaddist} -\rput[t](\lta,-\ltb){\psline[arrowscale=1.3,linestyle=dotted]{<->}(0,0)(0,-\instheadheight)} -\setlength{\ltb}{\ltb+.5\instheadheight} -\rput[l](\lta,-\ltb){\printlength{instheadheight}} - -% \firstlevelheight -\setlength{\lta}{\envinstdist+\instdist+.2cm} -\setlength{\ltb}{\topheaddist+\instheadheight} -\rput(\lta,-\ltb){\psline[arrowscale=1.3,linestyle=dotted]{<->}(0,-\firstlevelheight)} -\setlength{\ltb}{\ltb+.5\firstlevelheight} -\rput[l](\lta,-\ltb){\printlength{firstlevelheight}} - -% \levelheight -\setlength{\lta}{\envinstdist+\instdist+.2cm} -\setlength{\ltb}{\topheaddist+\instheadheight+\firstlevelheight} -\rput[t](\lta,-\ltb){\psline[arrowscale=1.3,linestyle=dotted]{<->}(0,0)(0,-\levelheight)} -\setlength{\ltb}{\ltb+.5\levelheight} -\rput[l](\lta,-\ltb){\printlength{levelheight}} - -% \actionheight -\setlength{\lta}{\envinstdist+2\instdist+0.5\actionwidth+.2cm} -\setlength{\ltb}{\topheaddist+\instheadheight+\firstlevelheight+\levelheight*7} -\rput[t](\lta,-\ltb){\psline[arrowscale=1.3,linestyle=dotted]{<->}(0,0)(0,-\actionheight)} -\setlength{\ltb}{\ltb+.7\actionheight} -\rput[bl](\lta,-\ltb){\printlength{actionheight}} - -% \actionwidth -\setlength{\lta}{\envinstdist+2\instdist-0.5\actionwidth} -\setlength{\ltb}{\topheaddist+\instheadheight+\firstlevelheight+\levelheight*7-.2cm} -\rput(\lta,-\ltb){\psline[arrowscale=1.3,linestyle=dotted]{<->}(0,0)(\actionwidth,0)} -\setlength{\lta}{\lta+.5\actionwidth} -\setlength{\ltb}{\ltb-.1cm} -\rput[bl](\lta,-\ltb){\rule{0pt}{2ex}\printlength{actionwidth}} - -% \conditionheight -\setlength{\lta}{\envinstdist+2\instdist+\conditionoverlap+0.8\conditionheight} -\setlength{\ltb}{\topheaddist+\instheadheight+\firstlevelheight+\levelheight*10} -\rput[t](\lta,-\ltb){\psline[arrowscale=1.3,linestyle=dotted]{<->}(0,0)(0,-\conditionheight)} -\setlength{\ltb}{\ltb+.7\conditionheight} -\rput[bl](\lta,-\ltb){\printlength{conditionheight}} - -% \inlineoverlap -\setlength{\lta}{\envinstdist} -\setlength{\ltb}{\topheaddist+\instheadheight+\firstlevelheight+\levelheight*5-.2cm} -\rput(\lta,-\ltb){\psline[arrowscale=1.3,linestyle=dotted]{<->}(0,0)(\inlineoverlap,0)} -%\setlength{\lta}{\lta+\inlineoverlap} -\setlength{\ltb}{\ltb-.1cm} -\rput[bl](\lta,-\ltb){\rule{0pt}{2ex}\printlength{inlineoverlap}} - -% \referenceoverlap -\setlength{\lta}{\envinstdist} -\setlength{\ltb}{\topheaddist+\instheadheight+\firstlevelheight+\levelheight*7-.2cm} -\rput(\lta,-\ltb){\psline[arrowscale=1.3,linestyle=dotted]{<->}(0,0)(\referenceoverlap,0)} -%\setlength{\lta}{\lta+\referenceoverlap} -\setlength{\ltb}{\ltb-.1cm} -\rput[bl](\lta,-\ltb){\rule{0pt}{2ex}\printlength{referenceoverlap}} - -% \conditionoverlap -\setlength{\lta}{\envinstdist+2\instdist} -\setlength{\ltb}{\topheaddist+\instheadheight+\firstlevelheight+\levelheight*10-.2cm} -\rput(\lta,-\ltb){\psline[arrowscale=1.3,linestyle=dotted]{<->}(0,0)(\conditionoverlap,0)} -%\setlength{\lta}{\lta+\conditionoverlap} -\setlength{\ltb}{\ltb-.1cm} -\rput[bl](\lta,-\ltb){\rule{0pt}{2ex}\printlength{conditionoverlap}} - -% \lastlevelheight -\setlength{\lta}{\envinstdist+2\instdist+.2cm} -\setlength{\ltb}{\topheaddist+\instheadheight+\firstlevelheight+\levelheight*12} -\rput[t](\lta,-\ltb){\psline[arrowscale=1.3,linestyle=dotted]{<->}(0,0)(0,-\lastlevelheight)} -%\setlength{\ltb}{\ltb+.5\lastlevelheight} -\rput[bl](\lta,-\ltb){\printlength{lastlevelheight}} - -% \instfootheight -\setlength{\lta}{\envinstdist+2\instdist+.5\instwidth+.1cm} -\setlength{\ltb}{\topheaddist+\instheadheight+\firstlevelheight+\levelheight*12+\lastlevelheight} -\rput[t](\lta,-\ltb){\psline[arrowscale=1.3]{->}(0,.3cm)(0,0)} -\setlength{\ltb}{\ltb+\instfootheight} -\rput[t](\lta,-\ltb){\psline[arrowscale=1.3]{->}(0,-.3cm)(0,0)} -\rput[tl](\lta,-\ltb){ \printlength{instfootheight}} - -% \selfmesswidth -\setlength{\lta}{\envinstdist-\selfmesswidth} -\setlength{\ltb}{\topheaddist+\instheadheight+\firstlevelheight+\levelheight*2-.2cm} -\rput(\lta,-\ltb){\psline[arrowscale=1.3,linestyle=dotted]{<->}(0,0)(\selfmesswidth,0)} -%\setlength{\lta}{\lta+\selfmesswidth} -\rput[r](\lta,-\ltb){\printlength{selfmesswidth}} - -% \regionbarwidth -\setlength{\lta}{\envinstdist+2\instdist-.5\regionbarwidth} -\setlength{\ltb}{\topheaddist+\instheadheight+\firstlevelheight+\levelheight*2-.2cm} -\rput(\lta,-\ltb){\psline[arrowscale=1.3,linestyle=dotted]{<->}(0,0)(\regionbarwidth,0)} -\setlength{\lta}{\lta+\regionbarwidth} -\rput[l](\lta,-\ltb){\printlength{regionbarwidth}} - -% \instwidth -\setlength{\ltb}{\topheaddist+\instheadheight+\firstlevelheight+\lastlevelheight+\instfootheight+\levelheight*12+.2cm} -\setlength{\lta}{\envinstdist-0.5\instwidth} -\rput(\lta,-\ltb){\psline[arrowscale=1.3,linestyle=dotted]{<->}(0,0)(\instwidth,0)} -\rput[tl](\lta,-\ltb){\rule{0pt}{2ex}\printlength{instwidth}} - -% \instdist -\setlength{\lta}{\envinstdist} -\setlength{\ltb}{\topheaddist+\instheadheight+\firstlevelheight+2.5\levelheight} -\rput[l](\lta,-\ltb){\psline[arrowscale=1.3,linestyle=dotted]{<->}(0,0)(\instdist,0)} -\setlength{\lta}{\lta+.5\instdist} -\setlength{\ltb}{\ltb-.1cm} -\rput[b](\lta,-\ltb){\printlength{instdist}} - -% \envinstwidth -\setlength{\lta}{0cm} -\setlength{\ltb}{\topheaddist+\instheadheight+\firstlevelheight+.5\levelheight} -\rput[l](\lta,-\ltb){\psline[arrowscale=1.3,linestyle=dotted]{<->}(0,0)(\envinstdist,0)} -\rput[tl](\lta,-\ltb){ \printlength{envinstdist}} - - -% \labeldist -\setlength{\lta}{\envinstdist-.5\instwidth} -\setlength{\ltb}{\topheaddist-\labeldist} -\rput[l](\lta,-\ltb){\psline[arrowscale=1.3,linestyle=dotted](-.2cm,0)(.5cm,0)} -\rput[b](\lta,-\ltb){\psline[arrowscale=1.3]{->}(-.1cm,.3cm)(-.1cm,0)} -\setlength{\ltb}{\topheaddist} -\rput[l](\lta,-\ltb){\psline[arrowscale=1.3,linestyle=dotted](-.2cm,0)(.5cm,0)} -\rput[b](\lta,-\ltb){\psline[arrowscale=1.3]{->}(-.1cm,-.3cm)(-.1cm,0)} -\rput[tr](\lta,-\ltb){\printlength{labeldist} } - -% \timerwidth -\setlength{\lta}{\envinstdist-\selfmesswidth-0.5\timerwidth} -\setlength{\ltb}{\topheaddist+\instheadheight+\firstlevelheight+\levelheight*4+.4cm} -\rput(\lta,-\ltb){\psline[arrowscale=1.3,linestyle=dotted]{<->}(0,0)(\timerwidth,0)} -%\setlength{\lta}{\lta+\selfmesswidth} -\rput[r](\lta,-\ltb){\printlength{timerwidth}} - -% \stopwidth -\setlength{\lta}{\envinstdist+\instdist-0.5\stopwidth} -\setlength{\ltb}{\topheaddist+\instheadheight+\firstlevelheight+\levelheight*4+0.5\stopwidth+.1cm} -\rput(\lta,-\ltb){\psline[arrowscale=1.3,linestyle=dotted]{<->}(0,0)(\stopwidth,0)} -\setlength{\lta}{\lta+\stopwidth} -\rput[l](\lta,-\ltb){\printlength{stopwidth}} - -% \lostsymbolradius -\setlength{\lta}{\envinstdist+2\instdist+\selfmesswidth+2\lostsymbolradius+0.1cm} -\setlength{\ltb}{\topheaddist+\instheadheight+\firstlevelheight+\levelheight*4} -\rput[t](\lta,-\ltb){\psline[arrowscale=1.3]{->}(0,.3cm)(0,0)} -\setlength{\ltb}{\ltb+\lostsymbolradius} -\rput[t](\lta,-\ltb){\psline[arrowscale=1.3]{->}(0,-.3cm)(0,0)} -\rput[tl](\lta,-\ltb){ \printlength{lostsymbolradius}} - -\psset{linewidth=.8pt,dotsep=3pt} - -\declinst{m1}{aname}{iname} -\declinst{st}{}{} -\declinst{m2}{}{} - -\mess{msg1}{m1}{st} -\nextlevel -\mess{msg2}{m1}{st} -\nextlevel -\mess{self}{m1}{m1} -\coregionstart{m2} -\nextlevel -\coregionend{m2} -\nextlevel -\lost[r]{x}{}{m2} -\stop{st} -\settimer{T}{m1} -\nextlevel -\inlinestart{alt}{alt}{m1}{m1} -\nextlevel[2] -\inlineend{alt} -\action{a}{m2} -\nextlevel -\referencestart{ref}{reference}{m1}{m1} -\nextlevel -\referenceend{ref} -\nextlevel -\condition{cond1}{m1,m2} -\nextlevel -\nextlevel -\mess{msg3}{m2}{m1} -\end{msc} -\end{center} - - -\caption{User controllable parameters} -\label{parametersfig} -\end{figure} - -The value of a parameter can be changed using standard -\LaTeX\ commands, e.g. -\begin{verbatim} -\setlength{\levelheight}{1cm} -\end{verbatim} - -The following list describes all parameters. -The default values for drawing \MSC{}s at large, normal and small size are -included. See the command \verb+\setmscvalues{size}+ below for -restoring the parameters to their original values. - -%======================== -\begin{defs} - -\item[\cmd{actionheight}] -Height of action symbols.\\ -(\lnsvalue{0.75}{0.6}{0.5} cm.) - -\item[\cmd{actionwidth}] -Width of action symbol.\\ -(\lnsvalue{1.25}{1.25}{1.2} cm.) - -\item[\cmd{bottomfootdist}] -Distance between bottom of foot symbol and frame.\\ -(\lnsvalue{1.0}{0.7}{0.5} cm.) - -\item[\cmd{commentdist}] -Distance between a comment and its instance.\\ -(\lnsvalue{0.5}{0.5}{0.5} cm.) - -\item[\cmd{conditionheight}] -Height of condition symbols.\\ -(\lnsvalue{0.75}{0.6}{0.5} cm.) - -\item[\cmd{conditionoverlap}] -Overlap of condition symbol.\\ -(\lnsvalue{0.6}{0.5}{0.4} cm.) - -\item[\cmd{envinstdist}] -Distance between environments and nearest instance line.\\ -(\lnsvalue{2.5}{2.0}{1.2} cm.) - -\item[\cmd{firstlevelheight}] Height of level just below head -symbols. Should not be changed inside the \MSC{} environment.\\ -(\lnsvalue{0.75}{0.6}{0.4} cm.) - -\item[\cmd{hmscconditionheight}] -Height of \HMSC{} condition symbol.\\ -(\lnsvalue{0.375}{0.3}{0.25} cm.) - -\item[\cmd{hmscconditionwidth}] -Width of \HMSC{} condition symbol.\\ -(\lnsvalue{1.0}{0.8}{0.7} cm.) - -\item[\cmd{hmscconnectionradius}] -Radius of \HMSC{} connection symbol.\\ -(\lnsvalue{0.06}{0.05}{0.04} cm.) - -\item[\cmd{hmscreferenceheight}] -Height of \HMSC{} reference symbol.\\ -(\lnsvalue{0.375}{0.3}{0.25} cm.) - -\item[\cmd{hmscreferencewidth}] -Width of \HMSC{} reference symbol.\\ -(\lnsvalue{1.0}{0.8}{0.7} cm.) - -\item[\cmd{hmscstartsymbolwidth}] -Width of \HMSC{} start symbol.\\ -(\lnsvalue{0.75}{0.6}{0.3} cm.) - -\item[\cmd{inlineoverlap}] -Overlap of inline symbol.\\ -(\lnsvalue{1.5}{1.0}{0.75} cm.) - -\item[\cmd{instbarwidth}] -Default width of vertical instance bars (applies to fat instances only).\\ -(\lnsvalue{0.0}{0.0}{0.0} cm.) - -\item[\cmd{instdist}] -Distance between instance axes.\\ -(\lnsvalue{3.0}{2.2}{1.5} cm.) - -\item[\cmd{instfootheight}] Height of foot symbols. Should not be -changed inside the \MSC{} environment.\\ -(\lnsvalue{0.25}{0.2}{0.15} cm.) - -\item[\cmd{instheadheight}] Height of head symbols. Should not be -changed inside the \MSC{} environment.\\ -(\lnsvalue{0.6}{0.55}{0.5} cm.) - -\item[\cmd{instwidth}] -Width of header and foot symbols.\\ -(\lnsvalue{1.75}{1.6}{1.2} cm.) - -\item[\cmd{labeldist}] -Distance between labels and the symbols to which they belong (for instance, message labels and arrows).\\ -(\lnsvalue{1.0}{1.0}{1.0} ex.) - -\item[\cmd{lastlevelheight}] Height of level just above foot -symbols. Should not be changed inside the \MSC{} environment.\\ -(\lnsvalue{0.5}{0.4}{0.3} cm.) - -\item[\cmd{leftnamedist}] Distance between left of the frame and -(left of) \MSC, \HMSC, or \MSCdoc{} title.\\ -(\lnsvalue{0.3}{0.2}{0.1} cm.) - -\item[\cmd{levelheight}] -Height of a level.\\ -(\lnsvalue{0.75}{0.5}{0.4} cm.) - -\item[\cmd{lostsymbolradius}] -Radius of the lost and found symbols.\\ -(\lnsvalue{0.15}{0.12}{0.08} cm.) - -\item[\cmd{markdist}] -Horizontal distance from a mark to its instance.\\ -(\lnsvalue{1.0}{1.0}{1.0} cm.) - -\item[\cmd{measuredist}] -Horizontal distance from a measure to its (closest) instance.\\ -(\lnsvalue{1.0}{1.0}{1.0} cm.) - -\item[\cmd{measuresymbolwidth}] -Width of a measure symbol.\\ -(\lnsvalue{0.75}{0.6}{0.4} cm.) - -\item[\cmd{mscdocreferenceheight}] -Height of reference symbol in an \MSCdoc.\\ -(\lnsvalue{0.375}{0.3}{0.25} cm.) - -\item[\cmd{mscdocreferencewidth}] -Width of reference symbol in an \MSCdoc.\\ -(\lnsvalue{1.0}{0.8}{0.7} cm.) - -\item[\cmd{referenceoverlap}] -Overlap of reference symbol.\\ -(\lnsvalue{1.5}{1.0}{0.75} cm.) - -\item[\cmd{regionbarwidth}] -Width of region bars.\\ -(\lnsvalue{0.5}{0.4}{0.2} cm.) - -\item[\cmd{selfmesswidth}] -Length of horizontal arms of self messages.\\ -(\lnsvalue{0.75}{0.6}{0.4} cm.) - -\item[\cmd{stopwidth}] -Width of the stop symbol.\\ -(\lnsvalue{0.6}{0.5}{0.3} cm.) - -\item[\cmd{timerwidth}] -Width of the \emph{timer} symbols.\\ -(\lnsvalue{0.4}{0.3}{0.2} cm.) - -\item[\cmd{topheaddist}] -Distance between top of head symbols and frame.\\ -(\lnsvalue{1.5}{1.3}{1.2} cm.) - -\item[\cmd{topnamedist}] Distance between top of the frame and -(top of) \MSC, \HMSC, or \MSCdoc{} title.\\ -(\lnsvalue{0.3}{0.2}{0.2} cm.) - -\end{defs} - -In addition there are several commands which allow the user to adjust -the \MSC{} drawing to his own taste. - -\begin{defs} - -\item[\cmd{messarrowscale}\{\emph{scalefactor}\}] Sets the scale -factor (a positive real number) of message arrow -heads. (\lnsvalue{2}{1.5}{1.2}) - -\item[\cmd{setmscscale}\{\emph{scalefactor}\}] Sets the scale factor -of the \MSC{} environment to \emph{scalefactor}. the scale factor is -supposed to be a real number. Scaling is done when the \MSC{} -environment ends (\verb|\end{msc}|). The default of \emph{scalefactor} -is~1. A more consistent way for -varying the size of the \MSC{} can be obtained by using the -\verb+\setmesvalues+ command as described below. -(default value 1.) - -\item[\cmd{psset}\{\texttt{linewidth=D}\}] This command sets the width -of all lines in \MSC{}s, \HMSC{}s, and \MSCdoc{}s to length \verb+D+. If -this command is issued outside the msc environment, then the value is -set for the complete document. If it is used directly after the start -of the msc environment it only holds for this \MSC{}.\\ -(large/normal/small value 0.8/0.7/0.6 pt.) - -\item[\cmd{setfootcolor}\{\emph{color}\}] Sets the color of the foot -symbols of \MSC{} instances. Possible values are \emph{black}, -\emph{white}, \emph{gray}, or \emph{lightgray}. For more color values, -see the documentation of the \LaTeXe{} \textsf{color} package. - -\end{defs} - -The following command can be used to set the above mentioned -style parameters to suitable values. - -\begin{defs} -\item[\cmd{setmscvalues}\{\emph{size}\}] Sets all parameters of the \mscpack{} to - predefined values. Valid values for \emph{size} are: -\verb|small|, \verb|normal|, and \verb|large|. -(The default value of \verb+size+ is \verb+normal+. -This can be used for drawings with at maximum six instances on a -sheet of A4 paper. -For sizes \verb+large+ and \verb+small+, a maximum of four and nine -instances respectively fit on a sheet of A4 paper.) -\end{defs} - -Caution has to be taken when changing the value of a parameter within -the \MSC{} definition. The following parameters can be changed within an -\MSC{} definition without unexpected side effects: - -\begin{flushleft} -\verb+\actionheight+, -\verb+\actionwidth+, -\verb+\bottomfootdist+, -\verb+\conditionheight+, -\verb+\conditionoverlap+, -\verb+\inlineoverlap+, -\verb+\instfootheight+, -\verb+\instwidth+ (however, this may cause different sizes of -corresponding instance header and footer symbols), -\verb+\labeldist+, -\verb+\lastlevelheight+, -\verb+\levelheight+, -\verb+\lostsymbolradius+, -\verb+\referenceoverlap+, -\verb+\regionbarwidth+, -\verb+\selfmesswidth+, -\verb+\stopwidth+, -\verb+\timerwidth+, and -\verb+\topnamedist+. -\end{flushleft} - - -In addition to the parameters specific to the \mscpack, -standard \LaTeX\ commands can be used to change the type style and -other details. -For example, if the command \verb+\sffamily+ is included directly after -the start of the msc environment, the text in the \MSC{} -is drawn using a {\sf sans serif} font. Likewise, the text size can be -changed by inserting, e.g., the command \verb+\small+. -The \verb+\raisebox+ and \verb+\parbox+ commands -can also be used to position and format names. - - -\section{Example} -\label{example} -Figure~\ref{ex} on page~\pageref{ex} shows the \MSC{} defined in the -following \LaTeX\ fragment. - -{\small -\begin{verbatim} -\begin{msc}{Example} -\declinst{usr}{The user}{User} -\declinst{m1}{Control}{M1} -\dummyinst{m2} -\declinst{m3}{Another Machine}{M3} - -\create{start}{m1}{m2}{Processing}{M2} -\mess{msg 0}{envleft}{usr} -\mess{msg 1}{envright}{m2}[1] -\nextlevel - -\mess{msg 2}{usr}{m1} -\order{m1}{m2}[4] -\action{a}{m3} - -\nextlevel -\found{msg x}{}{usr} -\nextlevel - -\mess{msg 3}{usr}{m2}[-1] -\coregionstart{m1} -\settimeout{S}{m3}[2] -\nextlevel - - -\mess{msg 4}{m1}{usr} -\coregionstart{m2} -\settimer[r]{T}{m3} -\nextlevel - -\mess[r]{msg 5}{m2}{m2}[3] -\mess{msg 6}{usr}{usr}[2] -\nextlevel - -\mess{msg 7}{m2}{usr} -\timeout[r]{T}{m3} -\nextlevel - -\coregionend{m2} -\nextlevel - -\coregionend{m1} -\stoptimer[r]{T'}{m3} -\nextlevel - -\lost[r]{msg y}{Mach 1}{usr} -\mess{msg 8}{m1}{envright} -\nextlevel - -\condition{condition 1}{usr,m2} -\setstoptimer[r]{U}{m3} -\nextlevel[2] -\stop{usr} - -\end{msc} -\end{verbatim} -} - -\begin{figure}[htb] -\begin{center} -\begin{msc}{Example} -\declinst{usr}{The user}{User} -\declinst{m1}{Control}{M1} -\dummyinst{m2} -\declinst{m3}{Another Machine}{M3} - -\create{start}{m1}{m2}{Processing}{M2} -\mess{msg 0}{envleft}{usr} -\mess{msg 1}{envright}{m2}[1] -\nextlevel - -\mess{msg 2}{usr}{m1} -\order{m1}{m2}[4] -\action{a}{m3} - -\nextlevel -\found{msg x}{}{usr} -\nextlevel - -\mess{msg 3}{usr}{m2}[-1] -\coregionstart{m1} -\settimeout{S}{m3}[2] -\nextlevel - - -\mess{msg 4}{m1}{usr} -\coregionstart{m2} -\settimer[r]{T}{m3} -\nextlevel - -\mess[r]{msg 5}{m2}{m2}[3] -\mess{msg 6}{usr}{usr}[2] -\nextlevel - -\mess{msg 7}{m2}{usr} -\timeout[r]{T}{m3} -\nextlevel - -\coregionend{m2} -\nextlevel - -\coregionend{m1} -\stoptimer[r]{T'}{m3} -\nextlevel - -\lost[r]{msg y}{Mach 1}{usr} -\mess{msg 8}{m1}{envright} -\nextlevel - -\condition{condition 1}{usr,m2} -\setstoptimer[r]{U}{m3} -\nextlevel[2] -\stop{usr} - -\end{msc} - -\caption{A menagerie of \MSC{} symbols} -\label{ex} -\end{center} -\end{figure} - - -\section{Acknowledgments} -Thanks are due to the following people for providing us with useful -input: Peter Peters, Michel Reniers. - -\bibliographystyle{plain} -\bibliography{biblio} - -\end{document} |