blob: 65511fa5962641a7d916dd3344df03ee4f8a89eb [file] [log] [blame]
<?xml version="1.0" encoding="UTF-8"?>
<xmi:XMI xmi:version="20131001" xmlns:xmi="http://www.omg.org/spec/XMI/20131001" xmlns:C_Cpp="http://www.eclipse.org/papyrus/C_Cpp/1" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:standard="http://www.eclipse.org/uml2/5.0.0/UML/Profile/Standard" xmlns:uml="http://www.eclipse.org/uml2/5.0.0/UML">
<uml:Model xmi:id="_ROTQYC-OEdySSa8YESkO2w" name="OS_AL">
<packageImport xmi:type="uml:PackageImport" xmi:id="_ROTQYS-OEdySSa8YESkO2w">
<importedPackage xmi:type="uml:Model" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#_0"/>
</packageImport>
<packageImport xmi:type="uml:PackageImport" xmi:id="_Ac-YUDRcEdyDwaY3iUxzzA">
<importedPackage xmi:type="uml:Model" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_DV8nkBv8EduZN5aJJITI5w"/>
</packageImport>
<packagedElement xmi:type="uml:Package" xmi:id="_mU3acC-OEdySSa8YESkO2w" name="Communication">
<ownedComment xmi:type="uml:Comment" xmi:id="_VAllAFClEdyTutVzffQTmQ" annotatedElement="_Nz2RgFClEdyTutVzffQTmQ">
<body>Declared in MessageBuffer.h,&#xD;
but outside of the class Section</body>
</ownedComment>
<packagedElement xmi:type="uml:Class" xmi:id="_LbxUEDRPEdy1p4IpsoZYqA" name="MessageBuffer">
<ownedComment xmi:type="uml:Comment" xmi:id="_kVFp0FClEdyTutVzffQTmQ" annotatedElement="_LbxUEDRPEdy1p4IpsoZYqA">
<body>The message buffer is used to store different data types that can be&#xD;
added to (read from) the buffer by means of overloaded &lt;&lt; (>>) operators.</body>
</ownedComment>
<ownedAttribute xmi:type="uml:Property" xmi:id="_iJ-LMFCnEdyTutVzffQTmQ" name="m_buffer" visibility="protected" isUnique="false">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_YYWiwByeEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_mjdT8FCnEdyTutVzffQTmQ" value="800"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_mjmd4FCnEdyTutVzffQTmQ" value="800"/>
<defaultValue xmi:type="uml:LiteralString" xmi:id="_kc5QEFCnEdyTutVzffQTmQ" value=""/>
</ownedAttribute>
<ownedAttribute xmi:type="uml:Property" xmi:id="_iRkoAFCnEdyTutVzffQTmQ" name="m_reader_ptr" visibility="protected" isUnique="false">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_YYWiwByeEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_iSBT8FCnEdyTutVzffQTmQ" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_iSBT8VCnEdyTutVzffQTmQ" value="1"/>
</ownedAttribute>
<ownedAttribute xmi:type="uml:Property" xmi:id="_iVcbYFCnEdyTutVzffQTmQ" name="m_writer_ptr" visibility="protected" isUnique="false">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_YYWiwByeEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_iV5HUFCnEdyTutVzffQTmQ" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_iV5HUVCnEdyTutVzffQTmQ" value="1"/>
</ownedAttribute>
<ownedAttribute xmi:type="uml:Property" xmi:id="_iY4J4FCnEdyTutVzffQTmQ" name="m_data_start" visibility="protected" isUnique="false">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_YYWiwByeEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_iZUOwFCnEdyTutVzffQTmQ" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_iZd_wFCnEdyTutVzffQTmQ" value="1"/>
</ownedAttribute>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_98a-cFCnEdyTutVzffQTmQ" name="MessageBuffer" specification="_9ececFCmEdyTutVzffQTmQ">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_eg8bUCBbEeOMKsPXBVC0DA" name="dummy" type="_Nz2RgFClEdyTutVzffQTmQ">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_ehdYsCBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_eho-4CBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body> m_data_start = m_buffer;</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_JZnvoFCqEdyTutVzffQTmQ" name="sizeReader" specification="_UH_6sFCmEdyTutVzffQTmQ">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_eh5dkCBbEeOMKsPXBVC0DA" name="param_0" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_eiaa8CBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_eilaECBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body> return (m_reader_ptr - m_data_start);</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_LTXfgFCqEdyTutVzffQTmQ" name="sizeWriter" specification="_UVQTkFCmEdyTutVzffQTmQ">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_ei2f0CBbEeOMKsPXBVC0DA" name="param_0" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_ejXdMCBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ejicUCBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body> return (m_writer_ptr - m_data_start);</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_Mz7TUFCqEdyTutVzffQTmQ" name="resetReader" specification="_9XQt0FClEdyTutVzffQTmQ">
<language>C/C++</language>
<body> m_reader_ptr = m_data_start;</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_N_7MYFCqEdyTutVzffQTmQ" name="resetWriter" specification="_FSpQAFCmEdyTutVzffQTmQ">
<language>C/C++</language>
<body> m_writer_ptr = m_data_start;</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_PoOm8FCqEdyTutVzffQTmQ" name="reset" specification="_Olf7cFCmEdyTutVzffQTmQ">
<language>C/C++</language>
<body> resetReader ();&#xD;
resetWriter ();&#xD;
</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_miDeYFCqEdyTutVzffQTmQ" name="MessageBuffer" specification="_3v1yUFClEdyTutVzffQTmQ">
<language>C/C++</language>
<body> m_data_start = m_buffer;&#xD;
reset ();&#xD;
</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_pMOloFCqEdyTutVzffQTmQ" name="MessageBuffer" specification="_oHiAsFClEdyTutVzffQTmQ">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_ekJgUCBbEeOMKsPXBVC0DA" name="msgBuf" type="_LbxUEDRPEdy1p4IpsoZYqA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_ekrEwCBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ek2D4CBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body> memcpy (m_buffer, msgBuf.m_buffer, MAX_MESSAGE_SIZE);&#xD;
// m_data_start is modified by a subclass, thus, we cannot simply&#xD;
// reset m_data_start to m_buffer&#xD;
m_data_start = m_buffer + (msgBuf.m_data_start - msgBuf.m_buffer);&#xD;
m_reader_ptr = m_buffer + (msgBuf.m_reader_ptr - msgBuf.m_buffer);&#xD;
m_writer_ptr = m_buffer + (msgBuf.m_writer_ptr - msgBuf.m_buffer);&#xD;
</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_E6W5kFCrEdyTutVzffQTmQ" name="addToBuffer" specification="_g-GDYFCmEdyTutVzffQTmQ">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_elVMECBbEeOMKsPXBVC0DA" name="ptr">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_8I6RgBydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_el2wgCBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_emBvoCBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_emiF8CBbEeOMKsPXBVC0DA" name="size">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_enDDUCBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_enOCcCBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body> if (m_writer_ptr + size > m_buffer + MAX_MESSAGE_SIZE) {&#xD;
OSAL_ERROR(&quot;Message buffer too small&quot;);&#xD;
}&#xD;
memcpy (m_writer_ptr, ptr, size);&#xD;
// keep alignment of pointers&#xD;
m_writer_ptr += (size + MB_ALIGNMENT - 1) &amp; (- MB_ALIGNMENT);&#xD;
</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_Gkwl4FCrEdyTutVzffQTmQ" name="getFromBuffer" specification="_viKJwFCmEdyTutVzffQTmQ">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_enfIMCBbEeOMKsPXBVC0DA" name="ptr">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_8I6RgBydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_eoAFkCBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_eoP9MCBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_eoo-wCBbEeOMKsPXBVC0DA" name="size">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_epJ8ICBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_epU7QCBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body> if (m_reader_ptr + size > m_buffer + MAX_MESSAGE_SIZE) {&#xD;
OSAL_ERROR(&quot;read past end of buffer&quot;);&#xD;
}&#xD;
memcpy (ptr, m_reader_ptr, size);&#xD;
m_reader_ptr += (size + MB_ALIGNMENT - 1) &amp; (- MB_ALIGNMENT);&#xD;
</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_p3s1wDR1EdypGbuyt3_DaA" name="operator&lt;&lt;" specification="_lKriQDRPEdy1p4IpsoZYqA">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_epmBACBbEeOMKsPXBVC0DA" name="param_0" type="_LbxUEDRPEdy1p4IpsoZYqA" direction="return">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_eqG-YCBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_eqR9gCBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_eqk4cCBbEeOMKsPXBVC0DA" name="msg" type="_LbxUEDRPEdy1p4IpsoZYqA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_erGc4CBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_erRcACBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_erkW8CBbEeOMKsPXBVC0DA" name="bstr" type="_WXH_4DO2EdyG-pUz-bb-Lg">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_esFUUCBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_esQTcCBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body>msg.addToBuffer( &amp;bstr.nbytes, sizeof (size_t));&#xD;
msg.addToBuffer( bstr.charTable, bstr.nbytes+1);&#xD;
return msg;&#xD;
</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_s5RwYDR1EdypGbuyt3_DaA" name="operator>>" specification="_m8rEUDRPEdy1p4IpsoZYqA">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_eswpwCBbEeOMKsPXBVC0DA" name="param_0" type="_LbxUEDRPEdy1p4IpsoZYqA" direction="return">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_etRnICBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_etdNUCBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_etvhMCBbEeOMKsPXBVC0DA" name="msg" type="_LbxUEDRPEdy1p4IpsoZYqA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_euQekCBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_eucEwCBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_euuYoCBbEeOMKsPXBVC0DA" name="bstr" type="_WXH_4DO2EdyG-pUz-bb-Lg">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_evP9ECBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_evfNoCBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body>unsigned int length;&#xD;
msg.getFromBuffer (&amp;length, sizeof (size_t));&#xD;
if (length &lt; bstr.charTableSize) {&#xD;
msg.getFromBuffer (bstr.charTable, length+1);&#xD;
bstr.nbytes = length;&#xD;
bstr.current = bstr.charTable;&#xD;
}&#xD;
return msg;&#xD;
</body>
</ownedBehavior>
<ownedOperation xmi:type="uml:Operation" xmi:id="_oHiAsFClEdyTutVzffQTmQ" name="MessageBuffer" method="_pMOloFCqEdyTutVzffQTmQ">
<ownedComment xmi:type="uml:Comment" xmi:id="_wvBa8FClEdyTutVzffQTmQ" annotatedElement="_oHiAsFClEdyTutVzffQTmQ">
<body>Copy constructor for a message buffer. Needed to adjust&#xD;
read and write pointers after copying</body>
</ownedComment>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_qqshAFClEdyTutVzffQTmQ" name="msgBuf" type="_LbxUEDRPEdy1p4IpsoZYqA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_qq_b8FClEdyTutVzffQTmQ" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_qrJM8FClEdyTutVzffQTmQ" name="" value="1"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="_3v1yUFClEdyTutVzffQTmQ" name="MessageBuffer" method="_miDeYFCqEdyTutVzffQTmQ"/>
<ownedOperation xmi:type="uml:Operation" xmi:id="_9XQt0FClEdyTutVzffQTmQ" name="resetReader" method="_Mz7TUFCqEdyTutVzffQTmQ">
<ownedComment xmi:type="uml:Comment" xmi:id="_BilewFCmEdyTutVzffQTmQ" annotatedElement="_9XQt0FClEdyTutVzffQTmQ">
<body>Reset the reader pointer into the message buffer</body>
</ownedComment>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="_FSpQAFCmEdyTutVzffQTmQ" name="resetWriter" method="_N_7MYFCqEdyTutVzffQTmQ">
<ownedComment xmi:type="uml:Comment" xmi:id="_HngOkFCmEdyTutVzffQTmQ" annotatedElement="_FSpQAFCmEdyTutVzffQTmQ">
<body>Reset the writer pointer into the message buffer</body>
</ownedComment>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="_Olf7cFCmEdyTutVzffQTmQ" name="reset" method="_PoOm8FCqEdyTutVzffQTmQ">
<ownedComment xmi:type="uml:Comment" xmi:id="_RcogoFCmEdyTutVzffQTmQ" annotatedElement="_Olf7cFCmEdyTutVzffQTmQ">
<body>Reset the reader and writer pointer into the message buffer</body>
</ownedComment>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="_UH_6sFCmEdyTutVzffQTmQ" name="sizeReader" method="_JZnvoFCqEdyTutVzffQTmQ">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_ZMP3sFCmEdyTutVzffQTmQ" name="param_0" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_ZMiyoFCmEdyTutVzffQTmQ" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ZM1tkFCmEdyTutVzffQTmQ" name="" value="1"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="_UVQTkFCmEdyTutVzffQTmQ" name="sizeWriter" method="_LTXfgFCqEdyTutVzffQTmQ">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_akA74FCmEdyTutVzffQTmQ" name="param_0" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_akT20FCmEdyTutVzffQTmQ" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_akmxwFCmEdyTutVzffQTmQ" name="" value="1"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="_g-GDYFCmEdyTutVzffQTmQ" name="addToBuffer" method="_E6W5kFCrEdyTutVzffQTmQ">
<ownedComment xmi:type="uml:Comment" xmi:id="_ifZeEFCmEdyTutVzffQTmQ" annotatedElement="_g-GDYFCmEdyTutVzffQTmQ">
<body>Method used to add a value to the buffer. Don't use this&#xD;
method but the overloaded &lt;&lt; operator.</body>
</ownedComment>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_lT2isFCmEdyTutVzffQTmQ" name="ptr">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_8I6RgBydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_lZNj0FCmEdyTutVzffQTmQ" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_lZXU0FCmEdyTutVzffQTmQ" name="" value="1"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_ljDcUFCmEdyTutVzffQTmQ" name="size">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_ljWXQFCmEdyTutVzffQTmQ" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ljgIQFCmEdyTutVzffQTmQ" name="" value="1"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="_viKJwFCmEdyTutVzffQTmQ" name="getFromBuffer" method="_Gkwl4FCrEdyTutVzffQTmQ">
<ownedComment xmi:type="uml:Comment" xmi:id="_yFLgIFCmEdyTutVzffQTmQ" annotatedElement="_viKJwFCmEdyTutVzffQTmQ">
<body>Method used retrieve a value from the buffer. Don't use this&#xD;
method but the overloaded >> operator.</body>
</ownedComment>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_04JXAFCmEdyTutVzffQTmQ" name="ptr">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_8I6RgBydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_04mC8FCmEdyTutVzffQTmQ" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_04vM4FCmEdyTutVzffQTmQ" name="" value="1"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_1B-ocFCmEdyTutVzffQTmQ" name="size">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_1CRjYFCmEdyTutVzffQTmQ" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_1CkeUFCmEdyTutVzffQTmQ" name="" value="1"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="_9ececFCmEdyTutVzffQTmQ" name="MessageBuffer" visibility="protected" method="_98a-cFCnEdyTutVzffQTmQ">
<ownedComment xmi:type="uml:Comment" xmi:id="_Rg-_sFCnEdyTutVzffQTmQ" annotatedElement="_9ececFCmEdyTutVzffQTmQ">
<body>This constructor is there fore efficiency reasons: it does not&#xD;
initialize the reader and writer pointers. It is used by subclasses&#xD;
that modify the data_start and therefore need to invoke reset&#xD;
afterwards. Thus, it prevents that reset is called multiple times.</body>
</ownedComment>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_USmywFCnEdyTutVzffQTmQ" name="dummy" type="_Nz2RgFClEdyTutVzffQTmQ">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_US5tsFCnEdyTutVzffQTmQ" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UTDesFCnEdyTutVzffQTmQ" name="" value="1"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="_lKriQDRPEdy1p4IpsoZYqA" name="operator&lt;&lt;" method="_p3s1wDR1EdypGbuyt3_DaA">
<ownedComment xmi:type="uml:Comment" xmi:id="_OgIngDRQEdy1p4IpsoZYqA" annotatedElement="_lKriQDRPEdy1p4IpsoZYqA">
<body>declare specific marshalling operators for BString, since&#xD;
(1) this is more efficient&#xD;
(2) a memory copy based marshalling would copy pointers that become&#xD;
bogus in a different address space.</body>
</ownedComment>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_t_JBgDRPEdy1p4IpsoZYqA" name="param_0" type="_LbxUEDRPEdy1p4IpsoZYqA" direction="return">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_wr2fYDRPEdy1p4IpsoZYqA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_wr2fYTRPEdy1p4IpsoZYqA" value="1"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_1yC9IDRPEdy1p4IpsoZYqA" name="msg" type="_LbxUEDRPEdy1p4IpsoZYqA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_4NBKwDRPEdy1p4IpsoZYqA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_4NBKwTRPEdy1p4IpsoZYqA" value="1"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_132qMDRPEdy1p4IpsoZYqA" name="bstr" type="_WXH_4DO2EdyG-pUz-bb-Lg">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_9YIkwDRPEdy1p4IpsoZYqA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_9YRusDRPEdy1p4IpsoZYqA" value="1"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="_m8rEUDRPEdy1p4IpsoZYqA" name="operator>>" method="_s5RwYDR1EdypGbuyt3_DaA">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_BTXrQDRQEdy1p4IpsoZYqA" name="param_0" type="_LbxUEDRPEdy1p4IpsoZYqA" direction="return"/>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_BWpowDRQEdy1p4IpsoZYqA" name="msg" type="_LbxUEDRPEdy1p4IpsoZYqA"/>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_BaOhMDRQEdy1p4IpsoZYqA" name="bstr" type="_WXH_4DO2EdyG-pUz-bb-Lg"/>
</ownedOperation>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_M5gBkFCDEdy2tpS719xBwQ" name="p_Communication"/>
<packagedElement xmi:type="uml:Enumeration" xmi:id="_Nz2RgFClEdyTutVzffQTmQ" name="MessageBufferEnum">
<ownedLiteral xmi:type="uml:EnumerationLiteral" xmi:id="_RygfcFClEdyTutVzffQTmQ" name="NO_RESET"/>
</packagedElement>
<packagedElement xmi:type="uml:DataType" xmi:id="_ZiVqMFCrEdyTutVzffQTmQ" name="MessageHeader">
<ownedComment xmi:type="uml:Comment" xmi:id="_v7_MwFCrEdyqzLG48ixyqA" annotatedElement="_ZiVqMFCrEdyTutVzffQTmQ">
<body>A Message Header that is prefixed to all messages</body>
</ownedComment>
<ownedAttribute xmi:type="uml:Property" xmi:id="_ypi_MFCrEdyqzLG48ixyqA" name="msgType" visibility="public" isUnique="false">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_yqI1EFCrEdyqzLG48ixyqA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_yqI1EVCrEdyqzLG48ixyqA" value="1"/>
</ownedAttribute>
<ownedAttribute xmi:type="uml:Property" xmi:id="_yuw2YFCrEdyqzLG48ixyqA" name="sender" visibility="public" isUnique="false">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_yu6nYFCrEdyqzLG48ixyqA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_yu6nYVCrEdyqzLG48ixyqA" value="1"/>
</ownedAttribute>
<ownedAttribute xmi:type="uml:Property" xmi:id="_yzPGsFCrEdyqzLG48ixyqA" name="msgNumber" visibility="public" isUnique="false">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_yzryoFCrEdyqzLG48ixyqA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_yzryoVCrEdyqzLG48ixyqA" value="1"/>
</ownedAttribute>
<ownedAttribute xmi:type="uml:Property" xmi:id="_y2EYQFCrEdyqzLG48ixyqA" name="length" visibility="public" isUnique="false">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_y2X6QFCrEdyqzLG48ixyqA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_y2X6QVCrEdyqzLG48ixyqA" value="1"/>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_N361AFCsEdyqzLG48ixyqA" name="MessageWithHeader">
<ownedComment xmi:type="uml:Comment" xmi:id="_d_xCUFCsEdyqzLG48ixyqA" annotatedElement="_N361AFCsEdyqzLG48ixyqA">
<body>This subtype of MessageBuffer adds a MessageHeader at the beginning.&#xD;
For the sake of efficiency, the storage of the header is mapped directly&#xD;
into the buffer (works only for homogeneous architectures).</body>
</ownedComment>
<generalization xmi:type="uml:Generalization" xmi:id="_TmRe8FCsEdyqzLG48ixyqA" general="_LbxUEDRPEdy1p4IpsoZYqA"/>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_l2PZ4FCtEdyqzLG48ixyqA" name="getHeader" specification="_JEUGoFCtEdyqzLG48ixyqA">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_rf6MICBbEeOMKsPXBVC0DA" name="param_0" type="_ZiVqMFCrEdyTutVzffQTmQ" direction="return">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rgbwkCBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rgnWwCBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body> return (MessageHeader *) m_buffer;</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_nd9loFCtEdyqzLG48ixyqA" name="setMsgType" specification="__McpoFCsEdyqzLG48ixyqA">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_rhF34CBbEeOMKsPXBVC0DA" name="msgType">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rhncUCBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rhzCgCBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body> getHeader ()->msgType = msgType;</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_o1lf4FCtEdyqzLG48ixyqA" name="isFromLocalZone" specification="_V5vg8FCtEdyqzLG48ixyqA">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_riEIQCBbEeOMKsPXBVC0DA" name="param_0" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rilssCBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rixS4CBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body> return (getHeader ()->sender == ProDesc::getZoneNumber ());</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_4CE4MVCtEdyqzLG48ixyqA" name="MessageWithHeader" specification="_i3atwFCsEdyqzLG48ixyqA">
<language>C/C++</language>
<body> m_data_start += sizeof (MessageHeader);&#xD;
reset ();&#xD;
</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_9REFkVCtEdyqzLG48ixyqA" name="MessageWithHeader" specification="_cxNvEFCtEdyqzLG48ixyqA">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_rjH4MCBbEeOMKsPXBVC0DA" name="dummy" type="_Nz2RgFClEdyTutVzffQTmQ">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rjvjQCBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rj7JcCBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body> m_data_start += sizeof (MessageHeader);</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="__L2-UVCtEdyqzLG48ixyqA" name="MessageWithHeader" specification="_k-Am0FCsEdyqzLG48ixyqA">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_rkMPMCBbEeOMKsPXBVC0DA" name="msg" type="_N361AFCsEdyqzLG48ixyqA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rktzoCBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rk5Z0CBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body></body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_A-TzYFCuEdyqzLG48ixyqA" name="initZoneNumber" specification="_44le4FCsEdyqzLG48ixyqA">
<language>C/C++</language>
<body> getHeader ()->sender = ProDesc::getZoneNumber ();</body>
</ownedBehavior>
<ownedOperation xmi:type="uml:Operation" xmi:id="_i3atwFCsEdyqzLG48ixyqA" name="MessageWithHeader" method="_4CE4MVCtEdyqzLG48ixyqA"/>
<ownedOperation xmi:type="uml:Operation" xmi:id="_k-Am0FCsEdyqzLG48ixyqA" name="MessageWithHeader" method="__L2-UVCtEdyqzLG48ixyqA">
<ownedComment xmi:type="uml:Comment" xmi:id="_m3yL4FCsEdyqzLG48ixyqA" annotatedElement="_k-Am0FCsEdyqzLG48ixyqA">
<body>define a copy constructor (which does nothing besides calling the&#xD;
copy constructor of the super class)</body>
</ownedComment>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_sZUh0FCsEdyqzLG48ixyqA" name="msg" type="_N361AFCsEdyqzLG48ixyqA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sZ6XsFCsEdyqzLG48ixyqA" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_saEIsFCsEdyqzLG48ixyqA" name="" value="1"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="_44le4FCsEdyqzLG48ixyqA" name="initZoneNumber" method="_A-TzYFCuEdyqzLG48ixyqA">
<ownedComment xmi:type="uml:Comment" xmi:id="_69q8EFCsEdyqzLG48ixyqA" annotatedElement="_44le4FCsEdyqzLG48ixyqA">
<body>needs to be called for each allocated instance. The initialization of&#xD;
the zone number has been removed from the constructor, since the zone&#xD;
number is not defined at compile time [todo: would that be a good&#xD;
idea?] and its initialization would not work for statically declared&#xD;
messages.&#xD;
initZoneNumber is called by Message's init function.</body>
</ownedComment>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="__McpoFCsEdyqzLG48ixyqA" name="setMsgType" method="_nd9loFCtEdyqzLG48ixyqA">
<ownedComment xmi:type="uml:Comment" xmi:id="_BjahAFCtEdyqzLG48ixyqA" annotatedElement="__McpoFCsEdyqzLG48ixyqA">
<body>set the message type (see MsgType constant definition in&#xD;
ToChannel</body>
</ownedComment>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_FWns4FCtEdyqzLG48ixyqA" name="msgType">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_FXEY0FCtEdyqzLG48ixyqA" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_FXNiwFCtEdyqzLG48ixyqA" name="" value="1"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="_JEUGoFCtEdyqzLG48ixyqA" name="getHeader" method="_l2PZ4FCtEdyqzLG48ixyqA">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_KUMaIFCtEdyqzLG48ixyqA" name="param_0" type="_ZiVqMFCrEdyTutVzffQTmQ" direction="return">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_KUyQAFCtEdyqzLG48ixyqA" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_KU8BAFCtEdyqzLG48ixyqA" name="" value="1"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="_V5vg8FCtEdyqzLG48ixyqA" name="isFromLocalZone" method="_o1lf4FCtEdyqzLG48ixyqA">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_ZPvMYFCtEdyqzLG48ixyqA" name="param_0" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_ZQCHUFCtEdyqzLG48ixyqA" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ZQVpUFCtEdyqzLG48ixyqA" name="" value="1"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="_cxNvEFCtEdyqzLG48ixyqA" name="MessageWithHeader" visibility="protected" method="_9REFkVCtEdyqzLG48ixyqA">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_eTRXsFCtEdyqzLG48ixyqA" name="dummy" type="_Nz2RgFClEdyTutVzffQTmQ">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_eTuDoFCtEdyqzLG48ixyqA" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_eUA-kFCtEdyqzLG48ixyqA" name="" value="1"/>
</ownedParameter>
</ownedOperation>
</packagedElement>
<packagedElement xmi:type="uml:Dependency" xmi:id="_YWeekFCsEdyqzLG48ixyqA" name="FromMessageWithHeadertoMessageHeader" client="_N361AFCsEdyqzLG48ixyqA" supplier="_ZiVqMFCrEdyTutVzffQTmQ"/>
<packagedElement xmi:type="uml:Dependency" xmi:id="_bWmnsFCsEdyqzLG48ixyqA" name="FromMessageWithHeadertoProDesc" client="_N361AFCsEdyqzLG48ixyqA" supplier="_oSgIME_BEdy2tpS719xBwQ"/>
<packagedElement xmi:type="uml:Dependency" xmi:id="_LGiAkFCuEdyqzLG48ixyqA" name="Fromp_CommunicationtoBaseTypes" client="_M5gBkFCDEdy2tpS719xBwQ" supplier="_0TXx4DUOEdy0feurbW0fyQ"/>
<packagedElement xmi:type="uml:Class" xmi:id="_sq-yMFCvEdyqzLG48ixyqA" name="SharedMemory">
<ownedAttribute xmi:type="uml:Property" xmi:id="_UCsbkFC0EdyqzLG48ixyqA" name="shmSize" visibility="public" isUnique="false">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UC_WgFC0EdyqzLG48ixyqA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UDIgcFC0EdyqzLG48ixyqA" value="1"/>
</ownedAttribute>
<ownedAttribute xmi:type="uml:Property" xmi:id="_qM2woFC0EdyqzLG48ixyqA" name="m_name" visibility="private" type="_sQ1JADO0EdyG-pUz-bb-Lg" isUnique="false">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_w0M4EFC0EdyqzLG48ixyqA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_w0M4EVC0EdyqzLG48ixyqA" value="1"/>
</ownedAttribute>
<ownedAttribute xmi:type="uml:Property" xmi:id="_qTs_gFC0EdyqzLG48ixyqA" name="m_mutex" visibility="private" isUnique="false">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_0DeQcFC0EdyqzLG48ixyqA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_0DoBcFC0EdyqzLG48ixyqA" value="1"/>
</ownedAttribute>
<ownedAttribute xmi:type="uml:Property" xmi:id="_VBgXwFC1EdyqzLG48ixyqA" name="m_key" visibility="private" isUnique="false">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_VBzSsFC1EdyqzLG48ixyqA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_VB9DsFC1EdyqzLG48ixyqA" value="1"/>
</ownedAttribute>
<ownedAttribute xmi:type="uml:Property" xmi:id="_VL8GIFC1EdyqzLG48ixyqA" name="m_id" visibility="private" isUnique="false">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_VMYyEFC1EdyqzLG48ixyqA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_VMYyEVC1EdyqzLG48ixyqA" value="1"/>
</ownedAttribute>
<ownedAttribute xmi:type="uml:Property" xmi:id="_VPz5gFC1EdyqzLG48ixyqA" name="classKey" visibility="private" isStatic="true" isUnique="false">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_VQG0cFC1EdyqzLG48ixyqA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_VQQlcFC1EdyqzLG48ixyqA" value="1"/>
<defaultValue xmi:type="uml:LiteralInteger" xmi:id="_BbrEYCBSEeOBrb_t_69W4Q" value="13091969"/>
</ownedAttribute>
<ownedAttribute xmi:type="uml:Property" xmi:id="_gOHaIFC1EdyqzLG48ixyqA" name="m_address00" visibility="private" isUnique="false">
<ownedComment xmi:type="uml:Comment" xmi:id="_vzw5UFC1EdyqzLG48ixyqA" annotatedElement="_gOHaIFC1EdyqzLG48ixyqA">
<body>start of the shared memory section</body>
</ownedComment>
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_5lVhgBydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_gOkGEFC1EdyqzLG48ixyqA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_gOtQAFC1EdyqzLG48ixyqA" value="1"/>
</ownedAttribute>
<ownedAttribute xmi:type="uml:Property" xmi:id="_gR1cgFC1EdyqzLG48ixyqA" name="m_address0" visibility="private" isUnique="false">
<ownedComment xmi:type="uml:Comment" xmi:id="_xgYzMFC1EdyqzLG48ixyqA" annotatedElement="_gR1cgFC1EdyqzLG48ixyqA">
<body>start for user data within the shared memory section (after Mutex)</body>
</ownedComment>
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_5lVhgBydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_gSI-gFC1EdyqzLG48ixyqA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_gSI-gVC1EdyqzLG48ixyqA" value="1"/>
</ownedAttribute>
<ownedAttribute xmi:type="uml:Property" xmi:id="_gVRLAFC1EdyqzLG48ixyqA" name="m_address" visibility="private" isUnique="false">
<ownedComment xmi:type="uml:Comment" xmi:id="_zeKHcFC1EdyqzLG48ixyqA" annotatedElement="_gVRLAFC1EdyqzLG48ixyqA">
<body>current address for new allocations</body>
</ownedComment>
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_5lVhgBydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_gVkF8FC1EdyqzLG48ixyqA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_gVt28FC1EdyqzLG48ixyqA" value="1"/>
</ownedAttribute>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_46GywFC1EdyqzLG48ixyqA" name="getAddress0" specification="_WZFykFCxEdyqzLG48ixyqA">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_cth88CBbEeOMKsPXBVC0DA" name="param_0" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_8I6RgBydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_cuC6UCBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_cuN5cCBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body> return m_address0;</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_7UyFcFC1EdyqzLG48ixyqA" name="getName" specification="_gRW4MFCxEdyqzLG48ixyqA">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_curMcCBbEeOMKsPXBVC0DA" name="param_0" type="_sQ1JADO0EdyG-pUz-bb-Lg" direction="return">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_cvMJ0CBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_cvXwACBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body> return &amp;m_name;</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_80JmcFC1EdyqzLG48ixyqA" name="getMutex" specification="_7F2OYFCxEdyqzLG48ixyqA">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_cv8XwCBbEeOMKsPXBVC0DA" name="param_0" direction="return">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_cwX1kCBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_cwkC0CBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body> return m_mutex;</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="__3W4wFC1EdyqzLG48ixyqA" name="_key" specification="_KxUW0FC0EdyqzLG48ixyqA">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_cxB84CBbEeOMKsPXBVC0DA" name="param_0" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_cxpA4CBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_cx0AACBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body> return m_key;</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_BFvXcFC2EdyqzLG48ixyqA" name="_id" specification="_K3bl4FC0EdyqzLG48ixyqA">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_cyEesCBbEeOMKsPXBVC0DA" name="param_0" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_cylcECBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_cyxCQCBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body> return m_id;</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_CahZEFC2EdyqzLG48ixyqA" name="_shmSize" specification="_K8DAIFC0EdyqzLG48ixyqA">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_czBg8CBbEeOMKsPXBVC0DA" name="param_0" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_czjscCBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_czurkCBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body> return shmSize;</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_DsohMFC2EdyqzLG48ixyqA" name="set_shmSize" specification="_LAqaYFC0EdyqzLG48ixyqA">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_cz_xUCBbEeOMKsPXBVC0DA" name="cr_operand">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_c0gusCBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_c0rt0CBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body> shmSize = cr_operand;</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_VNNcAVC2EdyqzLG48ixyqA" name="SharedMemory" specification="_W9qUsFCwEdyqzLG48ixyqA">
<language>C/C++</language>
<body> set_shmSize (-1);&#xD;
// constructor without args is useful e.g. for use as element of an array&#xD;
</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_ZB5OkVC2EdyqzLG48ixyqA" name="SharedMemory" specification="_ZznOIFCwEdyqzLG48ixyqA">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_c1BsECBbEeOMKsPXBVC0DA" name="name" type="_WXH_4DO2EdyG-pUz-bb-Lg">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_c1jQgCBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_c1uPoCBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_c2H4QCBbEeOMKsPXBVC0DA" name="char1">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_c2qDwCBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_c21C4CBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_c3ApECBbEeOMKsPXBVC0DA" name="size">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_c3hmcCBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_c3slkCBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_c34LwCBbEeOMKsPXBVC0DA" name="synchro">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_c4ZJICBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_c4qO4CBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body> set_shmSize (-1);&#xD;
&#xD;
int r;&#xD;
&#xD;
#ifdef SYNCHRO_VxWorks&#xD;
r = openIntern (char1, 0, 0, size, synchro);&#xD;
#else&#xD;
r = openIntern (char1, O_RDWR | O_CREAT, 0777, size, synchro);&#xD;
#endif&#xD;
if (r == -1)&#xD;
OSAL_ERROR (&quot;ON open(O_RDWR | O_CREAT, ...)&quot;);&#xD;
</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_dMLdsFC2EdyqzLG48ixyqA" name="open" specification="_2k0vsFCwEdyqzLG48ixyqA">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_c46tkCBbEeOMKsPXBVC0DA" name="param_0" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_c5c5ECBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_c5n4MCBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_c5y3UCBbEeOMKsPXBVC0DA" name="name" type="_WXH_4DO2EdyG-pUz-bb-Lg">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_c6UbwCBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_c6fa4CBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_c65qkCBbEeOMKsPXBVC0DA" name="char1">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_c7an8CBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_c7lnECBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_c7xNQCBbEeOMKsPXBVC0DA" name="oflag">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_c8RjkCBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_c8dw0CBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_c8pXACBbEeOMKsPXBVC0DA" name="mode">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_c9KUYCBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_c9VTgCBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_c9g5sCBbEeOMKsPXBVC0DA" name="size">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_c-B3ECBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_c-M2MCBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_c-X1UCBbEeOMKsPXBVC0DA" name="synchro">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_c-4ysCBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_c_EY4CBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body> int r;&#xD;
&#xD;
m_name = name;&#xD;
#ifdef SYNCHRO_VxWorks&#xD;
r = openIntern (char1, 0, 0, size, synchro);&#xD;
#else&#xD;
r = openIntern (char1, O_RDWR | O_CREAT, 0777, size, synchro);&#xD;
#endif&#xD;
&#xD;
return r;&#xD;
</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_g6wBMFC2EdyqzLG48ixyqA" name="allocate" specification="_qK9akFCxEdyqzLG48ixyqA">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_c_WFsCBbEeOMKsPXBVC0DA" name="param_0" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_8I6RgBydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_c_8ioCBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_dAHhwCBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_dAf8QCBbEeOMKsPXBVC0DA" name="itemSize">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_dBA5oCBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_dBL4wCBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body> void * r;&#xD;
&#xD;
r = (void *) m_address;&#xD;
char * newAddr;&#xD;
&#xD;
newAddr = m_address + itemSize;&#xD;
if (newAddr - m_address0 > shmSize)&#xD;
{&#xD;
BString500 s1 (&quot;allocation fails: shared memory '&quot;);&#xD;
OSAL_ERROR (s1 &lt;&lt; m_name.data ()&#xD;
&lt;&lt; &quot;' : shmSize= &quot; &lt;&lt; shmSize &lt;&lt; &quot; is too small&quot;);&#xD;
}&#xD;
&#xD;
m_address = newAddr;&#xD;
&#xD;
return r;&#xD;
</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_pde3QFC2EdyqzLG48ixyqA" name="unlink" specification="_2nJOcFCxEdyqzLG48ixyqA">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_dBcXcCBbEeOMKsPXBVC0DA" name="param_0" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_dB9U0CBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_dCIT8CBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body> int r = 0;&#xD;
&#xD;
#if defined SYNCHRO_Linux&#xD;
//cout&lt;&lt;&quot;SHM name : &quot;&lt;&lt;m_name.data()&lt;&lt;endl;&#xD;
r = shm_unlink (m_name.data ());&#xD;
//if(r == -1)&#xD;
// PRINTerr(&quot;ON shm_unlink&quot;);&#xD;
&#xD;
#elif defined SYNCHRO_Solaris || defined SYNCHRO_Cygwin&#xD;
if (m_id != -1)&#xD;
{&#xD;
r = shmdt (m_address00); // detach&#xD;
if (r == -1)&#xD;
PRINTerr (&quot;ON shmdt (m_address)&quot;);&#xD;
else&#xD;
{&#xD;
struct shmid_ds semStat;&#xD;
r = shmctl (m_id, IPC_STAT, &amp;semStat);&#xD;
if (r == -1)&#xD;
PRINTerr (&quot;ON shmctl(m_id, IPC_STAT, )&quot;);&#xD;
else if (semStat.shm_nattch == 0)&#xD;
{ /**** Only for the last process coming here ****/&#xD;
r = shmctl (m_id, IPC_RMID, NULL);&#xD;
if (r == -1)&#xD;
PRINTerr (&quot;ON shmctl( ,IPC_RMID, )&quot;);&#xD;
//essai DS 7/11/02 pour virer les fichiers *.shmKey&#xD;
//mais n'a pas l'air de marcher en Solaris 2.7&#xD;
// et gnu&#xD;
//::unlink(m_name.data()); // remove the file system entry,&#xD;
// BUT so, 'key' would not be const&#xD;
}&#xD;
}&#xD;
}&#xD;
#endif&#xD;
&#xD;
return r;&#xD;
</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_rbZVcFC2EdyqzLG48ixyqA" name="SharedMemory" specification="_yFEm4FCwEdyqzLG48ixyqA">
<language>C/C++</language>
<body> if (m_mutex != NULL) {&#xD;
delete m_mutex;&#xD;
}&#xD;
unlink ();&#xD;
</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_vp258FC2EdyqzLG48ixyqA" name="init1" specification="_35gG0FC0EdyqzLG48ixyqA">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_dCe5QCBbEeOMKsPXBVC0DA" name="creator">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_dC_2oCBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_dDK1wCBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_dDV04CBbEeOMKsPXBVC0DA" name="synchro">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_dD2yQCBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_dEBxYCBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_dEMwgCBbEeOMKsPXBVC0DA" name="size">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_dEuU8CBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_dE5UECBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body> if (creator)&#xD;
{&#xD;
/**** Only for the 1st process coming here ****/&#xD;
// 4-- check if shared memory is filled with 0&#xD;
for (int i = 0; i &lt; size; ++i)&#xD;
#ifndef SYNCHRO_VxWorks&#xD;
if (m_address00[i])&#xD;
{&#xD;
BString500 s1 (&quot;shm zone not clean. DO : ipcrm -M &quot;);&#xD;
OSAL_ERROR (s1 &lt;&lt; (long) m_key);&#xD;
}&#xD;
#else&#xD;
m_address00[i] = '\0';&#xD;
#endif&#xD;
// 5- If access synchronisation is wanted, use of a shared mutex&#xD;
if (synchro)&#xD;
{&#xD;
// a mutex needs to be allocated in shared memory&#xD;
// and initialised once&#xD;
m_mutex = new (allocate (sizeof (SM_Mutex))) SM_Mutex ();&#xD;
m_address0 = m_address; // Hide this first item&#xD;
}&#xD;
}&#xD;
else&#xD;
{&#xD;
/**** for next processes : allocate, but not initialize ****/&#xD;
// we need a semaphore to block up to the end of the&#xD;
// zone memory initialuzation&#xD;
// 5- If access synchronisation is wanted, use of a shared m_mutex&#xD;
if (synchro)&#xD;
{&#xD;
// a mutex needs to be allocated in shared memory&#xD;
m_mutex = (SM_Mutex *) allocate (sizeof (SM_Mutex));&#xD;
m_address0 = m_address; // Hide this first item&#xD;
}&#xD;
}&#xD;
</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_3a0U0FC2EdyqzLG48ixyqA" name="openIntern" specification="_4JcAQFC0EdyqzLG48ixyqA">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_dFJywCBbEeOMKsPXBVC0DA" name="param_0" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_dFqwICBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_dF2WUCBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_dGBVcCBbEeOMKsPXBVC0DA" name="char1">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_dGiS0CBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_dGtR8CBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_dG-XsCBbEeOMKsPXBVC0DA" name="oflag">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_dHfVECBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_dHqUMCBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_dH1TUCBbEeOMKsPXBVC0DA" name="mode">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_dIXe0CBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_dIjFACBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_dIuEICBbEeOMKsPXBVC0DA" name="size">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_dJPokCBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_dJansCBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_dJlm0CBbEeOMKsPXBVC0DA" name="synchro">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_dKHLQCBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_dKSKYCBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body> TRACEpr (VM);&#xD;
PR (showI);&#xD;
&#xD;
int r = 0;&#xD;
&#xD;
shmSize = size; // required size&#xD;
if (synchro)&#xD;
size += sizeof (SM_Mutex); // useful size&#xD;
&#xD;
//============================================================&#xD;
#if defined SYNCHRO_Linux&#xD;
// creation of a new segment&#xD;
r = m_id = shm_open (m_name.data (), oflag, 00777);&#xD;
if (m_id == -1)&#xD;
{&#xD;
OSAL_ERROR (&quot;ON shm_open&quot;);&#xD;
}&#xD;
// the returned id is a file descriptor. Thus, the size of the&#xD;
// memory identified by the descriptor can be set via ftruncate&#xD;
if (ftruncate (m_id, size) == -1)&#xD;
OSAL_ERROR (&quot;ON ftruncate&quot;);&#xD;
// mapping memory&#xD;
m_address00 =&#xD;
(char *) mmap (0, size, PROT_READ | PROT_WRITE, MAP_SHARED, m_id, 0);&#xD;
&#xD;
if (m_address00 == MAP_FAILED)&#xD;
OSAL_ERROR (&quot;ON mmap&quot;);&#xD;
// creation of a mutex at the address m_address00&#xD;
m_mutex = (SM_Mutex *) m_address00;&#xD;
// address0 : adress of the start of the available segment&#xD;
m_address0 = m_address00 + sizeof (SM_Mutex);&#xD;
//address : current adress&#xD;
m_address = m_address0;&#xD;
&#xD;
//============================================================&#xD;
&#xD;
#elif SYNCHRO_VxWorks&#xD;
&#xD;
// 'm_name' specified a physical address visiable for the CPU&#xD;
/* currently not used&#xD;
long memPart; // memory partition&#xD;
m_name.setBase (16);&#xD;
m_name >> memPart;&#xD;
*/&#xD;
&#xD;
#ifdef MultiCPU // for multi CPU, with optional VxMP component&#xD;
//--- See VxWorks5.3.1 Programmer's Guide, Example 6-3 -------&#xD;
// [todo the system partition is preallocated, but where du we see&#xD;
// the generation of the kernel? sysMemTop()?]&#xD;
{&#xD;
SEM_ID localSemId;&#xD;
typedef struct shared_buff&#xD;
{&#xD;
SEM_ID semSmId;&#xD;
char buff[]; // [size CHUNK_SIZE ?]&#xD;
} SHARED_BUFF;&#xD;
SHARED_BUFF *laOfAlSMB; // local address of shared memory block&#xD;
SHARED_BUFF *gaOfAlSMB; // global address of shared Memory block&#xD;
int objType;&#xD;
&#xD;
// is this the first demand of the 'shared memory block' of the&#xD;
// system partition?&#xD;
r = smNameFind (m_name.data (), (void **) &amp;gaOfAlSMB, &amp;objType,&#xD;
WAIT_FOREVER);&#xD;
if (r == -1 &amp;&amp; errno != S_smNameLib_NAME_NOT_FOUND)&#xD;
OSAL_ERROR (&quot;ON smNameFind()&quot;);&#xD;
if (r == OK)&#xD;
{&#xD;
// CREATION&#xD;
laOfAlSMB = (SHARED_BUFF *) smMemMalloc (size);&#xD;
if (laOfAlSMB == NULL)&#xD;
OSAL_ERROR (&quot;ON smMemMalloc()&quot;);&#xD;
m_address = m_address0 = m_address00 = laOfAlSMB;&#xD;
&#xD;
if (synchro)&#xD;
{&#xD;
localSemId = semBSmCreate (SEM_QFIFO, SEM_EMPTY);&#xD;
if (localSemId == NULL)&#xD;
OSAL_ERROR (&quot;ON semBSmCreate()&quot;);&#xD;
laOfAlSMB->semSmId = (SEM_ID) htonl ((int) localSemId);&#xD;
}&#xD;
&#xD;
r = (char *) smNameAdd (m_name.data (),&#xD;
(void *) smObjLocalToGlobal (laOfAlSMB),&#xD;
T_SM_BLOCK);&#xD;
if (r == -1)&#xD;
OSAL_ERROR (&quot;ON smNameAdd()&quot;);&#xD;
&#xD;
if (synchro)&#xD;
{&#xD;
r = semGive (localSemId);&#xD;
if (r == -1)&#xD;
OSAL_ERROR (&quot;ON semGive()&quot;);&#xD;
}&#xD;
init1 (TRUE, synchro, size);&#xD;
}&#xD;
else&#xD;
{&#xD;
// RE-UTILISATION&#xD;
laOfAlSMB = (SHARED_BUFF *) smObjGlobalToLocal (gaOfAlSMB);&#xD;
m_address = m_address0 = m_address00 = laOfAlSMB;&#xD;
localSemId = (SEM_ID) ntohl ((int) laOfAlSMB->semSmId);&#xD;
if (synchro)&#xD;
{&#xD;
r = semTake (localSemId, WAIT_FOREVER);&#xD;
if (r == -1)&#xD;
OSAL_ERROR (&quot;ON semTake()&quot;);&#xD;
}&#xD;
}&#xD;
// ---------------------------------------------------------------&#xD;
}&#xD;
#else // monoCPU&#xD;
#ifdef OutOfHeap&#xD;
id = (int) memPartCreate (m_address00, size);&#xD;
if (id == NULL)&#xD;
OSAL_ERROR (&quot;ON memPartCreate()&quot;);&#xD;
m_address00 = memPartAlloc (m_id, size /* -?? */ );&#xD;
if (m_address00 == NULL)&#xD;
OSAL_ERROR (&quot;ON memPartAlloc()&quot;);&#xD;
#else&#xD;
m_address00 = new char[size];&#xD;
#endif&#xD;
m_address = m_address0 = m_address00;&#xD;
init1 (TRUE, synchro, size); // 1 seul process (createur)&#xD;
#endif&#xD;
&#xD;
// ============================================================&#xD;
&#xD;
#elif defined SYNCHRO_Solaris || defined SYNCHRO_Cygwin&#xD;
m_name &lt;&lt; &quot;.shmKey&quot;; // add a suffix to recognize it with Ipcrm&#xD;
&#xD;
// 1- Get the key from the name ----------------------------------------&#xD;
&#xD;
// #define GET_KEY 1 //--- version proposed by SUN, BUT&#xD;
// the key returned by ftok() is: 0xCHMMMINO&#xD;
// CH is the character char1&#xD;
// INO is the inodenumber of the file &amp; 0xFFF&#xD;
// MMM is the minor unit number of the file system, but if the file&#xD;
// system is mounted via NFS, it is not guaranted to find the&#xD;
// same minor number after a reboot which prevents us to conserve&#xD;
// this number within a script for its destruction&#xD;
// #define GET_KEY 2 //--- version perso&#xD;
#define GET_KEY 1&#xD;
#if GET_KEY == 1&#xD;
while (m_key == -1)&#xD;
{&#xD;
m_key = ftok (m_name.data (), char1);&#xD;
if (m_key == -1)&#xD;
{&#xD;
int fd =::creat (m_name.data (), 00777);&#xD;
if (fd == -1)&#xD;
{&#xD;
BString500 s1 (&quot;ON ::creat('&quot;);&#xD;
OSAL_ERROR (s1 &lt;&lt; m_name &lt;&lt; &quot;', 00777)&quot;);&#xD;
}&#xD;
close (fd);&#xD;
}&#xD;
}&#xD;
#else // GET_KEY == 2&#xD;
int fd =::creat (m_name.data (), 00777);&#xD;
if (fd == -1)&#xD;
{&#xD;
BString500 s1 (&quot;ON ::creat('&quot;);&#xD;
OSAL_ERROR (s1 &lt;&lt; m_name.data () &lt;&lt; &quot;', 00777)&quot;);&#xD;
}&#xD;
struct stat st;&#xD;
if (fstat (fd, &amp;st) == -1) {&#xD;
OSAL_ERROR (&quot;ON fstat(fd, &amp;st)&quot;);&#xD;
}&#xD;
&#xD;
// inode number is unique inside a filesystem&#xD;
m_key = (st.st_ino + classKey) &amp; 0xFFFFFF;&#xD;
// (st_ino,st_dev) uniquely identifies regular files&#xD;
// but ino_t and dev_t are of type ulong_t: too large for a m_key !&#xD;
&#xD;
m_key |= ((char1 &amp; 0xFF) &lt;&lt; 24);&#xD;
// m_key = 0xCHINODEI does not guarantee uniqueness for the same inode on&#xD;
// two file systems&#xD;
// but ftok() guarantees less (+ dependency de mount NFS ...)&#xD;
close (fd);&#xD;
&#xD;
#endif //--- GET_KEY&#xD;
&#xD;
#define ATT_SHM 2&#xD;
// 1 shmget(IPC_CREAT | IPC_EXCL): in case of no error&#xD;
// it is for the creator, who makes initializations&#xD;
// although it is not the first attached.&#xD;
&#xD;
// 2- Get the shared memory identifier ---------------------------------&#xD;
&#xD;
#if ATT_SHM == 1&#xD;
r = m_id = shmget (m_key, size, 00777 | IPC_CREAT);&#xD;
if (r == -1)&#xD;
OSAL_ERROR (&quot;ON shmget(m_key, size, 00777 | IPC_CREAT)&quot;);&#xD;
&#xD;
// 3 - Attach the shared memory to an address in the calling&#xD;
// address-space (zone)&#xD;
m_address = m_address0 = m_address00 = (char *) shmat (m_id, 0, 0);&#xD;
if ((int) m_address0 == -1)&#xD;
OSAL_ERROR (&quot;ON shmat(m_id, )&quot;);&#xD;
&#xD;
{&#xD;
// CriticalSection. Who is taking it?&#xD;
struct shmid_ds stat;&#xD;
r = shmctl (m_id, IPC_STAT, &amp;stat);&#xD;
if (r == -1)&#xD;
OSAL_ERROR (&quot;ON shmctl(shmId, IPC_STAT, )&quot;);&#xD;
init1 (stat.shm_nattch &lt; 2, synchro, size);&#xD;
}&#xD;
&#xD;
#else // ATT_SHM == 2 --------------------------------------------------&#xD;
bool creator;&#xD;
errno = 0;&#xD;
r = m_id = shmget (m_key, size, 00777 | IPC_CREAT | IPC_EXCL);&#xD;
if (r == -1)&#xD;
{&#xD;
if (errno == EEXIST)&#xD;
{&#xD;
r = m_id = shmget (m_key, size, 0);&#xD;
// we know we are not the creator (first who demands) of the zone&#xD;
creator = FALSE;&#xD;
if (r == -1)&#xD;
OSAL_ERROR (&quot;ON shmget(m_key, size, 0)&quot;);&#xD;
}&#xD;
else&#xD;
OSAL_ERROR (&quot;ON shmget(m_key, size, IPC_CREAT | IPC_EXCL)&quot;);&#xD;
}&#xD;
else&#xD;
{&#xD;
// For the creator of this shared memory:&#xD;
creator = TRUE;&#xD;
}&#xD;
&#xD;
// 3 - Attach the shared memory to an address in the calling&#xD;
// address-space (zone)&#xD;
m_address = m_address0 = m_address00 = (char *) shmat (m_id, 0, 0);&#xD;
if ((int) m_address0 == -1)&#xD;
OSAL_ERROR (&quot;ON shmat(m_id, )&quot;);&#xD;
&#xD;
init1 (creator, synchro, size);&#xD;
#endif // ATT_SHM&#xD;
&#xD;
#endif // SYNCHRO_Solaris || SYNCHRO_Cygwin&#xD;
// ============================================================&#xD;
&#xD;
PR (&quot;for &quot; &lt;&lt; m_name &lt;&lt; &quot; , m_key= &quot; &lt;&lt; (long) m_key&#xD;
&lt;&lt; &quot;, required size= &quot; &lt;&lt; shmSize &lt;&lt; &quot;, effective size= &quot;&#xD;
&lt;&lt; size &lt;&lt; showI&#xD;
&lt;&lt; &quot;, adr00 = &quot; &lt;&lt; (void *) m_address00&#xD;
&lt;&lt; &quot;, adr0 = &quot; &lt;&lt; (void *) m_address0&#xD;
&lt;&lt; &quot;, adr = &quot; &lt;&lt; (void *) m_address &lt;&lt; showI);&#xD;
&#xD;
return r;&#xD;
</body>
</ownedBehavior>
<ownedOperation xmi:type="uml:Operation" xmi:id="_W9qUsFCwEdyqzLG48ixyqA" name="SharedMemory" method="_VNNcAVC2EdyqzLG48ixyqA"/>
<ownedOperation xmi:type="uml:Operation" xmi:id="_ZznOIFCwEdyqzLG48ixyqA" name="SharedMemory" method="_ZB5OkVC2EdyqzLG48ixyqA">
<ownedComment xmi:type="uml:Comment" xmi:id="_ksGaoFCwEdyqzLG48ixyqA" annotatedElement="_ZznOIFCwEdyqzLG48ixyqA">
<body>create a new shared memory segment. The constructor will call the&#xD;
method open. See open for a description of the parameters.</body>
</ownedComment>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_bUnt4FCwEdyqzLG48ixyqA" name="name" type="_WXH_4DO2EdyG-pUz-bb-Lg">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_bU6o0FCwEdyqzLG48ixyqA" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_bVEZ0FCwEdyqzLG48ixyqA" name="" value="1"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_bX5rYFCwEdyqzLG48ixyqA" name="char1">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_bYVwQFCwEdyqzLG48ixyqA" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_bYfhQFCwEdyqzLG48ixyqA" name="" value="1"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_bbLB0FCwEdyqzLG48ixyqA" name="size">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_bbej0FCwEdyqzLG48ixyqA" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_bbxewFCwEdyqzLG48ixyqA" name="" value="1"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_bev6QFCwEdyqzLG48ixyqA" name="synchro">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_bfMmMFCwEdyqzLG48ixyqA" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_bffhIFCwEdyqzLG48ixyqA" name="" value="1"/>
<defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_i6V2wCBWEeOBrb_t_69W4Q"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="_yFEm4FCwEdyqzLG48ixyqA" name="SharedMemory" method="_rbZVcFC2EdyqzLG48ixyqA"/>
<ownedOperation xmi:type="uml:Operation" xmi:id="_2k0vsFCwEdyqzLG48ixyqA" name="open" method="_dMLdsFC2EdyqzLG48ixyqA">
<ownedComment xmi:type="uml:Comment" xmi:id="_4k04kFCwEdyqzLG48ixyqA" annotatedElement="_2k0vsFCwEdyqzLG48ixyqA">
<body>The passed name is a path name (which must refer to an existing,&#xD;
accessible file). Together with the least significant 8 bits of&#xD;
char1 (which must be nonzero) a key for the access is generated.&#xD;
&#xD;
oflag is not used.&#xD;
&#xD;
If synchro is TRUE, an instance of class SM_Mutex is place at the&#xD;
begin of the segment, increasing its size. The first process&#xD;
establishing a connection that to ensure that the segment is&#xD;
initialized with zeros.</body>
</ownedComment>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_83TaYFCwEdyqzLG48ixyqA" name="param_0" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_83m8YFCwEdyqzLG48ixyqA" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_8353UFCwEdyqzLG48ixyqA" name="" value="1"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_87L00FCwEdyqzLG48ixyqA" name="name" type="_WXH_4DO2EdyG-pUz-bb-Lg">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_87evwFCwEdyqzLG48ixyqA" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_87xqsFCwEdyqzLG48ixyqA" name="" value="1"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_8-dLQFCwEdyqzLG48ixyqA" name="char1">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_8-53MFCwEdyqzLG48ixyqA" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_8_NZMFCwEdyqzLG48ixyqA" name="" value="1"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_9CL0sFCwEdyqzLG48ixyqA" name="oflag">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_9CogoFCwEdyqzLG48ixyqA" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_9CyRoFCwEdyqzLG48ixyqA" name="" value="1"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_9F6eIFCwEdyqzLG48ixyqA" name="mode">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_9GXKEFCwEdyqzLG48ixyqA" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_9GqFAFCwEdyqzLG48ixyqA" name="" value="1"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_9JCqoFCwEdyqzLG48ixyqA" name="size">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_9JL0kFCwEdyqzLG48ixyqA" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_9JVlkFCwEdyqzLG48ixyqA" name="" value="1"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_9MK3IFCwEdyqzLG48ixyqA" name="synchro">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_9MUoIFCwEdyqzLG48ixyqA" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_9MnjEFCwEdyqzLG48ixyqA" name="" value="1"/>
<defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_8osysCBTEeOBrb_t_69W4Q"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="_WZFykFCxEdyqzLG48ixyqA" name="getAddress0" method="_46GywFC1EdyqzLG48ixyqA">
<ownedComment xmi:type="uml:Comment" xmi:id="_Y09YEFCxEdyqzLG48ixyqA" annotatedElement="_WZFykFCxEdyqzLG48ixyqA">
<body>return the segment address (if existent) of the current process&#xD;
This address is might not be the same for all processes, but all&#xD;
addresses point to the same place.</body>
</ownedComment>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_bNjAEFCxEdyqzLG48ixyqA" name="param_0" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_8I6RgBydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_bN_sAFCxEdyqzLG48ixyqA" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_bOJdAFCxEdyqzLG48ixyqA" name="" value="1"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="_gRW4MFCxEdyqzLG48ixyqA" name="getName" method="_7UyFcFC1EdyqzLG48ixyqA">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_iRXBEFCxEdyqzLG48ixyqA" name="param_0" type="_sQ1JADO0EdyG-pUz-bb-Lg" direction="return">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_iRgLAFCxEdyqzLG48ixyqA" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_iRp8AFCxEdyqzLG48ixyqA" name="" value="1"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="_qK9akFCxEdyqzLG48ixyqA" name="allocate" method="_g6wBMFC2EdyqzLG48ixyqA">
<ownedComment xmi:type="uml:Comment" xmi:id="_sf1AMFCxEdyqzLG48ixyqA" annotatedElement="_qK9akFCxEdyqzLG48ixyqA">
<body>Returns the address of an element of size itemSize. If the sequence&#xD;
of successive allocate calls is the same for all communicating&#xD;
processes, they share the same view of the segment organization.&#xD;
If there is not enough space for the item, the process is stopped&#xD;
with an error message.</body>
</ownedComment>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_vhjEwFCxEdyqzLG48ixyqA" name="param_0" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_8I6RgBydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_vh_JoFCxEdyqzLG48ixyqA" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_viI6oFCxEdyqzLG48ixyqA" name="" value="1"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_vkrRQFCxEdyqzLG48ixyqA" name="itemSize">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_vlH9MFCxEdyqzLG48ixyqA" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_vlRHIFCxEdyqzLG48ixyqA" name="" value="1"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="_2nJOcFCxEdyqzLG48ixyqA" name="unlink" method="_pde3QFC2EdyqzLG48ixyqA">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_3ZzacFCxEdyqzLG48ixyqA" name="param_0" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_3aGVYFCxEdyqzLG48ixyqA" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_3aZ3YFCxEdyqzLG48ixyqA" name="" value="1"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="_7F2OYFCxEdyqzLG48ixyqA" name="getMutex" method="_80JmcFC1EdyqzLG48ixyqA">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_-rLWUFCxEdyqzLG48ixyqA" name="param_0" direction="return">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_-roCQFCxEdyqzLG48ixyqA" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-rxMMFCxEdyqzLG48ixyqA" name="" value="1"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="_KxUW0FC0EdyqzLG48ixyqA" name="_key" method="__3W4wFC1EdyqzLG48ixyqA">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_fYiScFC0EdyqzLG48ixyqA" name="param_0" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_fY--YFC0EdyqzLG48ixyqA" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_fZR5UFC0EdyqzLG48ixyqA" name="" value="1"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="_K3bl4FC0EdyqzLG48ixyqA" name="_id" method="_BFvXcFC2EdyqzLG48ixyqA">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_iLzEQFC0EdyqzLG48ixyqA" name="param_0" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_iMF_MFC0EdyqzLG48ixyqA" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_iMY6IFC0EdyqzLG48ixyqA" name="" value="1"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="_K8DAIFC0EdyqzLG48ixyqA" name="_shmSize" method="_CahZEFC2EdyqzLG48ixyqA">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_jpOrkFC0EdyqzLG48ixyqA" name="param_0" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_jphmgFC0EdyqzLG48ixyqA" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_jp0hcFC0EdyqzLG48ixyqA" name="" value="1"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="_LAqaYFC0EdyqzLG48ixyqA" name="set_shmSize" method="_DsohMFC2EdyqzLG48ixyqA">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_mW06QFC0EdyqzLG48ixyqA" name="cr_operand">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_mXIcQFC0EdyqzLG48ixyqA" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_mXRmMFC0EdyqzLG48ixyqA" name="" value="1"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="_35gG0FC0EdyqzLG48ixyqA" name="init1" visibility="private" method="_vp258FC2EdyqzLG48ixyqA">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_812sEFC0EdyqzLG48ixyqA" name="creator">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_82TYAFC0EdyqzLG48ixyqA" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_82ch8FC0EdyqzLG48ixyqA" name="" value="1"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_84r9oFC0EdyqzLG48ixyqA" name="synchro">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_84-4kFC0EdyqzLG48ixyqA" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_85IpkFC0EdyqzLG48ixyqA" name="" value="1"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_87XeMFC0EdyqzLG48ixyqA" name="size">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_87qZIFC0EdyqzLG48ixyqA" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_8797IFC0EdyqzLG48ixyqA" name="" value="1"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="_4JcAQFC0EdyqzLG48ixyqA" name="openIntern" visibility="private" method="_3a0U0FC2EdyqzLG48ixyqA">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_OigUAFC1EdyqzLG48ixyqA" name="param_0" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Oi8_8FC1EdyqzLG48ixyqA" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_OjZr4FC1EdyqzLG48ixyqA" name="" value="1"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_FrNjMFC1EdyqzLG48ixyqA" name="char1">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_FrgeIFC1EdyqzLG48ixyqA" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_FrzZEFC1EdyqzLG48ixyqA" name="" value="1"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_FuC0wFC1EdyqzLG48ixyqA" name="oflag">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_FuVvsFC1EdyqzLG48ixyqA" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_FuoqoFC1EdyqzLG48ixyqA" name="" value="1"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_FxBQQFC1EdyqzLG48ixyqA" name="mode">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_FxUyQFC1EdyqzLG48ixyqA" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_FxntMFC1EdyqzLG48ixyqA" name="" value="1"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_FztX4FC1EdyqzLG48ixyqA" name="size">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_F0JcwFC1EdyqzLG48ixyqA" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_F0TNwFC1EdyqzLG48ixyqA" name="" value="1"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_F2Y4cFC1EdyqzLG48ixyqA" name="synchro">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_F2rzYFC1EdyqzLG48ixyqA" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_F2-uUFC1EdyqzLG48ixyqA" name="" value="1"/>
</ownedParameter>
</ownedOperation>
</packagedElement>
<packagedElement xmi:type="uml:Dependency" xmi:id="_xp3uEFCvEdyqzLG48ixyqA" name="FromSharedMemorytop_Communication" client="_sq-yMFCvEdyqzLG48ixyqA" supplier="_M5gBkFCDEdy2tpS719xBwQ"/>
<packagedElement xmi:type="uml:Dependency" xmi:id="_0vA6EFCvEdyqzLG48ixyqA" name="FromSharedMemorytoBString50" client="_sq-yMFCvEdyqzLG48ixyqA" supplier="_sQ1JADO0EdyG-pUz-bb-Lg"/>
</packagedElement>
<packagedElement xmi:type="uml:Package" xmi:id="_oT0acC-OEdySSa8YESkO2w" name="ProcessingResources">
<ownedComment xmi:type="uml:Comment" xmi:id="_XAe9ENqrEeKrRY-H1kHnNA" annotatedElement="_ONsuENqFEeKrRY-H1kHnNA">
<body>Dependency is problematic, since pthread is not used by all OS</body>
</ownedComment>
<packagedElement xmi:type="uml:Class" xmi:id="_-HeCsDj_Edy0Rd6V_tf1-Q" name="Thread">
<ownedComment xmi:type="uml:Comment" xmi:id="_YnsrIE_gEdy2tpS719xBwQ" annotatedElement="_-HeCsDj_Edy0Rd6V_tf1-Q">
<body>Abstraction of an operating system thread. It is possible to control&#xD;
priorities and the thread's lifecycle (suspend/resume/exit).&#xD;
&#xD;
\code&#xD;
Example:&#xD;
&#xD;
class Run {&#xD;
void run ();&#xD;
static void run_fct (void * arg);&#xD;
}&#xD;
&#xD;
void Run::run_fct (void * arg)&#xD;
{&#xD;
((Run*) myThreadCode)->run ();&#xD;
}&#xD;
&#xD;
void Run::run ()&#xD;
{&#xD;
// do something ...&#xD;
}&#xD;
&#xD;
Thread myThread (&quot;MyThread&quot;);&#xD;
myThread.exec (myThreadCode);&#xD;
\endcode</body>
</ownedComment>
<ownedAttribute xmi:type="uml:Property" xmi:id="_nyBcEE_nEdy2tpS719xBwQ" name="m_policy" visibility="private" isStatic="true" isUnique="false">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_nyn5AE_nEdy2tpS719xBwQ" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_nyn5AU_nEdy2tpS719xBwQ" value="1"/>
<defaultValue xmi:type="uml:LiteralString" xmi:id="_0XDXgCBREeOBrb_t_69W4Q" value="SCHED_RR"/>
</ownedAttribute>
<ownedAttribute xmi:type="uml:Property" xmi:id="_3Q0FUE_nEdy2tpS719xBwQ" name="m_threadAttributes" visibility="private" type="_Saw1YDkDEdyuzNpSiGPe4w" isUnique="false" association="_3QgjUE_nEdy2tpS719xBwQ">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_5faq4E_nEdy2tpS719xBwQ"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_5fkb4E_nEdy2tpS719xBwQ" value="1"/>
</ownedAttribute>
<ownedAttribute xmi:type="uml:Property" xmi:id="_-6w5QE_nEdy2tpS719xBwQ" name="m_name" visibility="private" type="_sQ1JADO0EdyG-pUz-bb-Lg" isUnique="false">
<ownedComment xmi:type="uml:Comment" xmi:id="_EAp1AE_oEdy2tpS719xBwQ" annotatedElement="_-6w5QE_nEdy2tpS719xBwQ">
<body>A thread also has a name that should be provided by the constructor&#xD;
It is primarily used to enhance the readability of the trace output.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_B6PiIE_oEdy2tpS719xBwQ"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_B6ZTIE_oEdy2tpS719xBwQ" value="1"/>
</ownedAttribute>
<ownedAttribute xmi:type="uml:Property" xmi:id="_LLUE4U_oEdy2tpS719xBwQ" name="m_semaphore" visibility="private" type="_D8njME_gEdy2tpS719xBwQ" isUnique="false" association="_LLUE4E_oEdy2tpS719xBwQ">
<ownedComment xmi:type="uml:Comment" xmi:id="_RAAAUE_oEdy2tpS719xBwQ" annotatedElement="_LLUE4U_oEdy2tpS719xBwQ">
<body>The semaphore is used for different purposes in vxWorks and&#xD;
Linux/Solaris, respectively.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MpCnIE_oEdy2tpS719xBwQ"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MpMYIE_oEdy2tpS719xBwQ" value="1"/>
</ownedAttribute>
<ownedAttribute xmi:type="uml:Property" xmi:id="_UO0swE_oEdy2tpS719xBwQ" name="m_startRoutine" visibility="private" type="_kor6MFdhEd-9TNLvplUFDQ" isUnique="false">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UPbJsE_oEdy2tpS719xBwQ" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UPbJsU_oEdy2tpS719xBwQ" value="1"/>
</ownedAttribute>
<ownedAttribute xmi:type="uml:Property" xmi:id="_Z47I0E_oEdy2tpS719xBwQ" name="m_startArg" visibility="private" isUnique="false">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_8I6RgBydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_gFRCQFnmEd-9TNLvplUFDQ" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_gFazQFnmEd-9TNLvplUFDQ" value="1"/>
</ownedAttribute>
<ownedAttribute xmi:type="uml:Property" xmi:id="_fsj7YE_oEdy2tpS719xBwQ" name="m_threadId" visibility="private" type="_l2xogFdiEd-9TNLvplUFDQ" isUnique="false">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_ftKYUE_oEdy2tpS719xBwQ" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ftKYUU_oEdy2tpS719xBwQ" value="1"/>
</ownedAttribute>
<ownedAttribute xmi:type="uml:Property" xmi:id="_jQG6oE_oEdy2tpS719xBwQ" name="m_joined" visibility="private" isUnique="false">
<ownedComment xmi:type="uml:Comment" xmi:id="_mXosQE_oEdy2tpS719xBwQ" annotatedElement="_jQG6oE_oEdy2tpS719xBwQ">
<body>in case, of a joinable thread, this attribute indicates whether the&#xD;
thread has already been joined.</body>
</ownedComment>
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_jQjmkE_oEdy2tpS719xBwQ" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_jQjmkU_oEdy2tpS719xBwQ" value="1"/>
</ownedAttribute>
<ownedAttribute xmi:type="uml:Property" xmi:id="_qE3L8E_oEdy2tpS719xBwQ" name="m_execPrio" visibility="private" isUnique="false">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_qFT34E_oEdy2tpS719xBwQ" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_qFT34U_oEdy2tpS719xBwQ" value="1"/>
</ownedAttribute>
<ownedAttribute xmi:type="uml:Property" xmi:id="_sbg6QE_oEdy2tpS719xBwQ" name="m_accordID" visibility="private" isUnique="false">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sbqEME_oEdy2tpS719xBwQ" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sbqEMU_oEdy2tpS719xBwQ" value="1"/>
</ownedAttribute>
<ownedAttribute xmi:type="uml:Property" xmi:id="_u5djYE_oEdy2tpS719xBwQ" name="m_RTthreads" visibility="private" isStatic="true" isUnique="false">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_u56PUE_oEdy2tpS719xBwQ" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_u56PUU_oEdy2tpS719xBwQ" value="1"/>
</ownedAttribute>
<ownedAttribute xmi:type="uml:Property" xmi:id="_z3tugFnlEd-9TNLvplUFDQ" name="m_suspendPriority" visibility="private" isStatic="true" isUnique="false">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_2uBNQFnlEd-9TNLvplUFDQ" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_2uMMYFnlEd-9TNLvplUFDQ" value="1"/>
</ownedAttribute>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_0g4e4E_oEdy2tpS719xBwQ" name="getThreadAttributes" specification="_bvjFgE_jEdy2tpS719xBwQ">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_gok2MCBbEeOMKsPXBVC0DA" name="param_0" type="_Saw1YDkDEdyuzNpSiGPe4w" direction="return">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_gpGaoCBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_gpRZwCBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body> return m_threadAttributes;</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_3mBq4E_oEdy2tpS719xBwQ" name="isDetached" specification="_mdJ3sE_jEdy2tpS719xBwQ">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_gpp0QCBbEeOMKsPXBVC0DA" name="param_0" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_gqLYsCBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_gqWX0CBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body> return m_threadAttributes.getDetached ();</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_5vt7QE_oEdy2tpS719xBwQ" name="setName" specification="_dS4V8E_iEdy2tpS719xBwQ">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_gqndkCBbEeOMKsPXBVC0DA" name="name" type="_WXH_4DO2EdyG-pUz-bb-Lg">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_grIa8CBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_grUBICBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body> m_name = name;</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_1BbKsE_pEdy2tpS719xBwQ" name="Thread" specification="_oCK1EE_gEdy2tpS719xBwQ">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_grzwYCBbEeOMKsPXBVC0DA" name="name" type="_WXH_4DO2EdyG-pUz-bb-Lg">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_gsbbcCBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_gsmakCBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_gtADMCBbEeOMKsPXBVC0DA" name="attrPtr" type="_Saw1YDkDEdyuzNpSiGPe4w">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_gthnoCBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_gtsmwCBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_guFBQCBbEeOMKsPXBVC0DA" name="startRoutine" type="_kor6MFdhEd-9TNLvplUFDQ">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_gumlsCBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_guxk0CBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_gu8j8CBbEeOMKsPXBVC0DA" name="arg">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_8I6RgBydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_gveIYCBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_gvpHgCBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_gwBiACBbEeOMKsPXBVC0DA" name="exPrio">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_gwjGcCBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_gwusoCBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body>TRACEpr (VM);&#xD;
PR (&quot;Thread::Thread (...)&quot; &lt;&lt; showI);&#xD;
&#xD;
if (attrPtr != NULL) {&#xD;
m_threadAttributes = *attrPtr;&#xD;
}&#xD;
int r = exec (startRoutine, arg, exPrio);&#xD;
&#xD;
if (r &lt; 0) {&#xD;
OSAL_ERROR (&quot;could not exec thread&quot;);&#xD;
}&#xD;
&#xD;
set_of_threads.append (this);&#xD;
</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_75TogE_pEdy2tpS719xBwQ" name="Thread " specification="_VpnT8E_hEdy2tpS719xBwQ">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_gw_LUCBbEeOMKsPXBVC0DA" name="name" type="_WXH_4DO2EdyG-pUz-bb-Lg">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_gxgvwCBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_gxru4CBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_gyF-kCBbEeOMKsPXBVC0DA" name="attrPtr" type="_Saw1YDkDEdyuzNpSiGPe4w">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_gynjACBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_gyyiICBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body> if (attrPtr != NULL) {&#xD;
m_threadAttributes = *attrPtr;&#xD;
}&#xD;
&#xD;
set_of_threads.append (this);&#xD;
</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_-P0M4E_pEdy2tpS719xBwQ" name="Thread" specification="_vOOWoE_hEdy2tpS719xBwQ">
<language>C/C++</language>
<body> TRACEpr (VM);&#xD;
PR (&quot;Thread::~Thread () : isDetached () = &quot; &lt;&lt; isDetached ()&#xD;
&lt;&lt; &quot;, m_joined= &quot; &lt;&lt; m_joined &lt;&lt; showI);&#xD;
&#xD;
if (!isDetached () &amp;&amp; !m_joined) {&#xD;
// don't join, if thread hasn't been executed yet.&#xD;
if (m_threadId != 0) {&#xD;
PR (&quot;really delete thread, m_threadId: &quot; &lt;&lt; m_threadId &lt;&lt; showI);&#xD;
join ();&#xD;
}&#xD;
}&#xD;
set_of_threads.eraseValue (this);&#xD;
</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_AwmHkE_qEdy2tpS719xBwQ" name="initZ " specification="_5LQAcE_hEdy2tpS719xBwQ">
<language>C/C++</language>
<body> TRACEpr (VM);&#xD;
PR (&quot;Thread::initZ ()&quot; &lt;&lt; showI);&#xD;
&#xD;
#if defined THREAD_VxWorks&#xD;
bool stackFill = ProDesc::isEnvTrue (&quot;A_StackFill&quot;);&#xD;
m_vx_options = VX_FP_TASK | (stackFill ? 0 : VX_NO_STACK_FILL);&#xD;
#elif defined THREAD_Linux || defined THREAD_POSIX4&#xD;
m_suspendPriority = 1; // lowest priority for SCHED_RR/SCHED_FIFO&#xD;
#endif&#xD;
</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_DjaNcE_qEdy2tpS719xBwQ" name="entryRoutC" specification="_-xoaIE_hEdy2tpS719xBwQ">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_gziJACBbEeOMKsPXBVC0DA" name="ret" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_8I6RgBydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_g0DGYCBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_g0OskCBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_g0nHECBbEeOMKsPXBVC0DA" name="arg">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_8I6RgBydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_g1IEcCBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_g1TqoCBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body>// blocked by default&#xD;
modifySigMask (SIG_BLOCK, SIGRTMIN);&#xD;
((Thread*) arg)->entryRoutine ();&#xD;
</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_FyBaEE_qEdy2tpS719xBwQ" name="getId" specification="_S8E6ME_iEdy2tpS719xBwQ">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_g1yLwCBbEeOMKsPXBVC0DA" name="param_0" type="_l2xogFdiEd-9TNLvplUFDQ" direction="return">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_g2TJICBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_g2eIQCBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body>#if defined THREAD_POSIX4&#xD;
return pthread_self ();&#xD;
&#xD;
#elif defined THREAD_Solaris&#xD;
return thr_self ();&#xD;
&#xD;
#elif defined THREAD_VxWorks //-VxW&#xD;
return taskIdSelf ();&#xD;
#endif&#xD;
</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_IEyt8E_qEdy2tpS719xBwQ" name="getName" specification="_dG0P4E_iEdy2tpS719xBwQ">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_g2vOACBbEeOMKsPXBVC0DA" name="name" type="_WXH_4DO2EdyG-pUz-bb-Lg" direction="return">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_g3QLYCBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_g3bKgCBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body> ThreadId id = getId ();&#xD;
for (int i = 0; i &lt; set_of_threads.size (); i++) {&#xD;
if (set_of_threads.get(i)->m_threadId == id) {&#xD;
return set_of_threads.get(i)->m_name;&#xD;
}&#xD;
}&#xD;
return threadName_main;&#xD;
</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_LK1R0E_qEdy2tpS719xBwQ" name="getPriority" specification="_GnaOIE_jEdy2tpS719xBwQ">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_g37g0CBbEeOMKsPXBVC0DA" name="param_0" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_g4ceMCBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_g4ndUCBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body> TRACEpr (VM);&#xD;
PR (&quot;Thread::getPriority ()&quot; &lt;&lt; showI);&#xD;
&#xD;
int priority;&#xD;
&#xD;
#if defined THREAD_POSIX4&#xD;
SchedParam schedParam;&#xD;
int policy;&#xD;
if (pthread_getschedparam (getId (), &amp;policy, &amp;schedParam)) {&#xD;
OSAL_ERROR (&quot;ON pthread_getschedparam(...)&quot;);&#xD;
}&#xD;
priority = schedParam.sched_priority;&#xD;
&#xD;
#elif defined THREAD_Solaris&#xD;
&#xD;
// errno= thr_getprio(thr_self(), &amp;pri);&#xD;
// if (errno) OSAL_ERROR(&quot;ON thr_getprio()&quot;);&#xD;
&#xD;
pcparms_t params;&#xD;
params.pc_cid = PC_CLNULL;&#xD;
long l;&#xD;
l = priocntl (P_LWPID, _lwp_self (), PC_GETPARMS, (caddr_t) &amp; params);&#xD;
if (l == -1L)&#xD;
OSAL_ERROR (&quot;ON priocntl( , PC_GETPARMS, )&quot;);&#xD;
&#xD;
rtparms_t *rtParms = (rtparms_t *) params.pc_clparms;&#xD;
prio = rtParms->rt_pri;&#xD;
&#xD;
#elif defined THREAD_VxWorks&#xD;
if (taskPriorityGet (taskIdSelf (), &amp;prio)) //-VxW&#xD;
OSAL_ERROR (&quot;ON taskPriorityGet()&quot;);&#xD;
#endif&#xD;
&#xD;
return priority;&#xD;
</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_ONl4ME_qEdy2tpS719xBwQ" name="setPriority" specification="_Gzx2ME_jEdy2tpS719xBwQ">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_g438ACBbEeOMKsPXBVC0DA" name="prio">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_g5ZgcCBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_g5kfkCBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body> TRACEpr (VM);&#xD;
PR (&quot;Thread::setPriority (&quot; &lt;&lt; prio &lt;&lt; &quot;), old prio: &quot;&#xD;
&lt;&lt; getPriority () &lt;&lt; showI);&#xD;
&#xD;
#if defined THREAD_POSIX4&#xD;
SchedParam schedParam;&#xD;
schedParam.sched_priority = prio;&#xD;
&#xD;
if (pthread_setschedparam (getId (), m_policy, &amp;schedParam)) {&#xD;
OSAL_ERROR (&quot;ON pthread_setschedparam (...)&quot;);&#xD;
}&#xD;
&#xD;
#elif defined THREAD_Solaris&#xD;
pcparms_t params;&#xD;
params.pc_cid = ProDesc::_classId ();&#xD;
long l;&#xD;
&#xD;
rtparms_t *rtParms = (rtparms_t *) params.pc_clparms;&#xD;
rtParms->rt_pri = prio;&#xD;
rtParms->rt_tqsecs = 0;&#xD;
rtParms->rt_tqnsecs = RT_NOCHANGE;&#xD;
l = priocntl (P_LWPID, _lwp_self (), PC_SETPARMS, (caddr_t) &amp; params);&#xD;
if (l == -1L)&#xD;
{&#xD;
BString500 tmp (&quot;to pri= &quot;);&#xD;
tmp &lt;&lt; prio &lt;&lt; &quot;, ON priocntl( , PC_SETPARMS, )&quot;;&#xD;
OSAL_ERROR (tmp);&#xD;
}&#xD;
&#xD;
#elif defined THREAD_VxWorks&#xD;
if (taskPrioritySet (taskIdSelf (), prio)) //-VxW&#xD;
OSAL_ERROR (&quot;ON taskPrioritySet()&quot;);&#xD;
#endif&#xD;
PR (&quot; after setting, prio= &quot; &lt;&lt; getPriority () &lt;&lt; showI);&#xD;
</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_Q3UTgE_qEdy2tpS719xBwQ" name="getPrioMax" specification="_G6VKIE_jEdy2tpS719xBwQ">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_g51lUCBbEeOMKsPXBVC0DA" name="param_0" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_g6WisCBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_g6oPgCBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body> return ProDesc::getPrioMax ();</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_T9W3YE_qEdy2tpS719xBwQ" name="changeSigMask" specification="_yp_A8E_jEdy2tpS719xBwQ">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_g65VQCBbEeOMKsPXBVC0DA" name="how">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_g7aSoCBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_g7lRwCBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_g7w38CBbEeOMKsPXBVC0DA" name="newSet" type="_5J3-8FdkEd-9TNLvplUFDQ">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_g8R1UCBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_g8c0cCBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_g812ACBbEeOMKsPXBVC0DA" name="oldSet" type="_5J3-8FdkEd-9TNLvplUFDQ" direction="inout">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_g9WzYCBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_g9hygCBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body> TRACEpr (VM);&#xD;
PR (&quot;Thread::changeSigMask (...)&quot; &lt;&lt; showI);&#xD;
&#xD;
#if defined THREAD_POSIX4 || defined THREAD_Linux&#xD;
errno = pthread_sigmask (how, newSet, oldSet);&#xD;
if (errno) {&#xD;
OSAL_ERROR (&quot;ON pthread_sigmask()&quot;);&#xD;
}&#xD;
#elif defined THREAD_Solaris&#xD;
errno = thr_sigsetmask (how, newSet, oldSet);&#xD;
if (errno) {&#xD;
OSAL_ERROR (&quot;ON thr_sigsetmask()&quot;);&#xD;
}&#xD;
#elif defined THREAD_VxWorks&#xD;
if (sigprocmask (how, newSet, oldSet)) { //-VxW&#xD;
OSAL_ERROR (&quot;ON sigprocmask()&quot;);&#xD;
}&#xD;
#endif&#xD;
</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_Wid4cE_qEdy2tpS719xBwQ" name="modifySigMask" specification="_MYHzEE_kEdy2tpS719xBwQ">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_g9_skCBbEeOMKsPXBVC0DA" name="how">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_g-hRACBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_g-sQICBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_g-32UCBbEeOMKsPXBVC0DA" name="signalID">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_g_ZawCBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_g_kZ4CBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body> sigset_t sigSet;&#xD;
if (sigemptyset (&amp;sigSet) == -1) {&#xD;
OSAL_ERROR (&quot;ON sigemptyset( )&quot;);&#xD;
}&#xD;
if (sigaddset (&amp;sigSet, signalID) == -1) { // add 'sig' as a signal&#xD;
OSAL_ERROR (&quot;ON sigaddset( )&quot;);&#xD;
}&#xD;
&#xD;
Thread::changeSigMask (how, &amp;sigSet, NULL); // modify signal mask&#xD;
</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_ZVR-UE_qEdy2tpS719xBwQ" name="printSigMask" specification="_X5b6IE_kEdy2tpS719xBwQ">
<language>C/C++</language>
<body> sigset_t sigSet;&#xD;
changeSigMask (SIG_UNBLOCK, NULL, &amp;sigSet); // get current signal mask&#xD;
&#xD;
PRINTpr (&quot;signals to block for current thread &quot;);&#xD;
PR (&quot; : \n\t\t&quot;);&#xD;
&#xD;
for (int s = 1; s &lt; SIGRTMAX; ++s) {&#xD;
if (sigismember (&amp;sigSet, s))&#xD;
{&#xD;
#ifdef SYSTEM_VxWorks&#xD;
PR (s &lt;&lt; &quot;, &quot;);&#xD;
#else&#xD;
PR (strsignal (s) &lt;&lt; &quot;, &quot;);&#xD;
#endif&#xD;
}&#xD;
}&#xD;
&#xD;
PR (showI);&#xD;
</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_b6rTQE_qEdy2tpS719xBwQ" name="exit" specification="_bh5OkE_kEdy2tpS719xBwQ">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_g_6_MCBbEeOMKsPXBVC0DA" name="status">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_8I6RgBydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_hAb8kCBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_hAm7sCBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body> TRACEpr (VM);&#xD;
PR (&quot;Thread::exit ()&quot; &lt;&lt; showI);&#xD;
&#xD;
#if defined THREAD_POSIX4 || defined THREAD_Linux&#xD;
throw (&quot;Thread::exit() : throw()&quot;); // an attempt for exception catching&#xD;
pthread_exit (status);&#xD;
&#xD;
#elif defined THREAD_Solaris&#xD;
throw (&quot;Thread::exit() : throw()&quot;); // an attempt for exception catching&#xD;
thr_exit (status);&#xD;
&#xD;
#elif defined THREAD_VxWorks&#xD;
// throw(&quot;Thread::exit(): throw()&quot;); => 'use -fhandle-exceptions to enable'&#xD;
// but VxWorks does not support C/C++ exceptions&#xD;
int code = status ? *(int *) status : 0;&#xD;
::exit (code);&#xD;
#endif&#xD;
</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_hzh9AE_qEdy2tpS719xBwQ" name="exec" specification="_NaGikE_mEdy2tpS719xBwQ">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_hBFc0CBbEeOMKsPXBVC0DA" name="startRoutine" type="_kor6MFdhEd-9TNLvplUFDQ">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_hBmaMCBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_hB4uECBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_hCDtMCBbEeOMKsPXBVC0DA" name="arg">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_8I6RgBydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_hClRoCBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_hCwQwCBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_hDIrQCBbEeOMKsPXBVC0DA" name="execPrio">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_hDqPsCBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_hD1O0CBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_hEAN8CBbEeOMKsPXBVC0DA" name="ret" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_hEhyYCBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_hEsxgCBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body>// NEW 3/01 : added argument execPrio&#xD;
m_startRoutine = startRoutine; // save pointer for entryRoutine&#xD;
m_startArg = arg; // save pointer for entryRoutine&#xD;
m_execPrio = execPrio; // demanded priority&#xD;
&#xD;
m_threadAttributes.getDetached ();&#xD;
&#xD;
#if defined THREAD_POSIX4&#xD;
&#xD;
pthread_attr_t attributes;&#xD;
pthread_attr_init (&amp;attributes);&#xD;
pthread_attr_setdetachstate (&amp;attributes,&#xD;
(isDetached () ? PTHREAD_CREATE_DETACHED : PTHREAD_CREATE_JOINABLE));&#xD;
if (m_threadAttributes.getStackAddr () != NULL) {&#xD;
#ifdef THREAD_LINUX&#xD;
pthread_attr_setstack (&amp;attributes,&#xD;
m_threadAttributes.getStackAddr (),&#xD;
m_threadAttributes.getStackSize ());&#xD;
#endif&#xD;
}&#xD;
else if (m_threadAttributes.getStackSize () != 0) {&#xD;
pthread_attr_setstacksize (&amp;attributes,&#xD;
m_threadAttributes.getStackSize ());&#xD;
}&#xD;
&#xD;
if (execPrio != DefaultExecPrio) {&#xD;
if (m_RTthreads) {&#xD;
pthread_attr_setinheritsched (&amp;attributes, PTHREAD_EXPLICIT_SCHED);&#xD;
}&#xD;
pthread_attr_setschedpolicy (&amp;attributes, m_policy);&#xD;
sched_param sp;&#xD;
sp.sched_priority = execPrio;&#xD;
pthread_attr_setschedparam (&amp;attributes, &amp;sp);&#xD;
}&#xD;
&#xD;
errno = pthread_create (&amp;m_threadId, &amp;attributes,&#xD;
entryRoutC, (void *) this); // , startRoutine, arg&#xD;
&#xD;
#elif defined THREAD_Solaris&#xD;
long flags = THR_BOUND; // THR_NEW_LWP leads to SIGLWP;&#xD;
if (ProDesc::existEnv (&quot;A_ThreadFlags&quot;))&#xD;
{&#xD;
OS_AL::Util::BString500 s (ProDesc::getEnv (&quot;A_ThreadFlags&quot;));&#xD;
if (s == &quot;THR_BOUND&quot;)&#xD;
flags = THR_BOUND;&#xD;
else if (s == &quot;THR_NEW_LWP&quot;)&#xD;
flags = THR_NEW_LWP;&#xD;
else&#xD;
OSAL_ERROR&#xD;
(&quot;Recognised values for A_ThreadFlags : THR_BOUND, THR_NEW_LWP.&quot;);&#xD;
}&#xD;
if (isDetached ()) {&#xD;
flags |= THR_DETACHED;&#xD;
}&#xD;
errno = thr_create (&#xD;
m_threadAttributes.getStackAddr (),&#xD;
m_threadAttributes.getStackSize (),&#xD;
(PfAvpRvp) entryRoutC, (void *) this, // , startRoutine, arg&#xD;
flags, &amp;thrId);&#xD;
&#xD;
#elif defined THREAD_VxWorks&#xD;
if (execPrio == DefaultExecPrio)&#xD;
{&#xD;
// priority of this tasks inherits by current tasks&#xD;
if (taskPriorityGet (taskIdSelf (), &amp;m_execPrio)) //-VxW&#xD;
PRINTerr (&quot;ON taskPriorityGet()&quot;);&#xD;
}&#xD;
m_threadId =&#xD;
taskSpawn (NULL, m_execPrio, m_vx_options,&#xD;
(int) m_threadAttributes.getStackSize (),&#xD;
(FUNCPTR) entryRoutC, (int) this, 0, 0, 0, 0, 0, 0, 0, 0, 0);&#xD;
if (m_threadId != -1)&#xD;
errno = 0; // OK&#xD;
&#xD;
#endif&#xD;
if ((errno &amp;&amp; (errno != EINTR))) {&#xD;
if (errno == EPERM) {&#xD;
OS_AL::Util::Print warning;&#xD;
warning &lt;&lt; &quot;warning: insufficient permission to create rt-thread (must be root)&quot; &lt;&lt; showI;&#xD;
if (m_RTthreads)&#xD;
{&#xD;
warning &lt;&lt; &quot;falling back to non-rt threads&quot; &lt;&lt; showI;&#xD;
m_RTthreads = false;&#xD;
// retry exec&#xD;
// use &quot;return&quot; to avoid that semaphore wait is executed twice&#xD;
return exec (startRoutine, arg, execPrio);&#xD;
}&#xD;
}&#xD;
else {&#xD;
OSAL_ERROR (OS_AL::Util::BString50 (&quot;thread_create() failed with code &quot;) &lt;&lt; errno);&#xD;
}&#xD;
}&#xD;
&#xD;
#if defined THREAD_POSIX4 || THREAD_Linux || THREAD_Solaris&#xD;
// No error on thread_create... continue&#xD;
m_semaphore.wait();&#xD;
&#xD;
#endif&#xD;
TRACEpr (VM);&#xD;
PR (&quot;return.&quot; &lt;&lt; showI);&#xD;
return errno;&#xD;
</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_k-CxME_qEdy2tpS719xBwQ" name="entryRoutine" specification="_nQJTgE_mEdy2tpS719xBwQ">
<language>C/C++</language>
<body>#if defined THREAD_Solaris&#xD;
lwpId = _lwp_self ();&#xD;
#endif&#xD;
#if !defined THREAD_VxWorks // else done in taskSpawn ()&#xD;
// synchronization to force the system to start this thread&#xD;
// [todo: necessary?]&#xD;
m_semaphore.post ();&#xD;
#endif&#xD;
&#xD;
m_startRoutine (m_startArg); // go to user function&#xD;
&#xD;
#ifdef THREAD_VxWorks&#xD;
if (!isDetached ())&#xD;
m_semaphore.post ();&#xD;
#endif&#xD;
&#xD;
m_threadId = (pthread_t) ThExecOUT; // quasi completed&#xD;
</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_npGpQE_qEdy2tpS719xBwQ" name="isMyself" specification="_p66QoE_mEdy2tpS719xBwQ">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_hFCvwCBbEeOMKsPXBVC0DA" name="param_0" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_hFkUMCBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_hFvTUCBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body>pthread_t currentId;&#xD;
&#xD;
#if defined THREAD_POSIX4 || defined THREAD_Linux&#xD;
currentId = pthread_self ();&#xD;
&#xD;
#elif defined THREAD_Solaris&#xD;
currentId = thr_self ();&#xD;
&#xD;
#elif defined THREAD_VxWorks&#xD;
currentId = taskIdSelf (); //-VxW&#xD;
#endif&#xD;
&#xD;
return (currentId == m_threadId);&#xD;
</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_p2-PAE_qEdy2tpS719xBwQ" name="equal" specification="_xR8IkE_mEdy2tpS719xBwQ">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_hGAZECBbEeOMKsPXBVC0DA" name="ret" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_hGhWcCBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_hGs8oCBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_hG37wCBbEeOMKsPXBVC0DA" name="otherThread" type="_-HeCsDj_Edy0Rd6V_tf1-Q">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_hHY5ICBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_hHkfUCBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body>return (otherThread.m_threadId == m_threadId);</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_vvrHwE_qEdy2tpS719xBwQ" name="resume" specification="_xldhgE_mEdy2tpS719xBwQ">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_hIEOkCBbEeOMKsPXBVC0DA" name="param_0" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_hIlzACBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_hIwyICBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body>TRACEpr (VM);&#xD;
PR (&quot;Thread::resume ()&quot; &lt;&lt; showI);&#xD;
&#xD;
OS_AL::Util::Print pr2;&#xD;
pr2 &lt;&lt; &quot;in resume&quot; &lt;&lt; showI;&#xD;
int r = 0;&#xD;
&#xD;
if (m_threadId == 0)&#xD;
OSAL_ERROR (&quot;call exec() first&quot;);&#xD;
&#xD;
if ((int) m_threadId != ThExecOUT)&#xD;
{ // Execution not completed&#xD;
#if defined THREAD_POSIX4&#xD;
// version that uses priority modification&#xD;
SchedParam schedParam;&#xD;
schedParam.sched_priority = m_execPrio;&#xD;
r = pthread_setschedparam (m_threadId, m_policy, &amp;schedParam);&#xD;
&#xD;
if (r &amp;&amp; r != ESRCH) {&#xD;
OS_AL::Util::Print pr;&#xD;
pr &lt;&lt; &quot;Thread::resume: cannot change thread priority. Are you root?&quot;&#xD;
&lt;&lt; showI;&#xD;
}&#xD;
&#xD;
#elif defined THREAD_Solaris&#xD;
r = thr_continue (m_threadId);&#xD;
// only ESRCH is possible&#xD;
&#xD;
#elif defined THREAD_VxWorks&#xD;
if (taskResume (m_threadId) == -1) { //-VxW&#xD;
r = errno;&#xD;
}&#xD;
else {&#xD;
r = 0;&#xD;
}&#xD;
&#xD;
#endif&#xD;
}&#xD;
else {&#xD;
r = 0; // Execution has been completed&#xD;
}&#xD;
&#xD;
return r;&#xD;
</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_y4ZMME_qEdy2tpS719xBwQ" name="suspend" specification="_xsdhYE_mEdy2tpS719xBwQ">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_hJH-gCBbEeOMKsPXBVC0DA" name="ret" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_hJo74CBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_hJz7ACBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body>TRACEpr (VM);&#xD;
PR (&quot;Thread::suspend ()&quot; &lt;&lt; showI);&#xD;
&#xD;
int r = 0;&#xD;
&#xD;
if (m_threadId == 0) {&#xD;
OSAL_ERROR (&quot;Thread::suspend (): call exec() first&quot;);&#xD;
}&#xD;
OS_AL::Util::Print pr2;&#xD;
pr2 &lt;&lt; &quot;in suspend&quot; &lt;&lt; showI;&#xD;
&#xD;
if ((int) m_threadId != ThExecOUT)&#xD;
{&#xD;
#if defined THREAD_POSIX4 || defined THREAD_Linux&#xD;
// suspend by setting priority to a low value. Only works for root&#xD;
SchedParam schedParam;&#xD;
schedParam.sched_priority = m_suspendPriority;&#xD;
&#xD;
if (pthread_setschedparam (m_threadId, m_policy, &amp;schedParam) != 0) {&#xD;
OS_AL::Util::Print pr2;&#xD;
pr2 &lt;&lt; &quot;Thread::suspend: cannot change thread priority. Are you root?&quot;&#xD;
&lt;&lt; showI;&#xD;
}&#xD;
#elif defined THREAD_Solaris&#xD;
// version with real suspension:&#xD;
r = thr_suspend (m_threadId);&#xD;
// only ESRCH is possible&#xD;
#elif defined THREAD_VxWorks&#xD;
if (taskSuspend (m_threadId) == -1) { //-VxW&#xD;
r = errno;&#xD;
}&#xD;
else {&#xD;
r = 0;&#xD;
}&#xD;
#endif&#xD;
}&#xD;
else {&#xD;
OSAL_ERROR (&quot;Execution has been completed.&quot;);&#xD;
}&#xD;
return r;&#xD;
</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_1UZ7oE_qEdy2tpS719xBwQ" name="runBackground" specification="_x0gqIE_mEdy2tpS719xBwQ">
<language>C/C++</language>
<body>TRACEpr (VM);&#xD;
PR (&quot;Thread::runBackground ()&quot; &lt;&lt; showI);&#xD;
&#xD;
OS_AL::Util::Print pr2;&#xD;
pr2 &lt;&lt; &quot;run background&quot; &lt;&lt; showI;&#xD;
if (m_threadId == 0) {&#xD;
OSAL_ERROR (&quot;Tread::runBackground (): call exec() first&quot;);&#xD;
}&#xD;
&#xD;
if ((int) m_threadId != ThExecOUT) {&#xD;
int backgroundPriority = 0; // background priority&#xD;
setPriority (backgroundPriority);&#xD;
}&#xD;
else {&#xD;
OSAL_ERROR (&quot;Execution has been completed.&quot;);&#xD;
}&#xD;
</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_4Z_zkE_qEdy2tpS719xBwQ" name="join" specification="_x7XgEE_mEdy2tpS719xBwQ">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_hKKgUCBbEeOMKsPXBVC0DA" name="status" direction="inout">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_8I6RgBydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_hKsEwCBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_hK3D4CBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body>TRACEpr (VM);&#xD;
PR (&quot;Thread::join (...)&quot; &lt;&lt; showI);&#xD;
&#xD;
if ((int) m_threadId != ThExecOUT)&#xD;
{&#xD;
int r;&#xD;
&#xD;
if (isDetached ()) {&#xD;
errno = EINVAL; // join is forbiden (and not necessary)&#xD;
}&#xD;
else { // attached&#xD;
if (m_joined) {&#xD;
errno = EINVAL; // already joined&#xD;
}&#xD;
else {&#xD;
#if defined THREAD_POSIX4 || defined THREAD_Linux&#xD;
PR (&quot;join thread 1&quot; &lt;&lt; showI);&#xD;
// if (pthread_equal (m_threadId, pthread_self ()) == 0)&#xD;
{&#xD;
PR (&quot;join thread 2&quot; &lt;&lt; showI);&#xD;
r = errno = pthread_join (m_threadId, status);&#xD;
}&#xD;
#elif defined THREAD_Solaris&#xD;
errno = 0;&#xD;
r = errno = thr_join (m_threadId, NULL, status);&#xD;
&#xD;
#elif defined THREAD_VxWorks&#xD;
m_semaphore.wait ();&#xD;
m_joined = true;&#xD;
#endif&#xD;
&#xD;
#if defined THREAD_POSIX4 || defined THREAD_Linux || defined THREAD_Solaris&#xD;
if (r == 0) {&#xD;
m_joined = true;&#xD;
}&#xD;
#endif&#xD;
}&#xD;
}&#xD;
if (errno &amp;&amp; (errno != ESRCH)) {&#xD;
OSAL_ERROR (&quot;join of threads failed&quot;);&#xD;
}&#xD;
}&#xD;
// else Execution has been completed. OK.&#xD;
</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_7VJ9IE_qEdy2tpS719xBwQ" name="cancel" specification="_yChQ8E_mEdy2tpS719xBwQ">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_hLVlACBbEeOMKsPXBVC0DA" name="param_0" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_hL2iYCBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_hMBhgCBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body> TRACEpr (VM);&#xD;
PR (&quot;Thread::cancel ()&quot; &lt;&lt; showI);&#xD;
&#xD;
int r;&#xD;
&#xD;
if (m_threadId == 0)&#xD;
OSAL_ERROR (&quot;call exec() firstly.&quot;);&#xD;
&#xD;
if ((int) m_threadId != ThExecOUT)&#xD;
{&#xD;
#if defined THREAD_POSIX4 || defined THREAD_Linux&#xD;
// treat as well? setCancelState(), setCancelType(), testCancel(),&#xD;
// cleanupPush(), cleanupPop() ??&#xD;
r = errno = pthread_cancel (m_threadId);&#xD;
#elif defined THREAD_Solaris&#xD;
r = errno = thr_kill (m_threadId, CancelThSIG);&#xD;
&#xD;
#elif defined THREAD_VxWorks&#xD;
// use taskSafe() and taskUnsafe() ??&#xD;
r = taskDelete (m_threadId);&#xD;
&#xD;
#endif&#xD;
&#xD;
if (errno)&#xD;
{&#xD;
OS_AL::Util::BString500 tmp (&quot;m_threadId= &quot;);&#xD;
tmp &lt;&lt; m_threadId;&#xD;
OSAL_ERROR (tmp);&#xD;
}&#xD;
}&#xD;
else&#xD;
r = 0; // Execution has been completed. OK.&#xD;
&#xD;
return r;&#xD;
</body>
</ownedBehavior>
<ownedOperation xmi:type="uml:Operation" xmi:id="_oCK1EE_gEdy2tpS719xBwQ" name="Thread" method="_1BbKsE_pEdy2tpS719xBwQ">
<ownedComment xmi:type="uml:Comment" xmi:id="_NJ3gcE_hEdy2tpS719xBwQ" annotatedElement="_oCK1EE_gEdy2tpS719xBwQ">
<body>create a new thread. The passed parameter @param name is used to&#xD;
identify the thread in the trace files.&#xD;
&#xD;
By default, the Thread will block the SIGRTMIN signal which is&#xD;
used by class Timer</body>
</ownedComment>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_srl3QE_gEdy2tpS719xBwQ" name="name" type="_WXH_4DO2EdyG-pUz-bb-Lg">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sr4yME_gEdy2tpS719xBwQ" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ssCjME_gEdy2tpS719xBwQ" name="" value="1"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_suk50E_gEdy2tpS719xBwQ" name="attrPtr" type="_Saw1YDkDEdyuzNpSiGPe4w">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_su30wE_gEdy2tpS719xBwQ" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_svBlwE_gEdy2tpS719xBwQ" name="" value="1"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_sx2QQE_gEdy2tpS719xBwQ" name="startRoutine" type="_kor6MFdhEd-9TNLvplUFDQ">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_syJyQE_gEdy2tpS719xBwQ" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_syS8ME_gEdy2tpS719xBwQ" name="" value="1"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_s1R-wE_gEdy2tpS719xBwQ" name="arg">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_8I6RgBydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_s1k5sE_gEdy2tpS719xBwQ" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_s1uqsE_gEdy2tpS719xBwQ" name="" value="1"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_s423ME_gEdy2tpS719xBwQ" name="exPrio">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_s5JyIE_gEdy2tpS719xBwQ" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_s5ctEE_gEdy2tpS719xBwQ" name="" value="1"/>
<defaultValue xmi:type="uml:LiteralString" xmi:id="_41S0AE_gEdy2tpS719xBwQ" value="DefaultExecPrio"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="_VpnT8E_hEdy2tpS719xBwQ" name="Thread " method="_75TogE_pEdy2tpS719xBwQ">
<ownedComment xmi:type="uml:Comment" xmi:id="_hCJScE_hEdy2tpS719xBwQ" annotatedElement="_VpnT8E_hEdy2tpS719xBwQ">
<body>create a new thread by passing its name and optionally a&#xD;
pointer to ThreadAttributes.&#xD;
&#xD;
By default, the Thread will block the SIGRTMIN signal which is&#xD;
used by class Timer</body>
</ownedComment>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_X1168E_hEdy2tpS719xBwQ" name="name" type="_WXH_4DO2EdyG-pUz-bb-Lg">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_X2I14E_hEdy2tpS719xBwQ" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_X2Sm4E_hEdy2tpS719xBwQ" name="" value="1"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_X4XqgE_hEdy2tpS719xBwQ" name="attrPtr" type="_Saw1YDkDEdyuzNpSiGPe4w">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_X4rMgE_hEdy2tpS719xBwQ" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_X4-HcE_hEdy2tpS719xBwQ" name="" value="1"/>
<defaultValue xmi:type="uml:OpaqueExpression" xmi:id="_XdUEsCBUEeOBrb_t_69W4Q">
<language>C++</language>
<body>NULL</body>
</defaultValue>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="_vOOWoE_hEdy2tpS719xBwQ" name="Thread" method="_-P0M4E_pEdy2tpS719xBwQ"/>
<ownedOperation xmi:type="uml:Operation" xmi:id="_5LQAcE_hEdy2tpS719xBwQ" name="initZ " isStatic="true" method="_AwmHkE_qEdy2tpS719xBwQ">
<ownedComment xmi:type="uml:Comment" xmi:id="_7klPUE_hEdy2tpS719xBwQ" annotatedElement="_5LQAcE_hEdy2tpS719xBwQ">
<body>initialize the suspend priority of threads in this zone&#xD;
and the suspension mode (static method). This method has to&#xD;
be called during the application startup.</body>
</ownedComment>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="_-xoaIE_hEdy2tpS719xBwQ" name="entryRoutC" isStatic="true" method="_DjaNcE_qEdy2tpS719xBwQ">
<ownedComment xmi:type="uml:Comment" xmi:id="_a-nNQE_iEdy2tpS719xBwQ" annotatedElement="_-xoaIE_hEdy2tpS719xBwQ">
<body>This routine wraps the thread execution (static method)</body>
</ownedComment>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_BxQ0AE_iEdy2tpS719xBwQ" name="ret" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_8I6RgBydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_EPvs4FnmEd-9TNLvplUFDQ" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_EPywMFnmEd-9TNLvplUFDQ" value="1"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_FeNrIFnmEd-9TNLvplUFDQ" name="arg">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_8I6RgBydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_FeNrIlnmEd-9TNLvplUFDQ" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_FeNrIVnmEd-9TNLvplUFDQ" value="1"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="_S8E6ME_iEdy2tpS719xBwQ" name="getId" isStatic="true" method="_FyBaEE_qEdy2tpS719xBwQ">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_UzcEcE_iEdy2tpS719xBwQ" name="param_0" type="_l2xogFdiEd-9TNLvplUFDQ" direction="return">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Uzu_YE_iEdy2tpS719xBwQ" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Uz4wYE_iEdy2tpS719xBwQ" name="" value="1"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="_dG0P4E_iEdy2tpS719xBwQ" name="getName" isStatic="true" method="_IEyt8E_qEdy2tpS719xBwQ">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_h151ME_iEdy2tpS719xBwQ" name="name" type="_WXH_4DO2EdyG-pUz-bb-Lg" direction="return">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_h2NXME_iEdy2tpS719xBwQ" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_h2WhIE_iEdy2tpS719xBwQ" name="" value="1"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="_dS4V8E_iEdy2tpS719xBwQ" name="setName" method="_5vt7QE_oEdy2tpS719xBwQ">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_qgiDAE_iEdy2tpS719xBwQ" name="name" type="_WXH_4DO2EdyG-pUz-bb-Lg">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_qg098E_iEdy2tpS719xBwQ" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_qg-u8E_iEdy2tpS719xBwQ" name="" value="1"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="_GnaOIE_jEdy2tpS719xBwQ" name="getPriority" isStatic="true" method="_LK1R0E_qEdy2tpS719xBwQ">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_O4G5AE_jEdy2tpS719xBwQ" name="param_0" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_O4Zz8E_jEdy2tpS719xBwQ" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_O4jk8E_jEdy2tpS719xBwQ" name="" value="1"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="_Gzx2ME_jEdy2tpS719xBwQ" name="setPriority" isStatic="true" method="_ONl4ME_qEdy2tpS719xBwQ">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_RuWGUE_jEdy2tpS719xBwQ" name="prio">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_RupoUE_jEdy2tpS719xBwQ" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_RuyyQE_jEdy2tpS719xBwQ" name="" value="1"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="_G6VKIE_jEdy2tpS719xBwQ" name="getPrioMax" isStatic="true" method="_Q3UTgE_qEdy2tpS719xBwQ">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_T8pw8E_jEdy2tpS719xBwQ" name="param_0" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_T89S8E_jEdy2tpS719xBwQ" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_T9Gc4E_jEdy2tpS719xBwQ" name="" value="1"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="_bvjFgE_jEdy2tpS719xBwQ" name="getThreadAttributes" method="_0g4e4E_oEdy2tpS719xBwQ">
<ownedComment xmi:type="uml:Comment" xmi:id="_h-J80E_jEdy2tpS719xBwQ" annotatedElement="_bvjFgE_jEdy2tpS719xBwQ">
<body>provides access to the thread attributes (also for modification)</body>
</ownedComment>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_diu6YE_jEdy2tpS719xBwQ" name="param_0" type="_Saw1YDkDEdyuzNpSiGPe4w" direction="return">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_djCcYE_jEdy2tpS719xBwQ" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_djLmUE_jEdy2tpS719xBwQ" name="" value="1"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="_mdJ3sE_jEdy2tpS719xBwQ" name="isDetached" method="_3mBq4E_oEdy2tpS719xBwQ">
<ownedComment xmi:type="uml:Comment" xmi:id="_rPrLgE_jEdy2tpS719xBwQ" annotatedElement="_mdJ3sE_jEdy2tpS719xBwQ">
<body>denotes whether the thread is detached or joinable</body>
</ownedComment>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_ngEGME_jEdy2tpS719xBwQ" name="param_0" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_ngXBIE_jEdy2tpS719xBwQ" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_nggyIE_jEdy2tpS719xBwQ" name="" value="1"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="_yp_A8E_jEdy2tpS719xBwQ" name="changeSigMask" isStatic="true" method="_T9W3YE_qEdy2tpS719xBwQ">
<ownedComment xmi:type="uml:Comment" xmi:id="_2BdTEE_jEdy2tpS719xBwQ" annotatedElement="_yp_A8E_jEdy2tpS719xBwQ">
<body>changes the signal mask for the calling thread as described by&#xD;
the how and newmask arguments. If oldmask is not NULL, the previous&#xD;
signal mask is stored in the location pointed to by oldmask.&#xD;
&#xD;
The meaning of the how and newmask arguments is the same as for&#xD;
sig-procmask(2). If how is SIG_SETMASK, the signal mask is set to&#xD;
newmask.&#xD;
If how is SIG_BLOCK, the signals specified to newmask are added to&#xD;
the current signal mask.&#xD;
If how is SIG_UNBLOCK, the signals specified to newmask are removed&#xD;
from the current signal mask.&#xD;
Recall that signal masks are set on a per-thread basis, but signal&#xD;
actions and signal handlers, as set with sigaction(2), are shared&#xD;
between all threads.</body>
</ownedComment>
<ownedParameter xmi:type="uml:Parameter" xmi:id="__Rod8E_jEdy2tpS719xBwQ" name="how">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="__RyO8E_jEdy2tpS719xBwQ" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="__R7Y4E_jEdy2tpS719xBwQ" name="" value="1"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="__Um5cE_jEdy2tpS719xBwQ" name="newSet" type="_5J3-8FdkEd-9TNLvplUFDQ">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="__UwqcE_jEdy2tpS719xBwQ" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="__VDlYE_jEdy2tpS719xBwQ" name="" value="1"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="__YLx4E_jEdy2tpS719xBwQ" name="oldSet" type="_5J3-8FdkEd-9TNLvplUFDQ" direction="inout">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="__YfT4E_jEdy2tpS719xBwQ" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="__Yod0E_jEdy2tpS719xBwQ" name="" value="1"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="_MYHzEE_kEdy2tpS719xBwQ" name="modifySigMask" isStatic="true" method="_Wid4cE_qEdy2tpS719xBwQ">
<ownedComment xmi:type="uml:Comment" xmi:id="_UEwuoE_kEdy2tpS719xBwQ" annotatedElement="_MYHzEE_kEdy2tpS719xBwQ">
<body>similar changeSigMask, used by Main and ServiceRequest classes.&#xD;
Compared to changeSigMask, it is more convenient to use if a single&#xD;
signal is modified, since the user does not have to create a set and&#xD;
add the signal to it.</body>
</ownedComment>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_M8x_UE_kEdy2tpS719xBwQ" name="how">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_M87wUE_kEdy2tpS719xBwQ" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_M9OrQE_kEdy2tpS719xBwQ" name="" value="1"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_NA9UsE_kEdy2tpS719xBwQ" name="signalID">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_NBGeoE_kEdy2tpS719xBwQ" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_NBQPoE_kEdy2tpS719xBwQ" name="" value="1"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="_X5b6IE_kEdy2tpS719xBwQ" name="printSigMask" method="_ZVR-UE_qEdy2tpS719xBwQ"/>
<ownedOperation xmi:type="uml:Operation" xmi:id="_bh5OkE_kEdy2tpS719xBwQ" name="exit" isStatic="true" method="_b6rTQE_qEdy2tpS719xBwQ">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_dhdSkE_kEdy2tpS719xBwQ" name="status">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_8I6RgBydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_dhwNgE_kEdy2tpS719xBwQ" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_dh5XcE_kEdy2tpS719xBwQ" name="" value="1"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="_NaGikE_mEdy2tpS719xBwQ" name="exec" method="_hzh9AE_qEdy2tpS719xBwQ">
<ownedComment xmi:type="uml:Comment" xmi:id="_P7COQE_mEdy2tpS719xBwQ" annotatedElement="_NaGikE_mEdy2tpS719xBwQ">
<body>This method initiates the execution of a new thread. The new thread&#xD;
will start the entryRoutine, which acts as a wrapper for the execution&#xD;
of the passed startRoutine. The parameter arg will be passed to it&#xD;
(often a &quot;this&quot; pointer, if a static method is passed).&#xD;
&#xD;
The last parameter is the Tasks priority. It is optional, if not&#xD;
given, the priority has a default value.&#xD;
&#xD;
Don't confuse this method with the Task::exec which will execute&#xD;
periodic tasks.</body>
</ownedComment>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_WnJg8E_mEdy2tpS719xBwQ" name="startRoutine" type="_kor6MFdhEd-9TNLvplUFDQ">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Wncb4E_mEdy2tpS719xBwQ" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_WnmM4E_mEdy2tpS719xBwQ" name="" value="1"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_WqIjgE_mEdy2tpS719xBwQ" name="arg">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_8I6RgBydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_WqbecE_mEdy2tpS719xBwQ" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_WqlPcE_mEdy2tpS719xBwQ" name="" value="1"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_WuKH4E_mEdy2tpS719xBwQ" name="execPrio">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_WudC0E_mEdy2tpS719xBwQ" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Wuv9wE_mEdy2tpS719xBwQ" name="" value="1"/>
<defaultValue xmi:type="uml:LiteralString" xmi:id="_dHC8kE_mEdy2tpS719xBwQ" value="DefaultExecPrio"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_-r98QFnaEd-9TNLvplUFDQ" name="ret" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_BGPmUFnbEd-9TNLvplUFDQ" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_BGQ0cFnbEd-9TNLvplUFDQ" value="1"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="_nQJTgE_mEdy2tpS719xBwQ" name="entryRoutine" method="_k-CxME_qEdy2tpS719xBwQ"/>
<ownedOperation xmi:type="uml:Operation" xmi:id="_p66QoE_mEdy2tpS719xBwQ" name="isMyself" method="_npGpQE_qEdy2tpS719xBwQ">
<ownedComment xmi:type="uml:Comment" xmi:id="_sG1VoE_mEdy2tpS719xBwQ" annotatedElement="_p66QoE_mEdy2tpS719xBwQ">
<body>checks whether the currently executing thread has the same ID as&#xD;
the one for which this operation is called</body>
</ownedComment>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_t6BKgE_mEdy2tpS719xBwQ" name="param_0" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_t6UsgE_mEdy2tpS719xBwQ" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_t6d2cE_mEdy2tpS719xBwQ" name="" value="1"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="_xR8IkE_mEdy2tpS719xBwQ" name="equal" method="_p2-PAE_qEdy2tpS719xBwQ">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_9dk_AE_mEdy2tpS719xBwQ" name="ret" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_9d358E_mEdy2tpS719xBwQ" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_9eBD4E_mEdy2tpS719xBwQ" name="" value="1"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_9hJ3cE_mEdy2tpS719xBwQ" name="otherThread" type="_-HeCsDj_Edy0Rd6V_tf1-Q">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_9hl8UE_mEdy2tpS719xBwQ" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_9hvtUE_mEdy2tpS719xBwQ" name="" value="1"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="_xldhgE_mEdy2tpS719xBwQ" name="resume" method="_vvrHwE_qEdy2tpS719xBwQ">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_PsMEgE_nEdy2tpS719xBwQ" name="param_0" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_PsfmgE_nEdy2tpS719xBwQ" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_PsyhcE_nEdy2tpS719xBwQ" name="" value="1"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="_xsdhYE_mEdy2tpS719xBwQ" name="suspend" method="_y4ZMME_qEdy2tpS719xBwQ">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_R_arYE_nEdy2tpS719xBwQ" name="ret" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_R_tmUE_nEdy2tpS719xBwQ" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_R_3XUE_nEdy2tpS719xBwQ" name="" value="1"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="_x0gqIE_mEdy2tpS719xBwQ" name="runBackground" method="_1UZ7oE_qEdy2tpS719xBwQ"/>
<ownedOperation xmi:type="uml:Operation" xmi:id="_x7XgEE_mEdy2tpS719xBwQ" name="join" method="_4Z_zkE_qEdy2tpS719xBwQ">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_VzWQAE_nEdy2tpS719xBwQ" name="status" direction="inout">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_8I6RgBydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_VzpyAE_nEdy2tpS719xBwQ" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Vzy78E_nEdy2tpS719xBwQ" name="" value="1"/>
<defaultValue xmi:type="uml:LiteralString" xmi:id="_XUNl0E_nEdy2tpS719xBwQ" value="NULL"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="_yChQ8E_mEdy2tpS719xBwQ" name="cancel" method="_7VJ9IE_qEdy2tpS719xBwQ">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_hXC8sE_nEdy2tpS719xBwQ" name="param_0" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_hXWesE_nEdy2tpS719xBwQ" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_hXfooE_nEdy2tpS719xBwQ" name="" value="1"/>
</ownedParameter>
</ownedOperation>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_Saw1YDkDEdyuzNpSiGPe4w" name="ThreadAttribute">
<ownedComment xmi:type="uml:Comment" xmi:id="_TcVYgE_rEdy2tpS719xBwQ" annotatedElement="_Saw1YDkDEdyuzNpSiGPe4w">
<body>Attributes of a thread, i.e. stack information and whether a thread&#xD;
is detached (becomes independent from initiator) or joinable (it&#xD;
can be/has to be explicitly joined by the thread initiator).&#xD;
&#xD;
=> see pthread documentation</body>
</ownedComment>
<ownedAttribute xmi:type="uml:Property" xmi:id="_6bg4AE_tEdy2tpS719xBwQ" name="m_stackSize" visibility="private" isUnique="false">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_LTZesByeEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_6b9j8E_tEdy2tpS719xBwQ" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_6b9j8U_tEdy2tpS719xBwQ" value="1"/>
</ownedAttribute>
<ownedAttribute xmi:type="uml:Property" xmi:id="_9TGJIE_tEdy2tpS719xBwQ" name="m_stackAddress" visibility="private" isUnique="false">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_8I6RgBydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_9TZEEE_tEdy2tpS719xBwQ"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_9Ti1EE_tEdy2tpS719xBwQ" value="1"/>
</ownedAttribute>
<ownedAttribute xmi:type="uml:Property" xmi:id="_BBEPsE_uEdy2tpS719xBwQ" name="m_detached" visibility="private" isUnique="false">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_BBg7oE_uEdy2tpS719xBwQ" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_BBqsoE_uEdy2tpS719xBwQ" value="1"/>
</ownedAttribute>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_GyeNoE_uEdy2tpS719xBwQ" name="getStackSize" specification="_f_9RIE_rEdy2tpS719xBwQ">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_ogWDsCBbEeOMKsPXBVC0DA" name="param_0" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_LTZesByeEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_og-84CBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ohJ8ACBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body> return m_stackSize;</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_IITYIE_uEdy2tpS719xBwQ" name="setStackAddr" specification="_vxhFYE_rEdy2tpS719xBwQ">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_ohbBwCBbEeOMKsPXBVC0DA" name="stackAddress">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_8I6RgBydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_oh9NQCBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_oiIMYCBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body> m_stackAddress = stackAddress;</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_J3nZoE_uEdy2tpS719xBwQ" name="getStackAddr" specification="_v5HiME_rEdy2tpS719xBwQ">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_oimGcCBbEeOMKsPXBVC0DA" name="param_0" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_8I6RgBydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_ojHq4CBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ojTRECBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body> return m_stackAddress;</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_LQR1sE_uEdy2tpS719xBwQ" name="setDetached" specification="_oN8UUE_tEdy2tpS719xBwQ">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_ojxLICBbEeOMKsPXBVC0DA" name="detached">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_okSvkCBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_okeVwCBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body> m_detached = detached;</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_MoV00E_uEdy2tpS719xBwQ" name="getDetached" specification="_ofORkE_tEdy2tpS719xBwQ">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_okvbgCBbEeOMKsPXBVC0DA" name="param_0" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_olQ_8CBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_olb_ECBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body> return m_detached;</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_rbyT4E_uEdy2tpS719xBwQ" name="ThreadAttribute" specification="_YAjKkE_rEdy2tpS719xBwQ">
<language>C/C++</language>
<body> m_stackAddress = NULL;&#xD;
#if defined THREAD_POSIX4 || THREAD_Linux&#xD;
m_stackSize = 0; // use defaults from system&#xD;
#else&#xD;
m_stackSize = 0x10000; // default values : 64 Kbytes&#xD;
#endif&#xD;
m_detached = true;&#xD;
</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_t_GlME_uEdy2tpS719xBwQ" name="setStackSize" specification="_f6SuAE_rEdy2tpS719xBwQ">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_olzLcCBbEeOMKsPXBVC0DA" name="param_0" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_omUv4CBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_omfvACBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_omrVMCBbEeOMKsPXBVC0DA" name="stackSize">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_LTZesByeEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_onM5oCBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_onYf0CBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body>#ifdef THREAD_LINUX&#xD;
if (stackSize != 0 &amp;&amp; stackSize &lt; PTHREAD_STACK_MIN) {&#xD;
#else&#xD;
if (stackSize != 0) {&#xD;
#endif&#xD;
return -EINVAL;&#xD;
}&#xD;
else&#xD;
{&#xD;
m_stackSize = stackSize;&#xD;
return 0;&#xD;
}&#xD;
</body>
</ownedBehavior>
<ownedOperation xmi:type="uml:Operation" xmi:id="_YAjKkE_rEdy2tpS719xBwQ" name="ThreadAttribute" method="_rbyT4E_uEdy2tpS719xBwQ">
<ownedComment xmi:type="uml:Comment" xmi:id="_Z482oE_rEdy2tpS719xBwQ" annotatedElement="_YAjKkE_rEdy2tpS719xBwQ">
<body>create a thread with default attributes:&#xD;
- a stack address chosen by the system&#xD;
- a stack size of 64K in case of Solaris and vxWorks&#xD;
or the system default, in case of Linux&#xD;
- detached</body>
</ownedComment>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="_f6SuAE_rEdy2tpS719xBwQ" name="setStackSize" method="_t_GlME_uEdy2tpS719xBwQ">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_jHMH0E_rEdy2tpS719xBwQ" name="param_0" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_jHfCwE_rEdy2tpS719xBwQ" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_jHozwE_rEdy2tpS719xBwQ" name="" value="1"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_jLD7ME_rEdy2tpS719xBwQ" name="stackSize">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_LTZesByeEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_jLW2IE_rEdy2tpS719xBwQ" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_jLgnIE_rEdy2tpS719xBwQ" name="" value="1"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="_f_9RIE_rEdy2tpS719xBwQ" name="getStackSize" method="_GyeNoE_uEdy2tpS719xBwQ">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_pNKAgE_rEdy2tpS719xBwQ" name="param_0" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_LTZesByeEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_pNc7cE_rEdy2tpS719xBwQ" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_pNmscE_rEdy2tpS719xBwQ" name="" value="1"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="_vxhFYE_rEdy2tpS719xBwQ" name="setStackAddr" method="_IITYIE_uEdy2tpS719xBwQ">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_ztpjwE_rEdy2tpS719xBwQ" name="stackAddress">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_8I6RgBydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_zt8esE_rEdy2tpS719xBwQ" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_zuGPsE_rEdy2tpS719xBwQ" name="" value="1"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="_v5HiME_rEdy2tpS719xBwQ" name="getStackAddr" method="_J3nZoE_uEdy2tpS719xBwQ">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_2eX-8E_rEdy2tpS719xBwQ" name="param_0" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_8I6RgBydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_2eq54E_rEdy2tpS719xBwQ" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_2e0q4E_rEdy2tpS719xBwQ" name="" value="1"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="_oN8UUE_tEdy2tpS719xBwQ" name="setDetached" method="_LQR1sE_uEdy2tpS719xBwQ">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_sC6awE_tEdy2tpS719xBwQ" name="detached">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sDNVsE_tEdy2tpS719xBwQ" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sDg3sE_tEdy2tpS719xBwQ" name="" value="1"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="_ofORkE_tEdy2tpS719xBwQ" name="getDetached" method="_MoV00E_uEdy2tpS719xBwQ">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_w84aYE_tEdy2tpS719xBwQ" name="param_0" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_w9L8YE_tEdy2tpS719xBwQ" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_w9e3UE_tEdy2tpS719xBwQ" name="" value="1"/>
</ownedParameter>
</ownedOperation>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_oSgIME_BEdy2tpS719xBwQ" name="ProDesc">
<ownedAttribute xmi:type="uml:Property" xmi:id="_hhJsAE_IEdy2tpS719xBwQ" name="m_argc" visibility="private" isStatic="true" isUnique="false">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_hhcm8E_IEdy2tpS719xBwQ" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_hhcm8U_IEdy2tpS719xBwQ" value="1"/>
</ownedAttribute>
<ownedAttribute xmi:type="uml:Property" xmi:id="_hkukcE_IEdy2tpS719xBwQ" name="m_argv" visibility="private" isStatic="true" isUnique="false">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_5lVhgBydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_hlBfYE_IEdy2tpS719xBwQ"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_hlBfYU_IEdy2tpS719xBwQ" value="1"/>
</ownedAttribute>
<ownedAttribute xmi:type="uml:Property" xmi:id="_xFdHYE_IEdy2tpS719xBwQ" name="m_classId" visibility="private" isStatic="true" isUnique="false">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_xFwCUE_IEdy2tpS719xBwQ" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_xFwCUU_IEdy2tpS719xBwQ" value="1"/>
</ownedAttribute>
<ownedAttribute xmi:type="uml:Property" xmi:id="_xLHqgE_IEdy2tpS719xBwQ" name="m_sigOnErr" visibility="private" isStatic="true" isUnique="false">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_xLalcE_IEdy2tpS719xBwQ" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_xLkWcE_IEdy2tpS719xBwQ" value="1"/>
</ownedAttribute>
<ownedAttribute xmi:type="uml:Property" xmi:id="_xO_d4E_IEdy2tpS719xBwQ" name="m_numberOfProcesses" visibility="private" isStatic="true" isUnique="false">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_xPSY0E_IEdy2tpS719xBwQ" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_xPSY0U_IEdy2tpS719xBwQ" value="1"/>
<defaultValue xmi:type="uml:LiteralInteger" xmi:id="_sDukgCBTEeOBrb_t_69W4Q" value="1"/>
</ownedAttribute>
<ownedAttribute xmi:type="uml:Property" xmi:id="_xSkWUE_IEdy2tpS719xBwQ" name="m_policy" visibility="private" isStatic="true" isUnique="false">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_xS3RQE_IEdy2tpS719xBwQ" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_xTBCQE_IEdy2tpS719xBwQ" value="1"/>
</ownedAttribute>
<ownedAttribute xmi:type="uml:Property" xmi:id="_xVsi0E_IEdy2tpS719xBwQ" name="m_prioMin" visibility="private" isStatic="true" isUnique="false">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_xWJOwE_IEdy2tpS719xBwQ" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_xWJOwU_IEdy2tpS719xBwQ" value="1"/>
<defaultValue xmi:type="uml:LiteralInteger" xmi:id="_X_pdECBREeOBrb_t_69W4Q"/>
</ownedAttribute>
<ownedAttribute xmi:type="uml:Property" xmi:id="_xY-gUE_IEdy2tpS719xBwQ" name="m_prioMax" visibility="private" isStatic="true" isUnique="false">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_xZRbQE_IEdy2tpS719xBwQ" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_xZbMQE_IEdy2tpS719xBwQ" value="1"/>
<defaultValue xmi:type="uml:LiteralInteger" xmi:id="_UiXd4CBREeOBrb_t_69W4Q"/>
</ownedAttribute>
<ownedAttribute xmi:type="uml:Property" xmi:id="_XIyUkE_JEdy2tpS719xBwQ" name="m_zoneName" visibility="private" isStatic="true" type="_0AwCEDO0EdyG-pUz-bb-Lg" isUnique="false">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_baOUkE_JEdy2tpS719xBwQ"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_baOUkU_JEdy2tpS719xBwQ" value="1"/>
</ownedAttribute>
<ownedAttribute xmi:type="uml:Property" xmi:id="_es7bcE_JEdy2tpS719xBwQ" name="m_zoneNumber" visibility="private" isStatic="true" isUnique="false">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_etOWYE_JEdy2tpS719xBwQ" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_etYHYE_JEdy2tpS719xBwQ" value="1"/>
<defaultValue xmi:type="uml:LiteralInteger" xmi:id="_g5-60CBREeOBrb_t_69W4Q" value="-1"/>
</ownedAttribute>
<ownedAttribute xmi:type="uml:Property" xmi:id="_jLVgcE_JEdy2tpS719xBwQ" name="m_pauseOnErr" visibility="private" isStatic="true" isUnique="false">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_jLobYE_JEdy2tpS719xBwQ" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_jLobYU_JEdy2tpS719xBwQ" value="1"/>
<defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_lNPfwCBREeOBrb_t_69W4Q"/>
</ownedAttribute>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_wzzhQE_JEdy2tpS719xBwQ" name="getArgc" specification="_fBQXkE_HEdy2tpS719xBwQ">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_i_fqQCBbEeOMKsPXBVC0DA" name="param_0" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_jABOsCBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_jAMN0CBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body>return m_argc;</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_zW-ooE_JEdy2tpS719xBwQ" name="getArgv" specification="_fRpkAE_HEdy2tpS719xBwQ">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_jAdTkCBbEeOMKsPXBVC0DA" name="param_0" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_5lVhgBydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_jA-4ACBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_jBJ3ICBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body>return m_argv;</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_0-1-UE_JEdy2tpS719xBwQ" name="getArgv" specification="_fMk2wE_HEdy2tpS719xBwQ">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_jBoYQCBbEeOMKsPXBVC0DA" name="param_0" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_5lVhgBydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_jCLK0CBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_jCWJ8CBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_jCvLgCBbEeOMKsPXBVC0DA" name="pos">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_jDW2kCBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_jDicwCBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body>return m_argv[pos];</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_GgAvAE_KEdy2tpS719xBwQ" name="setZoneName" specification="_Qpmc4E_EEdy2tpS719xBwQ">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_jDy7cCBbEeOMKsPXBVC0DA" name="zoneName" type="_WXH_4DO2EdyG-pUz-bb-Lg">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_jEVG8CBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_jEgGECBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body>m_zoneName = zoneName;</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_IMMkAE_KEdy2tpS719xBwQ" name="getZoneName" specification="_Qd0qsE_EEdy2tpS719xBwQ">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_jFAcYCBbEeOMKsPXBVC0DA" name="param_0" type="_WXH_4DO2EdyG-pUz-bb-Lg" direction="return">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_jFiA0CBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_jFs_8CBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body>return m_zoneName;</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_J41E8E_KEdy2tpS719xBwQ" name="getPid" specification="_m11OgE_EEdy2tpS719xBwQ">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_jGFacCBbEeOMKsPXBVC0DA" name="param_0" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_jGmX0CBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_jGx-ACBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body>#if defined SYSTEM_POSIX4&#xD;
return getpid ();&#xD;
#elif defined SYSTEM_Solaris&#xD;
return getpid ();&#xD;
#elif defined SYSTEM_VxWorks&#xD;
return Thread::getMyId ();&#xD;
#else&#xD;
SYSTEM_x_not_defined;&#xD;
return -1;&#xD;
#endif&#xD;
</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_LgsaoE_KEdy2tpS719xBwQ" name="getParentPid" specification="_m8ZJgE_EEdy2tpS719xBwQ">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_jHDDwCBbEeOMKsPXBVC0DA" name="param_0" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_jHkBICBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_jHvnUCBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body>#if defined SYSTEM_POSIX4&#xD;
return getppid ();&#xD;
#elif defined SYSTEM_Solaris&#xD;
return getppid ();&#xD;
#elif defined SYSTEM_VxWorks&#xD;
return -1;&#xD;
#else&#xD;
SYSTEM_x_not_defined;&#xD;
return -1;&#xD;
#endif&#xD;
</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_NcEiME_KEdy2tpS719xBwQ" name="getPauseOnErr" specification="_fWj5ME_HEdy2tpS719xBwQ">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_jIAGACBbEeOMKsPXBVC0DA" name="param_0" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_jIiRgCBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_jItQoCBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body>return m_pauseOnErr;</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_Q5DmcE_KEdy2tpS719xBwQ" name="getClassId" specification="_fbomcE_HEdy2tpS719xBwQ">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_jI9vUCBbEeOMKsPXBVC0DA" name="param_0" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_jJfTwCBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_jJqS4CBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body>return m_classId;</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_SYbHcE_KEdy2tpS719xBwQ" name="getNumerOfProcesses" specification="_ffqK0E_HEdy2tpS719xBwQ">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_jJ7YoCBbEeOMKsPXBVC0DA" name="param_0" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_jKjqwCBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_jKup4CBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body>return m_numberOfProcesses;</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_UKkagE_KEdy2tpS719xBwQ" name="getPolicy" specification="_fkkgAE_HEdy2tpS719xBwQ">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_jK_voCBbEeOMKsPXBVC0DA" name="param_0" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_jLhUECBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_jLs6QCBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body> return m_policy;</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_Fuv0sE_LEdy2tpS719xBwQ" name="init" specification="_Wg_Y8E_CEdy2tpS719xBwQ">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_jL9Y8CBbEeOMKsPXBVC0DA" name="errSig">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_jMe9YCBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_jMqjkCBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body>TRACEpr (F9);&#xD;
m_sigOnErr = errSig;&#xD;
&#xD;
m_pauseOnErr = isEnvTrue (&quot;A_PauseOnErr&quot;);&#xD;
errno = 0;&#xD;
&#xD;
if (existEnv (&quot;A_NumberOfProcesses&quot;))&#xD;
{&#xD;
m_numberOfProcesses = atoi (getEnv (&quot;A_NumberOfProcesses&quot;));&#xD;
if (m_numberOfProcesses &lt; 1)&#xD;
{&#xD;
OSAL_ERROR&#xD;
(&quot;The environment variable 'A_NumberOfProcesses' must be > 0&quot;);&#xD;
}&#xD;
}&#xD;
&#xD;
#if defined SYSTEM_Solaris&#xD;
pcparms_t params;&#xD;
params.pc_cid = PC_CLNULL; // To force update of pc_cid&#xD;
long l;&#xD;
l = priocntl (P_PID, getPid (), PC_GETPARMS, (caddr_t) &amp; params);&#xD;
if (l == -1L)&#xD;
OSAL_ERROR (&quot;ON priocntl( , PC_GETPARMS, )&quot;);&#xD;
classId = params.pc_cid;&#xD;
&#xD;
pcinfo_t infos;&#xD;
infos.pc_cid = classId; // Infos about current process&#xD;
l = priocntl ((idtype_t) 0, (id_t) 0, PC_GETCLINFO, (caddr_t) &amp; infos);&#xD;
if (l == -1L)&#xD;
OSAL_ERROR (&quot;ON priocntl( , PC_GETCLINFO, )&quot;);&#xD;
&#xD;
m_prioMax = 59;&#xD;
m_prioMin = 0;&#xD;
&#xD;
#else // SYSTEM_POSIX4, SYSTEM_Linux and SYSTEM_VxWorks&#xD;
&#xD;
m_policy = sched_getscheduler (getPid ());&#xD;
if (m_policy == -1)&#xD;
OSAL_ERROR (&quot;ON sched_getscheduler(myPid)&quot;);&#xD;
PR (&quot; Current scheduling policy is &quot;);&#xD;
PR ((m_policy == SCHED_FIFO ? &quot;SCHED_FIFO&quot; :&#xD;
(m_policy == SCHED_RR ? &quot;SCHED_RR&quot; : &quot;SCHED_OTHER&quot;)));&#xD;
&#xD;
posixPriorityNumbering = true; // for VxWorks, otherwise number inversion&#xD;
&#xD;
m_prioMax = sched_get_priority_max (m_policy);&#xD;
if (m_prioMax == -1)&#xD;
OSAL_ERROR (&quot;ON sched_get_priority_max()&quot;);&#xD;
m_prioMin = sched_get_priority_min (m_policy);&#xD;
if (m_prioMin == -1)&#xD;
OSAL_ERROR (&quot;ON sched_get_priority_min()&quot;);&#xD;
&#xD;
#endif&#xD;
&#xD;
PR (&quot;, priority mini for a thread =&quot; &lt;&lt; m_prioMin);&#xD;
PR (&quot;, priority maxi for a thread =&quot; &lt;&lt; m_prioMax &lt;&lt; showI);&#xD;
</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_InEssE_LEdy2tpS719xBwQ" name="existEnv" specification="_Wn__4E_CEdy2tpS719xBwQ">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_jM7CQCBbEeOMKsPXBVC0DA" name="param_0" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_jNcmsCBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_jNoM4CBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_jNzzECBbEeOMKsPXBVC0DA" name="name">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_5lVhgBydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_jOVXgCBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_jOg9sCBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body>bool r = false;&#xD;
const char *p =::getenv (name);&#xD;
if (p &amp;&amp; *p != '\0')&#xD;
r = true;&#xD;
&#xD;
return r;&#xD;
</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_K8r5ME_LEdy2tpS719xBwQ" name="getEnv" specification="_WtXBAE_CEdy2tpS719xBwQ">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_jPGzkCBbEeOMKsPXBVC0DA" name="param_0" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_5lVhgBydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_jPo_ECBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_jPz-MCBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_jQUUgCBbEeOMKsPXBVC0DA" name="name">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_5lVhgBydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_jQ2gACBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_jRBfICBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body>// a call to getenv(3C) is standard UNIX&#xD;
const char *p =::getenv (name);&#xD;
&#xD;
// result is &quot;&quot; if name is not found in environment&#xD;
&#xD;
return (p ? p : &quot;&quot;);&#xD;
</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_NumnME_LEdy2tpS719xBwQ" name="getEnvInt" specification="_Wx1RUE_CEdy2tpS719xBwQ">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_jRuCsCBbEeOMKsPXBVC0DA" name="param_0" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_jSPnICBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_jSbNUCBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_jSmMcCBbEeOMKsPXBVC0DA" name="name">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_5lVhgBydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_jTHw4CBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_jTSwACBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_jTzGUCBbEeOMKsPXBVC0DA" name="base">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_jUUqwCBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_jUgQ8CBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body>int r = 0; // default return value 0 (variable does not exist or empty)&#xD;
&#xD;
const char *p = ::getenv (name);&#xD;
if (p &amp;&amp; *p != '\0')&#xD;
{&#xD;
char *pEnd;&#xD;
r = (int) strtol (p, &amp;pEnd, base);&#xD;
if (pEnd == p) {&#xD;
// the variable exists, but is not numeric&#xD;
OS_AL::Util::BString200 s (&quot;Environment variable '&quot;);&#xD;
s &lt;&lt; name &lt;&lt; &quot;' should be integer.&quot;;&#xD;
OSAL_ERROR (s);&#xD;
}&#xD;
}&#xD;
&#xD;
return r;&#xD;
</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_Qc9D0E_LEdy2tpS719xBwQ" name="isEnvTrue" specification="_W2mckE_CEdy2tpS719xBwQ">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_jUwvoCBbEeOMKsPXBVC0DA" name="param_0" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_jVS7ICBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_jVd6QCBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_jVo5YCBbEeOMKsPXBVC0DA" name="name">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_5lVhgBydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_jWKd0CBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_jWWEACBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body>bool r = false; // if variable does not exist&#xD;
const char *p = ::getenv (name);&#xD;
if (p) {&#xD;
char c = *p;&#xD;
if (c == 't' || c == 'T' || // true or TRUE or True or ...&#xD;
c == 'y' || c == 'Y') { // yes or YES or Yes or ...&#xD;
r = true;&#xD;
}&#xD;
else if (c == 'f' || c == 'F' || c == 'n' || c == 'N') {&#xD;
// false is already assigned&#xD;
}&#xD;
else {&#xD;
OS_AL::Util::BString200 str (name);&#xD;
OSAL_ERROR (str &lt;&lt; &quot; is not boolean.&quot;);&#xD;
}&#xD;
}&#xD;
&#xD;
return r;&#xD;
</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_TRQXcE_LEdy2tpS719xBwQ" name="getCommProcNb" specification="_W8HOsE_CEdy2tpS719xBwQ">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_jW754CBbEeOMKsPXBVC0DA" name="param_0" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_jXdeUCBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_jXpEgCBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body>if (m_sigOnErr == 0) {&#xD;
init ();&#xD;
}&#xD;
&#xD;
return m_numberOfProcesses;&#xD;
</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_VJXIkE_LEdy2tpS719xBwQ" name="saveArg" specification="_XA4Z8E_CEdy2tpS719xBwQ">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_jX6KQCBbEeOMKsPXBVC0DA" name="argc">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_jYbusCBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_jYnU4CBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_jY5owCBbEeOMKsPXBVC0DA" name="argv">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_5lVhgBydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_jZbNMCBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_jZmzYCBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body>m_argc = argc;&#xD;
m_argv = argv;&#xD;
</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_XD2fUE_LEdy2tpS719xBwQ" name="setZoneNumber" specification="_EmmlEE_EEdy2tpS719xBwQ">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_jaFUgCBbEeOMKsPXBVC0DA" name="zoneNumber">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_jam48CBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_jayfICBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body>if ((zoneNumber &lt; 0) || (zoneNumber >= m_numberOfProcesses)) {&#xD;
OSAL_ERROR (&quot;requires : 0 &lt;= number &lt; numberOfProcesses&quot;);&#xD;
}&#xD;
m_zoneNumber = zoneNumber;</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_Zj4zIE_LEdy2tpS719xBwQ" name="getZoneNumber" specification="_FQU3gE_EEdy2tpS719xBwQ">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_jbC90CBbEeOMKsPXBVC0DA" name="param_0" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_jbkiQCBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_jbvhYCBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body>if (m_zoneNumber == -1) {&#xD;
OSAL_ERROR (&quot;zone number not yet assigned&quot;);&#xD;
}&#xD;
&#xD;
return m_zoneNumber;</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_dMM9oE_LEdy2tpS719xBwQ" name="getPrioMax" specification="_nCDsoE_EEdy2tpS719xBwQ">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_jcAnICBbEeOMKsPXBVC0DA" name="param_0" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_jciLkCBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_jctxwCBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body>if (m_sigOnErr == 0) {&#xD;
init ();&#xD;
}&#xD;
&#xD;
return m_prioMax;</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_fW7v0E_LEdy2tpS719xBwQ" name="getPrioMin" specification="_nGrG4E_EEdy2tpS719xBwQ">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_jc-QcCBbEeOMKsPXBVC0DA" name="param_0" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_jdf04CBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_jdrbECBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body>if (m_sigOnErr == 0) {&#xD;
init ();&#xD;
}&#xD;
&#xD;
return m_prioMin;</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_i-fsYE_LEdy2tpS719xBwQ" name="setMyPriority" specification="_nL4-EE_EEdy2tpS719xBwQ">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_jd8g0CBbEeOMKsPXBVC0DA" name="prio">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_jeesUCBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_jeqSgCBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body>int r = 0;&#xD;
&#xD;
if (prio &lt; getPrioMin () || prio > getPrioMax ())&#xD;
{&#xD;
OS_AL::Util::BString200 s (&quot;priority = &quot;);&#xD;
s &lt;&lt; prio &lt;&lt; &quot; out of range [&quot; &lt;&lt; getPrioMin ()&#xD;
&lt;&lt; &quot;, &quot; &lt;&lt; getPrioMax () &lt;&lt; &quot;]&quot;;&#xD;
OSAL_ERROR (s);&#xD;
}&#xD;
&#xD;
#ifdef SYSTEM_VxWorks&#xD;
OSAL_ERROR (&quot;Not available with VxWorks&quot;); //-VxW&#xD;
// sched_setparam() set a task's priority for VxWorks&#xD;
// for us, a task is a thread&#xD;
// VxWorks is mono-process (only 1 address space)&#xD;
// so inter-process facilities like this one should not be required&#xD;
&#xD;
#elif defined SYSTEM_POSIX4&#xD;
struct sched_param params;&#xD;
params.sched_priority = prio;&#xD;
&#xD;
r = sched_setparam (0, &amp;params);&#xD;
if (r == -1)&#xD;
OSAL_ERROR (&quot;ON sched_setparam()&quot;);&#xD;
&#xD;
#elif defined SYSTEM_Linux&#xD;
if (getPolicy () != SCHED_OTHER)&#xD;
{&#xD;
// SCHED_RR or SCHED_FIFO: use POSIX functions to change static priority&#xD;
struct sched_param params;&#xD;
params.sched_priority = prio;&#xD;
r = sched_setparam (0, &amp;params);&#xD;
if (r == -1)&#xD;
OSAL_ERROR (&quot;ON sched_setparam()&quot;);&#xD;
}&#xD;
else&#xD;
{&#xD;
// TIME-SHARING&#xD;
// We have to be super-user to modify the priority&#xD;
}&#xD;
#else&#xD;
if (getPolicy () != SCHED_OTHER)&#xD;
{ // REAL-TIME&#xD;
pcparms_t params;&#xD;
params.pc_cid = classId;&#xD;
long l;&#xD;
&#xD;
rtparms_t *rtParms = (rtparms_t *) params.pc_clparms;&#xD;
rtParms->rt_pri = pri;&#xD;
rtParms->rt_tqsecs = 0;&#xD;
rtParms->rt_tqnsecs = RT_NOCHANGE;&#xD;
l = priocntl (P_PID, getPid (), PC_SETPARMS, (caddr_t) &amp; params);&#xD;
if (l == -1L)&#xD;
OSAL_ERROR (&quot;ON priocntl( , PC_SETPARMS, )&quot;);&#xD;
}&#xD;
else {&#xD;
// TIME-SHARING&#xD;
// We have to be super-user to modify the priority&#xD;
}&#xD;
#endif</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_l17zkE_LEdy2tpS719xBwQ" name="decrMyPriority" specification="_nPwxcE_EEdy2tpS719xBwQ">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_je7YQCBbEeOMKsPXBVC0DA" name="decrement">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_jfdjwCBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_jfpJ8CBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body>TRACEpr (F9);&#xD;
&#xD;
int prio = getMyPriority ();&#xD;
PR (&quot;old priority = &quot; &lt;&lt; prio);&#xD;
&#xD;
#ifdef SYSTEM_VxWorks&#xD;
prio = -1;&#xD;
OSAL_ERROR (&quot;Not available with VxWorks&quot;); //-VxW&#xD;
&#xD;
#elif defined SYSTEM_POSIX4&#xD;
setMyPriority (prio - decrement);&#xD;
&#xD;
#else&#xD;
// Linux or other&#xD;
if (getPolicy () != SCHED_OTHER)&#xD;
{ // REAL-TIME&#xD;
setMyPriority (prio - decrement);&#xD;
}&#xD;
else&#xD;
{ // TIME-SHARING&#xD;
if (nice (decrement) == -1)&#xD;
OSAL_ERROR (&quot;ON nice()&quot;);&#xD;
}&#xD;
PR (&quot;, new = &quot; &lt;&lt; getMyPriority() &lt;&lt; showI);&#xD;
#endif</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_qwMuIE_LEdy2tpS719xBwQ" name="getMyPriority" specification="_nUPBwE_EEdy2tpS719xBwQ">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_jgAWUCBbEeOMKsPXBVC0DA" name="param_0" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_jgh6wCBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_jgtg8CBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body>int prio;&#xD;
&#xD;
#if defined SYSTEM_VxWorks&#xD;
prio = -1;&#xD;
OSAL_ERROR (&quot;Not available with VxWorks&quot;); //-VxW&#xD;
&#xD;
#elif defined SYSTEM_POSIX4&#xD;
struct sched_param params;&#xD;
int r;&#xD;
&#xD;
r = sched_getparam (0, &amp;params);&#xD;
if (r == -1)&#xD;
OSAL_ERROR (&quot;ON sched_getparam()&quot;);&#xD;
prio = params.sched_priority;&#xD;
&#xD;
&#xD;
#elif defined SYSTEM_Linux&#xD;
if (getPolicy () != SCHED_OTHER)&#xD;
{&#xD;
// SCHED_RR or SCHED_FIFO: use POSIX functions to get static priority&#xD;
struct sched_param params;&#xD;
int r;&#xD;
&#xD;
r = sched_getparam (0, &amp;params);&#xD;
if (r == -1)&#xD;
OSAL_ERROR (&quot;ON sched_getparam()&quot;);&#xD;
prio = params.sched_priority;&#xD;
}&#xD;
else&#xD;
{&#xD;
// SCHED_OTHER: i.e. time-sharing like for Solaris: dynamic priority&#xD;
errno = 0;&#xD;
prio = getpriority (PRIO_PROCESS, getPid ());&#xD;
if ((prio == -1) &amp;&amp; (errno != 0))&#xD;
OSAL_ERROR (&quot;ON getpriority()&quot;);&#xD;
}&#xD;
#else&#xD;
pcparms_t params;&#xD;
params.pc_cid = classId;&#xD;
long l;&#xD;
l = priocntl (P_PID, P_MYID, PC_GETPARMS, (caddr_t) &amp; params);&#xD;
if (l == -1L)&#xD;
OSAL_ERROR (&quot;ON priocntl( , PC_GETPARMS, )&quot;);&#xD;
&#xD;
if (isRealTime ())&#xD;
{ // REAL-TIME&#xD;
rtparms_t *rtParms = (rtparms_t *) params.pc_clparms;&#xD;
prio = rtParms->rt_pri;&#xD;
}&#xD;
else&#xD;
{ // TIME-SHARING&#xD;
tsparms_t *tsParms = (tsparms_t *) params.pc_clparms;&#xD;
prio = tsParms->ts_upri;&#xD;
}&#xD;
#endif&#xD;
&#xD;
return prio;</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_0PIGsE_LEdy2tpS719xBwQ" name="exitErr" specification="_cjQWAE_FEdy2tpS719xBwQ">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_jg_NwCBbEeOMKsPXBVC0DA" name="line">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_jhhZQCBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_jhs_cCBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_jh4loCBbEeOMKsPXBVC0DA" name="file">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_5lVhgBydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_jiaxICBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_jimXUCBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_jjHUsCBbEeOMKsPXBVC0DA" name="str">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_5lVhgBydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_jjpgMCBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_jj1GYCBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body>OS_AL::Util::BString500 str0 (&quot;error in &quot;);&#xD;
exitErrP (str0 &lt;&lt; file &lt;&lt; &quot;:&quot; &lt;&lt; line &lt;&lt; &quot; : &quot; &lt;&lt; str);&#xD;
</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_2eoEIE_LEdy2tpS719xBwQ" name="exitErr" specification="_cpEqIE_FEdy2tpS719xBwQ">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_jkbjUCBbEeOMKsPXBVC0DA" name="line">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_jk9HwCBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_jlIt8CBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_jlUUICBbEeOMKsPXBVC0DA" name="file">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_5lVhgBydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_jl2foCBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_jmCF0CBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_jmicICBbEeOMKsPXBVC0DA" name="str" type="_WXH_4DO2EdyG-pUz-bb-Lg">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_jnEnoCBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_jnQN0CBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body>OS_AL::Util::BString500 str0 (&quot;error in &quot;);&#xD;
exitErrP (str0 &lt;&lt; file &lt;&lt; &quot;:&quot; &lt;&lt; line &lt;&lt; &quot; : &quot; &lt;&lt; str);&#xD;
</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_5RSZAE_LEdy2tpS719xBwQ" name="exitErrP" specification="_Lv9bIE_JEdy2tpS719xBwQ">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_jn2qwCBbEeOMKsPXBVC0DA" name="str" type="_WXH_4DO2EdyG-pUz-bb-Lg">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_joYPMCBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_jojOUCBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body>if (m_sigOnErr == 0)&#xD;
init ();&#xD;
&#xD;
OS_AL::Util::Print pr1;&#xD;
pr1 &lt;&lt; str &lt;&lt; showErr;&#xD;
&#xD;
if (errno)&#xD;
pr1 &lt;&lt; &quot; - error code/msg: &quot; &lt;&lt; strerror (errno);&#xD;
errno = 0;&#xD;
&#xD;
if (m_pauseOnErr) {&#xD;
OS_AL::Util::Print pr2;&#xD;
pr2 &lt;&lt; &quot;\n\t pausing due to error!&quot; &lt;&lt; showI;&#xD;
pause (); // or for(;;) for debugger: debug appliX pid&#xD;
}&#xD;
&#xD;
// removed code that sends a signal instead of exiting&#xD;
// [todo: reason might have been clean-up?]&#xD;
exit (1);&#xD;
</body>
</ownedBehavior>
<ownedOperation xmi:type="uml:Operation" xmi:id="_Wg_Y8E_CEdy2tpS719xBwQ" name="init" isStatic="true" method="_Fuv0sE_LEdy2tpS719xBwQ">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_oVPdsE_CEdy2tpS719xBwQ" name="errSig">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_oViYoE_CEdy2tpS719xBwQ" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_oVsJoE_CEdy2tpS719xBwQ" name="" value="1"/>
<defaultValue xmi:type="uml:LiteralString" xmi:id="_qDqHUE_CEdy2tpS719xBwQ" value="ExitERR_SIG"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="_Wn__4E_CEdy2tpS719xBwQ" name="existEnv" isStatic="true" method="_InEssE_LEdy2tpS719xBwQ">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_w1b9IE_CEdy2tpS719xBwQ" name="param_0" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_w1lHEE_CEdy2tpS719xBwQ" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_w14CAE_CEdy2tpS719xBwQ" name="" value="1"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_w5c6cE_CEdy2tpS719xBwQ" name="name">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_5lVhgBydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_w5wccE_CEdy2tpS719xBwQ" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_w55mYE_CEdy2tpS719xBwQ" name="" value="1"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="_WtXBAE_CEdy2tpS719xBwQ" name="getEnv" isStatic="true" method="_K8r5ME_LEdy2tpS719xBwQ">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_5wJ1YE_CEdy2tpS719xBwQ" name="param_0" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_5lVhgBydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_5wcwUE_CEdy2tpS719xBwQ" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_5wvrQE_CEdy2tpS719xBwQ" name="" value="1"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_5y1V8E_CEdy2tpS719xBwQ" name="name">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_5lVhgBydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_5zIQ4E_CEdy2tpS719xBwQ" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_5zSB4E_CEdy2tpS719xBwQ" name="" value="1"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="_Wx1RUE_CEdy2tpS719xBwQ" name="getEnvInt" isStatic="true" method="_NumnME_LEdy2tpS719xBwQ">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_bktVAE_DEdy2tpS719xBwQ" name="param_0" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_blAP8E_DEdy2tpS719xBwQ" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_blKA8E_DEdy2tpS719xBwQ" name="" value="1"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_bmpOsE_DEdy2tpS719xBwQ" name="name">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_5lVhgBydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_bnF6oE_DEdy2tpS719xBwQ" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_bnProE_DEdy2tpS719xBwQ" name="" value="1"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_bolIYE_DEdy2tpS719xBwQ" name="base">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_bo4DUE_DEdy2tpS719xBwQ" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_bpB0UE_DEdy2tpS719xBwQ" name="" value="1"/>
<defaultValue xmi:type="uml:LiteralInteger" xmi:id="_h31EICBGEeOBrb_t_69W4Q" value="10"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="_W2mckE_CEdy2tpS719xBwQ" name="isEnvTrue" isStatic="true" method="_Qc9D0E_LEdy2tpS719xBwQ">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_riMFYE_DEdy2tpS719xBwQ" name="param_0" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rifAUE_DEdy2tpS719xBwQ" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rioxUE_DEdy2tpS719xBwQ" name="" value="1"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_rj1EIE_DEdy2tpS719xBwQ" name="name">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_5lVhgBydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rkH_EE_DEdy2tpS719xBwQ" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rkRwEE_DEdy2tpS719xBwQ" name="" value="1"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="_W8HOsE_CEdy2tpS719xBwQ" name="getCommProcNb" isStatic="true" method="_TRQXcE_LEdy2tpS719xBwQ">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_1Fu4ME_DEdy2tpS719xBwQ" name="param_0" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_1F4pME_DEdy2tpS719xBwQ" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_1GCaME_DEdy2tpS719xBwQ" name="" value="1"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="_XA4Z8E_CEdy2tpS719xBwQ" name="saveArg" isStatic="true" method="_VJXIkE_LEdy2tpS719xBwQ">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_5aAJwE_DEdy2tpS719xBwQ" name="argc">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_5aTrwE_DEdy2tpS719xBwQ" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_5ac1sE_DEdy2tpS719xBwQ" name="" value="1"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_5by5gE_DEdy2tpS719xBwQ" name="argv">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_5lVhgBydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_5cF0cE_DEdy2tpS719xBwQ" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_5cPlcE_DEdy2tpS719xBwQ" name="" value="1"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="_EmmlEE_EEdy2tpS719xBwQ" name="setZoneNumber" isStatic="true" method="_XD2fUE_LEdy2tpS719xBwQ">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_Ipl5YE_EEdy2tpS719xBwQ" name="zoneNumber">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Ip40UE_EEdy2tpS719xBwQ" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_IqClUE_EEdy2tpS719xBwQ" name="" value="1"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="_FQU3gE_EEdy2tpS719xBwQ" name="getZoneNumber" isStatic="true" method="_Zj4zIE_LEdy2tpS719xBwQ">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_MZM-sE_EEdy2tpS719xBwQ" name="param_0" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MZf5oE_EEdy2tpS719xBwQ" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MZpqoE_EEdy2tpS719xBwQ" name="" value="1"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="_Qd0qsE_EEdy2tpS719xBwQ" name="getZoneName" isStatic="true" method="_IMMkAE_KEdy2tpS719xBwQ">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_T-YnYE_EEdy2tpS719xBwQ" name="param_0" type="_WXH_4DO2EdyG-pUz-bb-Lg" direction="return">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_T-sJYE_EEdy2tpS719xBwQ" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_T-1TUE_EEdy2tpS719xBwQ" name="" value="1"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="_Qpmc4E_EEdy2tpS719xBwQ" name="setZoneName" isStatic="true" method="_GgAvAE_KEdy2tpS719xBwQ">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_clSLwE_EEdy2tpS719xBwQ" name="zoneName" type="_WXH_4DO2EdyG-pUz-bb-Lg">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_clltwE_EEdy2tpS719xBwQ" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_clu3sE_EEdy2tpS719xBwQ" name="" value="1"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="_m11OgE_EEdy2tpS719xBwQ" name="getPid" isStatic="true" method="_J41E8E_KEdy2tpS719xBwQ">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_uZYfgE_EEdy2tpS719xBwQ" name="param_0" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_uZracE_EEdy2tpS719xBwQ" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_uZ1LcE_EEdy2tpS719xBwQ" name="" value="1"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="_m8ZJgE_EEdy2tpS719xBwQ" name="getParentPid" isStatic="true" method="_LgsaoE_KEdy2tpS719xBwQ">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_wI2SAE_EEdy2tpS719xBwQ" name="param_0" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_wJJM8E_EEdy2tpS719xBwQ" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_wJSW4E_EEdy2tpS719xBwQ" name="" value="1"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="_nCDsoE_EEdy2tpS719xBwQ" name="getPrioMax" isStatic="true" method="_dMM9oE_LEdy2tpS719xBwQ">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_y5a8ME_EEdy2tpS719xBwQ" name="param_0" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_y5ueME_EEdy2tpS719xBwQ" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_y53oIE_EEdy2tpS719xBwQ" name="" value="1"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="_nGrG4E_EEdy2tpS719xBwQ" name="getPrioMin" isStatic="true" method="_fW7v0E_LEdy2tpS719xBwQ">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_2u2VoE_EEdy2tpS719xBwQ" name="param_0" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_2u_fkE_EEdy2tpS719xBwQ" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_2vJQkE_EEdy2tpS719xBwQ" name="" value="1"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="_nL4-EE_EEdy2tpS719xBwQ" name="setMyPriority" isStatic="true" method="_i-fsYE_LEdy2tpS719xBwQ">
<ownedParameter xmi:type="uml:Parameter" xmi:id="__a9xME_EEdy2tpS719xBwQ" name="prio">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="__bQsIE_EEdy2tpS719xBwQ" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="__badIE_EEdy2tpS719xBwQ" name="" value="1"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="_nPwxcE_EEdy2tpS719xBwQ" name="decrMyPriority" isStatic="true" method="_l17zkE_LEdy2tpS719xBwQ">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_CMlkQE_FEdy2tpS719xBwQ" name="decrement">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_CMuuME_FEdy2tpS719xBwQ" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_CNCQME_FEdy2tpS719xBwQ" name="" value="1"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="_nUPBwE_EEdy2tpS719xBwQ" name="getMyPriority" isStatic="true" method="_qwMuIE_LEdy2tpS719xBwQ">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_ERzkUE_FEdy2tpS719xBwQ" name="param_0" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_ER8uQE_FEdy2tpS719xBwQ" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ESQQQE_FEdy2tpS719xBwQ" name="" value="1"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="_cjQWAE_FEdy2tpS719xBwQ" name="exitErr" isStatic="true" method="_0PIGsE_LEdy2tpS719xBwQ">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_wYs2cE_FEdy2tpS719xBwQ" name="line">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_wY2AYE_FEdy2tpS719xBwQ" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_wZI7UE_FEdy2tpS719xBwQ" name="" value="1"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_wb-M4E_FEdy2tpS719xBwQ" name="file">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_5lVhgBydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_wcRu4E_FEdy2tpS719xBwQ" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_wca40E_FEdy2tpS719xBwQ" name="" value="1"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_wfQKYE_FEdy2tpS719xBwQ" name="str">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_5lVhgBydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_wfs2UE_FEdy2tpS719xBwQ" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_wf2nUE_FEdy2tpS719xBwQ" name="" value="1"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="_cpEqIE_FEdy2tpS719xBwQ" name="exitErr" isStatic="true" method="_2eoEIE_LEdy2tpS719xBwQ">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_BemAYE_GEdy2tpS719xBwQ" name="line">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Be5iYE_GEdy2tpS719xBwQ" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_BfCsUE_GEdy2tpS719xBwQ" name="" value="1"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_BiBu4E_GEdy2tpS719xBwQ" name="file">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_5lVhgBydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_BiK40E_GEdy2tpS719xBwQ" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_BiUp0E_GEdy2tpS719xBwQ" name="" value="1"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_BlTsYE_GEdy2tpS719xBwQ" name="str" type="_WXH_4DO2EdyG-pUz-bb-Lg">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Blc2UE_GEdy2tpS719xBwQ" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_BlvxQE_GEdy2tpS719xBwQ" name="" value="1"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="_fBQXkE_HEdy2tpS719xBwQ" name="getArgc" isStatic="true" method="_wzzhQE_JEdy2tpS719xBwQ">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_6NopUE_HEdy2tpS719xBwQ" name="param_0" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_6NyaUE_HEdy2tpS719xBwQ" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_6N8LUE_HEdy2tpS719xBwQ" name="" value="1"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="_fMk2wE_HEdy2tpS719xBwQ" name="getArgv" isStatic="true" method="_0-1-UE_JEdy2tpS719xBwQ">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_9L7mcE_HEdy2tpS719xBwQ" name="param_0" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_5lVhgBydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_9MOhYE_HEdy2tpS719xBwQ" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_9MYSYE_HEdy2tpS719xBwQ" name="" value="1"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_9OdWAE_HEdy2tpS719xBwQ" name="pos">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_9OnHAE_HEdy2tpS719xBwQ" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_9Ow4AE_HEdy2tpS719xBwQ" name="" value="1"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="_fRpkAE_HEdy2tpS719xBwQ" name="getArgv" isStatic="true" method="_zW-ooE_JEdy2tpS719xBwQ">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_G6XaoE_IEdy2tpS719xBwQ" name="param_0" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_5lVhgBydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_G6qVkE_IEdy2tpS719xBwQ" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_G60GkE_IEdy2tpS719xBwQ" name="" value="1"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="_fWj5ME_HEdy2tpS719xBwQ" name="getPauseOnErr" isStatic="true" method="_NcEiME_KEdy2tpS719xBwQ">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_NEzjoE_IEdy2tpS719xBwQ" name="param_0" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_NFGekE_IEdy2tpS719xBwQ" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_NFQPkE_IEdy2tpS719xBwQ" name="" value="1"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="_fbomcE_HEdy2tpS719xBwQ" name="getClassId" isStatic="true" method="_Q5DmcE_KEdy2tpS719xBwQ">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_RweBgE_IEdy2tpS719xBwQ" name="param_0" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_RwxjgE_IEdy2tpS719xBwQ" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_RxEecE_IEdy2tpS719xBwQ" name="" value="1"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="_ffqK0E_HEdy2tpS719xBwQ" name="getNumerOfProcesses" isStatic="true" method="_SYbHcE_KEdy2tpS719xBwQ">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_WDsxQE_IEdy2tpS719xBwQ" name="param_0" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_WD_sME_IEdy2tpS719xBwQ" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_WEJdME_IEdy2tpS719xBwQ" name="" value="1"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="_fkkgAE_HEdy2tpS719xBwQ" name="getPolicy" isStatic="true" method="_UKkagE_KEdy2tpS719xBwQ">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_YBBZkE_IEdy2tpS719xBwQ" name="param_0" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_YBUUgE_IEdy2tpS719xBwQ" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_YBeFgE_IEdy2tpS719xBwQ" name="" value="1"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="_Lv9bIE_JEdy2tpS719xBwQ" name="exitErrP" visibility="private" isStatic="true" method="_5RSZAE_LEdy2tpS719xBwQ">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_NHIpcE_JEdy2tpS719xBwQ" name="str" type="_WXH_4DO2EdyG-pUz-bb-Lg">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_NHRzYE_JEdy2tpS719xBwQ" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_NHlVYE_JEdy2tpS719xBwQ" name="" value="1"/>
</ownedParameter>
</ownedOperation>
</packagedElement>
<packagedElement xmi:type="uml:Dependency" xmi:id="_y3w2sE_BEdy2tpS719xBwQ" name="FromProDesctoBString200" client="_oSgIME_BEdy2tpS719xBwQ" supplier="_0AwCEDO0EdyG-pUz-bb-Lg"/>
<packagedElement xmi:type="uml:Class" xmi:id="_TVGDsE_NEdy2tpS719xBwQ" name="System">
<ownedComment xmi:type="uml:Comment" xmi:id="_d2e-0E_NEdy2tpS719xBwQ" annotatedElement="_TVGDsE_NEdy2tpS719xBwQ">
<body>Provide information about the system, mainly UTS information&#xD;
(uname), as well as the number of processors, the number of message&#xD;
queues.&#xD;
Only partially used.</body>
</ownedComment>
<ownedAttribute xmi:type="uml:Property" xmi:id="_QFAjQE_eEdy2tpS719xBwQ" name="m_cpuNb" visibility="private" isStatic="true" isUnique="false">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_QFTeME_eEdy2tpS719xBwQ" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_QFdPME_eEdy2tpS719xBwQ" value="1"/>
</ownedAttribute>
<ownedAttribute xmi:type="uml:Property" xmi:id="_QJezkE_eEdy2tpS719xBwQ" name="m_mqMax" visibility="private" isStatic="true" isUnique="false">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_QJxugE_eEdy2tpS719xBwQ" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_QJxugU_eEdy2tpS719xBwQ" value="1"/>
</ownedAttribute>
<ownedAttribute xmi:type="uml:Property" xmi:id="_QNM18E_eEdy2tpS719xBwQ" name="m_semsMax" visibility="private" isStatic="true" isUnique="false">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_QNgX8E_eEdy2tpS719xBwQ" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_QNgX8U_eEdy2tpS719xBwQ" value="1"/>
</ownedAttribute>
<ownedAttribute xmi:type="uml:Property" xmi:id="_Z_zYcE_eEdy2tpS719xBwQ" name="m_hostId" visibility="private" isStatic="true" isUnique="false">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_8heigBydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_aAGTYE_eEdy2tpS719xBwQ" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_aAQEYE_eEdy2tpS719xBwQ" value="1"/>
</ownedAttribute>
<ownedAttribute xmi:type="uml:Property" xmi:id="_c8Tl0E_eEdy2tpS719xBwQ" name="m_hostName" visibility="private" isStatic="true" isUnique="false">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_5lVhgBydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_c8mgwE_eEdy2tpS719xBwQ"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_c8mgwU_eEdy2tpS719xBwQ" value="1"/>
</ownedAttribute>
<ownedAttribute xmi:type="uml:Property" xmi:id="_c_4eQE_eEdy2tpS719xBwQ" name="m_machine" visibility="private" isStatic="true" isUnique="false">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_5lVhgBydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_dALZME_eEdy2tpS719xBwQ"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_dAVKME_eEdy2tpS719xBwQ" value="1"/>
</ownedAttribute>
<ownedAttribute xmi:type="uml:Property" xmi:id="_dC25wE_eEdy2tpS719xBwQ" name="m_release" visibility="private" isStatic="true" isUnique="false">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_5lVhgBydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_dDTlsE_eEdy2tpS719xBwQ"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_dDTlsU_eEdy2tpS719xBwQ" value="1"/>
</ownedAttribute>
<ownedAttribute xmi:type="uml:Property" xmi:id="_dF18UE_eEdy2tpS719xBwQ" name="m_sysname" visibility="private" isStatic="true" isUnique="false">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_5lVhgBydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_dGI3QE_eEdy2tpS719xBwQ"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_dGSoQE_eEdy2tpS719xBwQ" value="1"/>
</ownedAttribute>
<ownedAttribute xmi:type="uml:Property" xmi:id="_dJHSwE_eEdy2tpS719xBwQ" name="m_version" visibility="private" isStatic="true" isUnique="false">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_5lVhgBydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_dJa0wE_eEdy2tpS719xBwQ"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_dJj-sE_eEdy2tpS719xBwQ" value="1"/>
</ownedAttribute>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_8jvtoE_eEdy2tpS719xBwQ" name="getCpuNb" specification="_pLuYwE_NEdy2tpS719xBwQ">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_p2vO4CBbEeOMKsPXBVC0DA" name="param_0" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_p3RaYCBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_p3dAkCBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body> return m_cpuNb;</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_9vvmsE_eEdy2tpS719xBwQ" name="setCpuNb" specification="_v9NToE_NEdy2tpS719xBwQ">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_p3uGUCBbEeOMKsPXBVC0DA" name="cpuNb">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_p4PqwCBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_p4bQ8CBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body> m_cpuNb = cpuNb;</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="__E1KUE_eEdy2tpS719xBwQ" name="getMqMax" specification="_361RgE_NEdy2tpS719xBwQ">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_p4sWsCBbEeOMKsPXBVC0DA" name="param_0" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_p5PJQCBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_p5avcCBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body> return m_mqMax;</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_AneBwE_fEdy2tpS719xBwQ" name="setMqMax" specification="_7k7ksE_NEdy2tpS719xBwQ">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_p5r1MCBbEeOMKsPXBVC0DA" name="mqMax">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_p6NZoCBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_p6Y_0CBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body> m_mqMax = mqMax;</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_Cm4UwE_fEdy2tpS719xBwQ" name="getSemsMax" specification="_EQ5PQE_OEdy2tpS719xBwQ">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_p6rTsCBbEeOMKsPXBVC0DA" name="param_0" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_p7Tl0CBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_p7ek8CBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body> return m_semsMax;</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_D09RcE_fEdy2tpS719xBwQ" name="setSemsMax" specification="_EW2tUE_OEdy2tpS719xBwQ">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_p7wRwCBbEeOMKsPXBVC0DA" name="semsMax">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_p8TrYCBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_p8eqgCBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body> m_semsMax = semsMax;</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_FDMmME_fEdy2tpS719xBwQ" name="getHostId" specification="_R3kgUE_OEdy2tpS719xBwQ">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_p8vwQCBbEeOMKsPXBVC0DA" name="param_0" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_8heigBydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_p9R7wCBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_p9dh8CBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body> return m_hostId;</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_GbaWUE_fEdy2tpS719xBwQ" name="getHostName" specification="_R8VrkE_OEdy2tpS719xBwQ">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_p9unsCBbEeOMKsPXBVC0DA" name="param_0" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_5lVhgBydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_p-QMICBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_p-byUCBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body> return m_hostName;</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_I9Yj0E_fEdy2tpS719xBwQ" name="getMachine" specification="_SCJ_sE_OEdy2tpS719xBwQ">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_p_BoMCBbEeOMKsPXBVC0DA" name="param_0" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_5lVhgBydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_p_jzsCBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_p_uy0CBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body> return m_machine;</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_KHltIE_fEdy2tpS719xBwQ" name="getRelease" specification="_SHhA0E_OEdy2tpS719xBwQ">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_qANT8CBbEeOMKsPXBVC0DA" name="param_0" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_5lVhgBydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_qAvfcCBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_qA7FoCBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body> return m_release;</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_LMvXUE_fEdy2tpS719xBwQ" name="getSysName" specification="_SMSMEE_OEdy2tpS719xBwQ">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_qBaN0CBbEeOMKsPXBVC0DA" name="param_0" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_5lVhgBydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_qB8ZUCBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_qCHYcCBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body> return m_sysname;</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_MUtE8E_fEdy2tpS719xBwQ" name="getVersion" specification="_SQdhcE_OEdy2tpS719xBwQ">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_qCrZICBbEeOMKsPXBVC0DA" name="param_0" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_5lVhgBydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_qDM9kCBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_qDYjwCBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body> return m_version;</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_hdJeUE_fEdy2tpS719xBwQ" name="init" specification="_mZzqwE_NEdy2tpS719xBwQ">
<language>C/C++</language>
<body> m_hostName = m_machine = m_release = m_sysname = m_version = &quot;&quot;;&#xD;
&#xD;
// =======================================================================&#xD;
#if defined SYSTEM_Cygwin&#xD;
m_cpuNb = 1; // default value&#xD;
&#xD;
// Max number of opened MQ&#xD;
m_mqMax = _SC_MQ_OPEN_MAX;&#xD;
// Max number of semaphores&#xD;
m_semsMax = _SC_SEM_NSEMS_MAX;&#xD;
&#xD;
// other system infos&#xD;
m_hostId = gethostid ();&#xD;
int hostIndex = 0;&#xD;
&#xD;
#elif defined SYSTEM_POSIX4 || defined SYSTEM_Linux&#xD;
m_cpuNb = 1; // default value&#xD;
&#xD;
//*** Max number of Message Queues ***//&#xD;
errno = 0;&#xD;
m_mqMax = _POSIX_MQ_OPEN_MAX;&#xD;
&#xD;
errno = 0;&#xD;
m_semsMax = _POSIX_SEM_NSEMS_MAX;&#xD;
&#xD;
// other system infos&#xD;
m_hostId = gethostid ();&#xD;
&#xD;
// =======================================================================&#xD;
#elif defined SYSTEM_Solaris&#xD;
// Number of configured CPUs&#xD;
// or? _SC_NPROCESSORS_ONLN (see sysconf(3C) )&#xD;
m_cpuNb = sysconf (_SC_NPROCESSORS_CONF);&#xD;
&#xD;
//*** Max number of Message Queues ***//&#xD;
errno = 0;&#xD;
m_mqMax = sysconf (_SC_OPEN_MAX); // _SC_MQ_OPEN_MAX 'not defined...'&#xD;
&#xD;
if (m_mqMax == -1)&#xD;
OSAL_ERROR (&quot;ON sysconf(_SC_OPEN_MAX)&quot;);&#xD;
&#xD;
//*** Max number of Semaphores ***//&#xD;
/*&#xD;
semsMax= sysconf(_SC_SEM_NSEMS_MAX);&#xD;
Extract of sysconf(3C) : If sysconf() fails due to&#xD;
a value of name that is not defined on the system, the func-&#xD;
tion will return a value of -1 without changing the value of&#xD;
errno&#xD;
*/&#xD;
&#xD;
/* in which library is _sysconf() ?&#xD;
#include &lt;sys/sysconfig.h>&#xD;
int _sysconf(int);&#xD;
&#xD;
semsMax = _sysconf(_CONFIG_SEM_NSEMS_MAX);&#xD;
if (semsMax == -1)&#xD;
OSAL_ERROR(&quot;ON sysconf(SEM_NSEMS_MAX)&quot;);&#xD;
*/&#xD;
m_semsMax = 25; // semget( ) --> EINVAL au dela de 25&#xD;
&#xD;
// =======================================================================&#xD;
&#xD;
#elif defined SYSTEM_VxWorks&#xD;
m_cpuNb = 1; // default value&#xD;
&#xD;
//*** Max number of Message Queues ***//&#xD;
errno = 0;&#xD;
m_mqMax = SM_OBJ_MAX_MSG_Q;&#xD;
&#xD;
//*** Max number of Semaphores ***//&#xD;
errno = 0;&#xD;
m_semsMax = SM_OBJ_MAX_SEM;&#xD;
&#xD;
// =======================================================================&#xD;
#endif&#xD;
&#xD;
&#xD;
#if defined SYSTEM_Linux || defined SYSTEM_Solaris&#xD;
struct utsname names;&#xD;
if (uname (&amp;names) &lt; 0)&#xD;
OSAL_ERROR (&quot;ON uname( )&quot;);&#xD;
&#xD;
m_hostName = names.nodename;&#xD;
m_sysname = names.sysname;&#xD;
m_release = names.release;&#xD;
m_version = names.version;&#xD;
m_machine = names.machine;&#xD;
#endif&#xD;
&#xD;
#ifdef DEBUG&#xD;
activateDebugTimer ();&#xD;
#endif&#xD;
</body>
</ownedBehavior>
<ownedOperation xmi:type="uml:Operation" xmi:id="_mZzqwE_NEdy2tpS719xBwQ" name="init" isStatic="true" method="_hdJeUE_fEdy2tpS719xBwQ"/>
<ownedOperation xmi:type="uml:Operation" xmi:id="_pLuYwE_NEdy2tpS719xBwQ" name="getCpuNb" isStatic="true" method="_8jvtoE_eEdy2tpS719xBwQ">
<ownedComment xmi:type="uml:Comment" xmi:id="_uMQTYE_NEdy2tpS719xBwQ" annotatedElement="_pLuYwE_NEdy2tpS719xBwQ">
<body>returns the number of CPUs</body>
</ownedComment>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_q6vfUE_NEdy2tpS719xBwQ" name="param_0" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_q7CaQE_NEdy2tpS719xBwQ" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_q7MLQE_NEdy2tpS719xBwQ" name="" value="1"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="_v9NToE_NEdy2tpS719xBwQ" name="setCpuNb" isStatic="true" method="_9vvmsE_eEdy2tpS719xBwQ">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_ypKjkE_NEdy2tpS719xBwQ" name="cpuNb">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_ypeFkE_NEdy2tpS719xBwQ" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ypxAgE_NEdy2tpS719xBwQ" name="" value="1"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="_361RgE_NEdy2tpS719xBwQ" name="getMqMax" isStatic="true" method="__E1KUE_eEdy2tpS719xBwQ">
<ownedComment xmi:type="uml:Comment" xmi:id="_AuPn4E_OEdy2tpS719xBwQ" annotatedElement="_361RgE_NEdy2tpS719xBwQ">
<body>returns the number of message queues (useful?)</body>
</ownedComment>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_48GhQE_NEdy2tpS719xBwQ" name="param_0" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_48PrME_NEdy2tpS719xBwQ" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_48ZcME_NEdy2tpS719xBwQ" name="" value="1"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="_7k7ksE_NEdy2tpS719xBwQ" name="setMqMax" isStatic="true" method="_AneBwE_fEdy2tpS719xBwQ">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_9jlpwE_NEdy2tpS719xBwQ" name="mqMax">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_9jvawE_NEdy2tpS719xBwQ" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_9kCVsE_NEdy2tpS719xBwQ" name="" value="1"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="_EQ5PQE_OEdy2tpS719xBwQ" name="getSemsMax" isStatic="true" method="_Cm4UwE_fEdy2tpS719xBwQ">
<ownedComment xmi:type="uml:Comment" xmi:id="_OTvNME_OEdy2tpS719xBwQ" annotatedElement="_EQ5PQE_OEdy2tpS719xBwQ">
<body>returns the number of semaphores</body>
</ownedComment>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_HPLlUE_OEdy2tpS719xBwQ" name="param_0" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_HPfHUE_OEdy2tpS719xBwQ" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_HPoRQE_OEdy2tpS719xBwQ" name="" value="1"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="_EW2tUE_OEdy2tpS719xBwQ" name="setSemsMax" isStatic="true" method="_D09RcE_fEdy2tpS719xBwQ">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_JzPdgE_OEdy2tpS719xBwQ" name="semsMax">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Jzi_gE_OEdy2tpS719xBwQ" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_JzsJcE_OEdy2tpS719xBwQ" name="" value="1"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="_R3kgUE_OEdy2tpS719xBwQ" name="getHostId" isStatic="true" method="_FDMmME_fEdy2tpS719xBwQ">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_VLd6AE_OEdy2tpS719xBwQ" name="param_0" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_8heigBydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_VLxcAE_OEdy2tpS719xBwQ" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_VL6l8E_OEdy2tpS719xBwQ" name="" value="1"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="_R8VrkE_OEdy2tpS719xBwQ" name="getHostName" isStatic="true" method="_GbaWUE_fEdy2tpS719xBwQ">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_YIRCUE_OEdy2tpS719xBwQ" name="param_0" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_5lVhgBydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_YIazUE_OEdy2tpS719xBwQ" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_YItuQE_OEdy2tpS719xBwQ" name="" value="1"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="_SCJ_sE_OEdy2tpS719xBwQ" name="getMachine" isStatic="true" method="_I9Yj0E_fEdy2tpS719xBwQ">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_1uCPgE_dEdy2tpS719xBwQ" name="param_0" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_5lVhgBydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_1uVKcE_dEdy2tpS719xBwQ" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_1ue7cE_dEdy2tpS719xBwQ" name="" value="1"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="_SHhA0E_OEdy2tpS719xBwQ" name="getRelease" isStatic="true" method="_KHltIE_fEdy2tpS719xBwQ">
<ownedParameter xmi:type="uml:Parameter" xmi:id="__yhMME_dEdy2tpS719xBwQ" name="param_0" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_5lVhgBydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="__y0HIE_dEdy2tpS719xBwQ" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="__y94IE_dEdy2tpS719xBwQ" name="" value="1"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="_SMSMEE_OEdy2tpS719xBwQ" name="getSysName" isStatic="true" method="_LMvXUE_fEdy2tpS719xBwQ">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_BjxHYE_eEdy2tpS719xBwQ" name="param_0" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_5lVhgBydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Bj6RUE_eEdy2tpS719xBwQ" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_BkECUE_eEdy2tpS719xBwQ" name="" value="1"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="_SQdhcE_OEdy2tpS719xBwQ" name="getVersion" isStatic="true" method="_MUtE8E_fEdy2tpS719xBwQ">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_DiSCgE_eEdy2tpS719xBwQ" name="param_0" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_5lVhgBydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Dik9cE_eEdy2tpS719xBwQ" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_DiuHYE_eEdy2tpS719xBwQ" name="" value="1"/>
</ownedParameter>
</ownedOperation>
</packagedElement>
<packagedElement xmi:type="uml:Dependency" xmi:id="_Az5ewE_gEdy2tpS719xBwQ" name="FromThreadtoThreadAttribute" client="_-HeCsDj_Edy0Rd6V_tf1-Q" supplier="_Saw1YDkDEdyuzNpSiGPe4w"/>
<packagedElement xmi:type="uml:Dependency" xmi:id="_GNdkcE_gEdy2tpS719xBwQ" name="FromThreadtoSemaphore" client="_-HeCsDj_Edy0Rd6V_tf1-Q" supplier="_D8njME_gEdy2tpS719xBwQ"/>
<packagedElement xmi:type="uml:Dependency" xmi:id="_NdL6gE_gEdy2tpS719xBwQ" name="FromThreadtoBString50" client="_-HeCsDj_Edy0Rd6V_tf1-Q" supplier="_sQ1JADO0EdyG-pUz-bb-Lg"/>
<packagedElement xmi:type="uml:Association" xmi:id="_3QgjUE_nEdy2tpS719xBwQ" name="Association_Thread_ThreadAttribute" memberEnd="_3Q0FUE_nEdy2tpS719xBwQ _3RjsMk_nEdy2tpS719xBwQ">
<ownedEnd xmi:type="uml:Property" xmi:id="_3RjsMk_nEdy2tpS719xBwQ" name="thread" type="_-HeCsDj_Edy0Rd6V_tf1-Q" isUnique="false" association="_3QgjUE_nEdy2tpS719xBwQ">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_3STTEU_nEdy2tpS719xBwQ"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_3STTEE_nEdy2tpS719xBwQ" value="*"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_LLUE4E_oEdy2tpS719xBwQ" name="Association_Thread_Semaphore" memberEnd="_LLUE4U_oEdy2tpS719xBwQ _LMNcwE_oEdy2tpS719xBwQ">
<ownedEnd xmi:type="uml:Property" xmi:id="_LMNcwE_oEdy2tpS719xBwQ" name="thread" type="_-HeCsDj_Edy0Rd6V_tf1-Q" isUnique="false" association="_LLUE4E_oEdy2tpS719xBwQ">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_LMzSoE_oEdy2tpS719xBwQ"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_LMqIsk_oEdy2tpS719xBwQ" value="*"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_9-OUUE_uEdy2tpS719xBwQ" name="ThreadContext">
<ownedComment xmi:type="uml:Comment" xmi:id="_UrPe0E_vEdy2tpS719xBwQ" annotatedElement="_9-OUUE_uEdy2tpS719xBwQ">
<body>Provide a context for storing pointers (get/savePtr).&#xD;
There is currently only one use of this class in SRcompeting (and the&#xD;
getPtr part is commented out => reconsider whether this class is needed)</body>
</ownedComment>
<ownedTemplateSignature xmi:type="uml:RedefinableTemplateSignature" xmi:id="_Z03EAE_vEdy2tpS719xBwQ" parameter="_a5QgQE_vEdy2tpS719xBwQ">
<ownedParameter xmi:type="uml:ClassifierTemplateParameter" xmi:id="_a5QgQE_vEdy2tpS719xBwQ" parameteredElement="_eGJTAE_vEdy2tpS719xBwQ">
<ownedParameteredElement xmi:type="uml:Class" xmi:id="_eGJTAE_vEdy2tpS719xBwQ" name="CLASS" templateParameter="_a5QgQE_vEdy2tpS719xBwQ"/>
</ownedParameter>
</ownedTemplateSignature>
<ownedAttribute xmi:type="uml:Property" xmi:id="_Rt3nYE_yEdy2tpS719xBwQ" name="key" visibility="public" isUnique="false">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_RuKiUE_yEdy2tpS719xBwQ" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_RuUTUE_yEdy2tpS719xBwQ" value="1"/>
</ownedAttribute>
<ownedAttribute xmi:type="uml:Property" xmi:id="_RwZ-AE_yEdy2tpS719xBwQ" name="dataPtr" visibility="public" type="_eGJTAE_vEdy2tpS719xBwQ" isUnique="false">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Rws48E_yEdy2tpS719xBwQ"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Rw2p8E_yEdy2tpS719xBwQ" value="1"/>
</ownedAttribute>
<ownedAttribute xmi:type="uml:Property" xmi:id="_1oie8E_yEdy2tpS719xBwQ" name="instanceNb" visibility="private" isStatic="true" isUnique="false">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_1o_K4E_yEdy2tpS719xBwQ" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_1o_K4U_yEdy2tpS719xBwQ" value="1"/>
<defaultValue xmi:type="uml:LiteralInteger" xmi:id="_4-u30CBSEeOBrb_t_69W4Q"/>
</ownedAttribute>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_69LoYE_yEdy2tpS719xBwQ" name="_key" specification="_D9gO0E_yEdy2tpS719xBwQ">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_aTxQQCBbEeOMKsPXBVC0DA" name="param_0" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_aUSNoCBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_aUdMwCBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body> return key;</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_8Tde0E_yEdy2tpS719xBwQ" name="set_key" specification="_ECHpEE_yEdy2tpS719xBwQ">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_aUuSgCBbEeOMKsPXBVC0DA" name="cr_operand">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_aVPP4CBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_aVaPACBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body> key = cr_operand;</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_9ceVUE_yEdy2tpS719xBwQ" name="_dataPtr" specification="_EJIQAE_yEdy2tpS719xBwQ">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_aVr70CBbEeOMKsPXBVC0DA" name="param_0" type="_eGJTAE_vEdy2tpS719xBwQ" direction="return">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_aWM5MCBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_aWX4UCBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body> return dataPtr;</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_BTiGcE_zEdy2tpS719xBwQ" name="set_dataPtr" specification="_ETtIUE_yEdy2tpS719xBwQ">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_aW1yYCBbEeOMKsPXBVC0DA" name="cr_operand" type="_eGJTAE_vEdy2tpS719xBwQ">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_aXddcCBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_aXockCBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body> dataPtr = cr_operand;</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_DoZsEE_zEdy2tpS719xBwQ" name="ThreadContext" specification="_ZtXqAE_xEdy2tpS719xBwQ">
<language>C/C++</language>
<body> set_dataPtr (NULL);&#xD;
&#xD;
TRACEpr (VM);&#xD;
PR (showI);&#xD;
&#xD;
if (++instanceNb > 1)&#xD;
{&#xD;
OSAL_ERROR (&quot;in ThreadContext::ThreadContext: ++instanceNb > 1&quot;);&#xD;
}&#xD;
&#xD;
// puisque seulement 1 instance , key peut être non 'static' &#xD;
// et pas de précaution par mutex&#xD;
#if defined THREAD_POSIX4&#xD;
errno = pthread_key_create (&amp;key, NULL);&#xD;
if (errno) {&#xD;
OSAL_ERROR (&quot;ON pthread_key_create()&quot;);&#xD;
}&#xD;
&#xD;
#elif defined THREAD_Solaris&#xD;
errno = thr_keycreate (&amp;key, NULL);&#xD;
if (errno) {&#xD;
OSAL_ERROR (&quot;ON thr_keycreate()&quot;);&#xD;
}&#xD;
&#xD;
#elif defined THREAD_VxWorks //-VxW&#xD;
;&#xD;
#endif&#xD;
</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_GrAhcE_zEdy2tpS719xBwQ" name="savePtr" specification="_Z2BPsE_xEdy2tpS719xBwQ">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_aYL2MCBbEeOMKsPXBVC0DA" name="ptr" type="_eGJTAE_vEdy2tpS719xBwQ">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_aYuowCBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_aY5n4CBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body> // A utiliser au début du code exécuté par un thread nouveau susceptible&#xD;
// d'avoir besoin du pointeur (spécifique de ce thread)&#xD;
// via une variable globale (cf. operateur -> surchargé)&#xD;
&#xD;
TRACEpr (VM);&#xD;
PR (showI);&#xD;
&#xD;
dataPtr = ptr;&#xD;
#if defined THREAD_POSIX4&#xD;
errno = pthread_setspecific (key, dataPtr);&#xD;
if (errno) {&#xD;
OSAL_ERROR (&quot;ON pthread_setspecific()&quot;);&#xD;
}&#xD;
&#xD;
#elif defined THREAD_Solaris&#xD;
errno = thr_setspecific (key, dataPtr);&#xD;
if (errno) {&#xD;
OSAL_ERROR (&quot;ON thr_setspecific()&quot;);&#xD;
}&#xD;
&#xD;
#elif defined THREAD_VxWorks //-VxW&#xD;
errno = taskVarAdd (0, (int *) &amp;dataPtr);&#xD;
if (errno) {&#xD;
OSAL_ERROR (&quot;ON taskVarAdd()&quot;);&#xD;
}&#xD;
#endif&#xD;
</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_JDmJcE_zEdy2tpS719xBwQ" name="getPtr" specification="_Z7FV4E_xEdy2tpS719xBwQ">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_aZW64CBbEeOMKsPXBVC0DA" name="param_0" type="_eGJTAE_vEdy2tpS719xBwQ" direction="return">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_aZ4fUCBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_aaDecCBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body> // useful to allow check :&#xD;
// if (globalVar.getPtr() ==NULL) // in client side,&#xD;
// before globalVar->memberOfCLASS&#xD;
&#xD;
// Get the thread specific pointer&#xD;
#if defined THREAD_POSIX4&#xD;
dataPtr = (CLASS *) pthread_getspecific (key);&#xD;
&#xD;
#elif defined THREAD_Solaris&#xD;
errno = thr_getspecific (key, (void **) &amp;dataPtr);&#xD;
if (errno) {&#xD;
OSAL_ERROR (&quot;ON thr_getspecific()&quot;);&#xD;
}&#xD;
&#xD;
#elif defined THREAD_VxWorks //-VxW&#xD;
// l'attribut 'dataPtr' doit être restauré par le système&#xD;
// pour ce thread à chaque fois qu'il est réélu pour la CPU&#xD;
;&#xD;
#endif&#xD;
&#xD;
return dataPtr;&#xD;
</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_M_R74E_zEdy2tpS719xBwQ" name="operator->" specification="_aJrykE_xEdy2tpS719xBwQ">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_aah_kCBbEeOMKsPXBVC0DA" name="param_0" type="_eGJTAE_vEdy2tpS719xBwQ" direction="return">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_abC88CBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_abN8ECBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body> // Overload of ->&#xD;
// since the unique instance of ThrCtxt&lt;CLASS> is a global variable&#xD;
// directly accessed (not via a pointer)&#xD;
// operator-> can't be confused with access to members of ThrCtxt&lt;CLASS>&#xD;
// globalVar.savePtr(...)&#xD;
// globalVar->memberOfCLASS // to Access to the thread specific data&#xD;
&#xD;
TRACEpr (VM);&#xD;
PR (showI);&#xD;
&#xD;
CLASS *dataP = getPtr ();&#xD;
&#xD;
if (dataP == NULL) {&#xD;
OSAL_ERROR (&quot;lack of previous 'globalVar.savePtr(...)'&quot;);&#xD;
}&#xD;
&#xD;
return dataP;&#xD;
</body>
</ownedBehavior>
<ownedOperation xmi:type="uml:Operation" xmi:id="_ZtXqAE_xEdy2tpS719xBwQ" name="ThreadContext" method="_DoZsEE_zEdy2tpS719xBwQ"/>
<ownedOperation xmi:type="uml:Operation" xmi:id="_Z2BPsE_xEdy2tpS719xBwQ" name="savePtr" method="_GrAhcE_zEdy2tpS719xBwQ">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_n-EvgE_xEdy2tpS719xBwQ" name="ptr" type="_eGJTAE_vEdy2tpS719xBwQ">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_n-XqcE_xEdy2tpS719xBwQ" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_n-hbcE_xEdy2tpS719xBwQ" name="" value="1"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="_Z7FV4E_xEdy2tpS719xBwQ" name="getPtr" method="_JDmJcE_zEdy2tpS719xBwQ">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_vzzVoE_xEdy2tpS719xBwQ" name="param_0" type="_eGJTAE_vEdy2tpS719xBwQ" direction="return">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_v0GQkE_xEdy2tpS719xBwQ" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_v0QBkE_xEdy2tpS719xBwQ" name="" value="1"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="_aJrykE_xEdy2tpS719xBwQ" name="operator->" method="_M_R74E_zEdy2tpS719xBwQ">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_1w0tsE_xEdy2tpS719xBwQ" name="param_0" type="_eGJTAE_vEdy2tpS719xBwQ" direction="return">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_1xRZoE_xEdy2tpS719xBwQ" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_1xbKoE_xEdy2tpS719xBwQ" name="" value="1"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="_D9gO0E_yEdy2tpS719xBwQ" name="_key" method="_69LoYE_yEdy2tpS719xBwQ">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_blraAE_yEdy2tpS719xBwQ" name="param_0" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_bl-8AE_yEdy2tpS719xBwQ" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_bmIF8E_yEdy2tpS719xBwQ" name="" value="1"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="_ECHpEE_yEdy2tpS719xBwQ" name="set_key" method="_8Tde0E_yEdy2tpS719xBwQ">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_e1jPUE_yEdy2tpS719xBwQ" name="cr_operand">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_e12xUE_yEdy2tpS719xBwQ" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_e2JsQE_yEdy2tpS719xBwQ" name="" value="1"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="_EJIQAE_yEdy2tpS719xBwQ" name="_dataPtr" method="_9ceVUE_yEdy2tpS719xBwQ">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_iqPB4E_yEdy2tpS719xBwQ" name="param_0" type="_eGJTAE_vEdy2tpS719xBwQ" direction="return">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_iqh80E_yEdy2tpS719xBwQ" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_iqrt0E_yEdy2tpS719xBwQ" name="" value="1"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="_ETtIUE_yEdy2tpS719xBwQ" name="set_dataPtr" method="_BTiGcE_zEdy2tpS719xBwQ">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_tK4WIE_yEdy2tpS719xBwQ" name="cr_operand" type="_eGJTAE_vEdy2tpS719xBwQ">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_tLLREE_yEdy2tpS719xBwQ" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_tLeMAE_yEdy2tpS719xBwQ" name="" value="1"/>
</ownedParameter>
</ownedOperation>
</packagedElement>
<packagedElement xmi:type="uml:Dependency" xmi:id="_GhsKME_vEdy2tpS719xBwQ" name="FromThreadContexttoProDesc" client="_9-OUUE_uEdy2tpS719xBwQ" supplier="_oSgIME_BEdy2tpS719xBwQ"/>
<packagedElement xmi:type="uml:Dependency" xmi:id="_I0BZME_vEdy2tpS719xBwQ" name="FromThreadContexttoTrace" client="_9-OUUE_uEdy2tpS719xBwQ" supplier="_1DM54DxBEdyfAeav5abbAw"/>
<packagedElement xmi:type="uml:PrimitiveType" xmi:id="_kor6MFdhEd-9TNLvplUFDQ" name="funcPtr_AvpRvp"/>
<packagedElement xmi:type="uml:PrimitiveType" xmi:id="_l2xogFdiEd-9TNLvplUFDQ" name="ThreadId"/>
<packagedElement xmi:type="uml:PrimitiveType" xmi:id="_5J3-8FdkEd-9TNLvplUFDQ" name="sigset_t"/>
<packagedElement xmi:type="uml:Usage" xmi:id="_BARjMFnFEd-9TNLvplUFDQ" name="FromProDesctoBString200" client="_oSgIME_BEdy2tpS719xBwQ" supplier="_oT0acC-OEdySSa8YESkO2w"/>
<packagedElement xmi:type="uml:Usage" xmi:id="_HQSIsFnFEd-9TNLvplUFDQ" name="FromProDesctoBString500" client="_oSgIME_BEdy2tpS719xBwQ" supplier="_1vnXoDO0EdyG-pUz-bb-Lg"/>
<packagedElement xmi:type="uml:Usage" xmi:id="_JMMZwFnbEd-9TNLvplUFDQ" name="FromThreadtoTrace" client="_-HeCsDj_Edy0Rd6V_tf1-Q" supplier="_1DM54DxBEdyfAeav5abbAw"/>
<packagedElement xmi:type="uml:Usage" xmi:id="_aG940FnbEd-9TNLvplUFDQ" name="FromThreadtoSetOf" client="_-HeCsDj_Edy0Rd6V_tf1-Q" supplier="_2bXLkDUuEdyDReAOQiyvOg"/>
<packagedElement xmi:type="uml:Usage" xmi:id="_9knnwFncEd-9TNLvplUFDQ" name="FromThreadtoProDesc" client="_-HeCsDj_Edy0Rd6V_tf1-Q" supplier="_oSgIME_BEdy2tpS719xBwQ"/>
<packagedElement xmi:type="uml:Dependency" xmi:id="_ONsuENqFEeKrRY-H1kHnNA" name="Dependency1" client="_-HeCsDj_Edy0Rd6V_tf1-Q" supplier="_4lsq4NqEEeKrRY-H1kHnNA"/>
<packagedElement xmi:type="uml:Dependency" xmi:id="_kqxWkL-NEeWzCKjiZE_bAw" client="_oSgIME_BEdy2tpS719xBwQ" supplier="_Fqa9QDUPEdy0feurbW0fyQ"/>
<packagedElement xmi:type="uml:Dependency" xmi:id="_7mmHML-PEeWzCKjiZE_bAw" client="_-HeCsDj_Edy0Rd6V_tf1-Q" supplier="_1vnXoDO0EdyG-pUz-bb-Lg"/>
<packagedElement xmi:type="uml:Dependency" xmi:id="_8O3BEL-PEeWzCKjiZE_bAw" client="_-HeCsDj_Edy0Rd6V_tf1-Q" supplier="_Fqa9QDUPEdy0feurbW0fyQ"/>
<packagedElement xmi:type="uml:Dependency" xmi:id="_Qh8fwL-QEeWzCKjiZE_bAw" client="_9-OUUE_uEdy2tpS719xBwQ" supplier="_Fqa9QDUPEdy0feurbW0fyQ"/>
</packagedElement>
<packagedElement xmi:type="uml:Package" xmi:id="_q6QRMC-OEdySSa8YESkO2w" name="Sets">
<ownedComment xmi:type="uml:Comment" xmi:id="_S5s5gDalEdyMZ7r5-upW2A" annotatedElement="_zOJVcDaeEdyC6dXxO2UOEQ">
<body>must be stereotyped CppFriend ()not availbale for the moment for classes)</body>
</ownedComment>
<packagedElement xmi:type="uml:Class" xmi:id="_xxCKcDUuEdyDReAOQiyvOg" name="BOL">
<ownedComment xmi:type="uml:Comment" xmi:id="_F7DMsDUvEdyDReAOQiyvOg" annotatedElement="_xxCKcDUuEdyDReAOQiyvOg">
<body>The class BOL (Bounded ordered list) is a template class applied to a&#xD;
certain type element type (ELType). The list consists of cells of type&#xD;
ListCell&lt;ELType>: the elements are stored by value in each cell. The&#xD;
element type must have a default constructor.&#xD;
&#xD;
The element type has to fulfill two criterions:&#xD;
- It has to define a comparison relation to enable the insertion of an&#xD;
element at the right position within the list. It requires the existence&#xD;
of the operators ElType::operator>= and ElType::operator!=&#xD;
&#xD;
- the second criterion rests on the identity of data of two elements,&#xD;
independently of the value being used for their scheduling. It makes it&#xD;
possible to compare two elements or to seek an element in the list and to&#xD;
modify it. It requires l'existence of the method ElType::sameAs() and&#xD;
possibly of the operator ElType::operator=&#xD;
&#xD;
These two criteria can be independent. The super class of BOL, SMO,&#xD;
redefines the new operator to allows for specifying an address where to&#xD;
the instance should be located in memory. The class BOL can be used for&#xD;
any management * of ordered lists according to specified comparison&#xD;
criterions'. A list of unlimited size has to create and release memory&#xD;
dynamicylly, which is expensive. Moreover, one list divided between&#xD;
several processes and established in a shared memory segment of fixed&#xD;
size must itself be of a limited size that has to be known at creation.</body>
</ownedComment>
<ownedTemplateSignature xmi:type="uml:RedefinableTemplateSignature" xmi:id="_RKC0sDUvEdyDReAOQiyvOg" parameter="_Vvc5kDUvEdyDReAOQiyvOg">
<ownedParameter xmi:type="uml:ClassifierTemplateParameter" xmi:id="_Vvc5kDUvEdyDReAOQiyvOg" parameteredElement="_XE1_MDUvEdyDReAOQiyvOg">
<ownedParameteredElement xmi:type="uml:Class" xmi:id="_XE1_MDUvEdyDReAOQiyvOg" name="ElType" templateParameter="_Vvc5kDUvEdyDReAOQiyvOg"/>
</ownedParameter>
</ownedTemplateSignature>
<ownedAttribute xmi:type="uml:Property" xmi:id="_yaiaUDa2Edyv9PRkTrTu0A" name="beginning" visibility="protected" type="_zOJVcDaeEdyC6dXxO2UOEQ" isUnique="false" association="_yZpCcDa2Edyv9PRkTrTu0A">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_EZ0qYDa3Edyv9PRkTrTu0A"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_EZ-bYDa3Edyv9PRkTrTu0A" value="1"/>
</ownedAttribute>
<ownedAttribute xmi:type="uml:Property" xmi:id="_0wvcsDa2Edyv9PRkTrTu0A" name="endElement" visibility="protected" type="_zOJVcDaeEdyC6dXxO2UOEQ" isUnique="false" association="_0wmSwDa2Edyv9PRkTrTu0A">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_NcmScDa3Edyv9PRkTrTu0A"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_NcmScTa3Edyv9PRkTrTu0A" value="1"/>
</ownedAttribute>
<ownedAttribute xmi:type="uml:Property" xmi:id="_1ZuIQTa2Edyv9PRkTrTu0A" name="current" visibility="protected" type="_zOJVcDaeEdyC6dXxO2UOEQ" isUnique="false" association="_1ZuIQDa2Edyv9PRkTrTu0A">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_OpotUDa3Edyv9PRkTrTu0A"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_OpyeUDa3Edyv9PRkTrTu0A" value="1"/>
</ownedAttribute>
<ownedAttribute xmi:type="uml:Property" xmi:id="_2AnwMTa2Edyv9PRkTrTu0A" name="firstFreeCellule" visibility="protected" type="_zOJVcDaeEdyC6dXxO2UOEQ" isUnique="false" association="_2AnwMDa2Edyv9PRkTrTu0A">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Q7rBYDa3Edyv9PRkTrTu0A"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Q7rBYTa3Edyv9PRkTrTu0A" value="1"/>
</ownedAttribute>
<ownedAttribute xmi:type="uml:Property" xmi:id="_3cG2wTa2Edyv9PRkTrTu0A" name="freeMemory" visibility="protected" type="_zOJVcDaeEdyC6dXxO2UOEQ" isUnique="false" association="_3cG2wDa2Edyv9PRkTrTu0A">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_WcF9ADa3Edyv9PRkTrTu0A"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_WcPG8Da3Edyv9PRkTrTu0A" value="1"/>
</ownedAttribute>
<ownedAttribute xmi:type="uml:Property" xmi:id="_8nYBwDa2Edyv9PRkTrTu0A" name="endOfMemory" visibility="protected" type="_zOJVcDaeEdyC6dXxO2UOEQ" isUnique="false" association="_8nOQwDa2Edyv9PRkTrTu0A">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_ejHHcDa3Edyv9PRkTrTu0A"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ejQRYDa3Edyv9PRkTrTu0A" value="1"/>
</ownedAttribute>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_cYvxYDamEdyMZ7r5-upW2A" name="findElement" specification="_Am2XwDamEdyMZ7r5-upW2A">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_n3fJYCBaEeOMKsPXBVC0DA" name="param_0" type="_zOJVcDaeEdyC6dXxO2UOEQ" direction="return">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_n4Ls8CBaEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_n4XTICBaEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_n4z_ECBaEeOMKsPXBVC0DA" name="element" type="_XE1_MDUvEdyDReAOQiyvOg">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_n5Ym0CBaEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_n5kNACBaEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body> TRACEpr (F7);&#xD;
&#xD;
ListCell *cur = beginning, *lstCelPtr = NULL;&#xD;
for (; cur->next; cur = cur->next) {&#xD;
if (element.sameAs (cur->next->value))&#xD;
{&#xD;
lstCelPtr = cur;&#xD;
break;&#xD;
}&#xD;
}&#xD;
PR (&quot;BOL&lt; ElType >::findElement&quot;);&#xD;
&#xD;
&#xD;
return (lstCelPtr);&#xD;
</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_zhpmoDamEdyMZ7r5-upW2A" name="findPrevious" specification="_gDSwgDamEdyMZ7r5-upW2A">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_n6INsCBaEeOMKsPXBVC0DA" name="param_0" type="_zOJVcDaeEdyC6dXxO2UOEQ" direction="return">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_n6rnUCBaEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_n62mcCBaEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_n7PoACBaEeOMKsPXBVC0DA" name="elem" type="_XE1_MDUvEdyDReAOQiyvOg">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_n74hMCBaEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_n8DgUCBaEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body> TRACEpr (F7);&#xD;
PR (&quot;BOL&lt; ElType >::findPrevious&quot;);&#xD;
&#xD;
ListCell *cur = beginning;&#xD;
for (; cur->next &amp;&amp; element >= cur->next->value; cur = cur->next);&#xD;
&#xD;
return (cur);&#xD;
</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_I4Q-4DanEdyMZ7r5-upW2A" name="modifyCellule" specification="_2-Vv8DamEdyMZ7r5-upW2A">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_n8lEwCBaEeOMKsPXBVC0DA" name="element" type="_XE1_MDUvEdyDReAOQiyvOg">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_n9KTkCBaEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_n9UroCBaEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_n9wJcCBaEeOMKsPXBVC0DA" name="cellule" type="_zOJVcDaeEdyC6dXxO2UOEQ">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_n-P4sCBaEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_n-a30CBaEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body> // Recherche de la place de la cellule dans la liste :&#xD;
if (!(element >= beginning->value)) // C'est le premier.&#xD;
{&#xD;
cellule->next = beginning;&#xD;
beginning = cellule;&#xD;
// Il y avait au départ plus d'un élément,&#xD;
// le dernier et le premier sont donc différents,&#xD;
// endElement est donc à jour.&#xD;
}&#xD;
else if (element >= endElement->value) // Dernier élément&#xD;
{&#xD;
endElement->next = cellule;&#xD;
endElement = cellule;&#xD;
cellule->next = NULL;&#xD;
}&#xD;
else // Autres cas :&#xD;
{&#xD;
ListCell *newPrevCel = findPrevious (element);&#xD;
&#xD;
// Réinsertion de la cellule :&#xD;
cellule->next = newPrevCel->next;&#xD;
newPrevCel->next = cellule;&#xD;
}&#xD;
</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="__2PqIDa5Edyv9PRkTrTu0A" name="_current" specification="_ORpB4DaoEdyMZ7r5-upW2A">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_n-4x4CBaEeOMKsPXBVC0DA" name="param_0" type="_zOJVcDaeEdyC6dXxO2UOEQ" direction="return">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_n_ZIMCBaEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_n_jgQCBaEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body>return current;</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_EpXa4Da6Edyv9PRkTrTu0A" name="set_current" specification="_QxrVsDaoEdyMZ7r5-upW2A">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_oACBYCBaEeOMKsPXBVC0DA" name="cr_operand" type="_zOJVcDaeEdyC6dXxO2UOEQ">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_oAhwoCBaEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_oAsvwCBaEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body> current = cr_operand;</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_ILalUDa6Edyv9PRkTrTu0A" name="_beginning" specification="_InFS0DaoEdyMZ7r5-upW2A">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_oBLQ4CBaEeOMKsPXBVC0DA" name="param_0" type="_zOJVcDaeEdyC6dXxO2UOEQ" direction="return">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_oBrAICBaEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_oB1_QCBaEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body> return beginning;</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_LiAGoDa6Edyv9PRkTrTu0A" name="set_beginning" specification="_Kzm0wDaoEdyMZ7r5-upW2A">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_oCUgYCBaEeOMKsPXBVC0DA" name="cr_operand" type="_zOJVcDaeEdyC6dXxO2UOEQ">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_oC1dwCBaEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_oDAc4CBaEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body> beginning = cr_operand;</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_OGEl4Da6Edyv9PRkTrTu0A" name="_endElement" specification="_Mh4UcDaoEdyMZ7r5-upW2A">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_oDeW8CBaEeOMKsPXBVC0DA" name="param_0" type="_zOJVcDaeEdyC6dXxO2UOEQ" direction="return">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_oD-tQCBaEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_oEJsYCBaEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body> return endElement;</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_RVM0UDa6Edyv9PRkTrTu0A" name="set_endElement" specification="_NLvw0DaoEdyMZ7r5-upW2A">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_oEse8CBaEeOMKsPXBVC0DA" name="cr_operand" type="_zOJVcDaeEdyC6dXxO2UOEQ">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_oFNcUCBaEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_oFYbcCBaEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body> endElement = cr_operand;</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_UDZf8Da6Edyv9PRkTrTu0A" name="_freeMemory" specification="_WklIcDaoEdyMZ7r5-upW2A">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_oF2VgCBaEeOMKsPXBVC0DA" name="param_0" type="_zOJVcDaeEdyC6dXxO2UOEQ" direction="return">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_oGWr0CBaEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_oGhq8CBaEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body> return freeMemory;</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_Vc9T4Da6Edyv9PRkTrTu0A" name="set_freeMemory" specification="_YZZ8EDaoEdyMZ7r5-upW2A">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_oHAMECBaEeOMKsPXBVC0DA" name="cr_operand" type="_zOJVcDaeEdyC6dXxO2UOEQ">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_oHf7UCBaEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_oHq6cCBaEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body> freeMemory = cr_operand;</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_X405YDa6Edyv9PRkTrTu0A" name="_endOfMemory" specification="_aO0lkDaoEdyMZ7r5-upW2A">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_oII0gCBaEeOMKsPXBVC0DA" name="param_0" type="_zOJVcDaeEdyC6dXxO2UOEQ" direction="return">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_oIojwCBaEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_oIzi4CBaEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body> return endOfMemory;</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_ZNniEDa6Edyv9PRkTrTu0A" name="set_endOfMemory" specification="_ddN0MDaoEdyMZ7r5-upW2A">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_oJRc8CBaEeOMKsPXBVC0DA" name="cr_operand" type="_zOJVcDaeEdyC6dXxO2UOEQ">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_oJxMMCBaEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_oJ8LUCBaEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body> endOfMemory = cr_operand;</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_b9AggDa6Edyv9PRkTrTu0A" name="_firstFreeCellule" specification="_SaIhQDaoEdyMZ7r5-upW2A">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_oKaFYCBaEeOMKsPXBVC0DA" name="param_0" type="_zOJVcDaeEdyC6dXxO2UOEQ" direction="return">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_oK6bsCBaEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_oLFa0CBaEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body> return firstFreeCellule;</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_dh4zoDa6Edyv9PRkTrTu0A" name="set_firstFreeCellule" specification="_ToX2ADaoEdyMZ7r5-upW2A">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_oLoNYCBaEeOMKsPXBVC0DA" name="cr_operand" type="_zOJVcDaeEdyC6dXxO2UOEQ">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_oMH8oCBaEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_oMS7wCBaEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body> firstFreeCellule = cr_operand;</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_j5TBoDa6Edyv9PRkTrTu0A" name="BOL" specification="_ky3HADUyEdyDReAOQiyvOg">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_oMwOwCBaEeOMKsPXBVC0DA" name="nbElem">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_oNP-ACBaEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_oNa9ICBaEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body> TRACEpr (F7);&#xD;
PR (&quot; $$$ endOfMemory : &quot; &lt;&lt; (void *) endOfMemory);&#xD;
PR (&quot; - freeMemory : &quot; &lt;&lt; (void *) freeMemory);&#xD;
PR (&quot; = &quot; &lt;&lt; (int) endOfMemory - (int) freeMemory &lt;&lt; showI);&#xD;
</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_vrKtMDa6Edyv9PRkTrTu0A" name="insert" specification="_9DJbEDUyEdyDReAOQiyvOg">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_oNrb0CBaEeOMKsPXBVC0DA" name="param_0" type="_XE1_MDUvEdyDReAOQiyvOg" direction="return">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_oOLLECBaEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_oOWKMCBaEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_oOuksCBaEeOMKsPXBVC0DA" name="element" type="_XE1_MDUvEdyDReAOQiyvOg">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_oPO7ACBaEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_oPZ6ICBaEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body> TRACEpr (F7);&#xD;
ElType *elementPtr = NULL;&#xD;
&#xD;
ListCell *newCellule = new (this) ListCell (element);&#xD;
&#xD;
PR (&quot;newCellule=&quot; &lt;&lt; (void *) newCellule &lt;&lt; showI);&#xD;
&#xD;
if (newCellule)&#xD;
{&#xD;
PR (&quot;beginning=&quot; &lt;&lt; (void *) beginning);&#xD;
PR (&quot;, endElement=&quot; &lt;&lt; (void *) endElement &lt;&lt; showI);&#xD;
&#xD;
if (!beginning)&#xD;
{ // Cas liste vide :&#xD;
current = endElement = beginning = newCellule;&#xD;
PR (element &lt;&lt; &quot; : single element.&quot;);&#xD;
}&#xD;
else if (!(element >= beginning->value))&#xD;
{ // Cas élément plus petit que tous les autres (plus petit que le premier) :&#xD;
newCellule->next = beginning;&#xD;
beginning = newCellule;&#xD;
PR (element &lt;&lt; &quot; : element stored ahead.&quot;);&#xD;
}&#xD;
else if (element >= endElement->value)&#xD;
{ // Cas élément plus grand que tous les autres, ou égal au(x) plus grand(s),&#xD;
// (supérieur ou égal au dernier de la liste):&#xD;
endElement->next = newCellule;&#xD;
endElement = newCellule;&#xD;
PR (element &lt;&lt; &quot; : element stored at bottom.&quot;);&#xD;
}&#xD;
else&#xD;
{&#xD;
// Cas général, élément à insérer en milieu de liste:&#xD;
ListCell *prevCel = findPrevious (element);&#xD;
PR (&quot;prevCel=&quot; &lt;&lt; (void *) prevCel &lt;&lt; showI);&#xD;
newCellule->next = prevCel->next;&#xD;
prevCel->next = newCellule;&#xD;
PR (element &lt;&lt; &quot; : element stored after : &quot; &lt;&lt; prevCel->value);&#xD;
}&#xD;
&#xD;
elementPtr = &amp;(newCellule->value);&#xD;
}&#xD;
PR (showI);&#xD;
&#xD;
return elementPtr;&#xD;
</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_1ITrUDa6Edyv9PRkTrTu0A" name="retract" specification="_-f1bgDUyEdyDReAOQiyvOg">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_oP6QcCBaEeOMKsPXBVC0DA" name="param_0" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_oQZ_sCBaEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_oQk-0CBaEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_oQv98CBaEeOMKsPXBVC0DA" name="element" type="_XE1_MDUvEdyDReAOQiyvOg">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_oRPtMCBaEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_oRasUCBaEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body> TRACEpr (F7);&#xD;
PR (showI);&#xD;
bool result = FALSE;&#xD;
&#xD;
if (beginning)&#xD;
{ // List not empty.&#xD;
if (element.sameAs (beginning->value))&#xD;
{ // Cas où l'élément est le premier de la liste :&#xD;
ListCell *nextBeginning = beginning->next;&#xD;
&#xD;
if (endElement == beginning)&#xD;
endElement = NULL;&#xD;
&#xD;
beginning->free (this);&#xD;
&#xD;
current = beginning = nextBeginning;&#xD;
// Sinon, current risque d'indiquer un élément inexistant ;&#xD;
&#xD;
result = TRUE;&#xD;
}&#xD;
else&#xD;
{ // Autres cas :&#xD;
ListCell *prevCel = findElement (element);&#xD;
&#xD;
if (prevCel)&#xD;
{ // L'élément est trouvé.&#xD;
// prevCel->next est toujours non NULL, car c'est&#xD;
// le précédent. S'il n'y en a pas, c'est soit que la&#xD;
// liste est vide (beginning == NULL), soit qu'elle n'a&#xD;
// qu'un élément, c'est alors aussi le premier et c'est&#xD;
// traité avant !&#xD;
ListCell *destroyedCel = prevCel->next;&#xD;
&#xD;
if (prevCel->next->next)&#xD;
prevCel->next = prevCel->next->next;&#xD;
else // prevCel->next == endElement&#xD;
{&#xD;
prevCel->next = NULL;&#xD;
endElement = prevCel;&#xD;
}&#xD;
&#xD;
if (current == destroyedCel)&#xD;
current = beginning;&#xD;
// Sinon, current risque d'indiquer un élément inexistant.&#xD;
destroyedCel->free (this);&#xD;
result = TRUE;&#xD;
}&#xD;
else&#xD;
OSAL_ERROR (&quot;Element not found !&quot;);&#xD;
// ERROR ( &quot;HORREUR, Element inexistant...&quot; ) ;&#xD;
}&#xD;
}&#xD;
else&#xD;
OSAL_ERROR (&quot;empty list !&quot;);&#xD;
// ERROR ( &quot;HORREUR, Retrait d'un element dans une liste vide...&quot; ) ;&#xD;
&#xD;
return result;&#xD;
</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_4YCWsDa6Edyv9PRkTrTu0A" name="first" specification="_ApOw8DUzEdyDReAOQiyvOg">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_oR6bkCBaEeOMKsPXBVC0DA" name="param_0" type="_XE1_MDUvEdyDReAOQiyvOg" direction="return">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_oSax4CBaEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_oSlJ8CBaEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body> TRACEpr (F7);&#xD;
PR (showI);&#xD;
&#xD;
ElType *element = NULL;&#xD;
&#xD;
if (beginning)&#xD;
element = &amp;(beginning->value);&#xD;
else&#xD;
OSAL_ERROR (&quot;empty list !&quot;);&#xD;
// ERROR ( &quot;HORREUR, Demande du premier élément d'une liste vide...&quot; ) ;&#xD;
&#xD;
return ((element));&#xD;
</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_7z1IIDa6Edyv9PRkTrTu0A" name="last" specification="_CTesQDUzEdyDReAOQiyvOg">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_oTIjkCBaEeOMKsPXBVC0DA" name="param_0" type="_XE1_MDUvEdyDReAOQiyvOg" direction="return">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_oTo54CBaEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_oTzR8CBaEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body> TRACEpr (F7);&#xD;
PR (showI);&#xD;
&#xD;
ElType *element = NULL;&#xD;
&#xD;
if (endElement)&#xD;
element = &amp;(endElement->value);&#xD;
else&#xD;
OSAL_ERROR (&quot;empty list !&quot;);&#xD;
// ERROR (&quot;HORREUR, Demande du dernier élément d'une liste vide...&quot;) ;&#xD;
&#xD;
return ((element));&#xD;
</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_-_iPIDa6Edyv9PRkTrTu0A" name="goFirst" specification="_DrscYDUzEdyDReAOQiyvOg">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_oURMACBaEeOMKsPXBVC0DA" name="param_0" type="_XE1_MDUvEdyDReAOQiyvOg" direction="return">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_oUw7QCBaEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_oU76YCBaEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body> TRACEpr (F7);&#xD;
PR (showI);&#xD;
&#xD;
ElType *element = NULL;&#xD;
&#xD;
if (beginning)&#xD;
{&#xD;
element = &amp;(beginning->value);&#xD;
current = beginning;&#xD;
}&#xD;
else&#xD;
OSAL_ERROR (&quot;empty list !&quot;);&#xD;
&#xD;
return element;&#xD;
</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_CiCFgDa7Edyv9PRkTrTu0A" name="goLast" specification="_E8J-sDUzEdyDReAOQiyvOg">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_oVZNYCBaEeOMKsPXBVC0DA" name="param_0" type="_XE1_MDUvEdyDReAOQiyvOg" direction="return">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_oV5jsCBaEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_oWFJ4CBaEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body> TRACEpr (F7);&#xD;
PR (showI);&#xD;
&#xD;
ElType *element = NULL;&#xD;
&#xD;
if (endElement)&#xD;
{&#xD;
element = &amp;(endElement->value);&#xD;
current = endElement;&#xD;
}&#xD;
else {&#xD;
OSAL_ERROR (&quot;empty list !&quot;);&#xD;
}&#xD;
&#xD;
return element;&#xD;
</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_FvrGMDa7Edyv9PRkTrTu0A" name="next" specification="_GN0a4DUzEdyDReAOQiyvOg">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_oWic4CBaEeOMKsPXBVC0DA" name="param_0" type="_XE1_MDUvEdyDReAOQiyvOg" direction="return">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_oXDaQCBaEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_oXNyUCBaEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_oXmz4CBaEeOMKsPXBVC0DA" name="index">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_oYHKMCBaEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_oYSJUCBaEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body> TRACEpr (F7);&#xD;
PR (showI);&#xD;
&#xD;
ElType *element = NULL;&#xD;
&#xD;
while (current != NULL &amp;&amp; (index--) > 0)&#xD;
{&#xD;
if (current->next != NULL)&#xD;
{&#xD;
element = &amp;(current->next->value);&#xD;
current = current->next;&#xD;
}&#xD;
else {&#xD;
// current->next == NULL&#xD;
current = NULL;&#xD;
}&#xD;
}&#xD;
&#xD;
return element;&#xD;
</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_JX1fsDa7Edyv9PRkTrTu0A" name="modify" specification="_HjplYDUzEdyDReAOQiyvOg">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_oYiA8CBaEeOMKsPXBVC0DA" name="param_0" type="_XE1_MDUvEdyDReAOQiyvOg" direction="return">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_oZC-UCBaEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_oZN9cCBaEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_oZmX8CBaEeOMKsPXBVC0DA" name="element" type="_XE1_MDUvEdyDReAOQiyvOg">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_oaM04CBaEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_oaXM8CBaEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body> TRACEpr (F7);&#xD;
PR (showI);&#xD;
&#xD;
ElType *elementPtr = NULL;&#xD;
&#xD;
if (beginning)&#xD;
{ // List not empty&#xD;
if (element.sameAs (beginning->value))&#xD;
{ // Cas où l'élément est le premier :&#xD;
elementPtr = &amp;(beginning->value);&#xD;
&#xD;
if (element != (*elementPtr))&#xD;
{ // Sa valeur est différente&#xD;
beginning->value = element;&#xD;
if (beginning->next)&#xD;
{ // La liste contient plus d'un élément&#xD;
if (element >= beginning->next->value)&#xD;
modifyFirst (element);&#xD;
// else, on ne modifie pas la place, il reste le premier.&#xD;
}&#xD;
// else, la liste n'a qu'un élément, c'est donc le premier.&#xD;
}&#xD;
// else, sa valeur est la même que celle qu'on veut mettre,&#xD;
// on ne fait donc rien.&#xD;
}&#xD;
&#xD;
else {&#xD;
ListCell *prevCel = findElement (element);&#xD;
&#xD;
if (prevCel)&#xD;
{ // L'élément est trouvé&#xD;
// prevCel->next est toujours non NULL,&#xD;
// car c'est le &quot;précédent&quot;. S'il n'y en a pas,&#xD;
// c'est soit que la la liste est vide (beginning == NULL),&#xD;
// soit qu'elle n'a qu'un élément qui est alors aussi le&#xD;
// premier et cela a été traité avant !&#xD;
&#xD;
elementPtr = &amp;(prevCel->next->value);&#xD;
&#xD;
if (element != (*elementPtr))&#xD;
{ // Valeur différente.&#xD;
// Mémorisation et mise à jour de la cellule :&#xD;
ListCell *cellule = prevCel->next;&#xD;
cellule->value = element;&#xD;
&#xD;
// Retrait de la cellule de la liste :&#xD;
if (cellule == endElement)&#xD;
endElement = prevCel;&#xD;
prevCel->next = prevCel->next->next;&#xD;
&#xD;
// Recherche de la place de la cellule dans la liste :&#xD;
modifyCellule (element, cellule);&#xD;
&#xD;
&#xD;
}&#xD;
// else, sa valeur est la même que celle qu'on veut mettre,&#xD;
// on ne fait donc rien.&#xD;
}&#xD;
else&#xD;
OSAL_ERROR (&quot;Element not found !&quot;);&#xD;
}&#xD;
}&#xD;
else {&#xD;
OSAL_ERROR (&quot;empty list !&quot;);&#xD;
}&#xD;
&#xD;
return elementPtr;&#xD;
</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_N1y4wDa7Edyv9PRkTrTu0A" name="search" specification="_I_JTADUzEdyDReAOQiyvOg">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_oa-Q8CBaEeOMKsPXBVC0DA" name="param_0" type="_XE1_MDUvEdyDReAOQiyvOg" direction="return">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_obfOUCBaEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_obqNcCBaEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_ocCA4CBaEeOMKsPXBVC0DA" name="element" type="_XE1_MDUvEdyDReAOQiyvOg">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_ociXMCBaEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_octWUCBaEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body> TRACEpr (F7);&#xD;
PR (showI);&#xD;
&#xD;
ElType *elementPtr = NULL;&#xD;
&#xD;
if (beginning)&#xD;
{ // List not empty&#xD;
if (element.sameAs (beginning->value))&#xD;
// This is the first element&#xD;
elementPtr = &amp;(beginning->value);&#xD;
else&#xD;
{&#xD;
ListCell *prevCel = findElement (element);&#xD;
&#xD;
if (prevCel)&#xD;
elementPtr = &amp;(prevCel->next->value);&#xD;
//else&#xD;
// ERROR ( &quot;Element not found !&quot; ) ;&#xD;
}&#xD;
}&#xD;
else {&#xD;
OSAL_ERROR (&quot;empty list !&quot;);&#xD;
}&#xD;
&#xD;
return elementPtr;&#xD;
</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_QeojQDa7Edyv9PRkTrTu0A" name="isEmpty" specification="_KWxNQDUzEdyDReAOQiyvOg">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_odMegCBaEeOMKsPXBVC0DA" name="param_0" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_odsNwCBaEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_od3M4CBaEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body> TRACEpr (F7);&#xD;
PR (showI);&#xD;
&#xD;
return (beginning ? FALSE : TRUE);&#xD;
</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_ToGOkDa7Edyv9PRkTrTu0A" name="BOL" specification="_MPd0QDUzEdyDReAOQiyvOg">
<language>C/C++</language>
<body> current = beginning;&#xD;
ListCell *destroyedCel;&#xD;
while (current)&#xD;
{&#xD;
destroyedCel = current;&#xD;
current = current->next;&#xD;
destroyedCel->free (this);&#xD;
}&#xD;
&#xD;
current = beginning = endElement = NULL;&#xD;
</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_aY1ikDa7Edyv9PRkTrTu0A" name="modifyFirst" specification="_lrJPMDa5Edyv9PRkTrTu0A">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_oeMkECBaEeOMKsPXBVC0DA" name="element" type="_XE1_MDUvEdyDReAOQiyvOg">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_oesTUCBaEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_oe3ScCBaEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body> // Retrait de la cellule :&#xD;
&#xD;
ListCell *oldBeginning = beginning;&#xD;
beginning = beginning->next;&#xD;
&#xD;
if (element >= endElement->value)&#xD;
{&#xD;
// if this element is bigger than the others:&#xD;
endElement->next = oldBeginning;&#xD;
endElement = oldBeginning;&#xD;
oldBeginning->next = NULL;&#xD;
}&#xD;
else&#xD;
{&#xD;
// general case, element is inserted in the middle&#xD;
ListCell *prevCel = findPrevious (element);&#xD;
&#xD;
oldBeginning->next = prevCel->next;&#xD;
prevCel->next = oldBeginning;&#xD;
}&#xD;
</body>
</ownedBehavior>
<ownedOperation xmi:type="uml:Operation" xmi:id="_ky3HADUyEdyDReAOQiyvOg" name="BOL" method="_j5TBoDa6Edyv9PRkTrTu0A">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_npZ2UDUyEdyDReAOQiyvOg" name="nbElem">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_oykd0DUyEdyDReAOQiyvOg" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_oyuO0DUyEdyDReAOQiyvOg" value="1"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="_9DJbEDUyEdyDReAOQiyvOg" name="insert" method="_vrKtMDa6Edyv9PRkTrTu0A">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_iGkDYDUzEdyDReAOQiyvOg" name="param_0" type="_XE1_MDUvEdyDReAOQiyvOg" direction="return">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_jROfsDUzEdyDReAOQiyvOg" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_jRXpoDUzEdyDReAOQiyvOg" value="1"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_m35EYDUzEdyDReAOQiyvOg" name="element" type="_XE1_MDUvEdyDReAOQiyvOg"/>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="_-f1bgDUyEdyDReAOQiyvOg" name="retract" method="_1ITrUDa6Edyv9PRkTrTu0A">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_8lwfADUzEdyDReAOQiyvOg" name="param_0" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_8pB1cDUzEdyDReAOQiyvOg" name="element" type="_XE1_MDUvEdyDReAOQiyvOg"/>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="_ApOw8DUzEdyDReAOQiyvOg" name="first" method="_4YCWsDa6Edyv9PRkTrTu0A">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_XB94EDU0EdylmKH0Uq8VaA" name="param_0" type="_XE1_MDUvEdyDReAOQiyvOg" direction="return">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_YWTNwDU0EdylmKH0Uq8VaA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_YWc-wDU0EdylmKH0Uq8VaA" value="1"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="_CTesQDUzEdyDReAOQiyvOg" name="last" method="_7z1IIDa6Edyv9PRkTrTu0A">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_F0HPgDU1EdylmKH0Uq8VaA" name="param_0" type="_XE1_MDUvEdyDReAOQiyvOg" direction="return">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_HFeJsDU1EdylmKH0Uq8VaA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_HFn6sDU1EdylmKH0Uq8VaA" value="1"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="_DrscYDUzEdyDReAOQiyvOg" name="goFirst" method="_-_iPIDa6Edyv9PRkTrTu0A">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_PzPLEDU1EdylmKH0Uq8VaA" name="param_0" type="_XE1_MDUvEdyDReAOQiyvOg" direction="return"/>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="_E8J-sDUzEdyDReAOQiyvOg" name="goLast" method="_CiCFgDa7Edyv9PRkTrTu0A">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_Vlh50DU1EdylmKH0Uq8VaA" name="param_0" type="_XE1_MDUvEdyDReAOQiyvOg" direction="return"/>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="_GN0a4DUzEdyDReAOQiyvOg" name="next" method="_FvrGMDa7Edyv9PRkTrTu0A">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_bbtqEDU1EdylmKH0Uq8VaA" name="param_0" type="_XE1_MDUvEdyDReAOQiyvOg" direction="return"/>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_bfunYDU1EdylmKH0Uq8VaA" name="index">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
<defaultValue xmi:type="uml:LiteralInteger" xmi:id="_jaPnMCBIEeOBrb_t_69W4Q" value="1"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="_HjplYDUzEdyDReAOQiyvOg" name="modify" method="_JX1fsDa7Edyv9PRkTrTu0A">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_yUhN0DU1EdylmKH0Uq8VaA" name="param_0" type="_XE1_MDUvEdyDReAOQiyvOg" direction="return"/>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_yYP3QDU1EdylmKH0Uq8VaA" name="element" type="_XE1_MDUvEdyDReAOQiyvOg"/>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="_I_JTADUzEdyDReAOQiyvOg" name="search" method="_N1y4wDa7Edyv9PRkTrTu0A">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_V2hJkDadEdyC6dXxO2UOEQ" name="param_0" type="_XE1_MDUvEdyDReAOQiyvOg" direction="return">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_V20EgDadEdyC6dXxO2UOEQ" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_V3G_cDadEdyC6dXxO2UOEQ" name="" value="1"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_WOgLwDadEdyC6dXxO2UOEQ" name="element" type="_XE1_MDUvEdyDReAOQiyvOg">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_WOztwDadEdyC6dXxO2UOEQ" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_WO83sDadEdyC6dXxO2UOEQ" name="" value="1"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="_KWxNQDUzEdyDReAOQiyvOg" name="isEmpty" method="_QeojQDa7Edyv9PRkTrTu0A">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_u3hv8DadEdyC6dXxO2UOEQ" name="param_0" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_u30q4DadEdyC6dXxO2UOEQ" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_u3-b4DadEdyC6dXxO2UOEQ" name="" value="1"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="_MPd0QDUzEdyDReAOQiyvOg" name="BOL" method="_ToGOkDa7Edyv9PRkTrTu0A"/>
<ownedOperation xmi:type="uml:Operation" xmi:id="_Am2XwDamEdyMZ7r5-upW2A" name="findElement" method="_cYvxYDamEdyMZ7r5-upW2A">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_FBO4YDamEdyMZ7r5-upW2A" name="param_0" type="_zOJVcDaeEdyC6dXxO2UOEQ" direction="return">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_FBhzUDamEdyMZ7r5-upW2A" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_FBrkUDamEdyMZ7r5-upW2A" name="" value="1"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_FGADoDamEdyMZ7r5-upW2A" name="element" type="_XE1_MDUvEdyDReAOQiyvOg">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_FGS-kDamEdyMZ7r5-upW2A" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_FGcvkDamEdyMZ7r5-upW2A" name="" value="1"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="_gDSwgDamEdyMZ7r5-upW2A" name="findPrevious" method="_zhpmoDamEdyMZ7r5-upW2A">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_h1SSkDamEdyMZ7r5-upW2A" name="param_0" type="_zOJVcDaeEdyC6dXxO2UOEQ" direction="return">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_h1cDkDamEdyMZ7r5-upW2A" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_h1lNgDamEdyMZ7r5-upW2A" name="" value="1"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_h5KF8DamEdyMZ7r5-upW2A" name="elem" type="_XE1_MDUvEdyDReAOQiyvOg">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_h5dn8DamEdyMZ7r5-upW2A" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_h5mx4DamEdyMZ7r5-upW2A" name="" value="1"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="_2-Vv8DamEdyMZ7r5-upW2A" name="modifyCellule" method="_I4Q-4DanEdyMZ7r5-upW2A">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_44iLwDamEdyMZ7r5-upW2A" name="element" type="_XE1_MDUvEdyDReAOQiyvOg">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_44rVsDamEdyMZ7r5-upW2A" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_441GsDamEdyMZ7r5-upW2A" name="" value="1"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_47gnQDamEdyMZ7r5-upW2A" name="cellule" type="_zOJVcDaeEdyC6dXxO2UOEQ">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_47qYQDamEdyMZ7r5-upW2A" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_47ziMDamEdyMZ7r5-upW2A" name="" value="1"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="_InFS0DaoEdyMZ7r5-upW2A" name="_beginning" method="_ILalUDa6Edyv9PRkTrTu0A">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_gR0CwDaoEdyMZ7r5-upW2A" name="param_0" type="_zOJVcDaeEdyC6dXxO2UOEQ" direction="return">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_gR9zwDaoEdyMZ7r5-upW2A" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_gR9zwTaoEdyMZ7r5-upW2A" name="" value="1"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="_Kzm0wDaoEdyMZ7r5-upW2A" name="set_beginning" method="_LiAGoDa6Edyv9PRkTrTu0A">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_4jvVkDaoEdyv9PRkTrTu0A" name="cr_operand" type="_zOJVcDaeEdyC6dXxO2UOEQ">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_4kCQgDaoEdyv9PRkTrTu0A" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_4kVygDaoEdyv9PRkTrTu0A" name="" value="1"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="_Mh4UcDaoEdyMZ7r5-upW2A" name="_endElement" method="_OGEl4Da6Edyv9PRkTrTu0A">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_iP2AQDapEdyv9PRkTrTu0A" name="param_0" type="_zOJVcDaeEdyC6dXxO2UOEQ" direction="return">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_iP_xQDapEdyv9PRkTrTu0A" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_iQI7MDapEdyv9PRkTrTu0A" name="" value="1"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="_NLvw0DaoEdyMZ7r5-upW2A" name="set_endElement" method="_RVM0UDa6Edyv9PRkTrTu0A">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_F389oDapEdyv9PRkTrTu0A" name="cr_operand" type="_zOJVcDaeEdyC6dXxO2UOEQ">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_F4P4kDapEdyv9PRkTrTu0A" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_F4ZpkDapEdyv9PRkTrTu0A" name="" value="1"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="_ORpB4DaoEdyMZ7r5-upW2A" name="_current" method="__2PqIDa5Edyv9PRkTrTu0A">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_wDf9YDapEdyv9PRkTrTu0A" name="param_0" type="_zOJVcDaeEdyC6dXxO2UOEQ" direction="return">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_wDy4UDapEdyv9PRkTrTu0A" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_wD8pUDapEdyv9PRkTrTu0A" name="" value="1"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="_QxrVsDaoEdyMZ7r5-upW2A" name="set_current" method="_EpXa4Da6Edyv9PRkTrTu0A">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_5TPDYDapEdyv9PRkTrTu0A" name="cr_operand" type="_zOJVcDaeEdyC6dXxO2UOEQ">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_5Th-UDapEdyv9PRkTrTu0A" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_5TrvUDapEdyv9PRkTrTu0A" name="" value="1"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="_SaIhQDaoEdyMZ7r5-upW2A" name="_firstFreeCellule" method="_b9AggDa6Edyv9PRkTrTu0A">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_DsSh4DaqEdyv9PRkTrTu0A" name="param_0" type="_zOJVcDaeEdyC6dXxO2UOEQ" direction="return">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Dslc0DaqEdyv9PRkTrTu0A" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_DsvN0DaqEdyv9PRkTrTu0A" name="" value="1"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="_ToX2ADaoEdyMZ7r5-upW2A" name="set_firstFreeCellule" method="_dh4zoDa6Edyv9PRkTrTu0A">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_LADDYDaqEdyv9PRkTrTu0A" name="cr_operand" type="_zOJVcDaeEdyC6dXxO2UOEQ">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_LAfvUDaqEdyv9PRkTrTu0A" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_LAo5QDaqEdyv9PRkTrTu0A" name="" value="1"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="_WklIcDaoEdyMZ7r5-upW2A" name="_freeMemory" method="_UDZf8Da6Edyv9PRkTrTu0A">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_XldrwDaqEdyv9PRkTrTu0A" name="param_0" type="_zOJVcDaeEdyC6dXxO2UOEQ" direction="return">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_XlxNwDaqEdyv9PRkTrTu0A" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Xl6XsDaqEdyv9PRkTrTu0A" name="" value="1"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="_YZZ8EDaoEdyMZ7r5-upW2A" name="set_freeMemory" method="_Vc9T4Da6Edyv9PRkTrTu0A">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_iOT5wDaqEdyv9PRkTrTu0A" name="cr_operand" type="_zOJVcDaeEdyC6dXxO2UOEQ">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_iOdqwDaqEdyv9PRkTrTu0A" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_iOnbwDaqEdyv9PRkTrTu0A" name="" value="1"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="_aO0lkDaoEdyMZ7r5-upW2A" name="_endOfMemory" method="_X405YDa6Edyv9PRkTrTu0A">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_iIN30Da1Edyv9PRkTrTu0A" name="param_0" type="_zOJVcDaeEdyC6dXxO2UOEQ" direction="return">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_iIhZ0Da1Edyv9PRkTrTu0A" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_iIqjwDa1Edyv9PRkTrTu0A" name="" value="1"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="_ddN0MDaoEdyMZ7r5-upW2A" name="set_endOfMemory" method="_ZNniEDa6Edyv9PRkTrTu0A">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_sFG-wDa1Edyv9PRkTrTu0A" name="cr_operand" type="_zOJVcDaeEdyC6dXxO2UOEQ">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sFQvwDa1Edyv9PRkTrTu0A" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sFZ5sDa1Edyv9PRkTrTu0A" name="" value="1"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="_lrJPMDa5Edyv9PRkTrTu0A" name="modifyFirst" visibility="protected" method="_aY1ikDa7Edyv9PRkTrTu0A">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_oX2tEDa5Edyv9PRkTrTu0A" name="element" visibility="public" type="_XE1_MDUvEdyDReAOQiyvOg">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_oYJoADa5Edyv9PRkTrTu0A" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_oYSx8Da5Edyv9PRkTrTu0A" name="" value="1"/>
</ownedParameter>
</ownedOperation>
<nestedClassifier xmi:type="uml:Class" xmi:id="_zOJVcDaeEdyC6dXxO2UOEQ" name="ListCell">
<ownedAttribute xmi:type="uml:Property" xmi:id="_VurNcDajEdyC6dXxO2UOEQ" name="value" type="_XE1_MDUvEdyDReAOQiyvOg" isUnique="false">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_ZGTQkDajEdyC6dXxO2UOEQ" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ZGdBkDajEdyC6dXxO2UOEQ" value="1"/>
</ownedAttribute>
<ownedAttribute xmi:type="uml:Property" xmi:id="_JP6ksDa5Edyv9PRkTrTu0A" name="next" type="_zOJVcDaeEdyC6dXxO2UOEQ" isUnique="false" association="_JPxawDa5Edyv9PRkTrTu0A">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UWAIUDa5Edyv9PRkTrTu0A"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UWJ5UDa5Edyv9PRkTrTu0A" value="1"/>
</ownedAttribute>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_48-rEDafEdyC6dXxO2UOEQ" name="operator new" specification="_ftqi8DafEdyC6dXxO2UOEQ">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_vzZakCBbEeOMKsPXBVC0DA" name="param_0" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_8I6RgBydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_vz6_ACBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_v0GlMCBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_v0SLYCBbEeOMKsPXBVC0DA" name="nbElem">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_LTZesByeEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_v0098CBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_v1AkICBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_v1LjQCBbEeOMKsPXBVC0DA" name="currentList" type="_xxCKcDUuEdyDReAOQiyvOg" direction="inout">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_v1tHsCBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_v14t4CBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body> ListCell *allocatedCellule = NULL;&#xD;
&#xD;
if (currentList->firstFreeCellule)&#xD;
{&#xD;
allocatedCellule = currentList->firstFreeCellule;&#xD;
currentList->firstFreeCellule =&#xD;
currentList->firstFreeCellule->next;&#xD;
}&#xD;
else if (currentList->freeMemory)&#xD;
{&#xD;
allocatedCellule = currentList->freeMemory;&#xD;
&#xD;
if (currentList->freeMemory &lt; currentList->endOfMemory) {&#xD;
currentList->freeMemory++;&#xD;
}&#xD;
else if (currentList->freeMemory == currentList->endOfMemory) {&#xD;
currentList->freeMemory = NULL;&#xD;
}&#xD;
else {&#xD;
OSAL_ERROR (&quot;Bad allocation pointers !&quot;);&#xD;
}&#xD;
}&#xD;
else {&#xD;
OSAL_ERROR (&quot;Bounded list is full !&quot;);&#xD;
}&#xD;
&#xD;
return allocatedCellule;&#xD;
</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_DromIDagEdyC6dXxO2UOEQ" name="free" specification="_A4X0UDagEdyC6dXxO2UOEQ">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_v2XPACBbEeOMKsPXBVC0DA" name="currentList" type="_xxCKcDUuEdyDReAOQiyvOg" direction="out">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_v24zcCBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_v3EZoCBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body> next = currentList->firstFreeCellule;&#xD;
currentList->firstFreeCellule = this;&#xD;
&#xD;
delete this;&#xD;
</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_REDRYTajEdyC6dXxO2UOEQ" name="ListCell" specification="_-xPoYDaiEdyC6dXxO2UOEQ">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_v3jh0CBbEeOMKsPXBVC0DA" name="elt" type="_XE1_MDUvEdyDReAOQiyvOg">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_v4FGQCBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_v4QscCBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body></body>
</ownedBehavior>
<ownedOperation xmi:type="uml:Operation" xmi:id="_ftqi8DafEdyC6dXxO2UOEQ" name="operator new" method="_48-rEDafEdyC6dXxO2UOEQ">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_heBGQDafEdyC6dXxO2UOEQ" name="param_0" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_8I6RgBydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_heUBMDafEdyC6dXxO2UOEQ" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_hedyMDafEdyC6dXxO2UOEQ" name="" value="1"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_hjYucDafEdyC6dXxO2UOEQ" name="nbElem">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_LTZesByeEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_hjrpYDafEdyC6dXxO2UOEQ" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_hj0zUDafEdyC6dXxO2UOEQ" name="" value="1"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_hoAIsDafEdyC6dXxO2UOEQ" name="currentList" type="_xxCKcDUuEdyDReAOQiyvOg" direction="inout">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_hoTDoDafEdyC6dXxO2UOEQ" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_hoc0oDafEdyC6dXxO2UOEQ" name="" value="1"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="_A4X0UDagEdyC6dXxO2UOEQ" name="free" method="_DromIDagEdyC6dXxO2UOEQ">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_GHp8oDagEdyC6dXxO2UOEQ" name="currentList" type="_xxCKcDUuEdyDReAOQiyvOg" direction="out">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_GH83kDagEdyC6dXxO2UOEQ" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_GIPygDagEdyC6dXxO2UOEQ" name="" value="1"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="_Z_TnEDahEdyC6dXxO2UOEQ" name="getNext"/>
<ownedOperation xmi:type="uml:Operation" xmi:id="_-xPoYDaiEdyC6dXxO2UOEQ" name="ListCell" method="_REDRYTajEdyC6dXxO2UOEQ">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_BHwMwDajEdyC6dXxO2UOEQ" name="elt" type="_XE1_MDUvEdyDReAOQiyvOg">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_BH59wDajEdyC6dXxO2UOEQ" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_BIDHsDajEdyC6dXxO2UOEQ" name="" value="1"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="_a-g58DakEdyMZ7r5-upW2A" name="operator delete" visibility="protected">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_nU5AwDakEdyMZ7r5-upW2A" name="memoryAddress" direction="out">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_8I6RgBydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_nVfdsDakEdyMZ7r5-upW2A" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_nVonoDakEdyMZ7r5-upW2A" name="" value="1"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="_5hcQwDakEdyMZ7r5-upW2A" name="operator new" visibility="private">
<ownedComment xmi:type="uml:Comment" xmi:id="_GV6o0DalEdyMZ7r5-upW2A" annotatedElement="_5hcQwDakEdyMZ7r5-upW2A">
<body>declare the standard new-operator as private, since its invocation&#xD;
should be replaced by the call to the new operator defined above&#xD;
(with the additional parameter currentList).&#xD;
I.e. don't use &quot;new ListCell&quot;, use &quot;new (this) ListCell&quot; instead</body>
</ownedComment>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_7GUj4DakEdyMZ7r5-upW2A" name="param_0" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_8I6RgBydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_7GeU4DakEdyMZ7r5-upW2A" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_7GxP0DakEdyMZ7r5-upW2A" name="" value="1"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_7JcwYDakEdyMZ7r5-upW2A" name="nbElem">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_LTZesByeEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_7J5cUDakEdyMZ7r5-upW2A" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_7KDNUDakEdyMZ7r5-upW2A" name="" value="1"/>
</ownedParameter>
</ownedOperation>
</nestedClassifier>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_y68Y0DUuEdyDReAOQiyvOg" name="CircularBuffer">
<ownedComment xmi:type="uml:Comment" xmi:id="_3wqfwDbdEdy0Rd6V_tf1-Q" annotatedElement="_y68Y0DUuEdyDReAOQiyvOg">
<body>A circular buffer - seems to be unused (besides the tests).&#xD;
[todo:] missing the possibility to delete elements from the buffer</body>
</ownedComment>
<ownedTemplateSignature xmi:type="uml:RedefinableTemplateSignature" xmi:id="_mgxFQDbdEdy0Rd6V_tf1-Q" parameter="_pjE_sDbdEdy0Rd6V_tf1-Q _p6xuADbdEdy0Rd6V_tf1-Q">
<ownedParameter xmi:type="uml:ClassifierTemplateParameter" xmi:id="_pjE_sDbdEdy0Rd6V_tf1-Q" parameteredElement="_sd8OUDbdEdy0Rd6V_tf1-Q">
<ownedParameteredElement xmi:type="uml:Class" xmi:id="_sd8OUDbdEdy0Rd6V_tf1-Q" name="ElType" templateParameter="_pjE_sDbdEdy0Rd6V_tf1-Q"/>
</ownedParameter>
<ownedParameter xmi:type="uml:TemplateParameter" xmi:id="_p6xuADbdEdy0Rd6V_tf1-Q" parameteredElement="_v7rggDbdEdy0Rd6V_tf1-Q">
<ownedParameteredElement xmi:type="uml:LiteralInteger" xmi:id="_v7rggDbdEdy0Rd6V_tf1-Q" name="nbElem" templateParameter="_p6xuADbdEdy0Rd6V_tf1-Q" value="-1"/>
</ownedParameter>
</ownedTemplateSignature>
<ownedAttribute xmi:type="uml:Property" xmi:id="_IPWqUDbfEdy0Rd6V_tf1-Q" name="current" visibility="private" isUnique="false">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_KThhgDbfEdy0Rd6V_tf1-Q" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_KTrSgDbfEdy0Rd6V_tf1-Q" value="1"/>
</ownedAttribute>
<ownedAttribute xmi:type="uml:Property" xmi:id="_ISLU0DbfEdy0Rd6V_tf1-Q" name="full" visibility="private" isUnique="false">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_R2oGkDbfEdy0Rd6V_tf1-Q" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_R2x3kDbfEdy0Rd6V_tf1-Q" value="1"/>
</ownedAttribute>
<ownedAttribute xmi:type="uml:Property" xmi:id="_IVAmYDbfEdy0Rd6V_tf1-Q" name="vector" visibility="private" type="_sd8OUDbdEdy0Rd6V_tf1-Q" isUnique="false">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_TUXP4DbfEdy0Rd6V_tf1-Q" name="nbElem"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_TUXP4TbfEdy0Rd6V_tf1-Q" name="nbElem" value="*"/>
</ownedAttribute>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_aslaoTbfEdy0Rd6V_tf1-Q" name="CircularBuffer" specification="_C1-AQDbeEdy0Rd6V_tf1-Q">
<language>C/C++</language>
<body></body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_fDZC0DbfEdy0Rd6V_tf1-Q" name="number" specification="_p1ESIDbeEdy0Rd6V_tf1-Q">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_sVwEcCBaEeOMKsPXBVC0DA" name="param_0" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sWZksCBaEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sWo1QCBaEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body>return (full ? nbElem : current);</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_grGngDbfEdy0Rd6V_tf1-Q" name="size" specification="_795fwDbeEdy0Rd6V_tf1-Q">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_sW8-UCBaEeOMKsPXBVC0DA" name="param_0" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sXd7sCBaEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sXo60CBaEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body>return nbElem;</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_1y9yEDbfEdy0Rd6V_tf1-Q" name="append" specification="_K37EgDbeEdy0Rd6V_tf1-Q">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_sX4ycCBaEeOMKsPXBVC0DA" name="el" type="_sd8OUDbdEdy0Rd6V_tf1-Q">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sYZIwCBaEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sYkH4CBaEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body>vector[current++] = el;&#xD;
&#xD;
if (current == nbElem)&#xD;
{&#xD;
current = 0; // if end is reached, start add the beginning&#xD;
full = TRUE; // only useful the first time&#xD;
}</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_6MJ_4DbfEdy0Rd6V_tf1-Q" name="getElement" specification="_XikLIDbeEdy0Rd6V_tf1-Q">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_sZD3ICBaEeOMKsPXBVC0DA" name="param_0" type="_sd8OUDbdEdy0Rd6V_tf1-Q" direction="return">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sZkNcCBaEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sZulgCBaEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_saHAACBaEeOMKsPXBVC0DA" name="relativeIndex">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_LTZesByeEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sanWUCBaEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sayVcCBaEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body> int index = -1;&#xD;
&#xD;
if ((relativeIndex >= 0) &amp;&amp; (relativeIndex &lt; nbElem))&#xD;
{&#xD;
if (full)&#xD;
{&#xD;
index = current + relativeIndex;&#xD;
if (index >= nbElem) {&#xD;
index -= nbElem;&#xD;
}&#xD;
}&#xD;
}&#xD;
else if ((relativeIndex &lt; 0) &amp;&amp; (relativeIndex >= -nbElem))&#xD;
{&#xD;
if (full || (relativeIndex >= -current))&#xD;
{&#xD;
index = current + relativeIndex;&#xD;
if (index &lt; 0) {&#xD;
index += nbElem;&#xD;
}&#xD;
}&#xD;
}&#xD;
&#xD;
if (index != -1) {&#xD;
return vector + index;&#xD;
}&#xD;
else {&#xD;
return NULL;&#xD;
}</body>
</ownedBehavior>
<ownedOperation xmi:type="uml:Operation" xmi:id="_C1-AQDbeEdy0Rd6V_tf1-Q" name="CircularBuffer" method="_aslaoTbfEdy0Rd6V_tf1-Q">
<ownedComment xmi:type="uml:Comment" xmi:id="_HCC_IDbeEdy0Rd6V_tf1-Q" annotatedElement="_C1-AQDbeEdy0Rd6V_tf1-Q">
<body>Create a circular buffer containing a certain number of objects of type&#xD;
ElType. The type and the number of elements are template parameters.</body>
</ownedComment>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="_K37EgDbeEdy0Rd6V_tf1-Q" name="append" method="_1y9yEDbfEdy0Rd6V_tf1-Q">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_NLvhQDbeEdy0Rd6V_tf1-Q" name="el" type="_sd8OUDbdEdy0Rd6V_tf1-Q">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_NMDDQDbeEdy0Rd6V_tf1-Q" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_NMMNMDbeEdy0Rd6V_tf1-Q" name="" value="1"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="_XikLIDbeEdy0Rd6V_tf1-Q" name="getElement" method="_6MJ_4DbfEdy0Rd6V_tf1-Q">
<ownedComment xmi:type="uml:Comment" xmi:id="_l-AhADbeEdy0Rd6V_tf1-Q" annotatedElement="_XikLIDbeEdy0Rd6V_tf1-Q">
<body>Get an element from the buffer. The index is relative to the last&#xD;
addition to the buffer: negative values address &quot;backward&quot; elements&#xD;
(-1 addresses the last added), positive values &quot;forward&quot; elements&#xD;
(only useful, if the buffer has already been completely filled).&#xD;
&#xD;
Thus, values in the range [-m_nbElem, m_nbElem] are possible.&#xD;
Returns NULL, if index is out of bounds or no element stored so far&#xD;
under this index.</body>
</ownedComment>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_Zd8SsDbeEdy0Rd6V_tf1-Q" name="param_0" type="_sd8OUDbdEdy0Rd6V_tf1-Q" direction="return">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_ZeP0sDbeEdy0Rd6V_tf1-Q" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ZeY-oDbeEdy0Rd6V_tf1-Q" name="" value="1"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_Zh93EDbeEdy0Rd6V_tf1-Q" name="relativeIndex">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_LTZesByeEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_ZiRZEDbeEdy0Rd6V_tf1-Q" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ZiajADbeEdy0Rd6V_tf1-Q" name="" value="1"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="_p1ESIDbeEdy0Rd6V_tf1-Q" name="number" method="_fDZC0DbfEdy0Rd6V_tf1-Q">
<ownedComment xmi:type="uml:Comment" xmi:id="_3GAjwDbeEdy0Rd6V_tf1-Q" annotatedElement="_p1ESIDbeEdy0Rd6V_tf1-Q">
<body>returns the number of elements currently in the buffer.</body>
</ownedComment>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_whfG0DbeEdy0Rd6V_tf1-Q" name="param_0" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_who30DbeEdy0Rd6V_tf1-Q" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_whyBwDbeEdy0Rd6V_tf1-Q" name="" value="1"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="_795fwDbeEdy0Rd6V_tf1-Q" name="size" method="_grGngDbfEdy0Rd6V_tf1-Q">
<ownedComment xmi:type="uml:Comment" xmi:id="_-SweUDbeEdy0Rd6V_tf1-Q" annotatedElement="_795fwDbeEdy0Rd6V_tf1-Q">
<body>returns the size of the buffer.</body>
</ownedComment>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_AV4zsDbfEdy0Rd6V_tf1-Q" name="param_0" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_AWMVsDbfEdy0Rd6V_tf1-Q" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_AWVfoDbfEdy0Rd6V_tf1-Q" name="" value="1"/>
</ownedParameter>
</ownedOperation>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_2bXLkDUuEdyDReAOQiyvOg" name="SetOf">
<ownedComment xmi:type="uml:Comment" xmi:id="_mbpXsDa8Edy_E4ZljVbr-g" annotatedElement="_2bXLkDUuEdyDReAOQiyvOg">
<body>Manage a set of pointers to an element type (passed as template instance)&#xD;
This class roughly resembles Objecteering's set_of macro and is used to&#xD;
migrate existing code easily to other case tools.&#xD;
&#xD;
The second class for the template instantiation needs to be a&#xD;
&quot;const variant&quot; of the first class.&#xD;
&#xD;
Caveat: this class uses dynamic memory allocation&#xD;
=> todo: create a purely static variant</body>
</ownedComment>
<ownedTemplateSignature xmi:type="uml:RedefinableTemplateSignature" xmi:id="_wxa4sDa8Edy_E4ZljVbr-g" parameter="_4MoGADa8Edy_E4ZljVbr-g">
<ownedParameter xmi:type="uml:ClassifierTemplateParameter" xmi:id="_4MoGADa8Edy_E4ZljVbr-g" parameteredElement="_O4b6IDa-Edy_E4ZljVbr-g">
<ownedParameteredElement xmi:type="uml:Class" xmi:id="_O4b6IDa-Edy_E4ZljVbr-g" name="T" templateParameter="_4MoGADa8Edy_E4ZljVbr-g"/>
</ownedParameter>
</ownedTemplateSignature>
<ownedAttribute xmi:type="uml:Property" xmi:id="_QYjFMDbCEdy0gLsbEakL5w" name="content" visibility="private" type="_O4b6IDa-Edy_E4ZljVbr-g" isUnique="false">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_koX0gDbCEdy0gLsbEakL5w"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_koX0gTbCEdy0gLsbEakL5w" value="1"/>
</ownedAttribute>
<ownedAttribute xmi:type="uml:Property" xmi:id="_QcH9oDbCEdy0gLsbEakL5w" name="cardinal_number" visibility="private" isUnique="false">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_kCh8gDbCEdy0gLsbEakL5w" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_kCh8gTbCEdy0gLsbEakL5w" value="1"/>
</ownedAttribute>
<ownedAttribute xmi:type="uml:Property" xmi:id="_QfZ7IDbCEdy0gLsbEakL5w" name="size_block" visibility="private" isUnique="false">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_lOq_gDbCEdy0gLsbEakL5w" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_lOq_gTbCEdy0gLsbEakL5w" value="1"/>
</ownedAttribute>
<ownedAttribute xmi:type="uml:Property" xmi:id="_QiiHoDbCEdy0gLsbEakL5w" name="real_size" visibility="private" isUnique="false">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_nEZLADbCEdy0gLsbEakL5w" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_nEZLATbCEdy0gLsbEakL5w" value="1"/>
</ownedAttribute>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_gW5foDa_Edy_E4ZljVbr-g" name="size" specification="_Q1uQwDa_Edy_E4ZljVbr-g">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_uJkLcCBaEeOMKsPXBVC0DA" name="param_0" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_uKD6sCBaEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_uKOSwCBaEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body>return cardinal_number; </body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_AT-gQDbAEdy0gLsbEakL5w" name="get" specification="_sUiWUDa_Edy0gLsbEakL5w">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_uKexcCBaEeOMKsPXBVC0DA" name="param_0" type="_O4b6IDa-Edy_E4ZljVbr-g" direction="return">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_uK_HwCBaEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_uLJf0CBaEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_uLUe8CBaEeOMKsPXBVC0DA" name="index">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_uL01QCBaEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_uL_NUCBaEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body>return content[index];</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_-zmLQDbCEdy0gLsbEakL5w" name="adjust_size" specification="_q4yCoDbCEdy0gLsbEakL5w">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_uMPsACBaEeOMKsPXBVC0DA" name="ret" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_uMvbQCBaEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_uM5zUCBaEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_uNFZgCBaEeOMKsPXBVC0DA" name="desired_size">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_uNlv0CBaEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_uN1ncCBaEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body>int size = 0x10;&#xD;
&#xD;
while (size &lt; desired_size)&#xD;
{&#xD;
if (size &lt; size_block) {&#xD;
size = size*2;&#xD;
}&#xD;
else {&#xD;
size += size_block;&#xD;
}&#xD;
}&#xD;
return size;&#xD;
</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_B6rQ8DbDEdy0gLsbEakL5w" name="SetOf" specification="_rnk_IDa-Edy_E4ZljVbr-g">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_uOUvoCBaEeOMKsPXBVC0DA" name="init_size">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_uO1F8CBaEeOMKsPXBVC0DA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_uO_eACBaEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_uPRx4CBaEeOMKsPXBVC0DA" name="init_size_block">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_uPyIMCBaEeOMKsPXBVC0DA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_uP8gQCBaEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body>size_block = init_size_block;&#xD;
real_size = adjust_size(init_size);&#xD;
content = new T [real_size];&#xD;
cardinal_number = 0;&#xD;
</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_IDLgQDbDEdy0gLsbEakL5w" name="SetOf" specification="_-M24MDa-Edy_E4ZljVbr-g">
<language>C/C++</language>
<body>delete [] content; </body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_KtqJgDbDEdy0gLsbEakL5w" name="find" specification="_DQoeoDbAEdy0gLsbEakL5w">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_uQZzQCBaEeOMKsPXBVC0DA" name="ret" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_uQ6JkCBaEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_uREhoCBaEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_uRPgwCBaEeOMKsPXBVC0DA" name="entry" type="_O4b6IDa-Edy_E4ZljVbr-g">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_uRvQACBaEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_uR5oECBaEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body>for (int i = 0; i &lt; cardinal_number; i++) {&#xD;
if (content[i] == entry) {&#xD;
return i;&#xD;
}&#xD;
}&#xD;
&#xD;
return -1;&#xD;
</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_NpQ_ADbDEdy0gLsbEakL5w" name="append" specification="_wQyUADbAEdy0gLsbEakL5w">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_uSRbgCBaEeOMKsPXBVC0DA" name="entry" type="_O4b6IDa-Edy_E4ZljVbr-g">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_uSxx0CBaEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_uS8w8CBaEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body>if (cardinal_number >= real_size)&#xD;
{&#xD;
real_size = adjust_size(cardinal_number + 1);&#xD;
T * new_content = new T [real_size];&#xD;
memcpy(new_content, content, cardinal_number * sizeof(T));&#xD;
delete [] content;&#xD;
content = new_content;&#xD;
}&#xD;
content[cardinal_number++] = (T) entry;&#xD;
</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_QvTi4DbDEdy0gLsbEakL5w" name="insert" specification="_b589wDbAEdy0gLsbEakL5w">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_uTUkYCBaEeOMKsPXBVC0DA" name="index">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_uT06sCBaEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_uT_50CBaEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_uUKR4CBaEeOMKsPXBVC0DA" name="entry" type="_O4b6IDa-Edy_E4ZljVbr-g">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_uUrPQCBaEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_uU2OYCBaEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body>if (cardinal_number >= real_size)&#xD;
{&#xD;
real_size = adjust_size(cardinal_number + 1);&#xD;
T * new_content = new T [real_size];&#xD;
memcpy(new_content, content, cardinal_number * sizeof(T));&#xD;
delete [] content;&#xD;
content = new_content;&#xD;
}&#xD;
if (index &lt; cardinal_number) {&#xD;
memmove(&#xD;
&amp;(content[index+1]),&#xD;
&amp;(content[index]),&#xD;
(cardinal_number-index) * sizeof(T));&#xD;
}&#xD;
content[index] = (T) entry;&#xD;
cardinal_number++;</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_S9KhkDbDEdy0gLsbEakL5w" name="eraseValue" specification="_Ch8-QDbBEdy0gLsbEakL5w">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_uVS6UCBaEeOMKsPXBVC0DA" name="ret" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_uVypkCBaEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_uV9osCBaEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_uWIAwCBaEeOMKsPXBVC0DA" name="entry" type="_O4b6IDa-Edy_E4ZljVbr-g">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_uWoXECBaEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_uWzWMCBaEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body>for (int i = 0; i &lt; cardinal_number; i++) {&#xD;
if (content[i] == entry) {&#xD;
erase(i);&#xD;
return true; // only erase first entry&#xD;
}&#xD;
}&#xD;
return false;&#xD;
</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_Vn8FwDbDEdy0gLsbEakL5w" name="erase" specification="_kEzC0DbBEdy0gLsbEakL5w">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_uXLJoCBaEeOMKsPXBVC0DA" name="index_from">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_uXsHACBaEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_uX3GICBaEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_uYCFQCBaEeOMKsPXBVC0DA" name="index_to">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_uYh0gCBaEeOMKsPXBVC0DA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_uYszoCBaEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body>if (index_to == -1) {&#xD;
index_to = index_from;&#xD;
}&#xD;
&#xD;
if (index_to >= cardinal_number) {&#xD;
// out of bounds&#xD;
return;&#xD;
} &#xD;
int remaining_elements = cardinal_number - (index_to + 1);&#xD;
cardinal_number -= (index_to - index_from + 1);&#xD;
&#xD;
if (remaining_elements > 0)&#xD;
{&#xD;
memmove(&#xD;
&amp;(content[index_from]),&#xD;
&amp;(content[index_to+1]),&#xD;
remaining_elements * sizeof(T)); &#xD;
}&#xD;
</body>
</ownedBehavior>
<ownedOperation xmi:type="uml:Operation" xmi:id="_rnk_IDa-Edy_E4ZljVbr-g" name="SetOf" method="_B6rQ8DbDEdy0gLsbEakL5w">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_smT4QDa-Edy_E4ZljVbr-g" name="init_size">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sm6VMDa-Edy_E4ZljVbr-g" name=""/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_snDfIDa-Edy_E4ZljVbr-g" name="" value="1"/>
<defaultValue xmi:type="uml:LiteralString" xmi:id="_wivRkDa-Edy_E4ZljVbr-g" value="0"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_sqyIkDa-Edy_E4ZljVbr-g" name="init_size_block">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_srFDgDa-Edy_E4ZljVbr-g" name=""/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_srO0gDa-Edy_E4ZljVbr-g" name="" value="1"/>
<defaultValue xmi:type="uml:LiteralString" xmi:id="_zVaNgDa-Edy_E4ZljVbr-g" value="DEFAULT_BLOCK_SIZE"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="_-M24MDa-Edy_E4ZljVbr-g" name="SetOf" method="_IDLgQDbDEdy0gLsbEakL5w"/>
<ownedOperation xmi:type="uml:Operation" xmi:id="_Q1uQwDa_Edy_E4ZljVbr-g" name="size" method="_gW5foDa_Edy_E4ZljVbr-g">
<ownedComment xmi:type="uml:Comment" xmi:id="_YCxtUDa_Edy_E4ZljVbr-g" annotatedElement="_Q1uQwDa_Edy_E4ZljVbr-g">
<body>Return the number of elements currently in the set</body>
</ownedComment>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_TBfkwDa_Edy_E4ZljVbr-g" name="param_0" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_TBzGwDa_Edy_E4ZljVbr-g" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_TB8QsDa_Edy_E4ZljVbr-g" name="" value="1"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="_sUiWUDa_Edy0gLsbEakL5w" name="get" method="_AT-gQDbAEdy0gLsbEakL5w">
<ownedComment xmi:type="uml:Comment" xmi:id="_5UCSoDa_Edy0gLsbEakL5w" annotatedElement="_sUiWUDa_Edy0gLsbEakL5w">
<body>Retrieve an element at index from the set</body>
</ownedComment>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_uAIVcDa_Edy0gLsbEakL5w" name="param_0" type="_O4b6IDa-Edy_E4ZljVbr-g" direction="return">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_uAuLUDa_Edy0gLsbEakL5w" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_uA38UDa_Edy0gLsbEakL5w" name="" value="1"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_uEc0wDa_Edy0gLsbEakL5w" name="index">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_uEvvsDa_Edy0gLsbEakL5w" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_uE5gsDa_Edy0gLsbEakL5w" name="" value="1"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="_DQoeoDbAEdy0gLsbEakL5w" name="find" method="_KtqJgDbDEdy0gLsbEakL5w">
<ownedComment xmi:type="uml:Comment" xmi:id="_Tez9cDbAEdy0gLsbEakL5w" annotatedElement="_DQoeoDbAEdy0gLsbEakL5w">
<body>find. Find an element in the set. The index of the first element that&#xD;
matches is returned. If the element cannot be found, -1 is returned.</body>
</ownedComment>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_I1EXkDbAEdy0gLsbEakL5w" name="ret" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_I1X5kDbAEdy0gLsbEakL5w" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_I1hDgDbAEdy0gLsbEakL5w" name="" value="1"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_Eq75cDbAEdy0gLsbEakL5w" name="entry" type="_O4b6IDa-Edy_E4ZljVbr-g">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_ErO0YDbAEdy0gLsbEakL5w" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ErYlYDbAEdy0gLsbEakL5w" name="" value="1"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="_b589wDbAEdy0gLsbEakL5w" name="insert" method="_QvTi4DbDEdy0gLsbEakL5w">
<ownedComment xmi:type="uml:Comment" xmi:id="_rSVdADbAEdy0gLsbEakL5w" annotatedElement="_b589wDbAEdy0gLsbEakL5w">
<body>Insert an element at position given by index into the set.</body>
</ownedComment>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_duxxYDbAEdy0gLsbEakL5w" name="index">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_du67UDbAEdy0gLsbEakL5w" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_dvEsUDbAEdy0gLsbEakL5w" name="" value="1"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_dxdR8DbAEdy0gLsbEakL5w" name="entry" type="_O4b6IDa-Edy_E4ZljVbr-g">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_dxnC8DbAEdy0gLsbEakL5w" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_dxwM4DbAEdy0gLsbEakL5w" name="" value="1"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="_wQyUADbAEdy0gLsbEakL5w" name="append" method="_NpQ_ADbDEdy0gLsbEakL5w">
<ownedComment xmi:type="uml:Comment" xmi:id="_yuJHQDbAEdy0gLsbEakL5w" annotatedElement="_wQyUADbAEdy0gLsbEakL5w">
<body>append an element to the set, it will occupy the last index.</body>
</ownedComment>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_0ywqYDbAEdy0gLsbEakL5w" name="entry" type="_O4b6IDa-Edy_E4ZljVbr-g">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_0zNWUDbAEdy0gLsbEakL5w" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_0zXHUDbAEdy0gLsbEakL5w" name="" value="1"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="_Ch8-QDbBEdy0gLsbEakL5w" name="eraseValue" method="_S9KhkDbDEdy0gLsbEakL5w">
<ownedComment xmi:type="uml:Comment" xmi:id="_GTy4MDbBEdy0gLsbEakL5w" annotatedElement="_Ch8-QDbBEdy0gLsbEakL5w">
<body>erase an element from the set based on its value. The first element&#xD;
with a matching value (not further elements that might match as well)&#xD;
will be removed from the list. Returns true, if a matching value is&#xD;
be found.</body>
</ownedComment>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_JXddgDbBEdy0gLsbEakL5w" name="ret" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_JXmncDbBEdy0gLsbEakL5w" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_JXwYcDbBEdy0gLsbEakL5w" name="" value="1"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_JbLf4DbBEdy0gLsbEakL5w" name="entry" type="_O4b6IDa-Edy_E4ZljVbr-g">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Jbea0DbBEdy0gLsbEakL5w" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_JboL0DbBEdy0gLsbEakL5w" name="" value="1"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="_kEzC0DbBEdy0gLsbEakL5w" name="erase" method="_Vn8FwDbDEdy0gLsbEakL5w">
<ownedComment xmi:type="uml:Comment" xmi:id="_og-TMDbBEdy0gLsbEakL5w" annotatedElement="_kEzC0DbBEdy0gLsbEakL5w">
<body>Erase entries from the set based on an &quot;from&quot; and &quot;to&quot; index. If&#xD;
the latter is not supplied, only one element is erased (to = from).&#xD;
Please note that subsequent entries change their position.</body>
</ownedComment>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_rlE9YDbBEdy0gLsbEakL5w" name="index_from">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rlX4UDbBEdy0gLsbEakL5w" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rlhpUDbBEdy0gLsbEakL5w" name="" value="1"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_rogE0DbBEdy0gLsbEakL5w" name="index_to">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_EFv20DbCEdy0gLsbEakL5w"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_EF5n0DbCEdy0gLsbEakL5w" value="1"/>
<defaultValue xmi:type="uml:LiteralInteger" xmi:id="_sCw8MCBIEeOBrb_t_69W4Q" value="-1"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="_q4yCoDbCEdy0gLsbEakL5w" name="adjust_size" visibility="private" method="_-zmLQDbCEdy0gLsbEakL5w">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_ucLQ4DbCEdy0gLsbEakL5w" name="ret" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_uceL0DbCEdy0gLsbEakL5w" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ucn80DbCEdy0gLsbEakL5w" name="" value="1"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_ugyrIDbCEdy0gLsbEakL5w" name="desired_size">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_uhFmEDbCEdy0gLsbEakL5w" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_uhPXEDbCEdy0gLsbEakL5w" name="" value="1"/>
</ownedParameter>
</ownedOperation>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_yZpCcDa2Edyv9PRkTrTu0A" name="Association_BOL_ListCell" memberEnd="_yaiaUDa2Edyv9PRkTrTu0A _ya_GQTa2Edyv9PRkTrTu0A">
<ownedEnd xmi:type="uml:Property" xmi:id="_ya_GQTa2Edyv9PRkTrTu0A" name="bOL" type="_xxCKcDUuEdyDReAOQiyvOg" isUnique="false" association="_yZpCcDa2Edyv9PRkTrTu0A">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_ybbyMTa2Edyv9PRkTrTu0A"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ybbyMDa2Edyv9PRkTrTu0A" value="*"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_0wmSwDa2Edyv9PRkTrTu0A" name="Association_BOL_ListCell" memberEnd="_0wvcsDa2Edyv9PRkTrTu0A _0xV5oDa2Edyv9PRkTrTu0A">
<ownedEnd xmi:type="uml:Property" xmi:id="_0xV5oDa2Edyv9PRkTrTu0A" name="bOL" type="_xxCKcDUuEdyDReAOQiyvOg" isUnique="false" association="_0wmSwDa2Edyv9PRkTrTu0A">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_0xylkDa2Edyv9PRkTrTu0A"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_0xo0kTa2Edyv9PRkTrTu0A" value="*"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_1ZuIQDa2Edyv9PRkTrTu0A" name="Association_BOL_ListCell" memberEnd="_1ZuIQTa2Edyv9PRkTrTu0A _1aUlMTa2Edyv9PRkTrTu0A">
<ownedEnd xmi:type="uml:Property" xmi:id="_1aUlMTa2Edyv9PRkTrTu0A" name="bOL" type="_xxCKcDUuEdyDReAOQiyvOg" isUnique="false" association="_1ZuIQDa2Edyv9PRkTrTu0A">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_1angIja2Edyv9PRkTrTu0A"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_1angITa2Edyv9PRkTrTu0A" value="*"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_2AnwMDa2Edyv9PRkTrTu0A" name="Association_BOL_ListCell" memberEnd="_2AnwMTa2Edyv9PRkTrTu0A _2BD1Eja2Edyv9PRkTrTu0A">
<ownedEnd xmi:type="uml:Property" xmi:id="_2BD1Eja2Edyv9PRkTrTu0A" name="bOL" type="_xxCKcDUuEdyDReAOQiyvOg" isUnique="false" association="_2AnwMDa2Edyv9PRkTrTu0A">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_2BghATa2Edyv9PRkTrTu0A"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_2BghADa2Edyv9PRkTrTu0A" value="*"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_3cG2wDa2Edyv9PRkTrTu0A" name="Association_BOL_ListCell" memberEnd="_3cG2wTa2Edyv9PRkTrTu0A _3cjisTa2Edyv9PRkTrTu0A">
<ownedEnd xmi:type="uml:Property" xmi:id="_3cjisTa2Edyv9PRkTrTu0A" name="bOL" type="_xxCKcDUuEdyDReAOQiyvOg" isUnique="false" association="_3cG2wDa2Edyv9PRkTrTu0A">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_3dAOoDa2Edyv9PRkTrTu0A"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_3c3Esja2Edyv9PRkTrTu0A" value="*"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_8nOQwDa2Edyv9PRkTrTu0A" name="Association_BOL_ListCell" memberEnd="_8nYBwDa2Edyv9PRkTrTu0A _8n0Goja2Edyv9PRkTrTu0A">
<ownedEnd xmi:type="uml:Property" xmi:id="_8n0Goja2Edyv9PRkTrTu0A" name="bOL" type="_xxCKcDUuEdyDReAOQiyvOg" isUnique="false" association="_8nOQwDa2Edyv9PRkTrTu0A">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_8oajkDa2Edyv9PRkTrTu0A"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_8oQykja2Edyv9PRkTrTu0A" value="*"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_JPxawDa5Edyv9PRkTrTu0A" name="Association_ListCell_ListCell" memberEnd="_JP6ksDa5Edyv9PRkTrTu0A _JQOGsja5Edyv9PRkTrTu0A">
<ownedEnd xmi:type="uml:Property" xmi:id="_JQOGsja5Edyv9PRkTrTu0A" name="listCell" type="_zOJVcDaeEdyC6dXxO2UOEQ" isUnique="false" association="_JPxawDa5Edyv9PRkTrTu0A">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_JQqLkDa5Edyv9PRkTrTu0A"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_JQhBoja5Edyv9PRkTrTu0A" value="*"/>
</ownedEnd>
</packagedElement>
</packagedElement>
<packagedElement xmi:type="uml:Package" xmi:id="_soXY0C-OEdySSa8YESkO2w" name="Synchronization">
<ownedComment xmi:type="uml:Comment" xmi:id="_MY8NMFC6EdyqzLG48ixyqA" annotatedElement="_hZUhoFC4EdyqzLG48ixyqA">
<body>TODO :
Incomplete attribute and operation definitions</body>
</ownedComment>
<packagedElement xmi:type="uml:Class" xmi:id="_D8njME_gEdy2tpS719xBwQ" name="Semaphore">
<ownedComment xmi:type="uml:Comment" xmi:id="_DSvP4FF5EdyxP5ejovTmBw" annotatedElement="_D8njME_gEdy2tpS719xBwQ">
<body>Manages system semaphores with counters (mainly based on Posix semaphores)</body>
</ownedComment>
<ownedAttribute xmi:type="uml:Property" xmi:id="_FVU9QFF6EdyxP5ejovTmBw" name="m_sema" visibility="private" type="_IbQcUFd7Ed-9TNLvplUFDQ" isUnique="false">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_FVxpMFF6EdyxP5ejovTmBw" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_FVxpMVF6EdyxP5ejovTmBw" value="1"/>
</ownedAttribute>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_OSIgMFF6EdyxP5ejovTmBw" name="Semaphore" specification="_aemSgFF5EdyxP5ejovTmBw">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_0FtZwCBaEeOMKsPXBVC0DA" name="initValue">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_0GNwECBaEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_0GYvMCBaEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body> TRACEpr (F7);&#xD;
PR (&quot;Semaphore::Semaphore (&quot; &lt;&lt; initValue &lt;&lt; &quot;)&quot; &lt;&lt; showI);&#xD;
&#xD;
errno = 0;&#xD;
#if defined SYNCHRO_Solaris&#xD;
errno = sema_init (&amp;m_sema, initValue, USYNC_THREAD, NULL);&#xD;
#else&#xD;
sem_init (&amp;m_sema, 0, initValue); // function sets errno on error&#xD;
#endif&#xD;
&#xD;
if (errno) {&#xD;
OSAL_ERROR (&quot;Semaphore init failed&quot;);&#xD;
}&#xD;
</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_P_9T8FF6EdyxP5ejovTmBw" name="Semaphore" specification="_ak3SkFF5EdyxP5ejovTmBw">
<language>C/C++</language>
<body> TRACEpr (F7);&#xD;
PR (&quot;Semaphore::~Semaphore ()&quot; &lt;&lt; showI);&#xD;
&#xD;
errno = 0;&#xD;
#if defined SYNCHRO_Solaris&#xD;
errno = sema_destroy (&amp;m_sema);&#xD;
#else&#xD;
sem_destroy (&amp;m_sema); // function sets errno on error&#xD;
#endif&#xD;
&#xD;
if (errno) {&#xD;
OSAL_ERROR (&quot;&quot;);&#xD;
}&#xD;
</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_RrsdAFF6EdyxP5ejovTmBw" name="post" specification="_lASvoFF5EdyxP5ejovTmBw">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_0GutcCBaEeOMKsPXBVC0DA" name="param_0" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_0HOcsCBaEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_0HZb0CBaEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body> TRACEpr (F7);&#xD;
PR (&quot;Semaphore::post ()&quot; &lt;&lt; showI);&#xD;
&#xD;
errno = 0;&#xD;
&#xD;
#if defined SYNCHRO_Solaris&#xD;
errno = sema_post (&amp;m_sema);&#xD;
#else&#xD;
sem_post (&amp;m_sema); // function sets errno if r not 0&#xD;
#endif&#xD;
&#xD;
if (errno) {&#xD;
OSAL_ERROR (&quot;&quot;); }&#xD;
&#xD;
return errno;&#xD;
</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_Ty2WwFF6EdyxP5ejovTmBw" name="wait" specification="_0TcwoFF5EdyxP5ejovTmBw">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_0HpTcCBaEeOMKsPXBVC0DA" name="param_0" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_0IJpwCBaEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_0IUo4CBaEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body> TRACEpr (F7);&#xD;
PR (&quot;Semaphore::wait ()&quot; &lt;&lt; showI);&#xD;
int r;&#xD;
errno = 0;&#xD;
for (;;)&#xD;
{&#xD;
#if defined SYNCHRO_Solaris&#xD;
errno = sema_wait (&amp;m_sema);&#xD;
if ((errno == 0) || (errno == EBUSY))&#xD;
break;&#xD;
#elif defined SYNCHRO_POSIX4 || defined SYNCHRO_VxWorks&#xD;
r = sem_wait (&amp;m_sema); // sem_wait sets errno if r not 0&#xD;
if ((r == 0) || (errno == EAGAIN))&#xD;
break;&#xD;
#else&#xD;
#error define synchronization strategy&#xD;
#endif&#xD;
if (errno != EINTR)&#xD;
OSAL_ERROR (&quot;wait returned error code&quot;);&#xD;
errno = 0;&#xD;
}&#xD;
&#xD;
return errno;&#xD;
</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_VmxygFF6EdyxP5ejovTmBw" name="tryWait" specification="_skbPcFF5EdyxP5ejovTmBw">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_0IlHkCBaEeOMKsPXBVC0DA" name="param_0" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_0JGE8CBaEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_0JQdACBaEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body> TRACEpr (F7);&#xD;
PR (&quot;Semaphore::trywait ()&quot; &lt;&lt; showI);&#xD;
int r;&#xD;
errno = 0;&#xD;
&#xD;
for (;;)&#xD;
{&#xD;
#if defined SYNCHRO_Solaris&#xD;
errno = sema_trywait (&amp;m_sema);&#xD;
if ((errno == 0) || (errno == EBUSY))&#xD;
break;&#xD;
#elif defined SYNCHRO_POSIX4 || defined SYNCHRO_VxWorks&#xD;
r = sem_trywait (&amp;m_sema); // sem_trywait sets errno if r not 0&#xD;
if ((r == 0) || (errno == EAGAIN))&#xD;
break;&#xD;
#else&#xD;
#error define synchronization strategy&#xD;
#endif&#xD;
if (errno != EINTR)&#xD;
OSAL_ERROR (&quot;tryWait returned error code&quot;);&#xD;
errno = 0;&#xD;
}&#xD;
PR (&quot;Semaphore::tryWait () - returns value (errno): &quot; &lt;&lt; errno &lt;&lt; showI);&#xD;
&#xD;
return errno;&#xD;
</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_W5L1kFF6EdyxP5ejovTmBw" name="getValue" specification="_76k6EFF5EdyxP5ejovTmBw">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_0JiJ0CBaEeOMKsPXBVC0DA" name="param_0" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_0KB5ECBaEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_0KNfQCBaEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body> TRACEpr (F7);&#xD;
PR (&quot;Semaphore::getValue ()&quot; &lt;&lt; showI);&#xD;
&#xD;
int value;&#xD;
sem_getvalue ((sem_t*) &amp;m_sema, &amp;value);&#xD;
return value;&#xD;
</body>
</ownedBehavior>
<ownedOperation xmi:type="uml:Operation" xmi:id="_aemSgFF5EdyxP5ejovTmBw" name="Semaphore" method="_OSIgMFF6EdyxP5ejovTmBw">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_fQq6YFF5EdyxP5ejovTmBw" name="initValue">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_fQ-cYFF5EdyxP5ejovTmBw" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_fRRXUFF5EdyxP5ejovTmBw" name="" value="1"/>
<defaultValue xmi:type="uml:LiteralInteger" xmi:id="_yfE3UCBTEeOBrb_t_69W4Q"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="_ak3SkFF5EdyxP5ejovTmBw" name="Semaphore" method="_P_9T8FF6EdyxP5ejovTmBw"/>
<ownedOperation xmi:type="uml:Operation" xmi:id="_lASvoFF5EdyxP5ejovTmBw" name="post" method="_RrsdAFF6EdyxP5ejovTmBw">
<ownedComment xmi:type="uml:Comment" xmi:id="_qJT34FF5EdyxP5ejovTmBw" annotatedElement="_lASvoFF5EdyxP5ejovTmBw">
<body>This operation unlocks the semaphore.&#xD;
It increments atomically the counter and if other threads are&#xD;
blocked waiting, it unblocks one of these.</body>
</ownedComment>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_m8aeEFF5EdyxP5ejovTmBw" name="param_0" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_m83KAFF5EdyxP5ejovTmBw" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_m9KE8FF5EdyxP5ejovTmBw" name="" value="1"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="_skbPcFF5EdyxP5ejovTmBw" name="tryWait" method="_VmxygFF6EdyxP5ejovTmBw">
<ownedComment xmi:type="uml:Comment" xmi:id="_uciAkFF5EdyxP5ejovTmBw" annotatedElement="_skbPcFF5EdyxP5ejovTmBw">
<body>This operation locks the semaphore only if that semaphore is currently&#xD;
not locked - that is, if the semaphore value is currently positive.&#xD;
&#xD;
The underlying posix function is executed in a loop, since it could&#xD;
legally return with an error code, if it is interrupted by a&#xD;
signal (EINTR).&#xD;
&#xD;
Returns 0 on success or the error code</body>
</ownedComment>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_wZs34FF5EdyxP5ejovTmBw" name="param_0" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_waJj0FF5EdyxP5ejovTmBw" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_wadF0FF5EdyxP5ejovTmBw" name="" value="1"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="_0TcwoFF5EdyxP5ejovTmBw" name="wait" method="_Ty2WwFF6EdyxP5ejovTmBw">
<ownedComment xmi:type="uml:Comment" xmi:id="_4IRtIFF5EdyxP5ejovTmBw" annotatedElement="_0TcwoFF5EdyxP5ejovTmBw">
<body>This operation locks the semaphore.&#xD;
If the counter is zero, this method blocks the current thread until the&#xD;
counter is positive. Afterwords it decrements the counter atomically.&#xD;
&#xD;
The underlying posix function is executed in a loop, since it could&#xD;
legally return with an error code, if it is interrupted by a&#xD;
signal (EINTR).&#xD;
&#xD;
Returns 0 on success or the error code</body>
</ownedComment>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_1ZMQsFF5EdyxP5ejovTmBw" name="param_0" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_1Zo8oFF5EdyxP5ejovTmBw" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_1Z73kFF5EdyxP5ejovTmBw" name="" value="1"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="_76k6EFF5EdyxP5ejovTmBw" name="getValue" method="_W5L1kFF6EdyxP5ejovTmBw">
<ownedComment xmi:type="uml:Comment" xmi:id="_9Z8bEFF5EdyxP5ejovTmBw" annotatedElement="_76k6EFF5EdyxP5ejovTmBw">
<body>Provide access to the semaphore counter</body>
</ownedComment>
<ownedParameter xmi:type="uml:Parameter" xmi:id="__SpCEFF5EdyxP5ejovTmBw" name="param_0" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="__TO38FF5EdyxP5ejovTmBw" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="__TYo8FF5EdyxP5ejovTmBw" name="" value="1"/>
</ownedParameter>
</ownedOperation>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_jXTGsFC3EdyqzLG48ixyqA" name="Barrier">
<ownedComment xmi:type="uml:Comment" xmi:id="_lnirAFC3EdyqzLG48ixyqA" annotatedElement="_jXTGsFC3EdyqzLG48ixyqA">
<body>Allows to synchronize N threads: N-1 threads arriving at the barrier&#xD;
are blocked, the last arriving thread unblocks all threads.&#xD;
&#xD;
Only one thread creates the barrier, other threads should only use&#xD;
references.&#xD;
In addition to an inefficient (file based!) implementation, we use&#xD;
directly the pthread barrier.</body>
</ownedComment>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_neizcFC4EdyqzLG48ixyqA" name="_name" specification="_VNO_QFC4EdyqzLG48ixyqA">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_1miTUCBaEeOMKsPXBVC0DA" name="param_0" type="_WXH_4DO2EdyG-pUz-bb-Lg" direction="return">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_1nLMgCBaEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_1nWLoCBaEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body>return m_name;&#xD;
}&#xD;
</body>
</ownedBehavior>
<ownedOperation xmi:type="uml:Operation" xmi:id="_FFwlYFC4EdyqzLG48ixyqA" name="Barrier">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_IsliIFC4EdyqzLG48ixyqA" name="name" type="_WXH_4DO2EdyG-pUz-bb-Lg">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_ItCOEFC4EdyqzLG48ixyqA" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ItLYAFC4EdyqzLG48ixyqA" name="" value="1"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_IxM8YFC4EdyqzLG48ixyqA" name="nb">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_IxpoUFC4EdyqzLG48ixyqA" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_IxzZUFC4EdyqzLG48ixyqA" name="" value="1"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="_FQyJoFC4EdyqzLG48ixyqA" name="Barrier"/>
<ownedOperation xmi:type="uml:Operation" xmi:id="_VNO_QFC4EdyqzLG48ixyqA" name="_name" method="_neizcFC4EdyqzLG48ixyqA">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_XPBQ0FC4EdyqzLG48ixyqA" name="param_0" type="_WXH_4DO2EdyG-pUz-bb-Lg" direction="return">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_XPUy0FC4EdyqzLG48ixyqA" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_XPd8wFC4EdyqzLG48ixyqA" name="" value="1"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="_hZUhoFC4EdyqzLG48ixyqA" name="wait">
<ownedComment xmi:type="uml:Comment" xmi:id="_i_1zgFC4EdyqzLG48ixyqA" annotatedElement="_hZUhoFC4EdyqzLG48ixyqA">
<body>block, until the number of threads specified in the constructor&#xD;
invoke this method</body>
</ownedComment>
</ownedOperation>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_qIyBkFC3EdyqzLG48ixyqA" name="Lock">
<ownedComment xmi:type="uml:Comment" xmi:id="_o43bIFFiEdyjobZYtXo9NQ" annotatedElement="_qIyBkFC3EdyqzLG48ixyqA">
<body>Interface to lock a file (like flock in POSIX)&#xD;
This class is currently a candidate for being removed from the&#xD;
virtual machine, since file based locking is seldom relevant in&#xD;
embedded system. Its main use is the inefficient fallback implementation&#xD;
variant of the barrier (if Posix functions are not available)</body>
</ownedComment>
<ownedAttribute xmi:type="uml:Property" xmi:id="_8z5vwFFuEdyjobZYtXo9NQ" name="m_lockType" visibility="private" isUnique="false">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_80WbsFFuEdyjobZYtXo9NQ" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_80gMsFFuEdyjobZYtXo9NQ" value="1"/>
</ownedAttribute>
<ownedAttribute xmi:type="uml:Property" xmi:id="_87gMkFFuEdyjobZYtXo9NQ" name="m_flock" visibility="private" isUnique="false">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_8784gFFuEdyjobZYtXo9NQ" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_8784gVFuEdyjobZYtXo9NQ" value="1"/>
</ownedAttribute>
<ownedAttribute xmi:type="uml:Property" xmi:id="_9BdqoFFuEdyjobZYtXo9NQ" name="m_fd" visibility="private" isUnique="false">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_9B6WkFFuEdyjobZYtXo9NQ" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_9B6WkVFuEdyjobZYtXo9NQ" value="1"/>
</ownedAttribute>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_JHu44FFvEdyjobZYtXo9NQ" name="initFileDesc" specification="_GFqrgFFuEdyjobZYtXo9NQ">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_27QqkCBaEeOMKsPXBVC0DA" name="fd">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_27xA4CBaEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_278AACBaEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body> m_fd = fd;</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_OcrkUVFvEdyjobZYtXo9NQ" name="Lock" specification="_F6fWQFFuEdyjobZYtXo9NQ">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_28L3oCBaEeOMKsPXBVC0DA" name="fileDesc">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_28sN8CBaEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_283NECBaEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_29CMMCBaEeOMKsPXBVC0DA" name="exclusive">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_29jJkCBaEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_29uIsCBaEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body> TRACEpr (VM);&#xD;
PR (&quot;Lock::Lock (...)&quot; &lt;&lt; showI);&#xD;
&#xD;
// probably not a good idea to reset a global error variable here&#xD;
// errno = 0;&#xD;
&#xD;
/* #if defined SYNCHRO_VxWorks // it compiles on VxWorks &#xD;
OSAL_ERROR (&quot;Not implemented for VxWorks&quot;);&#xD;
#endif */&#xD;
</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_RgCAkFFvEdyjobZYtXo9NQ" name="take" specification="_GNaSQFFuEdyjobZYtXo9NQ">
<language>C/C++</language>
<body> TRACEpr (VM);&#xD;
PR (&quot;Lock::take&quot; &lt;&lt; showI);&#xD;
&#xD;
m_flock.l_type = m_lockType;&#xD;
m_flock.l_whence = 0;&#xD;
m_flock.l_start = (off_t) 0;&#xD;
m_flock.l_len = (off_t) 0;&#xD;
&#xD;
if (fcntl (m_fd, F_SETLKW, &amp;m_flock) &lt; 0) { // wait if hold&#xD;
OSAL_ERROR (&quot;ON fcntl(m_fd, F_SETLKW:F_WRLCK) &quot;);&#xD;
}&#xD;
</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_Th05MFFvEdyjobZYtXo9NQ" name="tryTake" specification="_GSVOgFFuEdyjobZYtXo9NQ">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_2-Df4CBaEeOMKsPXBVC0DA" name="param_0" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_2-jPICBaEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_2-uOQCBaEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body> TRACEpr (VM);&#xD;
&#xD;
int r;&#xD;
m_flock.l_type = m_lockType;&#xD;
m_flock.l_whence = 0;&#xD;
m_flock.l_start = (off_t) 0;&#xD;
m_flock.l_len = (off_t) 0;&#xD;
&#xD;
while ((r = fcntl (m_fd, F_SETLK, &amp;m_flock)) &lt; 0) // NO wait if hold&#xD;
{&#xD;
if (errno == 0 || errno == EAGAIN)&#xD;
break;&#xD;
if (errno != EINTR)&#xD;
OSAL_ERROR (&quot;&quot;);&#xD;
errno = 0;&#xD;
}&#xD;
&#xD;
PR (&quot;Lock::tryTake () - return value (errno): &quot; &lt;&lt; errno &lt;&lt; showI);&#xD;
return errno;&#xD;
</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_V21owFFvEdyjobZYtXo9NQ" name="release" specification="_GZx6UFFuEdyjobZYtXo9NQ">
<language>C/C++</language>
<body> TRACEpr (VM);&#xD;
PR (&quot;Lock::release ()&quot; &lt;&lt; showI);&#xD;
&#xD;
m_flock.l_type = F_UNLCK;&#xD;
m_flock.l_whence = 0;&#xD;
m_flock.l_start = (off_t) 0;&#xD;
m_flock.l_len = (off_t) 0;&#xD;
&#xD;
if (fcntl (m_fd, F_SETLK, &amp;m_flock) &lt; 0) {&#xD;
OSAL_ERROR (&quot;&quot;);&#xD;
}&#xD;
</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_XjxEoFFvEdyjobZYtXo9NQ" name="getInfo" specification="_Ge2AgFFuEdyjobZYtXo9NQ">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_2_DlcCBaEeOMKsPXBVC0DA" name="param_0" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_2_jUsCBaEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_2_uT0CBaEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_2_5S8CBaEeOMKsPXBVC0DA" name="infoP" direction="inout">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_3AUJsCBaEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_3Afv4CBaEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body> TRACEpr (VM);&#xD;
PR (&quot;Lock::getInfo&quot; &lt;&lt; showI);&#xD;
&#xD;
infoP->l_whence = 0;&#xD;
infoP->l_start = 0L;&#xD;
infoP->l_len = 0L;&#xD;
infoP->l_type = m_lockType;&#xD;
if (fcntl (m_fd, F_GETLK, infoP) == -1) {&#xD;
OSAL_ERROR (&quot;&quot;);&#xD;
}&#xD;
&#xD;
// return TRUE, if lock busy&#xD;
return (infoP->l_type != F_UNLCK);&#xD;
</body>
</ownedBehavior>
<ownedOperation xmi:type="uml:Operation" xmi:id="_F6fWQFFuEdyjobZYtXo9NQ" name="Lock" method="_OcrkUVFvEdyjobZYtXo9NQ">
<ownedComment xmi:type="uml:Comment" xmi:id="_KCr6sFFuEdyjobZYtXo9NQ" annotatedElement="_F6fWQFFuEdyjobZYtXo9NQ">
<body>Create a lock for a file that is identified by a file descriptor. This&#xD;
descriptor can be obtained for instance using the &quot;open&quot;. The second,&#xD;
optional parameter denotes whether the lock is also exclusive for&#xD;
reading (otherwise, only the write access is protected). The default&#xD;
value &quot;true&quot; guarantees exlusive read and write access.</body>
</ownedComment>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_N9oGQFFuEdyjobZYtXo9NQ" name="fileDesc">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_N-EyMFFuEdyjobZYtXo9NQ" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_N-N8IFFuEdyjobZYtXo9NQ" name="" value="1"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_OATm0FFuEdyjobZYtXo9NQ" name="exclusive">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_OAwSwFFuEdyjobZYtXo9NQ" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_OA6DwFFuEdyjobZYtXo9NQ" name="" value="1"/>
<defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_ywEMkCBGEeOBrb_t_69W4Q" value="true"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="_GFqrgFFuEdyjobZYtXo9NQ" name="initFileDesc" method="_JHu44FFvEdyjobZYtXo9NQ">
<ownedComment xmi:type="uml:Comment" xmi:id="_bphOgFFuEdyjobZYtXo9NQ" annotatedElement="_GFqrgFFuEdyjobZYtXo9NQ">
<body>this method can be called to initialize the file descriptor, if it&#xD;
is not yet known at creation time. This should only be called once&#xD;
after construction (and before take/release).</body>
</ownedComment>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_d8c6cFFuEdyjobZYtXo9NQ" name="fd">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_d84_UFFuEdyjobZYtXo9NQ" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_d9MhUFFuEdyjobZYtXo9NQ" name="" value="1"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="_GNaSQFFuEdyjobZYtXo9NQ" name="take" method="_RgCAkFFvEdyjobZYtXo9NQ">
<ownedComment xmi:type="uml:Comment" xmi:id="_itxUYFFuEdyjobZYtXo9NQ" annotatedElement="_GNaSQFFuEdyjobZYtXo9NQ">
<body>take a lock. This method blocks, until the lock is available</body>
</ownedComment>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="_GSVOgFFuEdyjobZYtXo9NQ" name="tryTake" method="_Th05MFFvEdyjobZYtXo9NQ">
<ownedComment xmi:type="uml:Comment" xmi:id="_mxzKgFFuEdyjobZYtXo9NQ" annotatedElement="_GSVOgFFuEdyjobZYtXo9NQ">
<body>a non-blocking variant of take. It returns the error code of the&#xD;
underlying function fcntl or 0, if take was successfull</body>
</ownedComment>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_n7HjAFFuEdyjobZYtXo9NQ" name="param_0" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_n7kO8FFuEdyjobZYtXo9NQ" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_n73J4FFuEdyjobZYtXo9NQ" name="" value="1"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="_GZx6UFFuEdyjobZYtXo9NQ" name="release" method="_V21owFFvEdyjobZYtXo9NQ">
<ownedComment xmi:type="uml:Comment" xmi:id="_sj8vUFFuEdyjobZYtXo9NQ" annotatedElement="_GZx6UFFuEdyjobZYtXo9NQ">
<body>release the lock</body>
</ownedComment>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="_Ge2AgFFuEdyjobZYtXo9NQ" name="getInfo" method="_XjxEoFFvEdyjobZYtXo9NQ">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_wsTEwFFuEdyjobZYtXo9NQ" name="param_0" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_wsvwsFFuEdyjobZYtXo9NQ" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ws46oFFuEdyjobZYtXo9NQ" name="" value="1"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_wwdzEFFuEdyjobZYtXo9NQ" name="infoP" direction="inout">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_wwxVEFFuEdyjobZYtXo9NQ" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_wxEQAFFuEdyjobZYtXo9NQ" name="" value="1"/>
</ownedParameter>
</ownedOperation>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_rsw80FC3EdyqzLG48ixyqA" name="p_Synchronization">
<nestedClassifier xmi:type="uml:Enumeration" xmi:id="__JUq0FF1EdyxP5ejovTmBw" name="Scope">
<ownedLiteral xmi:type="uml:EnumerationLiteral" xmi:id="_BnRT8FF2EdyxP5ejovTmBw" name="IntraProcess"/>
<ownedLiteral xmi:type="uml:EnumerationLiteral" xmi:id="_DFwEIFF2EdyxP5ejovTmBw" name="InterProcess"/>
</nestedClassifier>
</packagedElement>
<packagedElement xmi:type="uml:Dependency" xmi:id="_wNG7gFC3EdyqzLG48ixyqA" name="FromBarriertop_Synchronization" client="_jXTGsFC3EdyqzLG48ixyqA" supplier="_rsw80FC3EdyqzLG48ixyqA"/>
<packagedElement xmi:type="uml:Dependency" xmi:id="_whFAYFC3EdyqzLG48ixyqA" name="FromBarriertoLock" client="_jXTGsFC3EdyqzLG48ixyqA" supplier="_qIyBkFC3EdyqzLG48ixyqA"/>
<packagedElement xmi:type="uml:Dependency" xmi:id="_z0-aEFC3EdyqzLG48ixyqA" name="FromBarriertoBString200" client="_jXTGsFC3EdyqzLG48ixyqA" supplier="_0AwCEDO0EdyG-pUz-bb-Lg"/>
<packagedElement xmi:type="uml:Class" xmi:id="_Jj9usFC7EdyqzLG48ixyqA" name="Mutex">
<ownedComment xmi:type="uml:Comment" xmi:id="_wP5AIFFvEdyjobZYtXo9NQ" annotatedElement="_Jj9usFC7EdyqzLG48ixyqA">
<body>Allows to manage system locks to prevent threads from simultaneous&#xD;
execution of the same section (see CriticalSection)</body>
</ownedComment>
<ownedAttribute xmi:type="uml:Property" xmi:id="_PL5ogFF0EdyjobZYtXo9NQ" name="m_mutexS" visibility="public" type="_uWQvMBD4EeG3cfLoiI6G7g" isUnique="false">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_PMgFcFF0EdyjobZYtXo9NQ" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_PMgFcVF0EdyjobZYtXo9NQ" value="1"/>
</ownedAttribute>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_ZOvmcFF0EdyjobZYtXo9NQ" name="Mutex" specification="_4NODEFFvEdyjobZYtXo9NQ">
<language>C/C++</language>
<body>creatEff (IntraProcess);</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_a4i10FF0EdyjobZYtXo9NQ" name="lock" specification="_-Hj6kFFvEdyjobZYtXo9NQ">
<language>C/C++</language>
<body>TRACEpr (F7);&#xD;
PR (&quot;before Mutex::lock()&quot; &lt;&lt; showI);&#xD;
#if defined SYNCHRO_POSIX4&#xD;
int error = pthread_mutex_lock (&amp;m_mutexS);&#xD;
&#xD;
#elif defined SYNCHRO_Solaris&#xD;
int error = mutex_lock (&amp;m_mutexS);&#xD;
&#xD;
#elif defined SYNCHRO_VxWorks&#xD;
int error = 0;&#xD;
if (semTake (m_mutexS, WAIT_FOREVER) != OK)&#xD;
OSAL_ERROR (&quot;ON semTake()&quot;);&#xD;
#endif&#xD;
&#xD;
if (error) { // == EDEADLK : the current thread already owns the mutex&#xD;
OSAL_ERROR (&quot;can't lock mutex&quot;);&#xD;
}&#xD;
</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_dWfe8FF0EdyjobZYtXo9NQ" name="unlock" specification="_DEz3sFFwEdyjobZYtXo9NQ">
<language>C/C++</language>
<body>TRACEpr (F7);&#xD;
PR (&quot;Mutex::unlock ()&quot; &lt;&lt; showI);&#xD;
&#xD;
#if defined SYNCHRO_POSIX4&#xD;
int error = pthread_mutex_unlock (&amp;m_mutexS);&#xD;
&#xD;
#elif defined SYNCHRO_Solaris&#xD;
int error = mutex_unlock (&amp;m_mutexS);&#xD;
&#xD;
#elif defined SYNCHRO_VxWorks&#xD;
int error = 0;&#xD;
if (semGive (m_mutexS) != OK)&#xD;
OSAL_ERROR (&quot;ON semGive()&quot;);&#xD;
#endif&#xD;
&#xD;
if (error) { // == EPERM : the current thread does not own the mutex&#xD;
OSAL_ERROR (&quot;can't unlock mutex&quot;);&#xD;
}</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_f75a8FF0EdyjobZYtXo9NQ" name="tryLock" specification="_Jid3oFFwEdyjobZYtXo9NQ">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_4JKBECBaEeOMKsPXBVC0DA" name="param_0" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_4JqXYCBaEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_4J0vcCBaEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body>TRACEpr (F7);&#xD;
PR (&quot;before Mutex::trylock()&quot;&lt;&lt; showI);&#xD;
&#xD;
#define Nretry 3 // re-try N times if EINTR&#xD;
&#xD;
int i;&#xD;
int error;&#xD;
for (i = 0; i &lt; Nretry; ++i)&#xD;
{&#xD;
#if defined SYNCHRO_POSIX4&#xD;
error = pthread_mutex_trylock (&amp;m_mutexS);&#xD;
&#xD;
#elif defined SYNCHRO_Solaris&#xD;
error = mutex_trylock (&amp;m_mutexS);&#xD;
&#xD;
#elif defined SYNCHRO_VxWorks&#xD;
error = semTake (m_mutexS, NO_WAIT);&#xD;
if (error == S_objLib_OBJ_UNAVAILABLE) {&#xD;
error = EBUSY;&#xD;
}&#xD;
&#xD;
#endif&#xD;
if (error == 0 || error == EBUSY) {&#xD;
break;&#xD;
}&#xD;
if (error != EINTR) {&#xD;
OSAL_ERROR (&quot;&quot;);&#xD;
}&#xD;
}&#xD;
if (i == Nretry) {&#xD;
OSAL_ERROR (&quot;EINTR Nretry times&quot;);&#xD;
}&#xD;
&#xD;
// errno == EBUSY : the mutex could not be acquired because it was already&#xD;
// locked&#xD;
return error;&#xD;
</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_larX0FF0EdyjobZYtXo9NQ" name="Mutex" specification="_4cRLsFFvEdyjobZYtXo9NQ">
<language>C/C++</language>
<body>int error;&#xD;
#if defined SYNCHRO_POSIX4&#xD;
TRACEpr (F7);&#xD;
PR (&quot;Mutex::~Mutex: m_mutexS = &quot; &lt;&lt; &amp;m_mutexS &lt;&lt; showI);&#xD;
error = pthread_mutex_destroy (&amp;m_mutexS);&#xD;
&#xD;
#elif defined SYNCHRO_Solaris&#xD;
error = mutex_destroy (&amp;m_mutexS);&#xD;
&#xD;
#elif defined SYNCHRO_VxWorks&#xD;
if (semDelete (m_mutexS) == OK) {&#xD;
error = 0;&#xD;
}&#xD;
else {&#xD;
error = -1;&#xD;
}&#xD;
#endif&#xD;
&#xD;
if (error) {&#xD;
OSAL_ERROR (&quot;cannot delete Mutex&quot;);&#xD;
}&#xD;
</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_oFvP4FF0EdyjobZYtXo9NQ" name="Operation_0" specification="_OEl_AFFwEdyjobZYtXo9NQ">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_4KKtsCBaEeOMKsPXBVC0DA" name="interProc">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_4Kqc8CBaEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_4K1cECBaEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body>// any value is equally valable as argument&#xD;
// inutile d'avoir une portee InterProcess couteuse si le process est seul.&#xD;
&#xD;
creatEff (OS_AL::ProcessingResources::ProDesc::getNumerOfProcesses() > 1 ? InterProcess : IntraProcess);&#xD;
</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_s_tPgFF0EdyjobZYtXo9NQ" name="creatEff" specification="_W33LcFFwEdyjobZYtXo9NQ">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_4LFTsCBaEeOMKsPXBVC0DA" name="scope" type="_0H3-IBEcEeG3cfLoiI6G7g">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_4LlqACBaEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_4L3W0CBaEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body>// --------------------------------------------&#xD;
#if defined SYNCHRO_POSIX4&#xD;
pthread_mutexattr_t attr; // mutex attributes object&#xD;
int result = pthread_mutexattr_init (&amp;attr); // and initialized by only 1 process&#xD;
// ?? comment savoir que je suis le premier ?? .....................&#xD;
if (result != 0) {&#xD;
OSAL_ERROR (&quot;ON pthread_mutexattr_init()&quot;);&#xD;
}&#xD;
if (scope == InterProcess) {&#xD;
result = pthread_mutexattr_setpshared (&amp;attr, PTHREAD_PROCESS_SHARED);&#xD;
if (errno != 0) {&#xD;
OSAL_ERROR (&quot;ON pthread_mutexattr_setpshared()&quot;);&#xD;
}&#xD;
}&#xD;
result = pthread_mutex_init (&amp;m_mutexS, &amp;attr);&#xD;
if (result != 0) {&#xD;
OSAL_ERROR (&quot;ON pthread_mutex_init()&quot;);&#xD;
}&#xD;
&#xD;
// pthread_mutexattr_destroy(&amp;attr); // required?&#xD;
&#xD;
// --------------------------------------------&#xD;
#elif defined SYNCHRO_Solaris&#xD;
if (scope != InterProcess) {&#xD;
// initial RAZ, with only 1 thread&#xD;
// #include &lt;string.h>&#xD;
// memset(&amp;m_mutexS, 0, sizeof(MutexStruc));&#xD;
char *pc = (char *) &amp;m_mutexS;&#xD;
for (int k = 0; k &lt; sizeof (MutexStruc); ++k) {&#xD;
*pC/C++ = '\0'; // initial reset&#xD;
}&#xD;
}&#xD;
//else&#xD;
// only 1 process must reset this structure&#xD;
&#xD;
int result = mutex_init ((MutexStruc *) &amp; m_mutexS,&#xD;
(scope == InterProcess) ? USYNC_PROCESS : USYNC_THREAD, NULL);&#xD;
if (result != 0) {&#xD;
OSAL_ERROR (&quot;ON mutex_init()&quot;);&#xD;
}&#xD;
&#xD;
// --------------------------------------------&#xD;
#elif defined SYNCHRO_VxWorks&#xD;
if (scope == InterProcess) {&#xD;
OSAL_ERROR (&quot;Only 1 processus for VxWorks&quot;);&#xD;
}&#xD;
#if defined SYNCHRO_VxWorks_MES&#xD;
m_mutexS = semMCreate (SEM_Q_PRIORITY | SEM_DELETE_SAFE | SEM_INVERSION_SAFE);&#xD;
#else&#xD;
m_mutexS = semBCreate (SEM_Q_PRIORITY, SEM_FULL);&#xD;
#endif&#xD;
if (m_mutexS == NULL) {&#xD;
OSAL_ERROR (&quot;ON semaphore create()&quot;);&#xD;
}&#xD;
&#xD;
// --------------------------------------------&#xD;
#else&#xD;
#error SYNCHRO_?? not defined&#xD;
#endif&#xD;
&#xD;
TRACEpr (F7);&#xD;
PR (&quot;after Mutex::createEff()&quot; &lt;&lt; showI);&#xD;
</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_v4CukFF0EdyjobZYtXo9NQ" name="print" specification="_CFHYcFF0EdyjobZYtXo9NQ">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_4MH1gCBaEeOMKsPXBVC0DA" name="label">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_5lVhgBydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_4MnkwCBaEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_4Myj4CBaEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body>TRACEpr (F7);&#xD;
PR (&quot;Mutex::print (&quot; &lt;&lt; label &lt;&lt; &quot;), errno= &quot; &lt;&lt; errno &lt;&lt; showI);&#xD;
&#xD;
unsigned short *pc1;&#xD;
int size;&#xD;
#if defined SYNCHRO_VxWorks&#xD;
if (m_mutexS == NULL) {&#xD;
OSAL_ERROR (&quot;m_mutexS == NULL&quot;);&#xD;
}&#xD;
pc1 = (unsigned short *) m_mutexS;&#xD;
size = 40; // sizeof(class semaphore);&#xD;
&#xD;
semShow (m_mutexS, 1); // dump of system structure&#xD;
//-- errno= 0;&#xD;
#else&#xD;
pc1 = (unsigned short *) &amp;m_mutexS;&#xD;
size = sizeof (MutexId);&#xD;
#endif&#xD;
&#xD;
char buffer[200];&#xD;
char *pb = buffer;&#xD;
unsigned short *pc = pc1;&#xD;
for (int k = 0; k &lt; size; k += 2)&#xD;
{&#xD;
if (k % 16 == 0)&#xD;
pb += sprintf (pb, &quot;\n\t&quot;);&#xD;
pb += sprintf (pb, &quot;%4.4x &quot;, *pc++);&#xD;
if ((pb - buffer) > (int) sizeof (buffer))&#xD;
OSAL_ERROR (&quot;Enlarge size of buffer.&quot;);&#xD;
}&#xD;
&#xD;
PR (&quot;, dump of m_mutexS at 0x&quot; &lt;&lt; pc1 &lt;&lt; &quot;: &quot; &lt;&lt; buffer &lt;&lt; showI);&#xD;
</body>
</ownedBehavior>
<ownedOperation xmi:type="uml:Operation" xmi:id="_4NODEFFvEdyjobZYtXo9NQ" name="Mutex" method="_ZOvmcFF0EdyjobZYtXo9NQ"/>
<ownedOperation xmi:type="uml:Operation" xmi:id="_4cRLsFFvEdyjobZYtXo9NQ" name="Mutex" method="_larX0FF0EdyjobZYtXo9NQ"/>
<ownedOperation xmi:type="uml:Operation" xmi:id="_-Hj6kFFvEdyjobZYtXo9NQ" name="lock" method="_a4i10FF0EdyjobZYtXo9NQ">
<ownedComment xmi:type="uml:Comment" xmi:id="__4g60FFvEdyjobZYtXo9NQ" annotatedElement="_-Hj6kFFvEdyjobZYtXo9NQ">
<body>Locks the mutex. If the mutex is currently unlocked, it becomes locked&#xD;
and owned by the calling thread, and returns immediately.&#xD;
If the mutex is already locked by another thread, &quot;lock&quot; suspends the&#xD;
calling thread until the mutex is unlocked.</body>
</ownedComment>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="_DEz3sFFwEdyjobZYtXo9NQ" name="unlock" method="_dWfe8FF0EdyjobZYtXo9NQ">
<ownedComment xmi:type="uml:Comment" xmi:id="_E-Z2kFFwEdyjobZYtXo9NQ" annotatedElement="_DEz3sFFwEdyjobZYtXo9NQ">
<body>Unlocks the given mutex. The mutex is assumed to be locked and owned&#xD;
by the calling thread on entrance to unlock.&#xD;
unlock always returns the mutex to the unlocked state (we do not use the&#xD;
pthread option &quot;recursive&quot;, which decrements the locking count of the mutex&#xD;
[number of lock operations performed on it by the calling thread], and&#xD;
only when this count reaches zero is the mutex actually unlocked).</body>
</ownedComment>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="_Jid3oFFwEdyjobZYtXo9NQ" name="tryLock" method="_f75a8FF0EdyjobZYtXo9NQ">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_KnwrwFFwEdyjobZYtXo9NQ" name="param_0" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_KoNXsFFwEdyjobZYtXo9NQ" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_KoWhoFFwEdyjobZYtXo9NQ" name="" value="1"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="_OEl_AFFwEdyjobZYtXo9NQ" name="Mutex" visibility="protected" method="_oFvP4FF0EdyjobZYtXo9NQ">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_Oq5KAFFwEdyjobZYtXo9NQ" name="interProc">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_OrME8FFwEdyjobZYtXo9NQ" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Ore_4FFwEdyjobZYtXo9NQ" name="" value="1"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="_W33LcFFwEdyjobZYtXo9NQ" name="creatEff" visibility="private" method="_s_tPgFF0EdyjobZYtXo9NQ">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_ZYNBQFFwEdyjobZYtXo9NQ" name="scope" type="_0H3-IBEcEeG3cfLoiI6G7g">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_ZYf8MFFwEdyjobZYtXo9NQ" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ZYpGIFFwEdyjobZYtXo9NQ" name="" value="1"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="_CFHYcFF0EdyjobZYtXo9NQ" name="print" visibility="private" method="_v4CukFF0EdyjobZYtXo9NQ">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_Dd6-cFF0EdyjobZYtXo9NQ" name="label">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_5lVhgBydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_DeXqYFF0EdyjobZYtXo9NQ" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_DehbYFF0EdyjobZYtXo9NQ" name="" value="1"/>
</ownedParameter>
</ownedOperation>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_5HEaAFFgEdyjobZYtXo9NQ" name="CriticalSection">
<ownedComment xmi:type="uml:Comment" xmi:id="_7UU7wFFgEdyjobZYtXo9NQ" annotatedElement="_5HEaAFFgEdyjobZYtXo9NQ">
<body>Protects the code following a declaration of an instance of this class&#xD;
against an interruption for signal handling and against reentrance of&#xD;
this code. It is associated with an instance of class Mutex (passed in&#xD;
the constructor).&#xD;
&#xD;
Example:&#xD;
Management of a list (see class SR_List) that can be accessed by multiple&#xD;
threads. To assure data integrity, each list instance contains a mutex,&#xD;
all public methods look like:&#xD;
SR_Liste::append()&#xD;
{&#xD;
CriticalSection cs(mutex);&#xD;
...&#xD;
} // end of critical section.</body>
</ownedComment>
<ownedAttribute xmi:type="uml:Property" xmi:id="__4miwFFhEdyjobZYtXo9NQ" name="m_mutex" visibility="private" type="_Jj9usFC7EdyqzLG48ixyqA" isUnique="false" association="__4cxwFFhEdyjobZYtXo9NQ">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_DGPjcFFiEdyjobZYtXo9NQ"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_DGYtYFFiEdyjobZYtXo9NQ" value="1"/>
</ownedAttribute>
<ownedAttribute xmi:type="uml:Property" xmi:id="_IAWtAFFiEdyjobZYtXo9NQ" name="m_maskAll" visibility="private" isUnique="false">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_IAzY8FFiEdyjobZYtXo9NQ" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_IAzY8VFiEdyjobZYtXo9NQ" value="1"/>
</ownedAttribute>
<ownedAttribute xmi:type="uml:Property" xmi:id="_IEFWcFFiEdyjobZYtXo9NQ" name="m_oldMask" visibility="private" isUnique="false">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_IEiCYFFiEdyjobZYtXo9NQ" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_IErMUFFiEdyjobZYtXo9NQ" value="1"/>
</ownedAttribute>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_VGs4MFFiEdyjobZYtXo9NQ" name="CriticalSection" specification="_df1i0FFhEdyjobZYtXo9NQ">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_5q784CBaEeOMKsPXBVC0DA" name="mutexPtr" type="_Jj9usFC7EdyqzLG48ixyqA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_5rc6QCBaEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_5rn5YCBaEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body> m_mutex = mutex;&#xD;
&#xD;
sigfillset (&amp;m_maskAll);&#xD;
Thread::changeSigMask (SIG_SETMASK, &amp;m_maskAll, &amp;m_oldMask);&#xD;
&#xD;
m_mutex->lock ();&#xD;
</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_WjY4oFFiEdyjobZYtXo9NQ" name="CriticalSection" specification="_dnb_oFFhEdyjobZYtXo9NQ">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_5sGagCBaEeOMKsPXBVC0DA" name="shmPtr" type="_sq-yMFCvEdyqzLG48ixyqA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_5smw0CBaEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_5sxv8CBaEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body> m_mutex = shmPtr->getMutex ();&#xD;
&#xD;
sigfillset (&amp;m_maskAll);&#xD;
Thread::changeSigMask (SIG_SETMASK, &amp;m_maskAll, &amp;m_oldMask);&#xD;
m_mutex->lock ();&#xD;
</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_X3u1YFFiEdyjobZYtXo9NQ" name="CriticalSection" specification="_du4rcFFhEdyjobZYtXo9NQ">
<language>C/C++</language>
<body> if (m_mutex) {&#xD;
m_mutex->unlock ();&#xD;
}&#xD;
&#xD;
Thread::changeSigMask (SIG_SETMASK, &amp;m_oldMask, NULL);&#xD;
</body>
</ownedBehavior>
<ownedOperation xmi:type="uml:Operation" xmi:id="_df1i0FFhEdyjobZYtXo9NQ" name="CriticalSection" method="_VGs4MFFiEdyjobZYtXo9NQ">
<ownedComment xmi:type="uml:Comment" xmi:id="_jdwSwFFhEdyjobZYtXo9NQ" annotatedElement="_df1i0FFhEdyjobZYtXo9NQ">
<body>Create a Critical section using the passed mutex pointer</body>
</ownedComment>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_lihm4FFhEdyjobZYtXo9NQ" name="mutexPtr" type="_Jj9usFC7EdyqzLG48ixyqA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_li0h0FFhEdyjobZYtXo9NQ" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ljHcwFFhEdyjobZYtXo9NQ" name="" value="1"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="_dnb_oFFhEdyjobZYtXo9NQ" name="CriticalSection" method="_WjY4oFFiEdyjobZYtXo9NQ">
<ownedComment xmi:type="uml:Comment" xmi:id="_ski4IFFhEdyjobZYtXo9NQ" annotatedElement="_dnb_oFFhEdyjobZYtXo9NQ">
<body>Create a critical section using the mutex provided by the SharedMemory</body>
</ownedComment>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_u2uWIFFhEdyjobZYtXo9NQ" name="shmPtr" type="_sq-yMFCvEdyqzLG48ixyqA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_u3LCEFFhEdyjobZYtXo9NQ" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_u3d9AFFhEdyjobZYtXo9NQ" name="" value="1"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="_du4rcFFhEdyjobZYtXo9NQ" name="CriticalSection" method="_X3u1YFFiEdyjobZYtXo9NQ">
<ownedComment xmi:type="uml:Comment" xmi:id="_21F64FFhEdyjobZYtXo9NQ" annotatedElement="_du4rcFFhEdyjobZYtXo9NQ">
<body>The destructor will release the mutex.</body>
</ownedComment>
</ownedOperation>
</packagedElement>
<packagedElement xmi:type="uml:Dependency" xmi:id="_FQwvsFFhEdyjobZYtXo9NQ" name="FromCriticalSectiontop_Synchronization" client="_5HEaAFFgEdyjobZYtXo9NQ" supplier="_rsw80FC3EdyqzLG48ixyqA"/>
<packagedElement xmi:type="uml:Dependency" xmi:id="_Gyg2UFFhEdyjobZYtXo9NQ" name="FromCriticalSectiontoMutex" client="_5HEaAFFgEdyjobZYtXo9NQ" supplier="_Jj9usFC7EdyqzLG48ixyqA"/>
<packagedElement xmi:type="uml:Dependency" xmi:id="_OztsoFFhEdyjobZYtXo9NQ" name="FromCriticalSectiontoSharedMemory" client="_5HEaAFFgEdyjobZYtXo9NQ" supplier="_sq-yMFCvEdyqzLG48ixyqA"/>
<packagedElement xmi:type="uml:Association" xmi:id="__4cxwFFhEdyjobZYtXo9NQ" name="Association_CriticalSection_Mutex" memberEnd="__4miwFFhEdyjobZYtXo9NQ __5f6oFFhEdyjobZYtXo9NQ">
<ownedEnd xmi:type="uml:Property" xmi:id="__5f6oFFhEdyjobZYtXo9NQ" name="criticalSection" type="_5HEaAFFgEdyjobZYtXo9NQ" isUnique="false" association="__4cxwFFhEdyjobZYtXo9NQ">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="__6FwglFhEdyjobZYtXo9NQ"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="__6FwgVFhEdyjobZYtXo9NQ" value="*"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Dependency" xmi:id="_s6W6oFFiEdyjobZYtXo9NQ" name="FromLocktop_Synchronization" client="_qIyBkFC3EdyqzLG48ixyqA" supplier="_rsw80FC3EdyqzLG48ixyqA"/>
<packagedElement xmi:type="uml:Dependency" xmi:id="_tfdf4FFvEdyjobZYtXo9NQ" name="FromMutextop_Synchronization" client="_Jj9usFC7EdyqzLG48ixyqA" supplier="_rsw80FC3EdyqzLG48ixyqA"/>
<packagedElement xmi:type="uml:Dependency" xmi:id="_OIKeIFF1EdyjobZYtXo9NQ" name="Fromp_SynchronizationtoBaseTypes" client="_rsw80FC3EdyqzLG48ixyqA" supplier="_0TXx4DUOEdy0feurbW0fyQ"/>
<packagedElement xmi:type="uml:Class" xmi:id="_dhMBIFF2EdyxP5ejovTmBw" name="RWLock">
<ownedComment xmi:type="uml:Comment" xmi:id="_h-_pMFF2EdyxP5ejovTmBw" annotatedElement="_dhMBIFF2EdyxP5ejovTmBw">
<body>Allows to authorize the access to data shared between multiple threads.&#xD;
Access can be shared by multiple reades, but there can only be one writer.</body>
</ownedComment>
<ownedAttribute xmi:type="uml:Property" xmi:id="_Ce-GEFF4EdyxP5ejovTmBw" name="rwl" visibility="private" isUnique="false">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_CfRBAFF4EdyxP5ejovTmBw" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_CfayAFF4EdyxP5ejovTmBw" value="1"/>
</ownedAttribute>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_Pus2wFF4EdyxP5ejovTmBw" name="_rwl" specification="_-EmMgFF3EdyxP5ejovTmBw">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_7QSKECBaEeOMKsPXBVC0DA" name="param_0" direction="return">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_7Qtn4CBaEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_7Q4nACBaEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body> return rwl;</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_RLryIFF4EdyxP5ejovTmBw" name="set_rwl" specification="_-N-yAFF3EdyxP5ejovTmBw">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_7RIeoCBaEeOMKsPXBVC0DA" name="cr_operand">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_7RjVYCBaEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_7RuUgCBaEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body> rwl = cr_operand;</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_eCFc0FF4EdyxP5ejovTmBw" name="RWLock" specification="_tz4-IFF3EdyxP5ejovTmBw">
<language>C/C++</language>
<body>#if defined SYNCHRO_Solaris&#xD;
errno = rwlock_init (&amp;rwl, USYNC_THREAD, NULL);&#xD;
&#xD;
#elif defined SYNCHRO_POSIX4 || SYNCHRO_Linux&#xD;
errno = pthread_rwlock_init (&amp;rwl, NULL);&#xD;
&#xD;
#elif defined SYNCHRO_VxWorks&#xD;
rwl.readers = 0; // pas de lecteur au début&#xD;
rwl.writers = 0; // pas d'écrivain au début&#xD;
&#xD;
rwl.readersMut = semBCreate (SEM_Q_FIFO, SEM_FULL); //initialisation&#xD;
rwl.writersMut = semBCreate (SEM_Q_FIFO, SEM_FULL); //des&#xD;
rwl.readMut = semBCreate (SEM_Q_FIFO, SEM_FULL); //mutexes&#xD;
rwl.writeSem = semCCreate (SEM_Q_FIFO, 1); //et des&#xD;
rwl.readSem = semCCreate (SEM_Q_FIFO, 1); //semaphores&#xD;
&#xD;
if ((rwl.readersMut != NULL) &amp;&amp; (rwl.writersMut != NULL)&#xD;
&amp;&amp; (rwl.readMut != NULL)&#xD;
&amp;&amp; (rwl.writeSem != NULL) &amp;&amp; (rwl.readSem != NULL))&#xD;
errno = 0;&#xD;
else&#xD;
errno = ENOMEM; // semBCreate et semCCreate ne positionnent pas errno&#xD;
&#xD;
&#xD;
#else // RWLock_Simulation&#xD;
rwl.readers = 0; //pas de lecteur au début&#xD;
rwl.writers = 0; //pas d'écrivain au début&#xD;
errno = 0;&#xD;
#endif&#xD;
&#xD;
if (errno) {&#xD;
OSAL_ERROR (&quot;&quot;);&#xD;
}&#xD;
</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_gGHKEFF4EdyxP5ejovTmBw" name="RWLock" specification="_t6TIIFF3EdyxP5ejovTmBw">
<language>C/C++</language>
<body>#if defined SYNCHRO_Solaris&#xD;
errno = rwlock_destroy (&amp;rwl);&#xD;
&#xD;
#elif defined SYNCHRO_POSIX4 || SYNCHRO_Linux&#xD;
errno = pthread_rwlock_destroy (&amp;rwl);&#xD;
&#xD;
&#xD;
#elif defined SYNCHRO_VxWorks //-VxW&#xD;
errno = 0; // je suppose qu'1 exécution OK ne touche pas errno &#xD;
semDelete (rwl.readersMut);&#xD;
semDelete (rwl.writersMut);&#xD;
semDelete (rwl.readMut);&#xD;
semDelete (rwl.readSem);&#xD;
semDelete (rwl.writeSem);&#xD;
&#xD;
#else&#xD;
errno = 0;&#xD;
#endif&#xD;
&#xD;
if (errno) {&#xD;
OSAL_ERROR (&quot;&quot;);&#xD;
}&#xD;
</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_jtFQwFF4EdyxP5ejovTmBw" name="rdlock" specification="_uA2cEFF3EdyxP5ejovTmBw">
<language>C/C++</language>
<body>#if defined SYNCHRO_Solaris&#xD;
errno = rw_rdlock (&amp;rwl);&#xD;
&#xD;
#elif defined SYNCHRO_POSIX4 || SYNCHRO_Linux&#xD;
errno = pthread_rwlock_rdlock (&amp;rwl);&#xD;
&#xD;
#elif defined SYNCHRO_VxWorks&#xD;
errno = 0;&#xD;
if (semTake (rwl.readMut, WAIT_FOREVER) == OK)&#xD;
if (semTake (rwl.readSem, WAIT_FOREVER) == OK)&#xD;
if (semTake (rwl.readersMut, WAIT_FOREVER) == OK) //début de section critique&#xD;
{&#xD;
rwl.readers++; //incremente nb de lecteurs&#xD;
if (rwl.readers == 1) //si premier lecteur alors il &#xD;
semTake (rwl.writeSem, WAIT_FOREVER); //bloque l'ecriture&#xD;
if (semGive (rwl.readersMut) == OK) //fin de section critique&#xD;
if (semGive (rwl.readSem) == OK)&#xD;
semGive (rwl.readMut);&#xD;
}&#xD;
&#xD;
#else // RWLock_Simulation&#xD;
errno = 0;&#xD;
rwl.readMut.lock ();&#xD;
rwl.readSem.wait ();&#xD;
rwl.readersMut.lock (); // début de section critique&#xD;
{&#xD;
rwl.readers++; //incrémente nb de lecteurs&#xD;
if (rwl.readers == 1) //si premier lecteur alors il &#xD;
rwl.writeSem.wait (); //bloque l'ecriture&#xD;
}&#xD;
rwl.readersMut.unlock (); // fin de section critique&#xD;
rwl.readSem.post ();&#xD;
rwl.readMut.unlock ();&#xD;
&#xD;
#endif&#xD;
&#xD;
if (errno) {&#xD;
OSAL_ERROR (&quot;&quot;);&#xD;
}&#xD;
</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_mnfzcFF4EdyxP5ejovTmBw" name="wrlock" specification="_uHG1EFF3EdyxP5ejovTmBw">
<language>C/C++</language>
<body>#if defined SYNCHRO_Solaris&#xD;
errno = rw_wrlock (&amp;rwl);&#xD;
&#xD;
#elif defined SYNCHRO_POSIX4 || SYNCHRO_Linux&#xD;
errno = pthread_rwlock_wrlock (&amp;rwl);&#xD;
&#xD;
#elif defined SYNCHRO_VxWorks&#xD;
errno = 0;&#xD;
if (semTake (rwl.writersMut, WAIT_FOREVER) == OK) //début de section critique&#xD;
{&#xD;
if (++rwl.writers == 1) //si premier écrivain, alors &#xD;
semTake (rwl.readSem, WAIT_FOREVER); // attendre fin des lecteurs et les bloquer&#xD;
if (semGive (rwl.writersMut) == OK) //fin de section critique&#xD;
semTake (rwl.writeSem, WAIT_FOREVER); //verrouille acces en ecriture/lecture pour autres&#xD;
}&#xD;
&#xD;
#else // RWLock_Simulation&#xD;
errno = 0;&#xD;
rwl.writersMut.lock (); // début de section critique&#xD;
if (++rwl.writers == 1) //si premier écrivain, alors &#xD;
rwl.readSem.wait (); // attendre fin des lecteurs et les bloquer&#xD;
rwl.writersMut.unlock (); // fin de section critique&#xD;
rwl.writeSem.wait (); // demande à écrire seul&#xD;
#endif&#xD;
&#xD;
if (errno) {&#xD;
OSAL_ERROR (&quot;&quot;);&#xD;
}&#xD;
</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_p0ZNQFF4EdyxP5ejovTmBw" name="unlock" specification="_uL4AUFF3EdyxP5ejovTmBw">
<language>C/C++</language>
<body>#if defined SYNCHRO_Solaris&#xD;
errno = rw_unlock (&amp;rwl);&#xD;
&#xD;
#elif defined SYNCHRO_POSIX4 || SYNCHRO_Linux&#xD;
errno = pthread_rwlock_unlock (&amp;rwl);&#xD;
&#xD;
#elif defined SYNCHRO_VxWorks&#xD;
errno = 0;&#xD;
// test, if a reader or writer requires end&#xD;
if (rwl.readers)&#xD;
{&#xD;
if (semTake (rwl.readersMut, WAIT_FOREVER) == OK)&#xD;
{&#xD;
// entered critical section (through semTake)&#xD;
if (--rwl.readers == 0) // if last reader, authorize writers&#xD;
semGive (rwl.writeSem);&#xD;
semGive (rwl.readersMut); // end of critical section&#xD;
}&#xD;
}&#xD;
else if (rwl.writers)&#xD;
{&#xD;
if (semGive (rwl.writeSem) == OK) // authorize other writers&#xD;
if (semTake (rwl.writersMut, WAIT_FOREVER) == OK)&#xD;
{&#xD;
// entered critical section (through semTake)&#xD;
if (--rwl.writers == 0) // if last writer, authorize readers&#xD;
semGive (rwl.readSem);&#xD;
semGive (rwl.writersMut); // end of critical section&#xD;
}&#xD;
}&#xD;
else&#xD;
OSAL_ERROR (&quot;readers==0 &amp;&amp; writers==0&quot;);&#xD;
&#xD;
#else // RWLock_Simulation&#xD;
errno = 0;&#xD;
// test, if a reader or writer requires end&#xD;
if (rwl.readers)&#xD;
{&#xD;
rwl.readersMut.lock (); // enter ciritical section&#xD;
if (--rwl.readers == 0) // if last reader, authorize writers&#xD;
rwl.writeSem.post ();&#xD;
rwl.readersMut.unlock (); // end of critical section&#xD;
}&#xD;
else if (rwl.writers)&#xD;
{&#xD;
rwl.writeSem.post (); // authorize other writer&#xD;
rwl.writersMut.lock (); // enter critical section&#xD;
if (--rwl.writers == 0) // if last writer, authorize readers&#xD;
rwl.readSem.post ();&#xD;
rwl.writersMut.unlock (); // end of critical section&#xD;
}&#xD;
else&#xD;
OSAL_ERROR (&quot;readers==0 &amp;&amp; writers==0&quot;);&#xD;
#endif&#xD;
&#xD;
if (errno)&#xD;
OSAL_ERROR (&quot;&quot;);&#xD;
</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_stT7IFF4EdyxP5ejovTmBw" name="tryRdLock" specification="_uQNGsFF3EdyxP5ejovTmBw">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_7SaRACBaEeOMKsPXBVC0DA" name="param_0" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_7S6AQCBaEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_7TE_YCBaEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body>#if defined SYNCHRO_Solaris&#xD;
errno = rw_tryrdlock (&amp;rwl);&#xD;
&#xD;
#elif defined SYNCHRO_POSIX4 || SYNCHRO_Linux&#xD;
errno = pthread_rwlock_tryrdlock (&amp;rwl);&#xD;
&#xD;
&#xD;
#elif defined SYNCHRO_VxWorks&#xD;
if (semTake (rwl.readMut, WAIT_FOREVER) == OK)&#xD;
if (semTake (rwl.readSem, WAIT_FOREVER) == OK) // VERIFIER ???????????&#xD;
if (semTake (rwl.readersMut, WAIT_FOREVER) == OK)&#xD;
{&#xD;
// entered critical section (through semTake)&#xD;
rwl.readers++; // increment number of readers&#xD;
if (rwl.readers == 1) // if first reader, ...&#xD;
semTake (rwl.writeSem, NO_WAIT); // ... block writer // VERIFIER ???????????&#xD;
if (semGive (rwl.readersMut) == OK) // end of critical section&#xD;
if (semGive (rwl.readSem) == OK)&#xD;
semGive (rwl.readMut);&#xD;
}&#xD;
&#xD;
#else // RWLock_Simulation&#xD;
errno = 0;&#xD;
rwl.readMut.lock ();&#xD;
if (rwl.readSem.tryWait () == 0)&#xD;
{&#xD;
rwl.readersMut.lock (); // begin of critical section&#xD;
{&#xD;
rwl.readers++; // increment number of readers&#xD;
if (rwl.readers == 1) // if first reader, ...&#xD;
rwl.writeSem.wait (); // ... block writer&#xD;
}&#xD;
rwl.readersMut.unlock (); // end of critical section&#xD;
rwl.readSem.post ();&#xD;
}&#xD;
rwl.readMut.unlock ();&#xD;
#endif&#xD;
&#xD;
if (errno &amp;&amp; errno != EBUSY)&#xD;
OSAL_ERROR (&quot;&quot;);&#xD;
&#xD;
return errno;&#xD;
</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_v3OSYFF4EdyxP5ejovTmBw" name="tryWrLock" specification="_uVHb4FF3EdyxP5ejovTmBw">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_7TU3ACBaEeOMKsPXBVC0DA" name="param_0" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_7T1NUCBaEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_7T_lYCBaEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body>#if defined SYNCHRO_Solaris&#xD;
errno = rw_trywrlock (&amp;rwl);&#xD;
&#xD;
#elif defined SYNCHRO_POSIX4 || SYNCHRO_Linux&#xD;
errno = pthread_rwlock_trywrlock (&amp;rwl);&#xD;
&#xD;
#elif defined SYNCHRO_VxWorks&#xD;
errno = 0;&#xD;
if (semTake (rwl.writeSem, NO_WAIT) == OK) // request write access&#xD;
{&#xD;
if (semTake (rwl.writersMut, WAIT_FOREVER) == OK)&#xD;
{&#xD;
// entered critical section (through semTake)&#xD;
if (++rwl.writers == 1) //si premier ecrivain alors il &#xD;
semTake (rwl.readSem, WAIT_FOREVER); //bloque les lecteurs&#xD;
semGive (rwl.writersMut); //fin de section critique&#xD;
}&#xD;
}&#xD;
else&#xD;
{&#xD;
if (errno == S_objLib_OBJ_UNAVAILABLE)&#xD;
errno = EBUSY;&#xD;
}&#xD;
&#xD;
#else // RWLock_Simulation&#xD;
errno = 0;&#xD;
rwl.writersMut.lock (); // begin of critical section&#xD;
{&#xD;
rwl.writers++; // increment number of readers&#xD;
if (rwl.writers == 1) // if first reader, ... &#xD;
rwl.readSem.wait (); // ... block writers&#xD;
}&#xD;
rwl.writersMut.unlock (); // end of critical section&#xD;
rwl.writeSem.wait (); // lock write/read access for others&#xD;
#endif&#xD;
&#xD;
if (errno &amp;&amp; errno != EBUSY)&#xD;
OSAL_ERROR (&quot;&quot;);&#xD;
&#xD;
return errno;&#xD;
</body>
</ownedBehavior>
<ownedOperation xmi:type="uml:Operation" xmi:id="_tz4-IFF3EdyxP5ejovTmBw" name="RWLock" method="_eCFc0FF4EdyxP5ejovTmBw"/>
<ownedOperation xmi:type="uml:Operation" xmi:id="_t6TIIFF3EdyxP5ejovTmBw" name="RWLock" method="_gGHKEFF4EdyxP5ejovTmBw"/>
<ownedOperation xmi:type="uml:Operation" xmi:id="_uA2cEFF3EdyxP5ejovTmBw" name="rdlock" method="_jtFQwFF4EdyxP5ejovTmBw"/>
<ownedOperation xmi:type="uml:Operation" xmi:id="_uHG1EFF3EdyxP5ejovTmBw" name="wrlock" method="_mnfzcFF4EdyxP5ejovTmBw"/>
<ownedOperation xmi:type="uml:Operation" xmi:id="_uL4AUFF3EdyxP5ejovTmBw" name="unlock" method="_p0ZNQFF4EdyxP5ejovTmBw"/>
<ownedOperation xmi:type="uml:Operation" xmi:id="_uQNGsFF3EdyxP5ejovTmBw" name="tryRdLock" method="_stT7IFF4EdyxP5ejovTmBw">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_2732UFF3EdyxP5ejovTmBw" name="param_0" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_28T7MFF3EdyxP5ejovTmBw" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_28dsMFF3EdyxP5ejovTmBw" name="" value="1"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="_uVHb4FF3EdyxP5ejovTmBw" name="tryWrLock" method="_v3OSYFF4EdyxP5ejovTmBw">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_5qzhwFF3EdyxP5ejovTmBw" name="param_0" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_5rHDwFF3EdyxP5ejovTmBw" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_5rZ-sFF3EdyxP5ejovTmBw" name="" value="1"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="_-EmMgFF3EdyxP5ejovTmBw" name="_rwl" method="_Pus2wFF4EdyxP5ejovTmBw">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_K9Or0FF4EdyxP5ejovTmBw" name="param_0" direction="return">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_K9rXwFF4EdyxP5ejovTmBw" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_K9-SsFF4EdyxP5ejovTmBw" name="" value="1"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="_-N-yAFF3EdyxP5ejovTmBw" name="set_rwl" method="_RLryIFF4EdyxP5ejovTmBw">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_M0l2EFF4EdyxP5ejovTmBw" name="cr_operand">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_M1B68FF4EdyxP5ejovTmBw" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_M1Vc8FF4EdyxP5ejovTmBw" name="" value="1"/>
</ownedParameter>
</ownedOperation>
</packagedElement>
<packagedElement xmi:type="uml:Dependency" xmi:id="_nORxgFF2EdyxP5ejovTmBw" name="FromRWLocktop_Synchronization" client="_dhMBIFF2EdyxP5ejovTmBw" supplier="_rsw80FC3EdyqzLG48ixyqA"/>
<packagedElement xmi:type="uml:PrimitiveType" xmi:id="_IbQcUFd7Ed-9TNLvplUFDQ" name="SemStruc"/>
<packagedElement xmi:type="uml:Class" xmi:id="_QWlVgPRTEeCUGrV0Hl4JwQ" name="Condition">
<ownedComment xmi:type="uml:Comment" xmi:id="_QWlVgfRTEeCUGrV0Hl4JwQ" annotatedElement="_QWlVgPRTEeCUGrV0Hl4JwQ">
<body>From the Posix man page:&#xD;
A condition (short for ``condition variable'') is a synchronization&#xD;
device that allows threads to suspend execution and relinquish the&#xD;
processors until some predicate on shared data is satisfied. The basic&#xD;
operations on conditions are: signal the condition (when the predicate&#xD;
becomes true), and wait for the condition, suspending the thread&#xD;
execution until another thread signals the condition.&#xD;
&#xD;
A condition variable must always be associated with a mutex, to avoid&#xD;
the race condition where a thread prepares to wait on a condition&#xD;
variable and another thread signals the condition just before the&#xD;
first thread actually waits on it.</body>
</ownedComment>
<ownedAttribute xmi:type="uml:Property" xmi:id="_QWlVgvRTEeCUGrV0Hl4JwQ" name="m_isLocked" visibility="private" isUnique="false">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_QWlVhPRTEeCUGrV0Hl4JwQ" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_QWlVg_RTEeCUGrV0Hl4JwQ" value="1"/>
</ownedAttribute>
<ownedAttribute xmi:type="uml:Property" xmi:id="_QWlVhvRTEeCUGrV0Hl4JwQ" name="m_mutex" visibility="private" type="_Jj9usFC7EdyqzLG48ixyqA" isUnique="false">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_QWlViPRTEeCUGrV0Hl4JwQ"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_QWlVh_RTEeCUGrV0Hl4JwQ" value="1"/>
</ownedAttribute>
<ownedAttribute xmi:type="uml:Property" xmi:id="_SAnLoBEhEeG3cfLoiI6G7g" name="m_condition" type="_U_uoIBEhEeG3cfLoiI6G7g">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SBsJsBEhEeG3cfLoiI6G7g" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_SBv0EBEhEeG3cfLoiI6G7g" value="1"/>
</ownedAttribute>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_QWlVifRTEeCUGrV0Hl4JwQ" name="Condition" specification="_QWlVkfRTEeCUGrV0Hl4JwQ">
<language>C/C++</language>
<body>#if defined SYNCHRO_POSIX4&#xD;
int error = pthread_cond_init (&amp;m_condition, NULL);&#xD;
&#xD;
#elif defined SYNCHRO_Solaris&#xD;
int error = cond_init (&amp;m_condition, USYNC_THREAD, 0);&#xD;
&#xD;
#elif defined SYNCHRO_VxWorks&#xD;
OSAL_ERROR (&quot;Not available with VxWorks&quot;);&#xD;
// maybe a mechanism can be implemented by means of a signal pendants&#xD;
&#xD;
#else&#xD;
#error SYNCHRO_???? not defined&#xD;
#endif&#xD;
&#xD;
if (error) {&#xD;
OSAL_ERROR (&quot;Condition constructor failed&quot;);&#xD;
}</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_QWlVivRTEeCUGrV0Hl4JwQ" name="Condition" specification="_QWlVkvRTEeCUGrV0Hl4JwQ">
<language>C/C++</language>
<body>if (m_isLocked) {&#xD;
unlock ();&#xD;
}&#xD;
&#xD;
#if defined SYNCHRO_POSIX4 || defined SYNCHRO_Linux&#xD;
int error = pthread_cond_destroy (&amp;m_condition);&#xD;
#elif defined SYNCHRO_Solaris&#xD;
int error = cond_destroy (&amp;m_condition);&#xD;
#endif&#xD;
&#xD;
if (error) {&#xD;
OSAL_ERROR (&quot;destructor failed&quot;);&#xD;
}</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_QWlVi_RTEeCUGrV0Hl4JwQ" name="lock" specification="_QWlVk_RTEeCUGrV0Hl4JwQ">
<language>C/C++</language>
<body>m_mutex.lock ();&#xD;
m_isLocked = true;&#xD;
</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_QWlVjPRTEeCUGrV0Hl4JwQ" name="unlock" specification="_QWlVlPRTEeCUGrV0Hl4JwQ">
<language>C/C++</language>
<body>if (!m_isLocked) {&#xD;
// OSAL_ERROR (&quot;already unlocked&quot;);&#xD;
}&#xD;
m_mutex.unlock ();&#xD;
m_isLocked = false;&#xD;
</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_QWlVjfRTEeCUGrV0Hl4JwQ" name="wait" specification="_QWlVlfRTEeCUGrV0Hl4JwQ">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_8gX48CBaEeOMKsPXBVC0DA" name="param_0" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_8g-88CBaEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_8hJ8ECBaEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body>for (;;) {&#xD;
#if defined SYNCHRO_POSIX4&#xD;
/*&#xD;
* POSIX man page:&#xD;
* The pthread_cond_timedwait() and pthread_cond_wait() functions shall&#xD;
* block on a condition variable. They shall be called with mutex locked&#xD;
* by the calling thread or undefined behavior results.&#xD;
*/&#xD;
&#xD;
int result = pthread_cond_wait (&amp;m_condition, &amp;m_mutex.m_mutexS);&#xD;
&#xD;
#elif defined SYNCHRO_Solaris&#xD;
int result = cond_wait (&amp;m_condition, &amp;m_mutex.m_mutexS);&#xD;
&#xD;
#endif&#xD;
if (result == 0) {&#xD;
// upon successful return, the lock is re-locked&#xD;
m_isLocked = true;&#xD;
return result;&#xD;
}&#xD;
if (result == EPERM) {&#xD;
OSAL_ERROR (&quot;wait failed (EPERM - operation not permitted)&quot;);&#xD;
} &#xD;
else if (result != EINTR) {&#xD;
OSAL_ERROR (&quot;wait failed&quot;);&#xD;
}&#xD;
}</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_QWlVjvRTEeCUGrV0Hl4JwQ" name="waitUpto" specification="_QWlVm_RTEeCUGrV0Hl4JwQ">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_8hZzsCBaEeOMKsPXBVC0DA" name="param_0" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_8h5i8CBaEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_8iEiECBaEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_8iPhMCBaEeOMKsPXBVC0DA" name="date" type="_FuKEEDj8Edy0Rd6V_tf1-Q">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_8ivQcCBaEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_8i6PkCBaEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body>TRACEpr (VM);&#xD;
PR (&quot;Condition::waitUpTo ()&quot; &lt;&lt; showI);&#xD;
&#xD;
int result;&#xD;
if (date.hasPassed ()) {&#xD;
result = ERANGE; // it is too late !&#xD;
}&#xD;
else {&#xD;
result = 0;&#xD;
&#xD;
m_isLocked = false; // cond_timedwait will unlock the lock&#xD;
OS_AL::Time::TimeVal absTime = date + OS_AL::Time::TimeVal::sysStartTime();&#xD;
#if defined SYNCHRO_POSIX4&#xD;
struct timespec finalDate; // final date in standard type&#xD;
finalDate.tv_sec = absTime.getSec();&#xD;
finalDate.tv_nsec = absTime.getUsec() * 1000;&#xD;
&#xD;
for (;;) {&#xD;
result = pthread_cond_timedwait (&amp;m_condition, &amp;m_mutex.m_mutexS, &amp;finalDate);&#xD;
#elif defined SYNCHRO_Solaris&#xD;
timestruc_t finalDate; // final date in standard type&#xD;
finalDate.tv_sec = absTime.getSec();&#xD;
finalDate.tv_nsec = absTime.getUsec() * 1000;&#xD;
&#xD;
for (;;) {&#xD;
result = cond_timedwait (&amp;m_condition, &amp;m_mutex.m_mutexS, &amp;finalDate);&#xD;
#else&#xD;
// not supported in vxWorks, open loop to satisfy the compilers&#xD;
for (;;) {&#xD;
result = 0;&#xD;
#endif&#xD;
if ((result == 0) || (result == ETIMEDOUT)) {&#xD;
break;&#xD;
}&#xD;
if (result != EINTR) {&#xD;
OS_AL::Util::BString500 s1 (&quot;date=&quot;);&#xD;
OSAL_ERROR (s1 &lt;&lt; finalDate.tv_sec &lt;&lt; &quot; sec. , &quot; &lt;&lt; finalDate.tv_nsec);&#xD;
}&#xD;
}&#xD;
}&#xD;
&#xD;
// upon successful return, the lock is re-locked&#xD;
if (result == 0) {&#xD;
m_isLocked = true;&#xD;
}&#xD;
return result;&#xD;
</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_QWlVj_RTEeCUGrV0Hl4JwQ" name="signal" specification="_QWlVpfRTEeCUGrV0Hl4JwQ">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_8jZ-0CBaEeOMKsPXBVC0DA" name="param_0" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_8j6VICBaEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_8kFUQCBaEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body>#if defined SYNCHRO_POSIX4 || defined SYNCHRO_Linux&#xD;
int result = pthread_cond_signal (&amp;m_condition);&#xD;
&#xD;
#elif defined SYNCHRO_Solaris&#xD;
int result = cond_signal (&amp;m_condition);&#xD;
&#xD;
#endif&#xD;
&#xD;
if (result != 0) {&#xD;
OSAL_ERROR (&quot;could not signal condition&quot;);&#xD;
}&#xD;
&#xD;
return result;</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_QWlVkPRTEeCUGrV0Hl4JwQ" name="broadcast" specification="_QWlVq_RTEeCUGrV0Hl4JwQ">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_8kVL4CBaEeOMKsPXBVC0DA" name="param_0" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_8k07ICBaEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_8k_6QCBaEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body>#if defined SYNCHRO_POSIX4 || defined SYNCHRO_Linux&#xD;
int result = pthread_cond_broadcast (&amp;m_condition);&#xD;
&#xD;
#elif defined SYNCHRO_Solaris&#xD;
int result = cond_broadcast (&amp;m_condition);&#xD;
&#xD;
#endif&#xD;
&#xD;
if (result != 0) {&#xD;
OSAL_ERROR (&quot;&quot;);&#xD;
}&#xD;
&#xD;
return result;&#xD;
</body>
</ownedBehavior>
<ownedOperation xmi:type="uml:Operation" xmi:id="_QWlVkfRTEeCUGrV0Hl4JwQ" name="Condition" method="_QWlVifRTEeCUGrV0Hl4JwQ"/>
<ownedOperation xmi:type="uml:Operation" xmi:id="_QWlVkvRTEeCUGrV0Hl4JwQ" name="Condition" method="_QWlVivRTEeCUGrV0Hl4JwQ"/>
<ownedOperation xmi:type="uml:Operation" xmi:id="_QWlVk_RTEeCUGrV0Hl4JwQ" name="lock" method="_QWlVi_RTEeCUGrV0Hl4JwQ"/>
<ownedOperation xmi:type="uml:Operation" xmi:id="_QWlVlPRTEeCUGrV0Hl4JwQ" name="unlock" method="_QWlVjPRTEeCUGrV0Hl4JwQ"/>
<ownedOperation xmi:type="uml:Operation" xmi:id="_QWlVlfRTEeCUGrV0Hl4JwQ" name="wait" method="_QWlVjfRTEeCUGrV0Hl4JwQ">
<ownedComment xmi:type="uml:Comment" xmi:id="_QWlVlvRTEeCUGrV0Hl4JwQ" annotatedElement="_QWlVlfRTEeCUGrV0Hl4JwQ">
<body>wait, until the condition variable is signaled.&#xD;
&#xD;
The associated mutex must be locked before calling waitUpto. It will&#xD;
be re-locked at the end of the call.</body>
</ownedComment>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_QWlVl_RTEeCUGrV0Hl4JwQ" name="param_0" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_QWlVmfRTEeCUGrV0Hl4JwQ" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_QWlVmPRTEeCUGrV0Hl4JwQ" name="" value="1"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="_QWlVm_RTEeCUGrV0Hl4JwQ" name="waitUpto" method="_QWlVjvRTEeCUGrV0Hl4JwQ">
<ownedComment xmi:type="uml:Comment" xmi:id="_QWlVnPRTEeCUGrV0Hl4JwQ" annotatedElement="_QWlVm_RTEeCUGrV0Hl4JwQ">
<body>wait, until the condition variable is signaled or the given date&#xD;
has pased.&#xD;
&#xD;
The associated mutex must be locked before calling waitUpto. It will&#xD;
be re-locked at the end of the call.</body>
</ownedComment>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_QWlVnfRTEeCUGrV0Hl4JwQ" name="param_0" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_QWlVn_RTEeCUGrV0Hl4JwQ" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_QWlVnvRTEeCUGrV0Hl4JwQ" name="" value="1"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_QWlVofRTEeCUGrV0Hl4JwQ" name="date" type="_FuKEEDj8Edy0Rd6V_tf1-Q">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_QWlVo_RTEeCUGrV0Hl4JwQ" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_QWlVovRTEeCUGrV0Hl4JwQ" name="" value="1"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="_QWlVpfRTEeCUGrV0Hl4JwQ" name="signal" method="_QWlVj_RTEeCUGrV0Hl4JwQ">
<ownedComment xmi:type="uml:Comment" xmi:id="_QWlVpvRTEeCUGrV0Hl4JwQ" annotatedElement="_QWlVpfRTEeCUGrV0Hl4JwQ">
<body>signal the condition. A thread that is currently waiting for the&#xD;
condition will continue. If multiple threads are waiting, only one&#xD;
of these will continue.</body>
</ownedComment>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_QWlVp_RTEeCUGrV0Hl4JwQ" name="param_0" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_QWlVqfRTEeCUGrV0Hl4JwQ" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_QWlVqPRTEeCUGrV0Hl4JwQ" name="" value="1"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="_QWlVq_RTEeCUGrV0Hl4JwQ" name="broadcast" method="_QWlVkPRTEeCUGrV0Hl4JwQ">
<ownedComment xmi:type="uml:Comment" xmi:id="_QWlVrPRTEeCUGrV0Hl4JwQ" annotatedElement="_QWlVq_RTEeCUGrV0Hl4JwQ">
<body>signal the condition. Other threads that are currently waiting for the&#xD;
condition will continue.</body>
</ownedComment>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_QWlVrfRTEeCUGrV0Hl4JwQ" name="param_0" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_QWlVr_RTEeCUGrV0Hl4JwQ" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_QWlVrvRTEeCUGrV0Hl4JwQ" name="" value="1"/>
</ownedParameter>
</ownedOperation>
</packagedElement>
<packagedElement xmi:type="uml:PrimitiveType" xmi:id="_uWQvMBD4EeG3cfLoiI6G7g" name="MutexId"/>
<packagedElement xmi:type="uml:Enumeration" xmi:id="_0H3-IBEcEeG3cfLoiI6G7g" name="Scope">
<ownedLiteral xmi:type="uml:EnumerationLiteral" xmi:id="_2SOV0BEcEeG3cfLoiI6G7g" name="IntraProcess"/>
<ownedLiteral xmi:type="uml:EnumerationLiteral" xmi:id="_3I10wBEcEeG3cfLoiI6G7g" name="InterProcess"/>
</packagedElement>
<packagedElement xmi:type="uml:PrimitiveType" xmi:id="_U_uoIBEhEeG3cfLoiI6G7g" name="ConditionId"/>
<packagedElement xmi:type="uml:Dependency" xmi:id="_3y1pEL-MEeWzCKjiZE_bAw" client="_QWlVgPRTEeCUGrV0Hl4JwQ" supplier="_1vnXoDO0EdyG-pUz-bb-Lg"/>
</packagedElement>
<packagedElement xmi:type="uml:Package" xmi:id="_vlmmAC-OEdySSa8YESkO2w" name="Time">
<packagedElement xmi:type="uml:Class" xmi:id="_BN92YDj8Edy0Rd6V_tf1-Q" name="DebugTimer">
<ownedAttribute xmi:type="uml:Property" xmi:id="_4fTgUDj_Edy0Rd6V_tf1-Q" name="timer" type="_ETakYDj8Edy0Rd6V_tf1-Q" isUnique="false" association="_4fJvUDj_Edy0Rd6V_tf1-Q">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_5xaBYDj_Edy0Rd6V_tf1-Q" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_5xjyYDj_Edy0Rd6V_tf1-Q" value="1"/>
</ownedAttribute>
<ownedAttribute xmi:type="uml:Property" xmi:id="_B8mhMTkAEdy0Rd6V_tf1-Q" name="overrunCheckThread" type="_-HeCsDj_Edy0Rd6V_tf1-Q" isUnique="false" association="_B8mhMDkAEdy0Rd6V_tf1-Q">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_C_gvsDkAEdy0Rd6V_tf1-Q"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_C_p5oDkAEdy0Rd6V_tf1-Q" value="1"/>
</ownedAttribute>
<ownedAttribute xmi:type="uml:Property" xmi:id="_k235cDkFEdyuzNpSiGPe4w" name="m_thread" visibility="protected" type="_-HeCsDj_Edy0Rd6V_tf1-Q" isUnique="false" association="_k2k-gDkFEdyuzNpSiGPe4w">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_pAkSsDkFEdyuzNpSiGPe4w" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_pAuDsDkFEdyuzNpSiGPe4w" value="1"/>
</ownedAttribute>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_hURusDkAEdy0Rd6V_tf1-Q" name="checkOverruns" specification="_I9vBoDkAEdy0Rd6V_tf1-Q">
<ownedParameter xmi:type="uml:Parameter" xmi:id="__ZLSECBaEeOMKsPXBVC0DA" name="param_0" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_8I6RgBydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="__ZroYCBaEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="__Z2AcCBaEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="__aOa8CBaEeOMKsPXBVC0DA" name="arg">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_8I6RgBydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="__a034CBaEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="__a_3ACBaEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body> int receivedSigID;&#xD;
sigset_t sigset;&#xD;
sigemptyset (&amp;sigset);&#xD;
sigaddset (&amp;sigset, SIGRTMIN);&#xD;
for (;;) {&#xD;
sigwait (&amp;sigset, &amp;receivedSigID);&#xD;
int overruns = debugTimer.getOverrun ();&#xD;
if (overruns > 0) {&#xD;
TRACEpr (F6);&#xD;
PR (&quot;detected return from debugger&quot; &lt;&lt; showI);&#xD;
TimeVal delta;&#xD;
overruns++; // the actual delay is between overruns and overruns+1&#xD;
delta.setSec ((overruns / DBG_TICKS_PER_SECOND));&#xD;
delta.setUsec ((overruns % DBG_TICKS_PER_SECOND) *&#xD;
DBG_RESOLUTION_MS * 1000);&#xD;
TimeVal::adjustTime (delta);&#xD;
PR (&quot;adjusted time&quot; &lt;&lt; showI);&#xD;
}&#xD;
}&#xD;
return NULL;</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_k_uFsDkAEdy0Rd6V_tf1-Q" name="activateDebugTimer" specification="_RTqHkDj8Edy0Rd6V_tf1-Q">
<language>C/C++</language>
<body> itimerspec its = {&#xD;
{0, DBG_RESOLUTION_MS*1000*1000},&#xD;
{0, DBG_RESOLUTION_MS*1000*1000}&#xD;
};&#xD;
&#xD;
// need high priority (1)&#xD;
Thread::modifySigMask (SIG_BLOCK, SIGRTMIN);&#xD;
// not declared globally, since initialization order of gcc is incorrect&#xD;
// (set_of_threads is initialized after)&#xD;
overrunCheckThread = new Thread (&quot;dbg-check&quot;);&#xD;
overrunCheckThread->exec (checkOverruns, NULL, 10);&#xD;
&#xD;
debugTimer.setTime (0, &amp;its);</body>
</ownedBehavior>
<ownedOperation xmi:type="uml:Operation" xmi:id="_RTqHkDj8Edy0Rd6V_tf1-Q" name="activateDebugTimer" method="_k_uFsDkAEdy0Rd6V_tf1-Q"/>
<ownedOperation xmi:type="uml:Operation" xmi:id="_I9vBoDkAEdy0Rd6V_tf1-Q" name="checkOverruns" method="_hURusDkAEdy0Rd6V_tf1-Q">
<ownedComment xmi:type="uml:Comment" xmi:id="_NMC1IDkAEdy0Rd6V_tf1-Q" annotatedElement="_I9vBoDkAEdy0Rd6V_tf1-Q">
<body>todo: need to use thread abstraction</body>
</ownedComment>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_Q8_-QDkAEdy0Rd6V_tf1-Q" name="param_0" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_8I6RgBydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_RCzrUDkAEdy0Rd6V_tf1-Q" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_RC9cUDkAEdy0Rd6V_tf1-Q" name="" value="1"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_RLwL8DkAEdy0Rd6V_tf1-Q" name="arg">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_8I6RgBydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_RMDG4DkAEdy0Rd6V_tf1-Q" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_RMM34DkAEdy0Rd6V_tf1-Q" name="" value="1"/>
</ownedParameter>
</ownedOperation>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_ETakYDj8Edy0Rd6V_tf1-Q" name="Timer">
<ownedComment xmi:type="uml:Comment" xmi:id="_xh0kQDkUEdyuzNpSiGPe4w" annotatedElement="_ETakYDj8Edy0Rd6V_tf1-Q">
<body>Abstraction of a Timer&#xD;
&#xD;
This class serves two different functions: if an instance is&#xD;
created via the constructor, it provides a (posix) timer. The configuration&#xD;
of this timer is done by means of the method settime, which allows&#xD;
principally to configure a period length and the initial delay.&#xD;
&#xD;
In addtion, the timer class offers the possibility to use system&#xD;
functions for waiting a specific time:&#xD;
&#xD;
- sleep&#xD;
- wakeup&#xD;
- wakePeriodicforZero&#xD;
&#xD;
In order to use These, it is not necessary to create a timer instance,&#xD;
these operations are static.</body>
</ownedComment>
<ownedAttribute xmi:type="uml:Property" xmi:id="_46X-0DkXEdyuzNpSiGPe4w" name="m_id" visibility="private" type="_5YJA0It4EeCA0czgCf_91g" isUnique="false">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_6UrZoDkXEdyuzNpSiGPe4w" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_6U1KoDkXEdyuzNpSiGPe4w" value="1"/>
</ownedAttribute>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_aRuIkDkZEdyuzNpSiGPe4w" name="Timer" specification="_4_tSIDkUEdyuzNpSiGPe4w">
<language>C/C++</language>
<body> m_id = TimerNotAssigned;&#xD;
&#xD;
#if defined TIMER_POSIX4&#xD;
#define ITIMER CLOCK_REALTIME // or CLOCK_MONOTONIC&#xD;
&#xD;
// With evp==NULL and SA_SIGINFO set ,&#xD;
// SIGALRM will be sent to the process (or to the thread&#xD;
// not masked for this signal)&#xD;
// replace SIG_IGN by a handleSigAlarm() ??????&#xD;
// mask other signals !!&#xD;
&#xD;
// initialisation of sigaction structure&#xD;
struct sigaction act;&#xD;
//act.sa_handler = (VOIDFUNCPTR) sigHandler;&#xD;
//act.sa_mask = 0;&#xD;
//act.sa_flags = 0;&#xD;
// we have to define a handler with the following arguments:&#xD;
// void sigHandler(int sig, int code, SIGCONTEXT *sigContext) {};&#xD;
&#xD;
if (sigaction (SIGALRM, &amp;act, NULL))&#xD;
OSAL_ERROR (&quot;ON sigaction()&quot;);&#xD;
&#xD;
struct sigevent sig_event;&#xD;
sig_event.sigev_notify = SIGEV_SIGNAL;&#xD;
sig_event.sigev_value.sival_ptr = this;&#xD;
sig_event.sigev_signo = SIGRTMIN;&#xD;
// sig_event.sigev_notify_function = SysTimer_impl::handler_fct;&#xD;
// sig_event.sigev_notify_attributes = NULL;&#xD;
&#xD;
int r = timer_create (ITIMER, &amp;sig_event, &amp;m_id);&#xD;
if (r == -1)&#xD;
OSAL_ERROR (&quot;ON timer_create()&quot;);&#xD;
&#xD;
#elif defined TIMER_Solaris&#xD;
#define ITIMER ITIMER_REAL // PAS CONSEILLÉ par Doc SunOS5.5&#xD;
//#define ITIMER ITIMER_VIRTUAL ???&#xD;
#define SIG_ITIMER SIGALRM // or SIGVTALRM&#xD;
&#xD;
// &#xD;
// Si la Realtime Library de Solaris ne marche vraiment pas pour les timers&#xD;
// masquer ce thread contre les autres signaux !!&#xD;
// faire la methode de classe handleTimerSignal() contenant seulement :&#xD;
// flag= 1;&#xD;
//&#xD;
//**** Prepare signal receiving&#xD;
// struct sigaction sigAct;&#xD;
// sigAct.sa_handler= (VOIDFUNCPTR) sigHandler);&#xD;
// sigAct.sa_mask= 0;&#xD;
// sigAct.sa_flags= 0;&#xD;
// sigaction(SIGALRM, &amp;sigAct, NULL);&#xD;
//&#xD;
// void (*f)(int);&#xD;
// f= sigset(SIG_ITIMER, (void(*)(int))handleTimerSignal);&#xD;
// if (f == SIG_ERR)&#xD;
// OSAL_ERROR(&quot;ON sigset(SIG_ITIMER, )&quot;);&#xD;
&#xD;
PRINTpr (&quot;not yet implemented.&quot;);&#xD;
pr &lt;&lt; shErr;&#xD;
#else&#xD;
#error Timer_??? not defined&#xD;
#endif&#xD;
</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_eQrRcDkZEdyuzNpSiGPe4w" name="Timer" specification="_5IDV0DkUEdyuzNpSiGPe4w">
<language>C/C++</language>
<body> int r;&#xD;
&#xD;
#if defined TIMER_POSIX4&#xD;
if (m_id != TimerNotAssigned)&#xD;
{&#xD;
r = timer_delete (m_id);&#xD;
if (r == -1) {&#xD;
OSAL_ERROR (&quot;ON timer_delete()&quot;);&#xD;
}&#xD;
}&#xD;
#elif defined TIMER_Solaris&#xD;
// [todo: resource leak?]&#xD;
#else&#xD;
#error Timer_??? not defined&#xD;
#endif&#xD;
</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_iA4zsDkZEdyuzNpSiGPe4w" name="waitPeriodicForZero" specification="_Fs12oDkWEdyuzNpSiGPe4w">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_AzsIQCBbEeOMKsPXBVC0DA" name="intPtr" direction="inout">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A0SlMCBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_A0dkUCBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_A09TkCBbEeOMKsPXBVC0DA" name="txt" type="_WXH_4DO2EdyG-pUz-bb-Lg">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A1dC0CBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_A1oB8CBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_A2C4sCBbEeOMKsPXBVC0DA" name="duration">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A2jPACBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_A2uOICBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body> int count = 0;&#xD;
&#xD;
OS_AL::Util::Print pr2;&#xD;
pr2 &lt;&lt; txt;&#xD;
&#xD;
while (*intPtr) // while pointed integer is not zero&#xD;
{&#xD;
if (txt.length () != 0) // print if txt string is not empty&#xD;
{&#xD;
pr2 &lt;&lt; &quot;value *intPtr = &quot; &lt;&lt; *intPtr &lt;&lt; &quot; - wait &quot; &lt;&lt; duration&#xD;
&lt;&lt; &quot; timetick(s)&quot; &lt;&lt; showI;&#xD;
}&#xD;
count ++;&#xD;
Timer::sleep (duration);&#xD;
&#xD;
if (!(errno == EINTR || errno == ETIME))&#xD;
OSAL_ERROR (&quot;&quot;);&#xD;
}&#xD;
pr2.clean ();&#xD;
&#xD;
TRACEpr (F7);&#xD;
PR (txt &lt;&lt; &quot;> return after &quot; &lt;&lt; count&#xD;
&lt;&lt; &quot; * &quot; &lt;&lt; duration &lt;&lt; &quot; timeticks&quot; &lt;&lt; showI);&#xD;
</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_lacwgDkZEdyuzNpSiGPe4w" name="setTime" specification="__BNhkDkUEdyuzNpSiGPe4w">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_A2-s0CBbEeOMKsPXBVC0DA" name="ret" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A3fDICBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_A3qCQCBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_A30aUCBbEeOMKsPXBVC0DA" name="flags">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A4VXsCBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_A4fvwCBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_A4qu4CBbEeOMKsPXBVC0DA" name="value" type="_SPVucIt6EeCA0czgCf_91g">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A5LsQCBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_A5WEUCBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_A52aoCBbEeOMKsPXBVC0DA" name="oldValue" type="_SPVucIt6EeCA0czgCf_91g">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A6XYACBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_A6iXICBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body> int r = 0;&#xD;
&#xD;
#if defined TIMER_POSIX4 || defined TIMER_Linux&#xD;
// flags == TIMER_RELTIME ou TIMER_ABSTIME&#xD;
r = timer_settime (m_id, flags, value, oldValue);&#xD;
if (r == -1)&#xD;
OSAL_ERROR (&quot;ON timer_settime()&quot;);&#xD;
&#xD;
#elif defined TIMER_Solaris&#xD;
struct itimerval val, oldVal;&#xD;
val.it_interval.tv_sec = value->it_interval.tv_sec;&#xD;
val.it_interval.tv_usec = value->it_interval.tv_nsec / 1000;&#xD;
val.it_value.tv_sec = value->it_value.tv_sec;&#xD;
val.it_value.tv_usec = value->it_value.tv_nsec / 1000;&#xD;
&#xD;
if (setitimer (ITIMER, &amp;val, &amp;oldVal))&#xD;
OSAL_ERROR (&quot;ON setitimer()&quot;);&#xD;
&#xD;
if (oldValue)&#xD;
{&#xD;
oldValue->it_interval.tv_sec = oldVal.it_interval.tv_sec;&#xD;
oldValue->it_interval.tv_nsec = oldVal.it_interval.tv_usec * 1000;&#xD;
oldValue->it_value.tv_sec = oldVal.it_value.tv_sec;&#xD;
oldValue->it_value.tv_nsec = oldVal.it_value.tv_usec * 1000;&#xD;
}&#xD;
#else&#xD;
#error Timer_??? not defined&#xD;
#endif&#xD;
&#xD;
return r;&#xD;
</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_piEGIDkZEdyuzNpSiGPe4w" name="getTime" specification="_FpAU8DkVEdyuzNpSiGPe4w">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_A7ARMCBbEeOMKsPXBVC0DA" name="ret" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A7nVMCBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_A7yUUCBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_A79TcCBbEeOMKsPXBVC0DA" name="value" type="_SPVucIt6EeCA0czgCf_91g">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A8eQ0CBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_A8pP8CBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body> int r = 0;&#xD;
&#xD;
#if defined TIMER_POSIX4 || defined TIMER_Linux&#xD;
r = timer_gettime (m_id, value);&#xD;
if (r == -1)&#xD;
OSAL_ERROR (&quot;ON timer_gettime()&quot;);&#xD;
&#xD;
#elif defined TIMER_Solaris&#xD;
struct itimerval val;&#xD;
val.it_interval.tv_sec = value->it_interval.tv_sec;&#xD;
val.it_interval.tv_usec = value->it_interval.tv_nsec / 1000;&#xD;
val.it_value.tv_sec = value->it_value.tv_sec;&#xD;
val.it_value.tv_usec = value->it_value.tv_nsec / 1000;&#xD;
&#xD;
if (getitimer (ITIMER, &amp;val))&#xD;
OSAL_ERROR (&quot;ON getitimer()&quot;);&#xD;
#else&#xD;
#error Timer_??? not defined&#xD;
#endif&#xD;
&#xD;
return r;&#xD;
</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_sPNo4DkZEdyuzNpSiGPe4w" name="getOverrun" specification="_5XqpsDkVEdyuzNpSiGPe4w">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_A9IYICBbEeOMKsPXBVC0DA" name="param_0" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A9oucCBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_A9ztkCBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body> int r;&#xD;
&#xD;
#if defined TIMER_Linux&#xD;
r = timer_getoverrun (m_id);&#xD;
if (r == -1)&#xD;
OSAL_ERROR (&quot;ON timer_getoverrun()&quot;);&#xD;
&#xD;
#elif defined TIMER_Cygwin || defined TIMER_Solaris&#xD;
// not supported&#xD;
r = 0;&#xD;
#else&#xD;
#error Timer_??? not defined&#xD;
#endif&#xD;
&#xD;
return r;&#xD;
</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_uuNa4DkZEdyuzNpSiGPe4w" name="sleep" specification="_Fh0SYDkWEdyuzNpSiGPe4w">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_A-EMQCBbEeOMKsPXBVC0DA" name="param_0" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A-kikCBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_A-vhsCBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_A-6g0CBbEeOMKsPXBVC0DA" name="duration">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_8heigBydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A_beMCBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_A_mdUCBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body> int r = 0;&#xD;
&#xD;
if (duration > 0)&#xD;
{&#xD;
TimeVal finalDate = TimeVal::current () + TimeVal (duration);&#xD;
r = wakeUp (finalDate);&#xD;
}&#xD;
&#xD;
return r;&#xD;
</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_w_WXEDkZEdyuzNpSiGPe4w" name="wakeUp" specification="_Fk8e4DkWEdyuzNpSiGPe4w">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_A_28ACBbEeOMKsPXBVC0DA" name="param_0" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_BAXSUCBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_BAiRcCBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_BAtQkCBbEeOMKsPXBVC0DA" name="date" type="_FuKEEDj8Edy0Rd6V_tf1-Q">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_BBNm4CBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_BBYmACBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body> int r = 0;&#xD;
&#xD;
if (!date.hasPassed ()) {&#xD;
TimeVal remainder;&#xD;
do {&#xD;
r = waitDate (date, remainder);&#xD;
} while (remainder > 0);&#xD;
}&#xD;
return r;&#xD;
</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_2imkQDkZEdyuzNpSiGPe4w" name="waitDate" specification="_TvgqsDkXEdyuzNpSiGPe4w">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_BB4VQCBbEeOMKsPXBVC0DA" name="ret" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_BCYrkCBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_BCjqsCBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_BCup0CBbEeOMKsPXBVC0DA" name="finalDate" type="_FuKEEDj8Edy0Rd6V_tf1-Q">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_BDXjACBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_BDh7ECBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_BD8x0CBbEeOMKsPXBVC0DA" name="remainder" type="_FuKEEDj8Edy0Rd6V_tf1-Q" direction="out">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_BEdIICBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_BEoHQCBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body> int r;&#xD;
&#xD;
#ifdef SYSTEM_Solaris&#xD;
mutex_t sleepLock = DEFAULTMUTEX; // without init(), requires zeroed memory&#xD;
cond_t sleepCond = DEFAULTCV; // this condition variable will never be unblocked&#xD;
struct timespec final; // final date in standard type&#xD;
TimeVal absTime = finalDate + TimeVal::sysStartTime ();&#xD;
final.tv_sec = absTime.getSec ();&#xD;
final.tv_nsec = absTime.getUsec () * 1000;&#xD;
&#xD;
mutex_lock (&amp;sleepLock);&#xD;
errno = r = cond_timedwait (&amp;sleepCond, &amp;sleepLock, &amp;final);&#xD;
mutex_unlock (&amp;sleepLock);&#xD;
// cond_destroy(&amp;sleepCond);&#xD;
// mutex_destroy(&amp;sleepLock);&#xD;
&#xD;
if (errno == ETIME || errno == 0) {&#xD;
r = 0;&#xD;
remainder.setSec (0);&#xD;
remainder.setNSec (0);&#xD;
}&#xD;
else if (errno == EINTR) {&#xD;
// call has been interrupted by signal&#xD;
r = 1;&#xD;
remainder = finalDate - TimeVal::current ();&#xD;
}&#xD;
else {&#xD;
OSAL_ERROR (&quot;ON cond_timedwait()&quot;);&#xD;
}&#xD;
#else&#xD;
struct timespec delay, remainingTime;&#xD;
TimeVal delayTime = finalDate - TimeVal::current ();&#xD;
// #define PRECISE_WAIT&#xD;
#ifdef PRECISE_WAIT&#xD;
// idea: wait some ms less with nanosleep, perform busy wait after&#xD;
// [todo:] does not work for remainingTime&#xD;
TimeVal some_ms;&#xD;
some_ms.setUsec (5*1000);&#xD;
&#xD;
TimeVal sleepTime = delayTime - some_ms;&#xD;
delay.tv_sec = sleepTime.getSec ();&#xD;
delay.tv_nsec = sleepTime.getNsec ();&#xD;
r = 0;&#xD;
if (sleepTime > 0) {&#xD;
r = nanosleep (&amp;delay, &amp;remainingTime);&#xD;
}&#xD;
// perform busy wait for last (upto) 10 ms&#xD;
do {&#xD;
delayTime = finalDate - TimeVal::current ();&#xD;
}&#xD;
while (delayTime > 0);&#xD;
#else&#xD;
delay.tv_sec = delayTime.getSec ();&#xD;
delay.tv_nsec = delayTime.getNsec ();&#xD;
r = nanosleep (&amp;delay, &amp;remainingTime);&#xD;
#endif&#xD;
if (r == 0)&#xD;
{&#xD;
remainder = 0;&#xD;
}&#xD;
else&#xD;
{&#xD;
if (errno != EINTR)&#xD;
OSAL_ERROR (&quot;ON nanosleep()&quot;);&#xD;
r = 1;&#xD;
// todo: remainder not used?&#xD;
remainder.setSec (remainingTime.tv_sec);&#xD;
remainder.setNsec (remainingTime.tv_nsec);&#xD;
}&#xD;
#endif&#xD;
&#xD;
return r;&#xD;
</body>
</ownedBehavior>
<ownedOperation xmi:type="uml:Operation" xmi:id="_4_tSIDkUEdyuzNpSiGPe4w" name="Timer" method="_aRuIkDkZEdyuzNpSiGPe4w"/>
<ownedOperation xmi:type="uml:Operation" xmi:id="_5IDV0DkUEdyuzNpSiGPe4w" name="Timer" method="_eQrRcDkZEdyuzNpSiGPe4w"/>
<ownedOperation xmi:type="uml:Operation" xmi:id="__BNhkDkUEdyuzNpSiGPe4w" name="setTime" method="_lacwgDkZEdyuzNpSiGPe4w">
<ownedComment xmi:type="uml:Comment" xmi:id="_KN-U8DkVEdyuzNpSiGPe4w" annotatedElement="__BNhkDkUEdyuzNpSiGPe4w">
<body>activate the timer, i.e. pass an itimerspec value with initial delay&#xD;
and period length. In addition, the first parameter flags is a bit&#xD;
vector. If it includes TIMER_ABSTIME, it denotes that an absolute&#xD;
time value for is passed as initial delay.&#xD;
[Todo: would be more consistent to pass two Accord TimeVals]</body>
</ownedComment>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_Bv25IDkVEdyuzNpSiGPe4w" name="ret" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_BwAqIDkVEdyuzNpSiGPe4w" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_BwJ0EDkVEdyuzNpSiGPe4w" name="" value="1"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_B0oEYDkVEdyuzNpSiGPe4w" name="flags">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_B06_UDkVEdyuzNpSiGPe4w" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_B1EwUDkVEdyuzNpSiGPe4w" name="" value="1"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_B5PeoDkVEdyuzNpSiGPe4w" name="value" type="_SPVucIt6EeCA0czgCf_91g">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_B5jAoDkVEdyuzNpSiGPe4w" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_B5sKkDkVEdyuzNpSiGPe4w" name="" value="1"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_B9j98DkVEdyuzNpSiGPe4w" name="oldValue" type="_SPVucIt6EeCA0czgCf_91g">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_B93f8DkVEdyuzNpSiGPe4w" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_B-Ka4DkVEdyuzNpSiGPe4w" name="" value="1"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="_FpAU8DkVEdyuzNpSiGPe4w" name="getTime" method="_piEGIDkZEdyuzNpSiGPe4w">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_F_W_cDkVEdyuzNpSiGPe4w" name="ret" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_F_gwcDkVEdyuzNpSiGPe4w" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_F_zrYDkVEdyuzNpSiGPe4w" name="" value="1"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_GD1PwDkVEdyuzNpSiGPe4w" name="value" type="_SPVucIt6EeCA0czgCf_91g">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_GEIKsDkVEdyuzNpSiGPe4w" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_GER7sDkVEdyuzNpSiGPe4w" name="" value="1"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="_5XqpsDkVEdyuzNpSiGPe4w" name="getOverrun" method="_sPNo4DkZEdyuzNpSiGPe4w">
<ownedComment xmi:type="uml:Comment" xmi:id="_AqO4YDkWEdyuzNpSiGPe4w" annotatedElement="_5XqpsDkVEdyuzNpSiGPe4w">
<body>if the signal associated with a timer expiration is not handled,&#xD;
an overrun counter is increased with each expiration. It can be used&#xD;
to detect an overload</body>
</ownedComment>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_7ZmsQDkVEdyuzNpSiGPe4w" name="param_0" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_7Z5nMDkVEdyuzNpSiGPe4w" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_7aDYMDkVEdyuzNpSiGPe4w" name="" value="1"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="_Fh0SYDkWEdyuzNpSiGPe4w" name="sleep" isStatic="true" method="_uuNa4DkZEdyuzNpSiGPe4w">
<ownedComment xmi:type="uml:Comment" xmi:id="_PdEakDkWEdyuzNpSiGPe4w" annotatedElement="_Fh0SYDkWEdyuzNpSiGPe4w">
<body>sleep for a certain duration (defined in time units, see&#xD;
TimeVal::_moduleSec)&#xD;
&#xD;
If the process receives a signal, the OS sleep is interrupted&#xD;
(e.g. nanosleep in case of Posix). This sleep method will recall the&#xD;
OS sleep function until the specified time has passed.</body>
</ownedComment>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_S0PxwDkWEdyuzNpSiGPe4w" name="param_0" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_S0Y7sDkWEdyuzNpSiGPe4w" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_S0issDkWEdyuzNpSiGPe4w" name="" value="1"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_S390IDkWEdyuzNpSiGPe4w" name="duration">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_8heigBydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_S4HlIDkWEdyuzNpSiGPe4w" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_S4RWIDkWEdyuzNpSiGPe4w" name="" value="1"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="_Fk8e4DkWEdyuzNpSiGPe4w" name="wakeUp" isStatic="true" method="_w_WXEDkZEdyuzNpSiGPe4w">
<ownedComment xmi:type="uml:Comment" xmi:id="_iAaZ8DkWEdyuzNpSiGPe4w" annotatedElement="_Fk8e4DkWEdyuzNpSiGPe4w">
<body>continue computation after the (absolute) date has passed. This&#xD;
function shares other properties with the sleep function.</body>
</ownedComment>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_biTHADkWEdyuzNpSiGPe4w" name="param_0" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_bimpADkWEdyuzNpSiGPe4w" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_bivy8DkWEdyuzNpSiGPe4w" name="" value="1"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_blSJkDkWEdyuzNpSiGPe4w" name="date" type="_FuKEEDj8Edy0Rd6V_tf1-Q">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_bllEgDkWEdyuzNpSiGPe4w" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_blu1gDkWEdyuzNpSiGPe4w" name="" value="1"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="_Fs12oDkWEdyuzNpSiGPe4w" name="waitPeriodicForZero" isStatic="true" method="_iA4zsDkZEdyuzNpSiGPe4w">
<ownedComment xmi:type="uml:Comment" xmi:id="_wLdjYDkWEdyuzNpSiGPe4w" annotatedElement="_Fs12oDkWEdyuzNpSiGPe4w">
<body>wait, until the variable *intPtr becomes zero, The parameter duration&#xD;
determines the interval in which the variable is checked. If the&#xD;
parameter txt is not empty, its contents is printed out during each&#xD;
check.&#xD;
&#xD;
Should be considered as deprecated? (not used)</body>
</ownedComment>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_1vwSYDkWEdyuzNpSiGPe4w" name="intPtr" direction="inout">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_1wD0YDkWEdyuzNpSiGPe4w" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_1wM-UDkWEdyuzNpSiGPe4w" name="" value="1"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_10YTsDkWEdyuzNpSiGPe4w" name="txt" type="_WXH_4DO2EdyG-pUz-bb-Lg">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_10rOoDkWEdyuzNpSiGPe4w" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_100_oDkWEdyuzNpSiGPe4w" name="" value="1"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_142kADkWEdyuzNpSiGPe4w" name="duration">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_15Je8DkWEdyuzNpSiGPe4w" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_15cZ4DkWEdyuzNpSiGPe4w" name="" value="1"/>
<defaultValue xmi:type="uml:LiteralInteger" xmi:id="_Q0NyICBGEeOBrb_t_69W4Q" value="1"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="_TvgqsDkXEdyuzNpSiGPe4w" name="waitDate" visibility="private" isStatic="true" method="_2imkQDkZEdyuzNpSiGPe4w">
<ownedComment xmi:type="uml:Comment" xmi:id="_3YPy0DkZEdyuzNpSiGPe4w" annotatedElement="_TvgqsDkXEdyuzNpSiGPe4w">
<body>used by wakeUp and sleep</body>
</ownedComment>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_eciOEDkXEdyuzNpSiGPe4w" name="ret" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_ec1JADkXEdyuzNpSiGPe4w" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ec-S8DkXEdyuzNpSiGPe4w" name="" value="1"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_efgpkDkXEdyuzNpSiGPe4w" name="finalDate" type="_FuKEEDj8Edy0Rd6V_tf1-Q">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_efzkgDkXEdyuzNpSiGPe4w" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ef9VgDkXEdyuzNpSiGPe4w" name="" value="1"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_eio2EDkXEdyuzNpSiGPe4w" name="remainder" type="_FuKEEDj8Edy0Rd6V_tf1-Q" direction="out">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_ei8YEDkXEdyuzNpSiGPe4w" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ejFiADkXEdyuzNpSiGPe4w" name="" value="1"/>
</ownedParameter>
</ownedOperation>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_FuKEEDj8Edy0Rd6V_tf1-Q" name="TimeVal">
<ownedAttribute xmi:type="uml:Property" xmi:id="_VOnAwDkpEdyuzNpSiGPe4w" name="m_timespec" visibility="private" type="_vZD1EFKWEd-OfYmxqPWG5g" isUnique="false">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_WVZCoDkpEdyuzNpSiGPe4w" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_WVZCoTkpEdyuzNpSiGPe4w" value="1"/>
</ownedAttribute>
<ownedAttribute xmi:type="uml:Property" xmi:id="_10XK8DkpEdyuzNpSiGPe4w" name="m_moduloSec" visibility="private" isStatic="true" isUnique="false">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Av_LADkqEdyuzNpSiGPe4w" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Av_LATkqEdyuzNpSiGPe4w" value="1"/>
<defaultValue xmi:type="uml:LiteralString" xmi:id="_qnfHUB6hEeG-VLfJDduovg" name="" value="1000000 / m_timeScale"/>
</ownedAttribute>
<ownedAttribute xmi:type="uml:Property" xmi:id="_19J6kDkpEdyuzNpSiGPe4w" name="m_timeScale" visibility="private" isStatic="true" isUnique="false">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_AHKQcDkqEdyuzNpSiGPe4w" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_AHUBcDkqEdyuzNpSiGPe4w" value="1"/>
<defaultValue xmi:type="uml:LiteralInteger" xmi:id="_OOpq4F2oEd-12d_h0i1xhQ" value="1000"/>
</ownedAttribute>
<ownedAttribute xmi:type="uml:Property" xmi:id="_Ag0mQFKiEd-OfYmxqPWG5g" name="m_sysStartTime" visibility="private" isStatic="true" type="_FuKEEDj8Edy0Rd6V_tf1-Q" isUnique="false">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Ag0mQlKiEd-OfYmxqPWG5g" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Ag0mQVKiEd-OfYmxqPWG5g" value="1"/>
<defaultValue xmi:type="uml:LiteralString" xmi:id="_CyURwCBTEeOBrb_t_69W4Q" value=" TimeVal::systemTime();"/>
</ownedAttribute>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_L9V0QDkqEdyuzNpSiGPe4w" name="getTimeScale" specification="_q8lQcDkmEdyuzNpSiGPe4w">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_CTzQICBbEeOMKsPXBVC0DA" name="param_0" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_CUTmcCBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_CUelkCBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body>return m_timeScale;</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_Ogz2kDkqEdyuzNpSiGPe4w" name="getSec" specification="_hArPsDkgEdyuzNpSiGPe4w">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_CU2ZACBbEeOMKsPXBVC0DA" name="param_0" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_8heigBydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_CVXWYCBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_CViVgCBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body>return m_timespec.tv_sec;</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_PxIO8DkqEdyuzNpSiGPe4w" name="getUsec" specification="_hIbdgDkgEdyuzNpSiGPe4w">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_CVy0MCBbEeOMKsPXBVC0DA" name="param_0" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_8heigBydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_CWTKgCBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_CWeJoCBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body>return m_timespec.tv_nsec / 1000;</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_R1moIDkqEdyuzNpSiGPe4w" name="getNsec" specification="_hPbdYDkgEdyuzNpSiGPe4w">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_CWuBQCBbEeOMKsPXBVC0DA" name="param_0" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_8heigBydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_CXO-oCBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_CXZ9wCBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body>return m_timespec.tv_nsec;</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_TkLCwDkqEdyuzNpSiGPe4w" name="setSec" specification="_hWSTUDkgEdyuzNpSiGPe4w">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_CXp1YCBbEeOMKsPXBVC0DA" name="sec">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_8heigBydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_CYKLsCBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_CYVK0CBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body>m_timespec.tv_sec = sec;</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_Uxg_oDkqEdyuzNpSiGPe4w" name="setUsec" specification="_hc_YQDkgEdyuzNpSiGPe4w">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_CYlpgCBbEeOMKsPXBVC0DA" name="usec">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_8heigBydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_CZF_0CBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_CZQ-8CBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body>m_timespec.tv_nsec = usec * 1000;</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_WZ-LMDkqEdyuzNpSiGPe4w" name="setNsec" specification="_hkcEEDkgEdyuzNpSiGPe4w">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_CZoLUCBbEeOMKsPXBVC0DA" name="nsec">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_8heigBydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_CaIhoCBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_CaS5sCBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body>m_timespec.tv_nsec = nsec;</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_YQSzoDkqEdyuzNpSiGPe4w" name="sysStartTime" specification="_rCsfgDkmEdyuzNpSiGPe4w">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_Caj_cCBbEeOMKsPXBVC0DA" name="param_0" type="_FuKEEDj8Edy0Rd6V_tf1-Q" direction="return">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_CbEVwCBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_CbPU4CBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body>return m_sysStartTime;</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_w4kusDnfEdyuzNpSiGPe4w" name="setScale" specification="_af9uADkbEdyuzNpSiGPe4w">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_CbnIUCBbEeOMKsPXBVC0DA" name="ret" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_CcIFsCBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_CcTE0CBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body>int s = OS_AL::ProcessingResources::ProDesc::getEnvInt (&quot;A_TimeScale&quot;);&#xD;
if (s &lt;= 0)&#xD;
{&#xD;
OS_AL::Util::BString500 bstr (&#xD;
&quot;--- Environment variable 'A_TimeScale' must be positive (length of ticks in microseconds)&quot;);&#xD;
OSAL_ERROR (bstr);&#xD;
}&#xD;
else {&#xD;
s = 1000; // default value 1000 µs = 1 ms&#xD;
&#xD;
OS_AL::Util::Print print;&#xD;
print &lt;&lt;&#xD;
&quot; --- Environment variable 'A_TimeScale' not found. Time intervals are assumed expressed in milliseconds.&quot; &lt;&lt; showI;&#xD;
}&#xD;
&#xD;
return s;</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_3PHaADnfEdyuzNpSiGPe4w" name="TimeVal" specification="_t7qHIDkaEdyuzNpSiGPe4w">
<language>C/C++</language>
<body>this->ticks();
reset ();</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_50F4MDnfEdyuzNpSiGPe4w" name="TimeVal" specification="_uEc2wDkaEdyuzNpSiGPe4w">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_CcpDECBbEeOMKsPXBVC0DA" name="t2" type="_FuKEEDj8Edy0Rd6V_tf1-Q">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_CdIyUCBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_CdTxcCBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body>this->ticks();&#xD;
m_timespec = t2.m_timespec;&#xD;
</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_8PrJ0DnfEdyuzNpSiGPe4w" name="TimeVal" specification="_uKtPwDkaEdyuzNpSiGPe4w">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_CdzgsCBbEeOMKsPXBVC0DA" name="ticks">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_LTZesByeEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_CeUeECBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Cee2ICBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body>this->ticks();&#xD;
setSec (ticks / m_moduloSec);&#xD;
setUsec ((ticks % m_moduloSec) * m_timeScale);&#xD;
</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_ASrFMDngEdyuzNpSiGPe4w" name="current" specification="_96S4oDkbEdyuzNpSiGPe4w">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_Ce3QoCBbEeOMKsPXBVC0DA" name="param_0" type="_FuKEEDj8Edy0Rd6V_tf1-Q" direction="return">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_CfXm8CBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Cfh_ACBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body>TimeVal current;&#xD;
current.update ();&#xD;
return current;&#xD;
</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_DYbVMDngEdyuzNpSiGPe4w" name="update" specification="_5GJNIDkbEdyuzNpSiGPe4w">
<language>C/C++</language>
<body>/*&#xD;
if (m_bFrozen) {&#xD;
*this = m_freezeTime;&#xD;
}&#xD;
else {&#xD;
*/&#xD;
*this = systemTime () - m_sysStartTime;&#xD;
// }&#xD;
</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_KjRyUDngEdyuzNpSiGPe4w" name="systemTime" specification="_JDcXUDkcEdyuzNpSiGPe4w">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_Cf39QCBbEeOMKsPXBVC0DA" name="param_0" type="_FuKEEDj8Edy0Rd6V_tf1-Q" direction="return">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_CgYTkCBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_CgiroCBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body>TimeVal current;&#xD;
clock_gettime (CLOCK_REALTIME, &amp;current.m_timespec);&#xD;
&#xD;
return current;&#xD;
</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_N3CpIDngEdyuzNpSiGPe4w" name="operator=" specification="_ToY8wDkcEdyuzNpSiGPe4w">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_CgzKUCBbEeOMKsPXBVC0DA" name="param_0" type="_FuKEEDj8Edy0Rd6V_tf1-Q" direction="return">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Cha1YCBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Chl0gCBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_Ch5WgCBbEeOMKsPXBVC0DA" name="tv2" type="_FuKEEDj8Edy0Rd6V_tf1-Q">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Cia68CBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Cil6ECBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body>m_timespec = tv2.m_timespec;&#xD;
&#xD;
return *this;&#xD;
</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_QJOuMDngEdyuzNpSiGPe4w" name="operator+=" specification="_TuMp0DkcEdyuzNpSiGPe4w">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_CjFCQCBbEeOMKsPXBVC0DA" name="param_0" type="_FuKEEDj8Edy0Rd6V_tf1-Q" direction="return">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Cjl_oCBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Cjw-wCBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_CkD5sCBbEeOMKsPXBVC0DA" name="incr" type="_FuKEEDj8Edy0Rd6V_tf1-Q">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_CkkQACBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_CkvPICBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body>m_timespec.tv_sec += incr.m_timespec.tv_sec;&#xD;
m_timespec.tv_nsec += incr.m_timespec.tv_nsec;&#xD;
&#xD;
if (m_timespec.tv_nsec >= 1000*1000*1000)&#xD;
{&#xD;
m_timespec.tv_sec ++;&#xD;
m_timespec.tv_nsec -= 1000*1000*1000;&#xD;
}&#xD;
&#xD;
return *this;&#xD;
</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_S_fJoDngEdyuzNpSiGPe4w" name="operator-=" specification="_T05uwDkcEdyuzNpSiGPe4w">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_ClQMgCBbEeOMKsPXBVC0DA" name="param_0" type="_FuKEEDj8Edy0Rd6V_tf1-Q" direction="return">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Clwi0CBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Cl7h8CBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_CmN10CBbEeOMKsPXBVC0DA" name="incr" type="_FuKEEDj8Edy0Rd6V_tf1-Q">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Cmx2gCBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Cm9csCBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body>m_timespec.tv_sec -= incr.m_timespec.tv_sec;&#xD;
m_timespec.tv_nsec -= incr.m_timespec.tv_nsec;&#xD;
&#xD;
if (m_timespec.tv_nsec &lt; 0)&#xD;
{&#xD;
m_timespec.tv_sec --;&#xD;
m_timespec.tv_nsec += 1000*1000*1000;&#xD;
}&#xD;
&#xD;
return *this;&#xD;
</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_WfnogDngEdyuzNpSiGPe4w" name="operator+" specification="_T6uC4DkcEdyuzNpSiGPe4w">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_Cnck4CBbEeOMKsPXBVC0DA" name="param_0" type="_FuKEEDj8Edy0Rd6V_tf1-Q" direction="return">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Cn87MCBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_CoH6UCBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_CoS5cCBbEeOMKsPXBVC0DA" name="tv2" type="_FuKEEDj8Edy0Rd6V_tf1-Q">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Co6kgCBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_CpE8kCBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body>TimeVal r (*this);&#xD;
r += tv2;&#xD;
&#xD;
return r;&#xD;
</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_Y0WEMDngEdyuzNpSiGPe4w" name="operator-" specification="_T_yJEDkcEdyuzNpSiGPe4w">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_CplS4CBbEeOMKsPXBVC0DA" name="param_0" type="_FuKEEDj8Edy0Rd6V_tf1-Q" direction="return">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_CqFCICBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_CqQBQCBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_CqbAYCBbEeOMKsPXBVC0DA" name="tv2" type="_FuKEEDj8Edy0Rd6V_tf1-Q">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Cq7WsCBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_CrFuwCBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body>TimeVal r (*this);&#xD;
r -= tv2;&#xD;
&#xD;
return r;&#xD;
</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_bE5KgDngEdyuzNpSiGPe4w" name="operator&lt;" specification="_UDgLcDkcEdyuzNpSiGPe4w">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_CrleACBbEeOMKsPXBVC0DA" name="param_0" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_CsF0UCBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_CsQzcCBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_CsbykCBbEeOMKsPXBVC0DA" name="tv2" type="_FuKEEDj8Edy0Rd6V_tf1-Q">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Cs7h0CBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_CtGg8CBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body>return (&#xD;
(getSec () &lt; tv2.getSec ()) ||&#xD;
(getSec () == tv2.getSec () &amp;&amp; getNsec () &lt; tv2.getNsec ()));&#xD;
</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_ds2EMDngEdyuzNpSiGPe4w" name="operator&lt;=" specification="_UKNQYDkcEdyuzNpSiGPe4w">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_CtlpICBbEeOMKsPXBVC0DA" name="param_0" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_CuF_cCBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_CuQ-kCBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_Cub9sCBbEeOMKsPXBVC0DA" name="tv2" type="_FuKEEDj8Edy0Rd6V_tf1-Q">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Cu8UACBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_CvHTICBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body>return (&#xD;
(getSec () &lt; tv2.getSec ()) ||&#xD;
(getSec () == tv2.getSec () &amp;&amp; getNsec () &lt;= tv2.getNsec ()));&#xD;
</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_gKXPgDngEdyuzNpSiGPe4w" name="operator==" specification="_UPk4kDkcEdyuzNpSiGPe4w">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_CvnCYCBbEeOMKsPXBVC0DA" name="param_0" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_CwNfUCBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_CwYecCBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_CwjdkCBbEeOMKsPXBVC0DA" name="tv2" type="_FuKEEDj8Edy0Rd6V_tf1-Q">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_CxDz4CBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_CxOzACBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body>return (&#xD;
(getSec () == tv2.getSec ()) &amp;&amp; (getNsec () == tv2.getNsec ()));</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_hsa4IDngEdyuzNpSiGPe4w" name="operator!=" specification="_UVFqsDkcEdyuzNpSiGPe4w">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_CxuiQCBbEeOMKsPXBVC0DA" name="param_0" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_CyO4kCBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_CyZQoCBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_CykPwCBbEeOMKsPXBVC0DA" name="tv2" type="_FuKEEDj8Edy0Rd6V_tf1-Q">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_CzFNICBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_CzQMQCBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body>return (!(*this == tv2));</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_kAi24DngEdyuzNpSiGPe4w" name="operator>=" specification="_UcFqkDkcEdyuzNpSiGPe4w">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_Czv7gCBbEeOMKsPXBVC0DA" name="param_0" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_C0QR0CBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_C0bQ8CBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_C0lpACBbEeOMKsPXBVC0DA" name="tv2" type="_FuKEEDj8Edy0Rd6V_tf1-Q">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_C1HNcCBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_C1SMkCBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body>return (&#xD;
(getSec () > tv2.getSec ()) ||&#xD;
(getSec () == tv2.getSec () &amp;&amp; getNsec () >= tv2.getNsec ()));&#xD;
</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_l4NjIDngEdyuzNpSiGPe4w" name="operator>" specification="_Us7i8DkcEdyuzNpSiGPe4w">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_C1x70CBbEeOMKsPXBVC0DA" name="ret" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_C2S5MCBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_C2d4UCBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_C2o3cCBbEeOMKsPXBVC0DA" name="tv2" type="_FuKEEDj8Edy0Rd6V_tf1-Q">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_C3JNwCBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_C3UM4CBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body>return (&#xD;
(getSec () > tv2.getSec ()) ||&#xD;
(getSec () == tv2.getSec () &amp;&amp; getNsec () > tv2.getNsec ()));&#xD;
</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_p94_EDngEdyuzNpSiGPe4w" name="hasPassed" specification="_9xV0IDkfEdyuzNpSiGPe4w">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_C36p0CBbEeOMKsPXBVC0DA" name="param_0" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_C4bAICBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_C4l_QCBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body>TimeVal current = TimeVal::current ();&#xD;
&#xD;
return (&#xD;
(getSec () &lt; current.getSec ()) ||&#xD;
(getSec () == current.getSec () &amp;&amp; getNsec () &lt;= current.getNsec ()));&#xD;
</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_r6enkDngEdyuzNpSiGPe4w" name="reset" specification="_IKEGADkhEdyuzNpSiGPe4w">
<language>C/C++</language>
<body>m_timespec.tv_sec = 0;&#xD;
m_timespec.tv_nsec = 0;&#xD;
</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_6wgAoDngEdyuzNpSiGPe4w" name="ticks" specification="_9jMDYDkfEdyuzNpSiGPe4w">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_C48kkCBbEeOMKsPXBVC0DA" name="param_0" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_8heigBydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_C5c64CBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_C5n6ACBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body>// m_moduloSec is 1000000 / m_timeScale&#xD;
return&#xD;
(getSec () * m_moduloSec) +&#xD;
(getUsec () / m_timeScale);&#xD;
</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_Ha2zYDnhEdyuzNpSiGPe4w" name="adjustTime" specification="_TAOvkDknEdyuzNpSiGPe4w">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_C54YsCBbEeOMKsPXBVC0DA" name="delta" type="_FuKEEDj8Edy0Rd6V_tf1-Q">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_C6akMCBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_C6ljUCBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body>// adjust startTime&#xD;
m_sysStartTime += delta;&#xD;
</body>
</ownedBehavior>
<ownedOperation xmi:type="uml:Operation" xmi:id="_t7qHIDkaEdyuzNpSiGPe4w" name="TimeVal" method="_3PHaADnfEdyuzNpSiGPe4w">
<ownedComment xmi:type="uml:Comment" xmi:id="_zNOHYDkaEdyuzNpSiGPe4w" annotatedElement="_t7qHIDkaEdyuzNpSiGPe4w">
<body>create a new TimeVal and initilize it with 0</body>
</ownedComment>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="_uEc2wDkaEdyuzNpSiGPe4w" name="TimeVal" method="_50F4MDnfEdyuzNpSiGPe4w">
<ownedComment xmi:type="uml:Comment" xmi:id="_1ZPTADkaEdyuzNpSiGPe4w" annotatedElement="_uEc2wDkaEdyuzNpSiGPe4w">
<body>copy constructor</body>
</ownedComment>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_DgL_kDkbEdyuzNpSiGPe4w" name="t2" type="_FuKEEDj8Edy0Rd6V_tf1-Q">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_DgoEcDkbEdyuzNpSiGPe4w" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Dgx1cDkbEdyuzNpSiGPe4w" name="" value="1"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="_uKtPwDkaEdyuzNpSiGPe4w" name="TimeVal" method="_8PrJ0DnfEdyuzNpSiGPe4w">
<ownedComment xmi:type="uml:Comment" xmi:id="_3U4gUDkaEdyuzNpSiGPe4w" annotatedElement="_uKtPwDkaEdyuzNpSiGPe4w">
<body>create a TimeValue when given a number of ticks</body>
</ownedComment>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_LywSsDkbEdyuzNpSiGPe4w" name="ticks">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_LTZesByeEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Ly6DsDkbEdyuzNpSiGPe4w" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_LzD0sDkbEdyuzNpSiGPe4w" name="" value="1"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="_af9uADkbEdyuzNpSiGPe4w" name="setScale" isStatic="true" method="_w4kusDnfEdyuzNpSiGPe4w">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_gE9noDkbEdyuzNpSiGPe4w" name="ret" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_gFQikDkbEdyuzNpSiGPe4w" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_gFaTkDkbEdyuzNpSiGPe4w" name="" value="1"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="_5GJNIDkbEdyuzNpSiGPe4w" name="update" method="_DYbVMDngEdyuzNpSiGPe4w">
<ownedComment xmi:type="uml:Comment" xmi:id="_6w--UDkbEdyuzNpSiGPe4w" annotatedElement="_5GJNIDkbEdyuzNpSiGPe4w">
<body>update with current &quot;accord&quot; time, returned time is relative to&#xD;
start of system and can be frozen (useful for debugging)</body>
</ownedComment>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="_96S4oDkbEdyuzNpSiGPe4w" name="current" isStatic="true" method="_ASrFMDngEdyuzNpSiGPe4w">
<ownedComment xmi:type="uml:Comment" xmi:id="__pKOMDkbEdyuzNpSiGPe4w" annotatedElement="_96S4oDkbEdyuzNpSiGPe4w">
<body>return current time (see update)</body>
</ownedComment>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_EDOlwDkcEdyuzNpSiGPe4w" name="param_0" type="_FuKEEDj8Edy0Rd6V_tf1-Q" direction="return">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_EDhgsDkcEdyuzNpSiGPe4w" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ED0boDkcEdyuzNpSiGPe4w" name="" value="1"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="_JDcXUDkcEdyuzNpSiGPe4w" name="systemTime" isStatic="true" method="_KjRyUDngEdyuzNpSiGPe4w">
<ownedComment xmi:type="uml:Comment" xmi:id="_NP9bEDkcEdyuzNpSiGPe4w" annotatedElement="_JDcXUDkcEdyuzNpSiGPe4w">
<body>return current system time</body>
</ownedComment>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_JpcAUDkcEdyuzNpSiGPe4w" name="param_0" type="_FuKEEDj8Edy0Rd6V_tf1-Q" direction="return">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_JplxUDkcEdyuzNpSiGPe4w" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_JpviUDkcEdyuzNpSiGPe4w" name="" value="1"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="_ToY8wDkcEdyuzNpSiGPe4w" name="operator=" method="_N3CpIDngEdyuzNpSiGPe4w">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_ndW8EDkcEdyuzNpSiGPe4w" name="param_0" type="_FuKEEDj8Edy0Rd6V_tf1-Q" direction="return">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_ndqeEDkcEdyuzNpSiGPe4w" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ndzoADkcEdyuzNpSiGPe4w" name="" value="1"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_nhPWgDkcEdyuzNpSiGPe4w" name="tv2" type="_FuKEEDj8Edy0Rd6V_tf1-Q">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_nhiRcDkcEdyuzNpSiGPe4w" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_nhsCcDkcEdyuzNpSiGPe4w" name="" value="1"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="_TuMp0DkcEdyuzNpSiGPe4w" name="operator+=" method="_QJOuMDngEdyuzNpSiGPe4w">
<ownedComment xmi:type="uml:Comment" xmi:id="_Bq8DQDkdEdyuzNpSiGPe4w" annotatedElement="_TuMp0DkcEdyuzNpSiGPe4w">
<body>increase/decrease time by increment/decrement</body>
</ownedComment>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_1jVYQDkcEdyuzNpSiGPe4w" name="param_0" type="_FuKEEDj8Edy0Rd6V_tf1-Q" direction="return">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_1joTMDkcEdyuzNpSiGPe4w" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_1jxdIDkcEdyuzNpSiGPe4w" name="" value="1"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_1lt94DkcEdyuzNpSiGPe4w" name="incr" type="_FuKEEDj8Edy0Rd6V_tf1-Q">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_1mA40DkcEdyuzNpSiGPe4w" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_1mKCwDkcEdyuzNpSiGPe4w" name="" value="1"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="_T05uwDkcEdyuzNpSiGPe4w" name="operator-=" method="_S_fJoDngEdyuzNpSiGPe4w">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_8FwjcDkcEdyuzNpSiGPe4w" name="param_0" type="_FuKEEDj8Edy0Rd6V_tf1-Q" direction="return">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_8GDeYDkcEdyuzNpSiGPe4w" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_8GMoUDkcEdyuzNpSiGPe4w" name="" value="1"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_8JVb4DkcEdyuzNpSiGPe4w" name="incr" type="_FuKEEDj8Edy0Rd6V_tf1-Q">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_8JoW0DkcEdyuzNpSiGPe4w" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_8JxgwDkcEdyuzNpSiGPe4w" name="" value="1"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="_T6uC4DkcEdyuzNpSiGPe4w" name="operator+" method="_WfnogDngEdyuzNpSiGPe4w">
<ownedComment xmi:type="uml:Comment" xmi:id="_d1so0DkdEdyuzNpSiGPe4w" annotatedElement="_T6uC4DkcEdyuzNpSiGPe4w">
<body>+/- operators that adds/substracts another timeval</body>
</ownedComment>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_EgukoDkdEdyuzNpSiGPe4w" name="param_0" type="_FuKEEDj8Edy0Rd6V_tf1-Q" direction="return">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_EhBfkDkdEdyuzNpSiGPe4w" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_EhLQkDkdEdyuzNpSiGPe4w" name="" value="1"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_EkwJADkdEdyuzNpSiGPe4w" name="tv2" type="_FuKEEDj8Edy0Rd6V_tf1-Q">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_ElDD8DkdEdyuzNpSiGPe4w" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ElM08DkdEdyuzNpSiGPe4w" name="" value="1"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="_T_yJEDkcEdyuzNpSiGPe4w" name="operator-" method="_Y0WEMDngEdyuzNpSiGPe4w">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_ZgFTcDkdEdyuzNpSiGPe4w" name="param_0" type="_FuKEEDj8Edy0Rd6V_tf1-Q" direction="return">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_ZgY1cDkdEdyuzNpSiGPe4w" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Zgh_YDkdEdyuzNpSiGPe4w" name="" value="1"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_ZsKAkDkdEdyuzNpSiGPe4w" name="tv2" type="_FuKEEDj8Edy0Rd6V_tf1-Q">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Zsc7gDkdEdyuzNpSiGPe4w" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ZsmsgDkdEdyuzNpSiGPe4w" name="" value="1"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="_UDgLcDkcEdyuzNpSiGPe4w" name="operator&lt;" method="_bE5KgDngEdyuzNpSiGPe4w">
<ownedComment xmi:type="uml:Comment" xmi:id="_jzLT4DkdEdyuzNpSiGPe4w" annotatedElement="_UDgLcDkcEdyuzNpSiGPe4w">
<body>all kinds of comparisons ...</body>
</ownedComment>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_lnQgoDkdEdyuzNpSiGPe4w" name="param_0" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_lnjbkDkdEdyuzNpSiGPe4w" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_lnslgDkdEdyuzNpSiGPe4w" name="" value="1"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_lppGQDkdEdyuzNpSiGPe4w" name="tv2" type="_FuKEEDj8Edy0Rd6V_tf1-Q">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_lpyQMDkdEdyuzNpSiGPe4w" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_lp8BMDkdEdyuzNpSiGPe4w" name="" value="1"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="_UKNQYDkcEdyuzNpSiGPe4w" name="operator&lt;=" method="_ds2EMDngEdyuzNpSiGPe4w">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_pDDSEDkdEdyuzNpSiGPe4w" name="param_0" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_pDWNADkdEdyuzNpSiGPe4w" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_pDf-ADkdEdyuzNpSiGPe4w" name="" value="1"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_pFuyoDkdEdyuzNpSiGPe4w" name="tv2" type="_FuKEEDj8Edy0Rd6V_tf1-Q">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_pF4joDkdEdyuzNpSiGPe4w" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_pGLekDkdEdyuzNpSiGPe4w" name="" value="1"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="_UPk4kDkcEdyuzNpSiGPe4w" name="operator==" method="_gKXPgDngEdyuzNpSiGPe4w">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_tBalEDkdEdyuzNpSiGPe4w" name="param_0" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_tBtgADkdEdyuzNpSiGPe4w" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_tB3RADkdEdyuzNpSiGPe4w" name="" value="1"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_tPIQ8DkdEdyuzNpSiGPe4w" name="tv2" type="_FuKEEDj8Edy0Rd6V_tf1-Q">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_tPbL4DkdEdyuzNpSiGPe4w" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_tPkV0DkdEdyuzNpSiGPe4w" name="" value="1"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="_UVFqsDkcEdyuzNpSiGPe4w" name="operator!=" method="_hsa4IDngEdyuzNpSiGPe4w">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_wSetMDkdEdyuzNpSiGPe4w" name="param_0" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_wSoeMDkdEdyuzNpSiGPe4w" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_wSxoIDkdEdyuzNpSiGPe4w" name="" value="1"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_wVT-wDkdEdyuzNpSiGPe4w" name="tv2" type="_FuKEEDj8Edy0Rd6V_tf1-Q">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_wVm5sDkdEdyuzNpSiGPe4w" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_wV6bsDkdEdyuzNpSiGPe4w" name="" value="1"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="_UcFqkDkcEdyuzNpSiGPe4w" name="operator>=" method="_kAi24DngEdyuzNpSiGPe4w">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_yqBzYDkdEdyuzNpSiGPe4w" name="param_0" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_yqLkYDkdEdyuzNpSiGPe4w" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_yqefUDkdEdyuzNpSiGPe4w" name="" value="1"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_y4CaMDkdEdyuzNpSiGPe4w" name="tv2" type="_FuKEEDj8Edy0Rd6V_tf1-Q">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_y4VVIDkdEdyuzNpSiGPe4w" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_y4fGIDkdEdyuzNpSiGPe4w" name="" value="1"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="_Us7i8DkcEdyuzNpSiGPe4w" name="operator>" method="_l4NjIDngEdyuzNpSiGPe4w">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_1J69QDkdEdyuzNpSiGPe4w" name="ret" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_1KEuQDkdEdyuzNpSiGPe4w" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_1KN4MDkdEdyuzNpSiGPe4w" name="" value="1"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_1MAn8DkdEdyuzNpSiGPe4w" name="tv2" type="_FuKEEDj8Edy0Rd6V_tf1-Q">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_1MTi4DkdEdyuzNpSiGPe4w" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_1MdT4DkdEdyuzNpSiGPe4w" name="" value="1"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="_9jMDYDkfEdyuzNpSiGPe4w" name="ticks" method="_6wgAoDngEdyuzNpSiGPe4w">
<ownedComment xmi:type="uml:Comment" xmi:id="_Az9QkDkgEdyuzNpSiGPe4w" annotatedElement="_9jMDYDkfEdyuzNpSiGPe4w">
<body>return the number of ticks represented by the timevalue</body>
</ownedComment>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_J0pN8DkgEdyuzNpSiGPe4w" name="param_0" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_8heigBydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_J1F54DkgEdyuzNpSiGPe4w" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_J1PD0DkgEdyuzNpSiGPe4w" name="" value="1"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="_9xV0IDkfEdyuzNpSiGPe4w" name="hasPassed" method="_p94_EDngEdyuzNpSiGPe4w">
<ownedComment xmi:type="uml:Comment" xmi:id="_Hl43YDkgEdyuzNpSiGPe4w" annotatedElement="_9xV0IDkfEdyuzNpSiGPe4w">
<body>returns true, if the current system time is later than this timeValue.&#xD;
The method is called &quot;hasPassed&quot;, since it can be used as a test&#xD;
whether a deadline has passed - assuming that the stored timevalue&#xD;
represents this deadline.</body>
</ownedComment>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_b_jfMDkgEdyuzNpSiGPe4w" name="param_0" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_b_2aIDkgEdyuzNpSiGPe4w" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_cAALIDkgEdyuzNpSiGPe4w" name="" value="1"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="_hArPsDkgEdyuzNpSiGPe4w" name="getSec" method="_Ogz2kDkqEdyuzNpSiGPe4w">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_rwiEoDkgEdyuzNpSiGPe4w" name="param_0" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_8heigBydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rwrOkDkgEdyuzNpSiGPe4w" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rw0_kDkgEdyuzNpSiGPe4w" name="" value="1"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="_hIbdgDkgEdyuzNpSiGPe4w" name="getUsec" method="_PxIO8DkqEdyuzNpSiGPe4w">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_swwLgDkgEdyuzNpSiGPe4w" name="param_0" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_8heigBydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sw58gDkgEdyuzNpSiGPe4w" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sxM3cDkgEdyuzNpSiGPe4w" name="" value="1"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="_hPbdYDkgEdyuzNpSiGPe4w" name="getNsec" method="_R1moIDkqEdyuzNpSiGPe4w">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_t-_gQDkgEdyuzNpSiGPe4w" name="param_0" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_8heigBydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_t_SbMDkgEdyuzNpSiGPe4w" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_t_blIDkgEdyuzNpSiGPe4w" name="" value="1"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="_hWSTUDkgEdyuzNpSiGPe4w" name="setSec" method="_TkLCwDkqEdyuzNpSiGPe4w">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_wH7isDkgEdyuzNpSiGPe4w" name="sec">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_8heigBydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_wIOdoDkgEdyuzNpSiGPe4w" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_wIYOoDkgEdyuzNpSiGPe4w" name="" value="1"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="_hc_YQDkgEdyuzNpSiGPe4w" name="setUsec" method="_Uxg_oDkqEdyuzNpSiGPe4w">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_w5aC8DkgEdyuzNpSiGPe4w" name="usec">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_8heigBydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_w5s94DkgEdyuzNpSiGPe4w" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_w52u4DkgEdyuzNpSiGPe4w" name="" value="1"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="_hkcEEDkgEdyuzNpSiGPe4w" name="setNsec" method="_WZ-LMDkqEdyuzNpSiGPe4w">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_xLbnEDkgEdyuzNpSiGPe4w" name="nsec">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_8heigBydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_xLvJEDkgEdyuzNpSiGPe4w" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_xL4TADkgEdyuzNpSiGPe4w" name="" value="1"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="_IKEGADkhEdyuzNpSiGPe4w" name="reset" method="_r6enkDngEdyuzNpSiGPe4w">
<ownedComment xmi:type="uml:Comment" xmi:id="_JLoQsDkhEdyuzNpSiGPe4w" annotatedElement="_IKEGADkhEdyuzNpSiGPe4w">
<body>set seconds and µ-seconds to zero</body>
</ownedComment>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="_q8lQcDkmEdyuzNpSiGPe4w" name="getTimeScale" isStatic="true" method="_L9V0QDkqEdyuzNpSiGPe4w">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_0LugkDkmEdyuzNpSiGPe4w" name="param_0" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_0L4RkDkmEdyuzNpSiGPe4w" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_0MBbgDkmEdyuzNpSiGPe4w" name="" value="1"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="_rCsfgDkmEdyuzNpSiGPe4w" name="sysStartTime" isStatic="true" method="_YQSzoDkqEdyuzNpSiGPe4w">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_4lNpUDkmEdyuzNpSiGPe4w" name="param_0" type="_FuKEEDj8Edy0Rd6V_tf1-Q" direction="return">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_4lgkQDkmEdyuzNpSiGPe4w" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_4lqVQDkmEdyuzNpSiGPe4w" name="" value="1"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="_TAOvkDknEdyuzNpSiGPe4w" name="adjustTime" isStatic="true" method="_Ha2zYDnhEdyuzNpSiGPe4w">
<ownedComment xmi:type="uml:Comment" xmi:id="_Vjsx4DknEdyuzNpSiGPe4w" annotatedElement="_TAOvkDknEdyuzNpSiGPe4w">
<body>adjust the current time after the execution has been stopped&#xD;
(principally for debugging).</body>
</ownedComment>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_XTwaQDknEdyuzNpSiGPe4w" name="delta" type="_FuKEEDj8Edy0Rd6V_tf1-Q">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_XUD8QDknEdyuzNpSiGPe4w" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_XUNGMDknEdyuzNpSiGPe4w" name="" value="1"/>
</ownedParameter>
</ownedOperation>
<nestedClassifier xmi:type="uml:Class" xmi:id="_vZD1EFKWEd-OfYmxqPWG5g" name="timespec"/>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_4fJvUDj_Edy0Rd6V_tf1-Q" name="Association_DebugTimer_Timer" memberEnd="_4fTgUDj_Edy0Rd6V_tf1-Q _4fwMQDj_Edy0Rd6V_tf1-Q">
<ownedEnd xmi:type="uml:Property" xmi:id="_4fwMQDj_Edy0Rd6V_tf1-Q" name="debugTimer" type="_BN92YDj8Edy0Rd6V_tf1-Q" isUnique="false" association="_4fJvUDj_Edy0Rd6V_tf1-Q">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_4mKWQzj_Edy0Rd6V_tf1-Q"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_4mKWQjj_Edy0Rd6V_tf1-Q" value="*"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_B8mhMDkAEdy0Rd6V_tf1-Q" name="Association_DebugTimer_Thread" memberEnd="_B8mhMTkAEdy0Rd6V_tf1-Q _CCj_QjkAEdy0Rd6V_tf1-Q">
<ownedEnd xmi:type="uml:Property" xmi:id="_CCj_QjkAEdy0Rd6V_tf1-Q" name="debugTimer" type="_BN92YDj8Edy0Rd6V_tf1-Q" isUnique="false" association="_B8mhMDkAEdy0Rd6V_tf1-Q">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_CC26MTkAEdy0Rd6V_tf1-Q"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_CC26MDkAEdy0Rd6V_tf1-Q" value="*"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_k2k-gDkFEdyuzNpSiGPe4w" name="Association_DebugTimer_Thread" memberEnd="_k235cDkFEdyuzNpSiGPe4w _k3oHYjkFEdyuzNpSiGPe4w">
<ownedEnd xmi:type="uml:Property" xmi:id="_k3oHYjkFEdyuzNpSiGPe4w" name="debugTimer" type="_BN92YDj8Edy0Rd6V_tf1-Q" isUnique="false" association="_k2k-gDkFEdyuzNpSiGPe4w">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_k4EMQTkFEdyuzNpSiGPe4w"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_k4EMQDkFEdyuzNpSiGPe4w" value="*"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Dependency" xmi:id="_l8eRwDkUEdyuzNpSiGPe4w" name="FromTimertoBString" client="_ETakYDj8Edy0Rd6V_tf1-Q" supplier="_WXH_4DO2EdyG-pUz-bb-Lg"/>
<packagedElement xmi:type="uml:Dependency" xmi:id="_mS08QDkUEdyuzNpSiGPe4w" name="FromTimertoTimeVal" client="_ETakYDj8Edy0Rd6V_tf1-Q" supplier="_FuKEEDj8Edy0Rd6V_tf1-Q"/>
<packagedElement xmi:type="uml:Usage" xmi:id="_DLK1MFK5Ed-OfYmxqPWG5g" name="FromTimeValtoBString500" client="_FuKEEDj8Edy0Rd6V_tf1-Q" supplier="_1vnXoDO0EdyG-pUz-bb-Lg"/>
<packagedElement xmi:type="uml:Usage" xmi:id="_MyswIFK5Ed-OfYmxqPWG5g" name="FromTimeValtoProDesc" client="_FuKEEDj8Edy0Rd6V_tf1-Q" supplier="_oSgIME_BEdy2tpS719xBwQ"/>
<packagedElement xmi:type="uml:Usage" xmi:id="_z1gvcFLcEd-mj-y6sW0V8w" name="FromTimeValtoPrint" client="_FuKEEDj8Edy0Rd6V_tf1-Q" supplier="_Fqa9QDUPEdy0feurbW0fyQ"/>
<packagedElement xmi:type="uml:Class" xmi:id="_5YJA0It4EeCA0czgCf_91g" name="timer_t"/>
<packagedElement xmi:type="uml:Class" xmi:id="_SPVucIt6EeCA0czgCf_91g" name="itimerspec"/>
<packagedElement xmi:type="uml:Dependency" xmi:id="_QHa8YL-PEeWzCKjiZE_bAw" client="_ETakYDj8Edy0Rd6V_tf1-Q" supplier="_Fqa9QDUPEdy0feurbW0fyQ"/>
</packagedElement>
<packagedElement xmi:type="uml:Package" xmi:id="_w86XMC-OEdySSa8YESkO2w" name="Tracing">
<ownedComment xmi:type="uml:Comment" xmi:id="_qhfYAFIhEdy7g9CjxdN7jw" annotatedElement="_1DM54DxBEdyfAeav5abbAw">
<body>Incomplete. Without LeftShiftTrace</body>
</ownedComment>
<packagedElement xmi:type="uml:Class" xmi:id="_1DM54DxBEdyfAeav5abbAw" name="Trace">
<ownedComment xmi:type="uml:Comment" xmi:id="_eAhcsFIfEdy7g9CjxdN7jw" annotatedElement="_1DM54DxBEdyfAeav5abbAw">
<body>The class Trace supports tracing. It should by instantiated&#xD;
by passing a value of type Flag. These flags specify the trace&#xD;
category (for instance traces related to an abstract object) and&#xD;
are defined in class FlagSet. An environment variable controls&#xD;
at execution time which trace categories are actually producing&#xD;
output.&#xD;
&#xD;
Instead of directly creating instances of class Trace (on the stack),&#xD;
the developer should use the macro TRACEpr which respects the compile&#xD;
time flag ENABLE_TRACING. It creates the instance &quot;pr&quot; on the stack,&#xD;
if ENABLE_TRACING is set.&#xD;
&#xD;
Messages to the instance &quot;pr&quot; are sent via the overloaded operator&lt;&lt;,&#xD;
the supported datatypes are the same as for class Print (in fact,&#xD;
the operators delegate the calls to an internal object of type print).&#xD;
As for class Trace, the developer should use the macro PR to do this.&#xD;
Don't forget to pass at least one &quot;showI&quot; to the trace instance before&#xD;
it gets out of scope - otherwise the output would be empty.&#xD;
&#xD;
\code&#xD;
Example:&#xD;
function f ()&#xD;
{&#xD;
TRACEpr (AO); // if ENABLE_TRACING => Trace pr (Flag_AO);&#xD;
PR (&quot;Function f &lt;&lt; showI&quot;);&#xD;
PR (&quot;This is message number &quot; &lt;&lt; number &lt;&lt; showI);&#xD;
}&#xD;
\endcode</body>
</ownedComment>
<ownedAttribute xmi:type="uml:Property" xmi:id="__ziOwFIgEdy7g9CjxdN7jw" name="m_status" visibility="protected" isUnique="false">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="__z-6sFIgEdy7g9CjxdN7jw" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="__0IrsFIgEdy7g9CjxdN7jw" value="1"/>
</ownedAttribute>
<ownedAttribute xmi:type="uml:Property" xmi:id="_JByHAFIhEdy7g9CjxdN7jw" name="m_prt" visibility="protected" type="_Fqa9QDUPEdy0feurbW0fyQ" isUnique="false" association="_JBoWAFIhEdy7g9CjxdN7jw">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Lf4hIFIhEdy7g9CjxdN7jw"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_LgCSIFIhEdy7g9CjxdN7jw" value="1"/>
</ownedAttribute>
<ownedAttribute xmi:type="uml:Property" xmi:id="_UyTHsFIhEdy7g9CjxdN7jw" name="m_traceMark" visibility="protected" isStatic="true" type="_sQ1JADO0EdyG-pUz-bb-Lg" isUnique="false">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Uy5koFIhEdy7g9CjxdN7jw" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Uy5koVIhEdy7g9CjxdN7jw" value="1"/>
<defaultValue xmi:type="uml:LiteralString" xmi:id="_a-K44BtbEeGTrd3FEQeyRQ" name="" value="&quot;#&quot;"/>
</ownedAttribute>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_c2x7gFIhEdy7g9CjxdN7jw" name="getStatus" specification="_TAN7gFIgEdy7g9CjxdN7jw">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_FOrs4CBbEeOMKsPXBVC0DA" name="param_0" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_FPSw4CBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_FPdwACBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body> return m_status;</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_exHhQFIhEdy7g9CjxdN7jw" name="getPrint" specification="_BsdUsFIgEdy7g9CjxdN7jw">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_FPu1wCBbEeOMKsPXBVC0DA" name="param_0" type="_Fqa9QDUPEdy0feurbW0fyQ" direction="return">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_FQPMECBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_FQaLMCBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body> if (!m_status)&#xD;
PRINTerr (&quot;NO Print for this Trace instance&quot;);&#xD;
&#xD;
return (*m_prt);&#xD;
</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_g2fSUFIhEdy7g9CjxdN7jw" name="setTraceMark" specification="_qIrE0FIgEdy7g9CjxdN7jw">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_FQx-oCBbEeOMKsPXBVC0DA" name="traceMark" type="_WXH_4DO2EdyG-pUz-bb-Lg">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_FRUxMCBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_FRfwUCBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body> m_traceMark = traceMark;</body>
</ownedBehavior>
<ownedOperation xmi:type="uml:Operation" xmi:id="_n7UR4FIfEdy7g9CjxdN7jw" name="Trace">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_tDcpUFIfEdy7g9CjxdN7jw" name="f" type="_5InEkFGAEdyxP5ejovTmBw">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_tD5VQFIfEdy7g9CjxdN7jw" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_tEMQMFIfEdy7g9CjxdN7jw" name="" value="1"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="_oFTUUFIfEdy7g9CjxdN7jw" name="Trace"/>
<ownedOperation xmi:type="uml:Operation" xmi:id="_BsdUsFIgEdy7g9CjxdN7jw" name="getPrint" method="_exHhQFIhEdy7g9CjxdN7jw">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_DEXi0FIgEdy7g9CjxdN7jw" name="param_0" type="_Fqa9QDUPEdy0feurbW0fyQ" direction="return">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_DErE0FIgEdy7g9CjxdN7jw" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_DE9_wFIgEdy7g9CjxdN7jw" name="" value="1"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="_TAN7gFIgEdy7g9CjxdN7jw" name="getStatus" method="_c2x7gFIhEdy7g9CjxdN7jw">
<ownedComment xmi:type="uml:Comment" xmi:id="_ZStNQFIgEdy7g9CjxdN7jw" annotatedElement="_TAN7gFIgEdy7g9CjxdN7jw">
<body>query status&#xD;
should not be called by user code (only used by overloaded operators)</body>
</ownedComment>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_WEeWsFIgEdy7g9CjxdN7jw" name="param_0" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_WE7CoFIgEdy7g9CjxdN7jw" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_WFN9kFIgEdy7g9CjxdN7jw" name="" value="1"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="_dlyMAFIgEdy7g9CjxdN7jw" name="setStatus">
<ownedComment xmi:type="uml:Comment" xmi:id="_lAGBcFIgEdy7g9CjxdN7jw" annotatedElement="_dlyMAFIgEdy7g9CjxdN7jw">
<body>modify status&#xD;
should not be called by user code (only used by overloaded operators)</body>
</ownedComment>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_nFKQgFIgEdy7g9CjxdN7jw" name="status">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_nFm8cFIgEdy7g9CjxdN7jw" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_nF6ecFIgEdy7g9CjxdN7jw" name="" value="1"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="_qIrE0FIgEdy7g9CjxdN7jw" name="setTraceMark" isStatic="true" method="_g2fSUFIhEdy7g9CjxdN7jw">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_vzhHwFIgEdy7g9CjxdN7jw" name="traceMark" type="_WXH_4DO2EdyG-pUz-bb-Lg">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_vz9zsFIgEdy7g9CjxdN7jw" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_v0HksFIgEdy7g9CjxdN7jw" name="" value="1"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="_7hM24FIgEdy7g9CjxdN7jw" name="Trace" visibility="protected"/>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_5InEkFGAEdyxP5ejovTmBw" name="FlagSet">
<ownedComment xmi:type="uml:Comment" xmi:id="_7K2CEFGAEdyxP5ejovTmBw" annotatedElement="_5InEkFGAEdyxP5ejovTmBw">
<body>This class contains some static methods that manage a set of flags.&#xD;
It is possible to add, substract or setup flags.</body>
</ownedComment>
<ownedAttribute xmi:type="uml:Property" xmi:id="_rqVygFGJEdy7g9CjxdN7jw" name="current" visibility="private" isStatic="true" isUnique="false">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rq7oYFGJEdy7g9CjxdN7jw" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rrFZYFGJEdy7g9CjxdN7jw" value="1"/>
<defaultValue xmi:type="uml:LiteralInteger" xmi:id="_FAh84BtbEeGTrd3FEQeyRQ" name=""/>
</ownedAttribute>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_3VfLAFGJEdy7g9CjxdN7jw" name="isSet" specification="_IM-wwFGDEdyxP5ejovTmBw">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_GlThkCBbEeOMKsPXBVC0DA" name="param_0" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_GlzQ0CBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Gl-P8CBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_GmJPECBbEeOMKsPXBVC0DA" name="f" type="_QhlWIFGBEdyxP5ejovTmBw">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_GmplYCBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Gm1LkCBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body> return (f &amp; current);</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_48Ac4FGJEdy7g9CjxdN7jw" name="add" specification="_IWOMUFGDEdyxP5ejovTmBw">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_GnFqQCBbEeOMKsPXBVC0DA" name="ret" type="_QhlWIFGBEdyxP5ejovTmBw" direction="return">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_GnmAkCBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_GnwYoCBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_Gn7XwCBbEeOMKsPXBVC0DA" name="f" type="_QhlWIFGBEdyxP5ejovTmBw">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Goc8MCBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Gon7UCBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body> Flag old = (Flag) current;&#xD;
current |= f;&#xD;
&#xD;
return old;&#xD;
</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_6bhu4FGJEdy7g9CjxdN7jw" name="sub" specification="_IcxgQFGDEdyxP5ejovTmBw">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_Go4aACBbEeOMKsPXBVC0DA" name="ret" type="_QhlWIFGBEdyxP5ejovTmBw" direction="return">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_GpYwUCBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_GpkWgCBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_GpvVoCBbEeOMKsPXBVC0DA" name="f" type="_QhlWIFGBEdyxP5ejovTmBw">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_GqPr8CBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_GqarECBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body> Flag old = (Flag) current;&#xD;
current = current &amp; (~f);&#xD;
&#xD;
return old;&#xD;
</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_70o24FGJEdy7g9CjxdN7jw" name="setUp" specification="_IiSSYFGDEdyxP5ejovTmBw">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_GqqisCBbEeOMKsPXBVC0DA" name="ret" type="_QhlWIFGBEdyxP5ejovTmBw" direction="return">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_GrMHICBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_GrXGQCBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_GriFYCBbEeOMKsPXBVC0DA" name="f" type="_QhlWIFGBEdyxP5ejovTmBw">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_GsIiUCBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_GsThcCBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body> Flag old = (Flag) current;&#xD;
current = f;&#xD;
&#xD;
return old;&#xD;
</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_89D3gFGJEdy7g9CjxdN7jw" name="setUpStr" specification="_IoGmgFGDEdyxP5ejovTmBw">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_GsjZECBbEeOMKsPXBVC0DA" name="ret" type="_QhlWIFGBEdyxP5ejovTmBw" direction="return">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_GtEWcCBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_GtP8oCBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_Gta7wCBbEeOMKsPXBVC0DA" name="fStr" type="_WXH_4DO2EdyG-pUz-bb-Lg">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Gt7SECBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_GuG4QCBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body> int flags = 0;&#xD;
for (unsigned int i = 0; i &lt; fStr.length (); ++i)&#xD;
{&#xD;
const char f = fStr[i];&#xD;
switch (f)&#xD;
{&#xD;
case 'A':&#xD;
flags |= FLAG_Ap;&#xD;
break;&#xD;
case 'C':&#xD;
flags |= FLAG_Ch;&#xD;
break;&#xD;
case 'G':&#xD;
flags |= FLAG_Gr;&#xD;
break;&#xD;
case 'O':&#xD;
flags |= FLAG_AO;&#xD;
break;&#xD;
case 'R':&#xD;
flags |= FLAG_RB;&#xD;
break;&#xD;
case 'S':&#xD;
flags |= FLAG_Sc;&#xD;
break;&#xD;
case 'T':&#xD;
flags |= FLAG_Ti;&#xD;
break;&#xD;
case 'U':&#xD;
flags |= FLAG_Ut;&#xD;
break;&#xD;
case 'V':&#xD;
flags |= FLAG_VM;&#xD;
break;&#xD;
case 'Z':&#xD;
flags |= FLAG_Z;&#xD;
break;&#xD;
case '1':&#xD;
flags |= FLAG_F1;&#xD;
break;&#xD;
case '2':&#xD;
flags |= FLAG_F2;&#xD;
break;&#xD;
case '3':&#xD;
flags |= FLAG_F3;&#xD;
break;&#xD;
case '4':&#xD;
flags |= FLAG_F4;&#xD;
break;&#xD;
case '5':&#xD;
flags |= FLAG_F5;&#xD;
break;&#xD;
case '6':&#xD;
flags |= FLAG_F6;&#xD;
break;&#xD;
case '7':&#xD;
flags |= FLAG_F7;&#xD;
break;&#xD;
case '8':&#xD;
flags |= FLAG_F8;&#xD;
break;&#xD;
case '9':&#xD;
flags |= FLAG_F9;&#xD;
break;&#xD;
case 'a':&#xD;
flags |= FLAG_Fa;&#xD;
break;&#xD;
case 'b':&#xD;
flags |= FLAG_Fb;&#xD;
break;&#xD;
case 'c':&#xD;
flags |= FLAG_Fc;&#xD;
break;&#xD;
case 'd':&#xD;
flags |= FLAG_Fd;&#xD;
break;&#xD;
case 'e':&#xD;
flags |= FLAG_Fe;&#xD;
break;&#xD;
case 'f':&#xD;
flags |= FLAG_Ff;&#xD;
break;&#xD;
case 'g':&#xD;
flags |= FLAG_Fg;&#xD;
break;&#xD;
case 'h':&#xD;
flags |= FLAG_Fh;&#xD;
break;&#xD;
case 'i':&#xD;
flags |= FLAG_Fi;&#xD;
break;&#xD;
default:&#xD;
PRINTpr (&quot;unknown flag : &quot;);&#xD;
pr &lt;&lt; f &lt;&lt; showErr;&#xD;
break;&#xD;
}&#xD;
}&#xD;
Flag old = setUp ((Flag) flags);&#xD;
&#xD;
return old;&#xD;
</body>
</ownedBehavior>
<ownedOperation xmi:type="uml:Operation" xmi:id="_IM-wwFGDEdyxP5ejovTmBw" name="isSet" isStatic="true" method="_3VfLAFGJEdy7g9CjxdN7jw">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_tmHxcFGDEdy2j6DfRsavvw" name="param_0" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_tmuOYFGDEdy2j6DfRsavvw" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_tm3YUFGDEdy2j6DfRsavvw" name="" value="1"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_tpG0AFGDEdy2j6DfRsavvw" name="f" type="_QhlWIFGBEdyxP5ejovTmBw">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_tpjf8FGDEdy2j6DfRsavvw" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_tpsp4FGDEdy2j6DfRsavvw" name="" value="1"/>
<defaultValue xmi:type="uml:LiteralString" xmi:id="_yt8m4FGDEdy2j6DfRsavvw" value="FLAG_All"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="_IWOMUFGDEdyxP5ejovTmBw" name="add" isStatic="true" method="_48Ac4FGJEdy7g9CjxdN7jw">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_1NGJ4FGDEdy2j6DfRsavvw" name="ret" type="_QhlWIFGBEdyxP5ejovTmBw" direction="return">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_1Ni10FGDEdy2j6DfRsavvw" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_1N1wwFGDEdy2j6DfRsavvw" name="" value="1"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_1PxqcFGDEdy2j6DfRsavvw" name="f" type="_QhlWIFGBEdyxP5ejovTmBw">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_1QOWYFGDEdy2j6DfRsavvw" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_1QhRUFGDEdy2j6DfRsavvw" name="" value="1"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="_IcxgQFGDEdyxP5ejovTmBw" name="sub" isStatic="true" method="_6bhu4FGJEdy7g9CjxdN7jw">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_2X5wIFGDEdy2j6DfRsavvw" name="ret" type="_QhlWIFGBEdyxP5ejovTmBw" direction="return">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_2YMrEFGDEdy2j6DfRsavvw" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_2YfmAFGDEdy2j6DfRsavvw" name="" value="1"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_2ZY94FGDEdy2j6DfRsavvw" name="f" type="_QhlWIFGBEdyxP5ejovTmBw">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_2Z1p0FGDEdy2j6DfRsavvw" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_2aIkwFGDEdy2j6DfRsavvw" name="" value="1"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="_IiSSYFGDEdyxP5ejovTmBw" name="setUp" isStatic="true" method="_70o24FGJEdy7g9CjxdN7jw">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_2y304FGDEdy2j6DfRsavvw" name="ret" type="_QhlWIFGBEdyxP5ejovTmBw" direction="return">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_2zKv0FGDEdy2j6DfRsavvw" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_2znbwFGDEdy2j6DfRsavvw" name="" value="1"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_20N4sFGDEdy2j6DfRsavvw" name="f" type="_QhlWIFGBEdyxP5ejovTmBw">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_20p9kFGDEdy2j6DfRsavvw" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_209fkFGDEdy2j6DfRsavvw" name="" value="1"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="_IoGmgFGDEdyxP5ejovTmBw" name="setUpStr" isStatic="true" method="_89D3gFGJEdy7g9CjxdN7jw">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_3JhaUFGDEdy2j6DfRsavvw" name="ret" type="_QhlWIFGBEdyxP5ejovTmBw" direction="return">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_3J-GQFGDEdy2j6DfRsavvw" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_3KHQMFGDEdy2j6DfRsavvw" name="" value="1"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_3K3eIFGDEdy2j6DfRsavvw" name="fStr" type="_WXH_4DO2EdyG-pUz-bb-Lg">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_3LTjAFGDEdy2j6DfRsavvw" name="" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_3LnFAFGDEdy2j6DfRsavvw" name="" value="1"/>
</ownedParameter>
</ownedOperation>
</packagedElement>
<packagedElement xmi:type="uml:Dependency" xmi:id="_JUZWsFGBEdyxP5ejovTmBw" name="FromFlagSettoBString" client="_5InEkFGAEdyxP5ejovTmBw" supplier="_WXH_4DO2EdyG-pUz-bb-Lg"/>
<packagedElement xmi:type="uml:Dependency" xmi:id="_NclwUFIfEdy7g9CjxdN7jw" name="FromTracetoBString50" client="_1DM54DxBEdyfAeav5abbAw" supplier="_sQ1JADO0EdyG-pUz-bb-Lg"/>
<packagedElement xmi:type="uml:Dependency" xmi:id="_OMbR0FIfEdy7g9CjxdN7jw" name="FromTracetoFlagSet" client="_1DM54DxBEdyfAeav5abbAw" supplier="_5InEkFGAEdyxP5ejovTmBw"/>
<packagedElement xmi:type="uml:Dependency" xmi:id="_RnxXUFIfEdy7g9CjxdN7jw" name="FromTracetoBaseTypes" client="_1DM54DxBEdyfAeav5abbAw" supplier="_0TXx4DUOEdy0feurbW0fyQ"/>
<packagedElement xmi:type="uml:Dependency" xmi:id="_XHvnAFIfEdy7g9CjxdN7jw" name="FromTracetoPrint" client="_1DM54DxBEdyfAeav5abbAw" supplier="_Fqa9QDUPEdy0feurbW0fyQ"/>
<packagedElement xmi:type="uml:Association" xmi:id="_JBoWAFIhEdy7g9CjxdN7jw" name="Association_Trace_Print" memberEnd="_JByHAFIhEdy7g9CjxdN7jw _JC0o0VIhEdy7g9CjxdN7jw">
<ownedEnd xmi:type="uml:Property" xmi:id="_JC0o0VIhEdy7g9CjxdN7jw" name="trace" type="_1DM54DxBEdyfAeav5abbAw" isUnique="false" association="_JBoWAFIhEdy7g9CjxdN7jw">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_JDkPsFIhEdy7g9CjxdN7jw"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_JDbFwVIhEdy7g9CjxdN7jw" value="*"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Enumeration" xmi:id="_QhlWIFGBEdyxP5ejovTmBw" name="Flag">
<ownedComment xmi:type="uml:Comment" xmi:id="_wikJ4FGCEdyxP5ejovTmBw" annotatedElement="_QhlWIFGBEdyxP5ejovTmBw">
<body>* An enumeration of flags that is used for tracing (at different places)&#xD;
* It forms a bit vector. In the list below, we list the flags that&#xD;
* are available, together with the letter in the A_Trace&lt;zone-nr>&#xD;
* environment variable that is used to activate the tracing.&#xD;
* (if one zone is used, A_Trace0 defines the tracing that is&#xD;
* activated)&#xD;
*&#xD;
* * FLAG_Ap 'A': appliation tracing&#xD;
* * FLAG_Ch 'C': Message channel/queue (in case of distribution)&#xD;
* * FLAG_Gr 'G': currently unused&#xD;
* * FLAG_AO 'O': active object&#xD;
* * FLAG_RB 'R': rbox - used for passing out and return parameters&#xD;
* back to a caller&#xD;
* * FLAG_Sc 'S': Scheduling&#xD;
* * FLAG_Ti 'T': Task related&#xD;
* * FLAG_Ut 'U': currently unused&#xD;
* * FLAG_VM 'V': virtual machine (now OS abstraction layer), i.e. for&#xD;
* Threads, SharedMemory and synchronisation classes&#xD;
* such as Lock, Barrier and Condition&#xD;
* * FLAG_Z 'Z': Related to zone aspects, used by ZoneController and&#xD;
* in class Main.&#xD;
* * FLAG_F1 '1': currently unused (used by a test program)&#xD;
* * FLAG_F2 '2': currently unused&#xD;
* * FLAG_F3 '3': currently unused&#xD;
* * FLAG_F4 '4': currently unused&#xD;
* * FLAG_F5 '5': currently unused (used by a test program)&#xD;
* * FLAG_F6 '6': Indicates &quot;return from debugger detection&quot; in&#xD;
* Time/DebugTimer and deadline violations&#xD;
* * FLAG_F7 '7': Related to &quot;container&quot; classes, i.e. class&#xD;
* CircularBuffer and BOL (Bounded ordered list)&#xD;
* * FLAG_F8 '8': used for class SR_List (list of service requests)&#xD;
* * FLAG_F9 '9': used for class ProDesc&#xD;
* * FLAG_Fa 'a': currently unused&#xD;
* * FLAG_Fb 'b': currently unused&#xD;
* * FLAG_Fc 'c': currently unused&#xD;
* * FLAG_Fd 'd': deadline control&#xD;
* * FLAG_Fe 'e': currently unused&#xD;
* * FLAG_Ff 'f': currently unused&#xD;
* * FLAG_Fg 'g': currently unused&#xD;
* * FLAG_Fh 'h': currently unused&#xD;
* * FLAG_Fi 'i': currently unused&#xD;
* * FLAG_Fj 'j': currently unused&#xD;
* * FLAG_Fk 'k': currently unused</body>
</ownedComment>
<ownedLiteral xmi:type="uml:EnumerationLiteral" xmi:id="_U0No8FGBEdyxP5ejovTmBw" name="FLAG_None"/>
<ownedLiteral xmi:type="uml:EnumerationLiteral" xmi:id="_Y4PfEFGBEdyxP5ejovTmBw" name="FLAG_Ut"/>
<ownedLiteral xmi:type="uml:EnumerationLiteral" xmi:id="_bTqYoFGBEdyxP5ejovTmBw" name="FLAG_VM"/>
<ownedLiteral xmi:type="uml:EnumerationLiteral" xmi:id="_dHvlYFGBEdyxP5ejovTmBw" name="FLAG_Z"/>
<ownedLiteral xmi:type="uml:EnumerationLiteral" xmi:id="_fdDP4FGBEdyxP5ejovTmBw" name="FLAG_Ch"/>
<ownedLiteral xmi:type="uml:EnumerationLiteral" xmi:id="_hZVWYFGBEdyxP5ejovTmBw" name="FLAG_AO"/>
<ownedLiteral xmi:type="uml:EnumerationLiteral" xmi:id="_jtvpAFGBEdyxP5ejovTmBw" name="FLAG_Ap"/>
<ownedLiteral xmi:type="uml:EnumerationLiteral" xmi:id="_lfTGMFGBEdyxP5ejovTmBw" name="FLAG_Sc"/>
<ownedLiteral xmi:type="uml:EnumerationLiteral" xmi:id="_nWWucFGBEdyxP5ejovTmBw" name="FLAG_RB"/>
<ownedLiteral xmi:type="uml:EnumerationLiteral" xmi:id="_ppbkUFGBEdyxP5ejovTmBw" name="FLAG_Gr"/>
<ownedLiteral xmi:type="uml:EnumerationLiteral" xmi:id="_rhsGcFGBEdyxP5ejovTmBw" name="FLAG_Ti"/>
<ownedLiteral xmi:type="uml:EnumerationLiteral" xmi:id="_uhT5QFGBEdyxP5ejovTmBw" name="FLAG_Xy"/>
<ownedLiteral xmi:type="uml:EnumerationLiteral" xmi:id="_wKXhwFGBEdyxP5ejovTmBw" name="FLAG_F1"/>
<ownedLiteral xmi:type="uml:EnumerationLiteral" xmi:id="_x632EFGBEdyxP5ejovTmBw" name="FLAG_F2"/>
<ownedLiteral xmi:type="uml:EnumerationLiteral" xmi:id="_zf56MFGBEdyxP5ejovTmBw" name="FLAG_F3"/>
<ownedLiteral xmi:type="uml:EnumerationLiteral" xmi:id="_1Awo8FGBEdyxP5ejovTmBw" name="FLAG_F4"/>
<ownedLiteral xmi:type="uml:EnumerationLiteral" xmi:id="_2msE8FGBEdyxP5ejovTmBw" name="FLAG_F5"/>
<ownedLiteral xmi:type="uml:EnumerationLiteral" xmi:id="_4OskkFGBEdyxP5ejovTmBw" name="FLAG_F6"/>
<ownedLiteral xmi:type="uml:EnumerationLiteral" xmi:id="_5_Wp4FGBEdyxP5ejovTmBw" name="FLAG_F7"/>
<ownedLiteral xmi:type="uml:EnumerationLiteral" xmi:id="_75PjsFGBEdyxP5ejovTmBw" name="FLAG_F8"/>
<ownedLiteral xmi:type="uml:EnumerationLiteral" xmi:id="_92abAFGBEdyxP5ejovTmBw" name="FLAG_F9"/>
<ownedLiteral xmi:type="uml:EnumerationLiteral" xmi:id="__sucYFGBEdyxP5ejovTmBw" name="FLAG_Fa"/>
<ownedLiteral xmi:type="uml:EnumerationLiteral" xmi:id="_Bn0QEFGCEdyxP5ejovTmBw" name="FLAG_Fb"/>
<ownedLiteral xmi:type="uml:EnumerationLiteral" xmi:id="_DqpqgFGCEdyxP5ejovTmBw" name="FLAG_Fc"/>
<ownedLiteral xmi:type="uml:EnumerationLiteral" xmi:id="_FW04cFGCEdyxP5ejovTmBw" name="FLAG_Fd"/>
<ownedLiteral xmi:type="uml:EnumerationLiteral" xmi:id="_HDAtcFGCEdyxP5ejovTmBw" name="FLAG_Fe"/>
<ownedLiteral xmi:type="uml:EnumerationLiteral" xmi:id="_IofdgFGCEdyxP5ejovTmBw" name="FLAG_Ff"/>
<ownedLiteral xmi:type="uml:EnumerationLiteral" xmi:id="_KQDRMFGCEdyxP5ejovTmBw" name="FLAG_Fg"/>
<ownedLiteral xmi:type="uml:EnumerationLiteral" xmi:id="_L-K_4FGCEdyxP5ejovTmBw" name="FLAG_Fh"/>
<ownedLiteral xmi:type="uml:EnumerationLiteral" xmi:id="_NtyjYFGCEdyxP5ejovTmBw" name="FLAG_Fi"/>
<ownedLiteral xmi:type="uml:EnumerationLiteral" xmi:id="_Po3wAFGCEdyxP5ejovTmBw" name="FLAG_Fj"/>
<ownedLiteral xmi:type="uml:EnumerationLiteral" xmi:id="_RWZBwFGCEdyxP5ejovTmBw" name="FLAG_Fk"/>
<ownedLiteral xmi:type="uml:EnumerationLiteral" xmi:id="_UbFh0FGCEdyxP5ejovTmBw" name="FLAG_All"/>
</packagedElement>
</packagedElement>
<packagedElement xmi:type="uml:Package" xmi:id="_0AZ9YC-OEdySSa8YESkO2w" name="Util">
<packagedElement xmi:type="uml:Class" xmi:id="_W-ZGIDO0EdyG-pUz-bb-Lg" name="BStringT">
<ownedComment xmi:type="uml:Comment" xmi:id="_iaxicDR7EdypGbuyt3_DaA" annotatedElement="_W-ZGIDO0EdyG-pUz-bb-Lg">
<body>A template for bounded string of arbitrary size. Most common functions&#xD;
are factored out to the superclass BString. Constructors and the&#xD;
storage - who cannot be defined in the superclass - are defined here.</body>
</ownedComment>
<ownedTemplateSignature xmi:type="uml:RedefinableTemplateSignature" xmi:id="_gkCKsDO0EdyG-pUz-bb-Lg" parameter="_iWLdwDO0EdyG-pUz-bb-Lg">
<ownedParameter xmi:type="uml:TemplateParameter" xmi:id="_iWLdwDO0EdyG-pUz-bb-Lg" parameteredElement="_kCz-sDO0EdyG-pUz-bb-Lg">
<ownedParameteredElement xmi:type="uml:LiteralInteger" xmi:id="_kCz-sDO0EdyG-pUz-bb-Lg" name="maxSize" templateParameter="_iWLdwDO0EdyG-pUz-bb-Lg" value="-1"/>
</ownedParameter>
</ownedTemplateSignature>
<generalization xmi:type="uml:Generalization" xmi:id="_ZFUrgDO2EdyG-pUz-bb-Lg" general="_WXH_4DO2EdyG-pUz-bb-Lg"/>
<ownedAttribute xmi:type="uml:Property" xmi:id="_jwCk4DR-Edy0feurbW0fyQ" name="m_charStorage" visibility="private" isUnique="false" aggregation="composite">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_5lVhgBydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_dbR1AF3HEd-12d_h0i1xhQ" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_dbbmAF3HEd-12d_h0i1xhQ" value="1"/>
</ownedAttribute>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_4qQkgDUMEdy0feurbW0fyQ" name="BStringT " specification="_m2Mk4DR7EdypGbuyt3_DaA">
<language>C/C++</language>
<body>charTable = m_charStorage;&#xD;
charTableSize = maxSize;&#xD;
commonInit ();&#xD;
</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="__T_RkDUMEdy0feurbW0fyQ" name="BStringT " specification="_rwKkgDR7EdypGbuyt3_DaA">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_MssWkCBbEeOMKsPXBVC0DA" name="ch">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_5lVhgBydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MtNT8CBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MtYTECBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_MtjSMCBbEeOMKsPXBVC0DA" name="nChar">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_LTZesByeEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MuDogCBbEeOMKsPXBVC0DA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MuOnoCBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body>charTable = m_charStorage;&#xD;
charTableSize = maxSize;&#xD;
commonInit ();&#xD;
&#xD;
concat (ch, nChar);&#xD;
</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_FuOxIDUNEdy0feurbW0fyQ" name="BStringT" specification="_N8S2oDR8EdypGbuyt3_DaA">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_MufGUCBbEeOMKsPXBVC0DA" name="bString" type="_WXH_4DO2EdyG-pUz-bb-Lg">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MvADsCBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MvLC0CBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body>charTable = m_charStorage;&#xD;
charTableSize = maxSize;&#xD;
commonInit ();&#xD;
&#xD;
concat (bString.data());&#xD;
</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_KsrBEDUNEdy0feurbW0fyQ" name="BStringT" specification="_63iW0DR8Edy0feurbW0fyQ">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_MvqLACBbEeOMKsPXBVC0DA" name="bString" type="_W-ZGIDO0EdyG-pUz-bb-Lg">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MwKhUCBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MwVgcCBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body>charTable = m_charStorage;&#xD;
charTableSize = maxSize;&#xD;
commonInit ();&#xD;
&#xD;
concat (bString.data());&#xD;
</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_N6UBwDUNEdy0feurbW0fyQ" name="BStringT" specification="_PngwYDR-Edy0feurbW0fyQ">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_Mw1PsCBbEeOMKsPXBVC0DA" name="constCharP">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_5lVhgBydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MxVmACBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MxglICBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body>charTable = m_charStorage;&#xD;
charTableSize = maxSize;&#xD;
commonInit ();&#xD;
&#xD;
concat (constCharP);&#xD;
</body>
</ownedBehavior>
<ownedOperation xmi:type="uml:Operation" xmi:id="_m2Mk4DR7EdypGbuyt3_DaA" name="BStringT " method="_4qQkgDUMEdy0feurbW0fyQ"/>
<ownedOperation xmi:type="uml:Operation" xmi:id="_rwKkgDR7EdypGbuyt3_DaA" name="BStringT " method="__T_RkDUMEdy0feurbW0fyQ">
<ownedComment xmi:type="uml:Comment" xmi:id="_1k3YwDR7EdypGbuyt3_DaA" annotatedElement="_rwKkgDR7EdypGbuyt3_DaA">
<body>Initialize a BString with a specific character and optionally a&#xD;
number of repetitions.</body>
</ownedComment>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_35IhcDR7EdypGbuyt3_DaA" name="ch">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_5lVhgBydEduyofBvg4RL2w"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_37qRADR7EdypGbuyt3_DaA" name="nChar">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_LTZesByeEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_EmwDkDR8EdypGbuyt3_DaA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Em50kDR8EdypGbuyt3_DaA" value="1"/>
<defaultValue xmi:type="uml:LiteralString" xmi:id="_EnC-gDR8EdypGbuyt3_DaA" value="1"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="_N8S2oDR8EdypGbuyt3_DaA" name="BStringT" method="_FuOxIDUNEdy0feurbW0fyQ">
<ownedComment xmi:type="uml:Comment" xmi:id="_IpDwgDR-Edy0feurbW0fyQ" annotatedElement="_N8S2oDR8EdypGbuyt3_DaA">
<body>Create a BStringT given another bounded string of arbitrary size.</body>
</ownedComment>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_ToyfYDR8EdypGbuyt3_DaA" name="bString" type="_WXH_4DO2EdyG-pUz-bb-Lg"/>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="_63iW0DR8Edy0feurbW0fyQ" name="BStringT" method="_KsrBEDUNEdy0feurbW0fyQ">
<ownedComment xmi:type="uml:Comment" xmi:id="_KgkrwDR-Edy0feurbW0fyQ" annotatedElement="_63iW0DR8Edy0feurbW0fyQ">
<body>The copy constructor.&#xD;
Although it would be always ok to use the constructor above, this copy&#xD;
constructor is necessary to avoid that the compiler implicitly&#xD;
inserts a default copy constructor.</body>
</ownedComment>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_AvfosDR9Edy0feurbW0fyQ" name="bString" type="_W-ZGIDO0EdyG-pUz-bb-Lg"/>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="_PngwYDR-Edy0feurbW0fyQ" name="BStringT" method="_N6UBwDUNEdy0feurbW0fyQ">
<ownedComment xmi:type="uml:Comment" xmi:id="_Tojj8DR-Edy0feurbW0fyQ" annotatedElement="_PngwYDR-Edy0feurbW0fyQ">
<body>Initialize a bounded string with a character pointer</body>
</ownedComment>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_VQkqoDR-Edy0feurbW0fyQ" name="constCharP">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_5lVhgBydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_WzOJIDR-Edy0feurbW0fyQ" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_WzX6IDR-Edy0feurbW0fyQ" value="1"/>
</ownedParameter>
</ownedOperation>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_sQ1JADO0EdyG-pUz-bb-Lg" name="BString50">
<templateBinding xmi:type="uml:TemplateBinding" xmi:id="_K4hEADO1EdyG-pUz-bb-Lg" signature="_gkCKsDO0EdyG-pUz-bb-Lg">
<parameterSubstitution xmi:type="uml:TemplateParameterSubstitution" xmi:id="_Ol57wDO1EdyG-pUz-bb-Lg" actual="_Ol57wTO1EdyG-pUz-bb-Lg" formal="_iWLdwDO0EdyG-pUz-bb-Lg">
<ownedActual xmi:type="uml:LiteralInteger" xmi:id="_Ol57wTO1EdyG-pUz-bb-Lg" name="50" value="50"/>
</parameterSubstitution>
</templateBinding>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_0AwCEDO0EdyG-pUz-bb-Lg" name="BString200">
<templateBinding xmi:type="uml:TemplateBinding" xmi:id="_Lb-9cDO1EdyG-pUz-bb-Lg" signature="_gkCKsDO0EdyG-pUz-bb-Lg">
<parameterSubstitution xmi:type="uml:TemplateParameterSubstitution" xmi:id="_TPCDADO1EdyG-pUz-bb-Lg" actual="_TPL0ADO1EdyG-pUz-bb-Lg" formal="_iWLdwDO0EdyG-pUz-bb-Lg">
<ownedActual xmi:type="uml:LiteralInteger" xmi:id="_TPL0ADO1EdyG-pUz-bb-Lg" name="200" value="200"/>
</parameterSubstitution>
</templateBinding>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_1vnXoDO0EdyG-pUz-bb-Lg" name="BString500">
<templateBinding xmi:type="uml:TemplateBinding" xmi:id="_L8BvcDO1EdyG-pUz-bb-Lg" signature="_gkCKsDO0EdyG-pUz-bb-Lg">
<parameterSubstitution xmi:type="uml:TemplateParameterSubstitution" xmi:id="_eSja0DO1EdyG-pUz-bb-Lg" actual="_eStL0DO1EdyG-pUz-bb-Lg" formal="_iWLdwDO0EdyG-pUz-bb-Lg">
<ownedActual xmi:type="uml:LiteralInteger" xmi:id="_eStL0DO1EdyG-pUz-bb-Lg" name="500" value="500"/>
</parameterSubstitution>
</templateBinding>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_3W43cDO0EdyG-pUz-bb-Lg" name="BString2000">
<templateBinding xmi:type="uml:TemplateBinding" xmi:id="_MbeEgDO1EdyG-pUz-bb-Lg" signature="_gkCKsDO0EdyG-pUz-bb-Lg">
<parameterSubstitution xmi:type="uml:TemplateParameterSubstitution" xmi:id="_jJ_q4DO1EdyG-pUz-bb-Lg" actual="_jJ_q4TO1EdyG-pUz-bb-Lg" formal="_iWLdwDO0EdyG-pUz-bb-Lg">
<ownedActual xmi:type="uml:LiteralInteger" xmi:id="_jJ_q4TO1EdyG-pUz-bb-Lg" name="2000" value="2000"/>
</parameterSubstitution>
</templateBinding>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_WXH_4DO2EdyG-pUz-bb-Lg" name="BString">
<ownedComment xmi:type="uml:Comment" xmi:id="_na8OUDRHEdyG-pUz-bb-Lg" annotatedElement="_WXH_4DO2EdyG-pUz-bb-Lg">
<body>A superclass for the template class BStringT. It factors out&#xD;
all functions that do not depend on the template parameter.&#xD;
Since it does not provide storage for the string, never instantiate&#xD;
this class but BStringT instead (to enforce this, the constructor&#xD;
is protected)</body>
</ownedComment>
<ownedAttribute xmi:type="uml:Property" xmi:id="_A2bjsDRoEdypGbuyt3_DaA" name="charTable" visibility="protected" isUnique="false">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_5lVhgBydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_DwGfgDRoEdypGbuyt3_DaA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_DwGfgTRoEdypGbuyt3_DaA" value="1"/>
</ownedAttribute>
<ownedAttribute xmi:type="uml:Property" xmi:id="_FafkwDRoEdypGbuyt3_DaA" name="current" visibility="protected" isUnique="false">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_5lVhgBydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_HhzPgDRoEdypGbuyt3_DaA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Hh9AgDRoEdypGbuyt3_DaA" value="1"/>
</ownedAttribute>
<ownedAttribute xmi:type="uml:Property" xmi:id="_NT80UDRoEdypGbuyt3_DaA" name="m_scanOk" visibility="protected" isUnique="false">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_vAIV4I7PEdySGvm5GN66HA"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Q9AlsDRoEdypGbuyt3_DaA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Q9AlsTRoEdypGbuyt3_DaA" value="1"/>
</ownedAttribute>
<ownedAttribute xmi:type="uml:Property" xmi:id="_WG7s4DRoEdypGbuyt3_DaA" name="m_separator" visibility="protected" isUnique="false">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_5lVhgBydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_c8vHEDRoEdypGbuyt3_DaA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_c844EDRoEdypGbuyt3_DaA" value="1"/>
</ownedAttribute>
<ownedAttribute xmi:type="uml:Property" xmi:id="_ahw5cDRoEdypGbuyt3_DaA" name="numBase" visibility="protected" isUnique="false">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_LTZesByeEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_dw5H4DRoEdypGbuyt3_DaA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_dw5H4TRoEdypGbuyt3_DaA" value="1"/>
</ownedAttribute>
<ownedAttribute xmi:type="uml:Property" xmi:id="_gH_iIDRoEdypGbuyt3_DaA" name="charTableSize" visibility="protected" isUnique="false">
<ownedComment xmi:type="uml:Comment" xmi:id="_ku40wDRoEdypGbuyt3_DaA" annotatedElement="_gH_iIDRoEdypGbuyt3_DaA">
<body>the amount of memory allocated for the string table</body>
</ownedComment>
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_LTZesByeEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_jP9_sDRoEdypGbuyt3_DaA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_jP9_sTRoEdypGbuyt3_DaA" value="1"/>
</ownedAttribute>
<ownedAttribute xmi:type="uml:Property" xmi:id="_nHCX4DRoEdypGbuyt3_DaA" name="nbytes" visibility="protected" isUnique="false">
<ownedComment xmi:type="uml:Comment" xmi:id="_snwOcDRoEdypGbuyt3_DaA" annotatedElement="_nHCX4DRoEdypGbuyt3_DaA">
<body>the length of the string in bytes (not the amount of memory allocated)</body>
</ownedComment>
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_LTZesByeEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_o6X9wDRoEdypGbuyt3_DaA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_o6hHsDRoEdypGbuyt3_DaA" value="1"/>
</ownedAttribute>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_1R2jsDRbEdyDwaY3iUxzzA" name="operator[]" specification="_ZkKxIDRaEdy1p4IpsoZYqA">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_KEjPoCBbEeOMKsPXBVC0DA" name="param_0" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_5lVhgBydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_KFENACBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_KFPMICBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_KFaLQCBbEeOMKsPXBVC0DA" name="index">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_KF56gCBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_KGE5oCBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body>return charTable[index];</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_f_XoEDRcEdyDwaY3iUxzzA" name="operator&lt;&lt;" specification="_yQhl4DRJEdyG-pUz-bb-Lg">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_KGVYUCBbEeOMKsPXBVC0DA" name="d">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_6j0jABydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_KG28wCBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_KHB74CBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_KHNiECBbEeOMKsPXBVC0DA" name="ret" type="_WXH_4DO2EdyG-pUz-bb-Lg" direction="return">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_KHt4YCBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_KH43gCBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body>*this += d;
return *this;</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_SRhdYDRvEdypGbuyt3_DaA" name="size" specification="_urQpMDRmEdypGbuyt3_DaA">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_KIWxkCBbEeOMKsPXBVC0DA" name="param_0" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_LTZesByeEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_KI3u8CBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_KJCuECBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body>return charTableSize;</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_WgIy4DRvEdypGbuyt3_DaA" name="operator==" specification="_hifjgDRjEdyDwaY3iUxzzA">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_KJTz0CBbEeOMKsPXBVC0DA" name="ret" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_vAIV4I7PEdySGvm5GN66HA"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_KJ0KICBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_KJ_JQCBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_KKKIYCBbEeOMKsPXBVC0DA" name="constCharP">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_5lVhgBydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_KKqesCBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_KK1d0CBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body>return !strcmp (charTable, constCharP);</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_ZW-dIDRvEdypGbuyt3_DaA" name="operator==" specification="_hujpkDRjEdyDwaY3iUxzzA">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_KLbTsCBbEeOMKsPXBVC0DA" name="ret" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_vAIV4I7PEdySGvm5GN66HA"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_KL8RECBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_KMH3QCBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_KMS2YCBbEeOMKsPXBVC0DA" name="bString" type="_WXH_4DO2EdyG-pUz-bb-Lg">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_KMzzwCBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_KM-y4CBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body>return !strcmp (charTable, bString.charTable);</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_bhtPUDRvEdypGbuyt3_DaA" name="operator!=" specification="_h3DeQDRjEdyDwaY3iUxzzA">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_KNfJMCBbEeOMKsPXBVC0DA" name="ret" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_vAIV4I7PEdySGvm5GN66HA"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_KOAGkCBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_KOLFsCBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_KOWE0CBbEeOMKsPXBVC0DA" name="consCharP">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_5lVhgBydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_KO3CMCBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_KPCoYCBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body>return strcmp (charTable, consCharP);</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_dpdmADRvEdypGbuyt3_DaA" name="operator!=" specification="_iQYkQDRjEdyDwaY3iUxzzA">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_KPvL8CBbEeOMKsPXBVC0DA" name="ret" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_vAIV4I7PEdySGvm5GN66HA"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_KQQJUCBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_KQbIcCBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_KQlggCBbEeOMKsPXBVC0DA" name="bString" type="_WXH_4DO2EdyG-pUz-bb-Lg">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_KRGd4CBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_KRRdACBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body>return strcmp (charTable, bString.charTable);</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_hWi7wDRvEdypGbuyt3_DaA" name="data" specification="_hQh-4DRlEdypGbuyt3_DaA">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_KRxzUCBbEeOMKsPXBVC0DA" name="param_0" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_5lVhgBydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_KSUl4CBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_KSflACBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body>return charTable;</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_jpxioDRvEdypGbuyt3_DaA" name="length" specification="_AJnWcDRnEdypGbuyt3_DaA">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_KTFa4CBbEeOMKsPXBVC0DA" name="param_0" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_LTZesByeEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_KTlxMCBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_KTwwUCBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body>return nbytes;</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_pc0fUDRvEdypGbuyt3_DaA" name="setBase" specification="_tMpS8DRiEdyDwaY3iUxzzA">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_KUAn8CBbEeOMKsPXBVC0DA" name="newBase">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_LTZesByeEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_KUg-QCBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_KUr9YCBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_KU-RQCBbEeOMKsPXBVC0DA" name="param_0" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_LTZesByeEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_KVfOoCBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_KVqNwCBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body>unsigned int old = numBase;&#xD;
numBase = newBase;&#xD;
&#xD;
return old;&#xD;
</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_udWZ8DRvEdypGbuyt3_DaA" name="getPosition" specification="_FX25wDRjEdyDwaY3iUxzzA">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_KV6scCBbEeOMKsPXBVC0DA" name="param_0" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_LTZesByeEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_KWbCwCBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_KWmB4CBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body>return current - charTable;</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_yq6mkDRvEdypGbuyt3_DaA" name="scanOk" specification="_O59-oDRiEdyDwaY3iUxzzA">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_KW2gkCBbEeOMKsPXBVC0DA" name="ret" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_vAIV4I7PEdySGvm5GN66HA"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_KXeLoCBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_KXojsCBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body>return m_scanOk;</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_18IfsDRvEdypGbuyt3_DaA" name="getSeparator" specification="_w9e_8DRlEdypGbuyt3_DaA">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_KX5CYCBbEeOMKsPXBVC0DA" name="param_0" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_5lVhgBydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_KYZ_wCBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_KYk-4CBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body>return m_separator;</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_44MBIDRvEdypGbuyt3_DaA" name="setSeparator" specification="_BSrFsDRmEdypGbuyt3_DaA">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_KZK0wCBbEeOMKsPXBVC0DA" name="separator">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_5lVhgBydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_KZrLECBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_KZ2KMCBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body>m_separator = separator;</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_6eG5QDRzEdypGbuyt3_DaA" name="BString" specification="_E8CKIDRHEdyG-pUz-bb-Lg">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_KaUEQCBbEeOMKsPXBVC0DA" name="charP">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_5lVhgBydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Ka0akCBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Ka_ZsCBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body>charTable = current = (char*) charP;&#xD;
numBase = 0;&#xD;
m_separator = StdSeparators;&#xD;
charTableSize = 0;&#xD;
nbytes = strlen(charP);&#xD;
</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_Av_uEDR0EdypGbuyt3_DaA" name="operator=" specification="_sBF6EDRHEdyG-pUz-bb-Lg">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_KbkogCBbEeOMKsPXBVC0DA" name="constCharP">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_5lVhgBydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_KcFl4CBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_KcQlACBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body>nbytes = 0;&#xD;
concat (constCharP);&#xD;
current = charTable;&#xD;
</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_DpE0ADR0EdypGbuyt3_DaA" name="operator=" specification="_0h42cDRHEdyG-pUz-bb-Lg">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_Kc1z0CBbEeOMKsPXBVC0DA" name="bString" type="_WXH_4DO2EdyG-pUz-bb-Lg">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_KdWKICBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_KdhJQCBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body>nbytes = 0;&#xD;
concat (bString.charTable);&#xD;
current = charTable;&#xD;
</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_G7e_8DR0EdypGbuyt3_DaA" name="operator+=" specification="_ABbb4DRIEdyG-pUz-bb-Lg">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_KeA4gCBbEeOMKsPXBVC0DA" name="vp">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_8I6RgBydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_KeojkCBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Ke0JwCBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body>char buffer[sizeof(unsigned int)*2+1];&#xD;
&#xD;
sprintf (buffer, &quot;%x&quot;, (unsigned int) 0 /*vp*/);&#xD;
concat (buffer);&#xD;
</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_KFPmMDR0EdypGbuyt3_DaA" name="operator+=" specification="_La2yQDRIEdyG-pUz-bb-Lg">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_KfRcwCBbEeOMKsPXBVC0DA" name="constCharP">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_5lVhgBydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_KfxzECBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Kf8yMCBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body>concat (constCharP);</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_QmynoDR0EdypGbuyt3_DaA" name="operator+=" specification="_dH9GIDRIEdyG-pUz-bb-Lg">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_KgousCBbEeOMKsPXBVC0DA" name="c">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_5lVhgBydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_KhJFACBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_KhUEICBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body>concat (c, 1);&#xD;
</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_UA8aUDR0EdypGbuyt3_DaA" name="operator+=" specification="_lWbjcDRIEdyG-pUz-bb-Lg">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_Khki0CBbEeOMKsPXBVC0DA" name="bStr2" type="_WXH_4DO2EdyG-pUz-bb-Lg">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_KiE5ICBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_KiP4QCBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body>concat (bStr2.data());&#xD;
</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_XuBwEDR0EdypGbuyt3_DaA" name="operator+=" specification="_yR57YDRIEdyG-pUz-bb-Lg">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_KivngCBbEeOMKsPXBVC0DA" name="i">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_KjP90CBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Kja88CBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body>// actually, we would need a calculation of the needed buffer size:&#xD;
// round-up the log10 of maxint + 2 bytes for the sign and the&#xD;
// trailing 0, but it is simpler to come up with something &quot;big enough&quot;&#xD;
char buffer[30];&#xD;
sprintf (buffer, &quot;%i&quot;, i);&#xD;
concat (buffer);&#xD;
</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_abCI4DR0EdypGbuyt3_DaA" name="operator+=" specification="_-YxmkDRIEdyG-pUz-bb-Lg">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_KjrboCBbEeOMKsPXBVC0DA" name="l">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_8heigBydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_KkLx8CBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_KkWxECBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body>char buffer[30];&#xD;
sprintf (buffer, &quot;%d&quot;, (int) l);&#xD;
concat (buffer);&#xD;
</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_dWfNYDR0EdypGbuyt3_DaA" name="operator+=" specification="_F4T6QDRJEdyG-pUz-bb-Lg">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_KknPwCBbEeOMKsPXBVC0DA" name="d">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_6j0jABydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_KlHmECBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_KlSlMCBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body>char buffer[30];&#xD;
sprintf (buffer, &quot;%g&quot;, d);&#xD;
concat (buffer);&#xD;
</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_fnVOoDR0EdypGbuyt3_DaA" name="operator+=" specification="_IS_M8DRJEdyG-pUz-bb-Lg">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_KljD4CBbEeOMKsPXBVC0DA" name="f">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7W3wkBydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_KmKH4CBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_KmVHACBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body>char buffer[30];&#xD;
sprintf (buffer, &quot;%f&quot;, f);&#xD;
concat (buffer);&#xD;
</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_ho1MUDR0EdypGbuyt3_DaA" name="operator+=" specification="_RAcsUDRJEdyG-pUz-bb-Lg">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_KmllsCBbEeOMKsPXBVC0DA" name="ui">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_LTZesByeEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_KnF8ACBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_KnQ7ICBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body>char buffer[30];&#xD;
sprintf (buffer, &quot;%u&quot;, ui);&#xD;
concat (buffer);&#xD;
</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_lFhVoDR0EdypGbuyt3_DaA" name="operator+=" specification="_V-mBUDRJEdyG-pUz-bb-Lg">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_KnhZ0CBbEeOMKsPXBVC0DA" name="ul">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_a1wZUByeEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_KoBwICBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_KoMvQCBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body>char buffer[30];&#xD;
sprintf (buffer, &quot;%u&quot;, (unsigned int) ul);&#xD;
concat (buffer);&#xD;
</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="__1PgkDR0EdypGbuyt3_DaA" name="getWord" specification="_QpuIMDRmEdypGbuyt3_DaA">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_KodN8CBbEeOMKsPXBVC0DA" name="param_0" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_LTZesByeEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Ko9kQCBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_KpIjYCBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_KpTigCBbEeOMKsPXBVC0DA" name="buff" direction="inout">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_5lVhgBydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Kpz40CBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Kp-38CBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_KqWrYCBbEeOMKsPXBVC0DA" name="sizeBuff">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_LTZesByeEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Kq3owCBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_KrCn4CBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body>unsigned int n = 0;&#xD;
&#xD;
for (; current &lt; charTable + nbytes; ++current)&#xD;
{&#xD;
if (strrchr (m_separator, *current) != NULL)&#xD;
{ // *current IS a separator&#xD;
if (n > 0)&#xD;
break; // end of word&#xD;
// else // separators before word&#xD;
}&#xD;
else&#xD;
{ // *current IS a character of word&#xD;
if (n >= sizeBuff - 1)&#xD;
{&#xD;
break; // truncate if word too long&#xD;
}&#xD;
// with NO WARNING ! but caller may test :&#xD;
// if (n == sizeBuff-1) ...&#xD;
buff[n++] = *current; // store a character of word &#xD;
}&#xD;
}&#xD;
&#xD;
buff[n] = '\0'; // append a null terminator&#xD;
&#xD;
return n;&#xD;
</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_MNjhEDR1EdypGbuyt3_DaA" name="operator>>" specification="_Z9YpwDRXEdy1p4IpsoZYqA">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_KrTGkCBbEeOMKsPXBVC0DA" name="param_0" type="_WXH_4DO2EdyG-pUz-bb-Lg" direction="return">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Krzc4CBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Kr-cACBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_KsQv4CBbEeOMKsPXBVC0DA" name="c" direction="inout">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_5lVhgBydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_KsxtQCBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Ks8sYCBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body>char buff[2];&#xD;
if (getWord (buff, sizeof (buff)) > 0)&#xD;
{&#xD;
c = buff[0];&#xD;
}&#xD;
m_scanOk = (current &lt; charTable + nbytes);&#xD;
return *this;&#xD;
</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_P0Yd0DR1EdypGbuyt3_DaA" name="operator>>" specification="_aIaOADRXEdy1p4IpsoZYqA">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_KtbNgCBbEeOMKsPXBVC0DA" name="param_0" type="_WXH_4DO2EdyG-pUz-bb-Lg" direction="return">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Kt8K4CBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_KuHKACBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_KuZd4CBbEeOMKsPXBVC0DA" name="d" direction="inout">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_6j0jABydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Ku50MCBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_KvEzUCBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body>char *lastP;&#xD;
//double k= strtol(current, &amp;lastP, numBase);&#xD;
double k = strtod (current, &amp;lastP);&#xD;
&#xD;
m_scanOk = (current != lastP);&#xD;
if (m_scanOk) {&#xD;
d = k; // don't modify arg, if extraction failed&#xD;
current = lastP;&#xD;
}&#xD;
return *this;&#xD;
</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_WQ2yADR1EdypGbuyt3_DaA" name="operator>>" specification="_aOg2ADRXEdy1p4IpsoZYqA">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_KvdN0CBbEeOMKsPXBVC0DA" name="param_0" type="_WXH_4DO2EdyG-pUz-bb-Lg" direction="return">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Kv9kICBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_KwIjQCBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_Kwa3ICBbEeOMKsPXBVC0DA" name="f" direction="inout">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7W3wkBydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Kw7NcCBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_KxGzoCBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body>char *lastP;&#xD;
//float k= strtol(current, &amp;lastP, numBase);&#xD;
#ifdef SYSTEM_VxWorks&#xD;
// strtof seems to be missin in vxWorks&#xD;
float k = strtod (current, &amp;lastP);&#xD;
#else&#xD;
float k = strtof (current, &amp;lastP);&#xD;
#endif&#xD;
&#xD;
m_scanOk = (current != lastP);&#xD;
if (m_scanOk) {&#xD;
f = k; // don't modify arg, if extraction failed&#xD;
current = lastP;&#xD;
}&#xD;
return *this;&#xD;
</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_ZbW_IDR1EdypGbuyt3_DaA" name="operator>>" specification="_aU7AADRXEdy1p4IpsoZYqA">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_KxeAACBbEeOMKsPXBVC0DA" name="param_0" type="_WXH_4DO2EdyG-pUz-bb-Lg" direction="return">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Kx_kcCBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_KyJ8gCBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_Kyc3cCBbEeOMKsPXBVC0DA" name="i" direction="inout">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Ky9NwCBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_KzIM4CBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body>char *lastP;&#xD;
int k = strtol (current, &amp;lastP, numBase);&#xD;
&#xD;
m_scanOk = (current != lastP);&#xD;
if (m_scanOk) {&#xD;
i = k; // don't modify arg, if extraction failed&#xD;
current = lastP;&#xD;
}&#xD;
return *this;&#xD;
</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_ct68EDR1EdypGbuyt3_DaA" name="operator>>" specification="_aavUIDRXEdy1p4IpsoZYqA">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_KzgAUCBbEeOMKsPXBVC0DA" name="param_0" type="_WXH_4DO2EdyG-pUz-bb-Lg" direction="return">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_K0A9sCBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_K0L80CBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_K0e3wCBbEeOMKsPXBVC0DA" name="l" direction="inout">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_8heigBydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_K1FUsCBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_K1QT0CBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body>char *lastP;&#xD;
long k = strtol (current, &amp;lastP, numBase);&#xD;
&#xD;
m_scanOk = (current != lastP);&#xD;
if (m_scanOk) {&#xD;
l = k; // don't modify arg, if extraction failed&#xD;
current = lastP;&#xD;
}&#xD;
return *this;&#xD;
</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_fS4MIDR1EdypGbuyt3_DaA" name="operator>>" specification="_ag_tIDRXEdy1p4IpsoZYqA">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_K1pVYCBbEeOMKsPXBVC0DA" name="param_0" type="_WXH_4DO2EdyG-pUz-bb-Lg" direction="return">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_K2JrsCBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_K2Uq0CBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_K2m-sCBbEeOMKsPXBVC0DA" name="ui" direction="inout">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_LTZesByeEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_K3H8ECBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_K3S7MCBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body>char *lastP;&#xD;
long k = strtol (current, &amp;lastP, numBase);&#xD;
&#xD;
m_scanOk = (current != lastP);&#xD;
if (m_scanOk) {&#xD;
ui = k; // don't modify arg, if extraction failed&#xD;
current = lastP;&#xD;
}&#xD;
return *this;&#xD;
</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_h7kFoDR1EdypGbuyt3_DaA" name="operator>>" specification="_amWuQDRXEdy1p4IpsoZYqA">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_K3rVsCBbEeOMKsPXBVC0DA" name="param_0" type="_WXH_4DO2EdyG-pUz-bb-Lg" direction="return">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_K4LsACBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_K4WrICBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_K4o_ACBbEeOMKsPXBVC0DA" name="ul" direction="inout">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_a1wZUByeEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_K5J8YCBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_K5U7gCBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body>char *lastP;&#xD;
unsigned long k = strtol (current, &amp;lastP, numBase);&#xD;
&#xD;
m_scanOk = (current != lastP);&#xD;
if (m_scanOk) {&#xD;
ul = k; // don't modify arg, if extraction failed&#xD;
current = lastP;&#xD;
}&#xD;
return *this;&#xD;
</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_paT5sDR2EdypGbuyt3_DaA" name="concat" specification="_d6UmIDRnEdypGbuyt3_DaA">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_K5su8CBbEeOMKsPXBVC0DA" name="constCharP">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_5lVhgBydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_K6NsUCBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_K6YrcCBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body>char *target = charTable + nbytes;&#xD;
char *bound = charTable + charTableSize;&#xD;
while (target != bound &amp;&amp; *constCharP != '\0')&#xD;
{&#xD;
*target++ = *constCharP++;&#xD;
nbytes++;&#xD;
}&#xD;
if (target == bound)&#xD;
OSAL_ERROR (&quot;Bounded character table too short&quot;);&#xD;
*target = '\0';&#xD;
</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_voCAMDR2EdypGbuyt3_DaA" name="concat" specification="_8OaV4DRKEdyG-pUz-bb-Lg">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_K696QCBbEeOMKsPXBVC0DA" name="constCharP">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_5lVhgBydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_K7e3oCBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_K7p2wCBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_K8PsoCBbEeOMKsPXBVC0DA" name="size">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_LTZesByeEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_K8wqACBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_K87pICBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body>char *target = charTable + nbytes;&#xD;
char *bound = charTable + charTableSize;&#xD;
unsigned int i = 0;&#xD;
while (target != bound &amp;&amp; i &lt; size)&#xD;
{&#xD;
*target++ = *constCharP++;&#xD;
nbytes++;&#xD;
i++;&#xD;
}&#xD;
if (target == bound)&#xD;
OSAL_ERROR (&quot;Bounded character table too short&quot;);&#xD;
*target = '\0';&#xD;
</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_0KdCgDR2EdypGbuyt3_DaA" name="concat" specification="_tamdIDRnEdypGbuyt3_DaA">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_K9MH0CBbEeOMKsPXBVC0DA" name="ch">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_5lVhgBydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_K9tFMCBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_K94EUCBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_K-KYMCBbEeOMKsPXBVC0DA" name="nChar">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_LTZesByeEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_K-rVkCBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_K-2UsCBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body>if (nbytes + nChar >= charTableSize) {&#xD;
OSAL_ERROR (&quot;Bounded character table too short&quot;);&#xD;
}&#xD;
&#xD;
unsigned int i;&#xD;
char *cP = charTable + nbytes;&#xD;
for (i = 0; i &lt; nChar; i++) { // concat stops on terminating zero&#xD;
*cP++ = ch;&#xD;
}&#xD;
*cP = '\0';&#xD;
nbytes += nChar;&#xD;
</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_4mVX8DR2EdypGbuyt3_DaA" name="commonInit" specification="_ZakdUDRnEdypGbuyt3_DaA">
<language>C/C++</language>
<body>numBase = 0;&#xD;
current = charTable;&#xD;
&#xD;
m_separator = StdSeparators;&#xD;
&#xD;
charTable[0] = '\0';&#xD;
nbytes = 0;&#xD;
</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_-lTQwDR2EdypGbuyt3_DaA" name="setPosition" specification="_UA3KgDRjEdyDwaY3iUxzzA">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_K_Lr4CBbEeOMKsPXBVC0DA" name="pos">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_LTZesByeEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_K_spQCBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_K_3oYCBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body>if (pos > (unsigned int) (current - charTable + nbytes)) {&#xD;
OSAL_ERROR (&quot;BString::setPosition pos > current-begin&quot;);&#xD;
}&#xD;
&#xD;
current = charTable + pos;&#xD;
</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_20RkgFIJEd-OfYmxqPWG5g" name="operator&lt;&lt;" specification="_nyaBMDRJEdyG-pUz-bb-Lg">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_LAIHECBbEeOMKsPXBVC0DA" name="vp">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_8I6RgBydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_LAodYCBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_LAzcgCBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_LBNFICBbEeOMKsPXBVC0DA" name="ret" type="_WXH_4DO2EdyG-pUz-bb-Lg" direction="return">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_LBtbcCBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_LB4akCBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body>*this += vp;
return *this;</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_7piDQFIJEd-OfYmxqPWG5g" name="operator&lt;&lt;" specification="_uTyqkDRJEdyG-pUz-bb-Lg">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_LCQ1ECBbEeOMKsPXBVC0DA" name="constCharP">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_5lVhgBydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_LCxycCBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_LC8xkCBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_LDcg0CBbEeOMKsPXBVC0DA" name="ret" type="_WXH_4DO2EdyG-pUz-bb-Lg" direction="return">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_LEEL4CBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_LEPLACBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body>*this += constCharP;
return *this;</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_ABuLgFIKEd-OfYmxqPWG5g" name="operator&lt;&lt;" specification="_xfysgDRJEdyG-pUz-bb-Lg">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_LEnlgCBbEeOMKsPXBVC0DA" name="c">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_5lVhgBydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_LFIi4CBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_LFTiACBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_LFfIMCBbEeOMKsPXBVC0DA" name="ret" type="_WXH_4DO2EdyG-pUz-bb-Lg" direction="return">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_LGAFkCBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_LGLEsCBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body>*this += c;
return *this;</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_CInmkFIKEd-OfYmxqPWG5g" name="operator&lt;&lt;" specification="_xsnAgDRJEdyG-pUz-bb-Lg">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_LGi4ICBbEeOMKsPXBVC0DA" name="i">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_LHD1gCBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_LHPbsCBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_LHaa0CBbEeOMKsPXBVC0DA" name="ret" type="_WXH_4DO2EdyG-pUz-bb-Lg" direction="return">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_LH7YMCBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_LIGXUCBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body>*this += i;
return *this;</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_DEVn8FIKEd-OfYmxqPWG5g" name="operator&lt;&lt;" specification="_x1P_IDRJEdyG-pUz-bb-Lg">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_LIeKwCBbEeOMKsPXBVC0DA" name="l">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_8heigBydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_LJAWQCBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_LJLVYCBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_LJWUgCBbEeOMKsPXBVC0DA" name="ret" type="_WXH_4DO2EdyG-pUz-bb-Lg" direction="return">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_LJ2q0CBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_LKBp8CBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body>*this += l;
return *this;</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_GQ_KIFIKEd-OfYmxqPWG5g" name="operator&lt;&lt;" specification="_x8tSADRJEdyG-pUz-bb-Lg">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_LKZdYCBbEeOMKsPXBVC0DA" name="ui">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_LTZesByeEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_LK6awCBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_LLLggCBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_LLWfoCBbEeOMKsPXBVC0DA" name="ret" type="_WXH_4DO2EdyG-pUz-bb-Lg" direction="return">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_LL4EECBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_LMDDMCBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body>*this += ui;
return *this;</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_HzZYEFIKEd-OfYmxqPWG5g" name="operator&lt;&lt;" specification="_yJ0g8DRJEdyG-pUz-bb-Lg">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_LMa2oCBbEeOMKsPXBVC0DA" name="ul">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_a1wZUByeEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_LM7M8CBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_LNGzICBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_LNRLMCBbEeOMKsPXBVC0DA" name="ret" type="_WXH_4DO2EdyG-pUz-bb-Lg" direction="return">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_LNyIkCBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_LN9HsCBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body>*this += ul;
return *this;</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_KuP_oFIKEd-OfYmxqPWG5g" name="operator&lt;&lt;" specification="_yXOq0DRJEdyG-pUz-bb-Lg">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_LOU7ICBbEeOMKsPXBVC0DA" name="f">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7W3wkBydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_LO2fkCBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_LPBesCBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_LPMd0CBbEeOMKsPXBVC0DA" name="ret" type="_WXH_4DO2EdyG-pUz-bb-Lg" direction="return">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_LPtbMCBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_LP4aUCBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body>*this += f;
return *this;</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_MhuvcFIKEd-OfYmxqPWG5g" name="operator&lt;&lt;" specification="_yjTX8DRJEdyG-pUz-bb-Lg">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_LQQNwCBbEeOMKsPXBVC0DA" name="bStr" type="_WXH_4DO2EdyG-pUz-bb-Lg">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_LQxLICBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_LQ8KQCBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_LRVy4CBbEeOMKsPXBVC0DA" name="ret" type="_WXH_4DO2EdyG-pUz-bb-Lg" direction="return">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_LR2wQCBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_LSBvYCBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body>*this += bStr;
return *this;</body>
</ownedBehavior>
<ownedOperation xmi:type="uml:Operation" xmi:id="_J60NwDRGEdyG-pUz-bb-Lg" name="BString" visibility="protected">
<ownedComment xmi:type="uml:Comment" xmi:id="_SjXX8DRGEdyG-pUz-bb-Lg" annotatedElement="_J60NwDRGEdyG-pUz-bb-Lg">
<body>forbid the creation of an BString without storage.</body>
</ownedComment>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="_X1eKwDRGEdyG-pUz-bb-Lg" name="BString" visibility="private">
<ownedComment xmi:type="uml:Comment" xmi:id="_gnjrcDRGEdyG-pUz-bb-Lg" annotatedElement="_X1eKwDRGEdyG-pUz-bb-Lg">
<body>forbid the implicit copying of a BString without storage.&#xD;
If the copying to a BStringT type should be avoided for the sake&#xD;
of efficiency, an assignment to a reference type (BString&amp;) should be&#xD;
used explicitly.&#xD;
The constructor is declared private to avoid that the default&#xD;
copy constructor of a subclass will based on it (which won't work,&#xD;
since it is empty). Effectively, we force that the subclass declares&#xD;
its own copy constructor.</body>
</ownedComment>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_o4Q9YDRGEdyG-pUz-bb-Lg" name="dummy" type="_WXH_4DO2EdyG-pUz-bb-Lg">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_x3dF8DRGEdyG-pUz-bb-Lg" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_x3m28DRGEdyG-pUz-bb-Lg" value="1"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="_E8CKIDRHEdyG-pUz-bb-Lg" name="BString" method="_6eG5QDRzEdypGbuyt3_DaA">
<ownedComment xmi:type="uml:Comment" xmi:id="_eNSL8DRHEdyG-pUz-bb-Lg" annotatedElement="_E8CKIDRHEdyG-pUz-bb-Lg">
<body>create a string wrapper for a const char*&#xD;
A string initialized with this pointer has a size of 0 (allocated&#xD;
memory) and cannot be modified. It is a convenient way to pass&#xD;
C-strings directly to functions that have a const BString &amp;&#xD;
parameter.</body>
</ownedComment>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_ajL4wDRHEdyG-pUz-bb-Lg" name="charP">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_5lVhgBydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_cjyekDRHEdyG-pUz-bb-Lg" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_cjyekTRHEdyG-pUz-bb-Lg" value="1"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="_sBF6EDRHEdyG-pUz-bb-Lg" name="operator=" method="_Av_uEDR0EdypGbuyt3_DaA">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_vKHggDRHEdyG-pUz-bb-Lg" name="constCharP">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_5lVhgBydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_xoXroDRHEdyG-pUz-bb-Lg" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_xog1kDRHEdyG-pUz-bb-Lg" value="1"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="_0h42cDRHEdyG-pUz-bb-Lg" name="operator=" method="_DpE0ADR0EdypGbuyt3_DaA">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_2Do9EDRHEdyG-pUz-bb-Lg" name="bString" type="_WXH_4DO2EdyG-pUz-bb-Lg">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_45cFgDRHEdyG-pUz-bb-Lg" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_45l2gDRHEdyG-pUz-bb-Lg" value="1"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="_ABbb4DRIEdyG-pUz-bb-Lg" name="operator+=" method="_G7e_8DR0EdypGbuyt3_DaA">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_DEe9MDRIEdyG-pUz-bb-Lg" name="vp">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_8I6RgBydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_E_IE8DRIEdyG-pUz-bb-Lg" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_E_RO4DRIEdyG-pUz-bb-Lg" value="1"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="_La2yQDRIEdyG-pUz-bb-Lg" name="operator+=" method="_KFPmMDR0EdypGbuyt3_DaA">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_RcNQsDRIEdyG-pUz-bb-Lg" name="constCharP">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_5lVhgBydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Yg6CgDRIEdyG-pUz-bb-Lg" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Yg6CgTRIEdyG-pUz-bb-Lg" value="1"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="_dH9GIDRIEdyG-pUz-bb-Lg" name="operator+=" method="_QmynoDR0EdypGbuyt3_DaA">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_eOScEDRIEdyG-pUz-bb-Lg" name="c">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_5lVhgBydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_h0hi8DRIEdyG-pUz-bb-Lg" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_h0qs4DRIEdyG-pUz-bb-Lg" value="1"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="_lWbjcDRIEdyG-pUz-bb-Lg" name="operator+=" method="_UA8aUDR0EdypGbuyt3_DaA">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_nIuAcDRIEdyG-pUz-bb-Lg" name="bStr2" type="_WXH_4DO2EdyG-pUz-bb-Lg">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rM5nkDRIEdyG-pUz-bb-Lg" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rNDYkDRIEdyG-pUz-bb-Lg" value="1"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="_yR57YDRIEdyG-pUz-bb-Lg" name="operator+=" method="_XuBwEDR0EdypGbuyt3_DaA">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_1XDHYDRIEdyG-pUz-bb-Lg" name="i">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_2_8-4DRIEdyG-pUz-bb-Lg" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_3AGv4DRIEdyG-pUz-bb-Lg" value="1"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="_-YxmkDRIEdyG-pUz-bb-Lg" name="operator+=" method="_abCI4DR0EdypGbuyt3_DaA">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_AJbr4DRJEdyG-pUz-bb-Lg" name="l">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_8heigBydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_CnPLEDRJEdyG-pUz-bb-Lg" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Csv9MDRJEdyG-pUz-bb-Lg" value="1"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="_F4T6QDRJEdyG-pUz-bb-Lg" name="operator+=" method="_dWfNYDR0EdypGbuyt3_DaA">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_HCXSkDRJEdyG-pUz-bb-Lg" name="d">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_6j0jABydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_IFkcADRJEdyG-pUz-bb-Lg" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_IFuNADRJEdyG-pUz-bb-Lg" value="1"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="_IS_M8DRJEdyG-pUz-bb-Lg" name="operator+=" method="_fnVOoDR0EdypGbuyt3_DaA">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_KAqPsDRJEdyG-pUz-bb-Lg" name="f">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7W3wkBydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_L9rWADRJEdyG-pUz-bb-Lg" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_L91HADRJEdyG-pUz-bb-Lg" value="1"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="_RAcsUDRJEdyG-pUz-bb-Lg" name="operator+=" method="_ho1MUDR0EdypGbuyt3_DaA">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_St9-EDRJEdyG-pUz-bb-Lg" name="ui">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_LTZesByeEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Tl2oUDRJEdyG-pUz-bb-Lg" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_TmAZUDRJEdyG-pUz-bb-Lg" value="1"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="_V-mBUDRJEdyG-pUz-bb-Lg" name="operator+=" method="_lFhVoDR0EdypGbuyt3_DaA">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_Xmmg8DRJEdyG-pUz-bb-Lg" name="ul">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_a1wZUByeEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_ZDShYDRJEdyG-pUz-bb-Lg" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ZIqJkDRJEdyG-pUz-bb-Lg" value="1"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="_nyaBMDRJEdyG-pUz-bb-Lg" name="operator&lt;&lt;" method="_20RkgFIJEd-OfYmxqPWG5g">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_qg5nwDRJEdyG-pUz-bb-Lg" name="vp">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_8I6RgBydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rkZsIDRJEdyG-pUz-bb-Lg" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rkjdIDRJEdyG-pUz-bb-Lg" value="1"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_xw1XMDRfEdyDwaY3iUxzzA" name="ret" type="_WXH_4DO2EdyG-pUz-bb-Lg" direction="return">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_zW59IDRfEdyDwaY3iUxzzA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_zXDuIDRfEdyDwaY3iUxzzA" value="1"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="_uTyqkDRJEdyG-pUz-bb-Lg" name="operator&lt;&lt;" method="_7piDQFIJEd-OfYmxqPWG5g">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_2u7q4DRJEdyG-pUz-bb-Lg" name="constCharP">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_5lVhgBydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_74GkIDRJEdyG-pUz-bb-Lg" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_74GkITRJEdyG-pUz-bb-Lg" value="1"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_XVuW4DRKEdyG-pUz-bb-Lg" name="ret" type="_WXH_4DO2EdyG-pUz-bb-Lg" direction="return">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_ZWetsDRKEdyG-pUz-bb-Lg" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ZWn3oDRKEdyG-pUz-bb-Lg" value="1"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="_xfysgDRJEdyG-pUz-bb-Lg" name="operator&lt;&lt;" method="_ABuLgFIKEd-OfYmxqPWG5g">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_3Itc0DRJEdyG-pUz-bb-Lg" name="c">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_5lVhgBydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_9cPQYDRJEdyG-pUz-bb-Lg" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_9cZBYDRJEdyG-pUz-bb-Lg" value="1"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_aL0aQDRKEdyG-pUz-bb-Lg" name="ret" type="_WXH_4DO2EdyG-pUz-bb-Lg" direction="return">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_bxc7UDRKEdyG-pUz-bb-Lg" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_bxmsUDRKEdyG-pUz-bb-Lg" value="1"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="_xsnAgDRJEdyG-pUz-bb-Lg" name="operator&lt;&lt;" method="_CInmkFIKEd-OfYmxqPWG5g">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_3YWbUDRJEdyG-pUz-bb-Lg" name="i">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_-5htwDRJEdyG-pUz-bb-Lg" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-5q3sDRJEdyG-pUz-bb-Lg" value="1"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_ctWi4DRKEdyG-pUz-bb-Lg" name="ret" type="_WXH_4DO2EdyG-pUz-bb-Lg" direction="return">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_esnE4DRKEdyG-pUz-bb-Lg" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_esnE4TRKEdyG-pUz-bb-Lg" value="1"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="_x1P_IDRJEdyG-pUz-bb-Lg" name="operator&lt;&lt;" method="_DEVn8FIKEd-OfYmxqPWG5g">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_3w8hgDRJEdyG-pUz-bb-Lg" name="l">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_8heigBydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_AiR0QDRKEdyG-pUz-bb-Lg" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_AiblQDRKEdyG-pUz-bb-Lg" value="1"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_fMgF4DRKEdyG-pUz-bb-Lg" name="ret" type="_WXH_4DO2EdyG-pUz-bb-Lg" direction="return">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_gboLcDRKEdyG-pUz-bb-Lg" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ghI9kDRKEdyG-pUz-bb-Lg" value="1"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="_x8tSADRJEdyG-pUz-bb-Lg" name="operator&lt;&lt;" method="_GQ_KIFIKEd-OfYmxqPWG5g">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_4CFU0DRJEdyG-pUz-bb-Lg" name="ui">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_LTZesByeEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_DlV8oDRKEdyG-pUz-bb-Lg" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_DlfGkDRKEdyG-pUz-bb-Lg" value="1"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_g3MtIDRKEdyG-pUz-bb-Lg" name="ret" type="_WXH_4DO2EdyG-pUz-bb-Lg" direction="return">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_iEiC8DRKEdyG-pUz-bb-Lg" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_iErz8DRKEdyG-pUz-bb-Lg" value="1"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="_yJ0g8DRJEdyG-pUz-bb-Lg" name="operator&lt;&lt;" method="_HzZYEFIKEd-OfYmxqPWG5g">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_4bQp0DRJEdyG-pUz-bb-Lg" name="ul">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_a1wZUByeEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_E3mOsDRKEdyG-pUz-bb-Lg" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_E3vYoDRKEdyG-pUz-bb-Lg" value="1"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_ienW4DRKEdyG-pUz-bb-Lg" name="ret" type="_WXH_4DO2EdyG-pUz-bb-Lg" direction="return">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_jwkuADRKEdyG-pUz-bb-Lg" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_jwkuATRKEdyG-pUz-bb-Lg" value="1"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="_yQhl4DRJEdyG-pUz-bb-Lg" name="operator&lt;&lt;" method="_f_XoEDRcEdyDwaY3iUxzzA">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_4vYfsDRJEdyG-pUz-bb-Lg" name="d">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_6j0jABydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_GRmukDRKEdyG-pUz-bb-Lg" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_GRv4gDRKEdyG-pUz-bb-Lg" value="1"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_kFSZwDRKEdyG-pUz-bb-Lg" name="ret" type="_WXH_4DO2EdyG-pUz-bb-Lg" direction="return">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_lv1QADRKEdyG-pUz-bb-Lg" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_lv-Z8DRKEdyG-pUz-bb-Lg" value="1"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="_yXOq0DRJEdyG-pUz-bb-Lg" name="operator&lt;&lt;" method="_KuP_oFIKEd-OfYmxqPWG5g">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_5GexEDRJEdyG-pUz-bb-Lg" name="f">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7W3wkBydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_HV2Z0DRKEdyG-pUz-bb-Lg" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_HWAK0DRKEdyG-pUz-bb-Lg" value="1"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_mGLTcDRKEdyG-pUz-bb-Lg" name="ret" type="_WXH_4DO2EdyG-pUz-bb-Lg" direction="return">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_nVKPEDRKEdyG-pUz-bb-Lg" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_nVUAEDRKEdyG-pUz-bb-Lg" value="1"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="_yjTX8DRJEdyG-pUz-bb-Lg" name="operator&lt;&lt;" method="_MhuvcFIKEd-OfYmxqPWG5g">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_5al_4DRJEdyG-pUz-bb-Lg" name="bStr" type="_WXH_4DO2EdyG-pUz-bb-Lg">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Kw5kYDRKEdyG-pUz-bb-Lg" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_KxDVYDRKEdyG-pUz-bb-Lg" value="1"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_nv1Y4DRKEdyG-pUz-bb-Lg" name="ret" type="_WXH_4DO2EdyG-pUz-bb-Lg" direction="return">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_pIf08DRKEdyG-pUz-bb-Lg" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_pIo-4DRKEdyG-pUz-bb-Lg" value="1"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="_8OaV4DRKEdyG-pUz-bb-Lg" name="concat" method="_voCAMDR2EdypGbuyt3_DaA">
<ownedParameter xmi:type="uml:Parameter" xmi:id="__jzkYDRKEdyG-pUz-bb-Lg" name="constCharP">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_5lVhgBydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A8eAcDRLEdyG-pUz-bb-Lg" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_A8eAcTRLEdyG-pUz-bb-Lg" value="1"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="__nOr0DRKEdyG-pUz-bb-Lg" name="size">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_LTZesByeEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_ChWTkDRLEdyG-pUz-bb-Lg" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ChWTkTRLEdyG-pUz-bb-Lg" value="1"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="_Z9YpwDRXEdy1p4IpsoZYqA" name="operator>>" method="_MNjhEDR1EdypGbuyt3_DaA">
<ownedComment xmi:type="uml:Comment" xmi:id="_Fgf5YDRYEdy1p4IpsoZYqA" annotatedElement="_Z9YpwDRXEdy1p4IpsoZYqA">
<body>Scan string to retrieve one of the following types. If the scanning&#xD;
was successfull (see operation scanOk), the current scan position&#xD;
is set just behind the input consumed. Therefore, a successive&#xD;
invocation of this operator will continue scanning at the new&#xD;
position (see get/setPosition)</body>
</ownedComment>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_giLzgDRXEdy1p4IpsoZYqA" name="param_0" type="_WXH_4DO2EdyG-pUz-bb-Lg" direction="return">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_j4dy0DRXEdy1p4IpsoZYqA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_j4dy0TRXEdy1p4IpsoZYqA" value="1"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_zmS9oDRXEdy1p4IpsoZYqA" name="c" direction="inout">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_5lVhgBydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_3lQtkDRXEdy1p4IpsoZYqA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_3lZ3gDRXEdy1p4IpsoZYqA" value="1"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="_aIaOADRXEdy1p4IpsoZYqA" name="operator>>" method="_P0Yd0DR1EdypGbuyt3_DaA">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_kTb3kDRXEdy1p4IpsoZYqA" name="param_0" type="_WXH_4DO2EdyG-pUz-bb-Lg" direction="return">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_l2-G4DRXEdy1p4IpsoZYqA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_l3H34DRXEdy1p4IpsoZYqA" value="1"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_z-lh0DRXEdy1p4IpsoZYqA" name="d" direction="inout">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_6j0jABydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_5dzjkDRXEdy1p4IpsoZYqA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_5d9UkDRXEdy1p4IpsoZYqA" value="1"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="_aOg2ADRXEdy1p4IpsoZYqA" name="operator>>" method="_WQ2yADR1EdypGbuyt3_DaA">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_m0EoUDRXEdy1p4IpsoZYqA" name="param_0" type="_WXH_4DO2EdyG-pUz-bb-Lg" direction="return">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_oXm3oDRXEdy1p4IpsoZYqA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_oXwooDRXEdy1p4IpsoZYqA" value="1"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_0RNi4DRXEdy1p4IpsoZYqA" name="f" direction="inout">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7W3wkBydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_6lMCYDRXEdy1p4IpsoZYqA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_6lVMUDRXEdy1p4IpsoZYqA" value="1"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="_aU7AADRXEdy1p4IpsoZYqA" name="operator>>" method="_ZbW_IDR1EdypGbuyt3_DaA">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_orbLgDRXEdy1p4IpsoZYqA" name="param_0" type="_WXH_4DO2EdyG-pUz-bb-Lg" direction="return">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_p0cpEDRXEdy1p4IpsoZYqA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_p0lzADRXEdy1p4IpsoZYqA" value="1"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_0ku70DRXEdy1p4IpsoZYqA" name="i" direction="inout">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_8WlHgDRXEdy1p4IpsoZYqA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_8Wu4gDRXEdy1p4IpsoZYqA" value="1"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="_aavUIDRXEdy1p4IpsoZYqA" name="operator>>" method="_ct68EDR1EdypGbuyt3_DaA">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_qoJW4DRXEdy1p4IpsoZYqA" name="param_0" type="_WXH_4DO2EdyG-pUz-bb-Lg" direction="return">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_s9docDRXEdy1p4IpsoZYqA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_s9myYDRXEdy1p4IpsoZYqA" value="1"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_02A5EDRXEdy1p4IpsoZYqA" name="l" direction="inout">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_8heigBydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_9rXwMDRXEdy1p4IpsoZYqA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_9rhhMDRXEdy1p4IpsoZYqA" value="1"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="_ag_tIDRXEdy1p4IpsoZYqA" name="operator>>" method="_fS4MIDR1EdypGbuyt3_DaA">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_tL6UIDRXEdy1p4IpsoZYqA" name="param_0" type="_WXH_4DO2EdyG-pUz-bb-Lg" direction="return">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_uzCC8DRXEdy1p4IpsoZYqA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_uzLz8DRXEdy1p4IpsoZYqA" value="1"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_AArasDRYEdy1p4IpsoZYqA" name="ui" direction="inout">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_LTZesByeEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Bv2SQDRYEdy1p4IpsoZYqA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Bv_cMDRYEdy1p4IpsoZYqA" value="1"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="_amWuQDRXEdy1p4IpsoZYqA" name="operator>>" method="_h7kFoDR1EdypGbuyt3_DaA">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_vCh3gDRXEdy1p4IpsoZYqA" name="param_0" type="_WXH_4DO2EdyG-pUz-bb-Lg" direction="return">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_wWuDQDRXEdy1p4IpsoZYqA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_wW30QDRXEdy1p4IpsoZYqA" value="1"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_AR0OADRYEdy1p4IpsoZYqA" name="ul" direction="inout">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_a1wZUByeEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_C-X64DRYEdy1p4IpsoZYqA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_C-X64TRYEdy1p4IpsoZYqA" value="1"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="_ZkKxIDRaEdy1p4IpsoZYqA" name="operator[]" method="_1R2jsDRbEdyDwaY3iUxzzA">
<ownedComment xmi:type="uml:Comment" xmi:id="_iOzmADRaEdy1p4IpsoZYqA" annotatedElement="_ZkKxIDRaEdy1p4IpsoZYqA">
<body>the standard index operator</body>
</ownedComment>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_dPnIIDRaEdy1p4IpsoZYqA" name="param_0" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_5lVhgBydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_eF2zoDRaEdy1p4IpsoZYqA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_eF2zoTRaEdy1p4IpsoZYqA" value="1"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_eSrHoDRaEdy1p4IpsoZYqA" name="index">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_f2XH8DRaEdy1p4IpsoZYqA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_f2gR4DRaEdy1p4IpsoZYqA" value="1"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="_O59-oDRiEdyDwaY3iUxzzA" name="scanOk" method="_yq6mkDRvEdypGbuyt3_DaA">
<ownedComment xmi:type="uml:Comment" xmi:id="_pkVIcDRiEdyDwaY3iUxzzA" annotatedElement="_O59-oDRiEdyDwaY3iUxzzA">
<body>Indicates, whether the last scan (via operator >>) was successfull</body>
</ownedComment>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_SExtwDRiEdyDwaY3iUxzzA" name="ret" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_vAIV4I7PEdySGvm5GN66HA"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_kcWiADRiEdyDwaY3iUxzzA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_kcfr8DRiEdyDwaY3iUxzzA" value="1"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="_tMpS8DRiEdyDwaY3iUxzzA" name="setBase" method="_pc0fUDRvEdypGbuyt3_DaA">
<ownedComment xmi:type="uml:Comment" xmi:id="___ML8DRiEdyDwaY3iUxzzA" annotatedElement="_tMpS8DRiEdyDwaY3iUxzzA">
<body>Set numerical base for the scanning of longs and integer)&#xD;
(the default value 0 indicates base 10)</body>
</ownedComment>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_vozzYDRiEdyDwaY3iUxzzA" name="newBase">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_LTZesByeEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_xX-q8DRiEdyDwaY3iUxzzA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_xYH04DRiEdyDwaY3iUxzzA" value="1"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_1-uzoDRiEdyDwaY3iUxzzA" name="param_0" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_LTZesByeEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_3AcIQDRiEdyDwaY3iUxzzA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_3AcIQTRiEdyDwaY3iUxzzA" value="1"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="_FX25wDRjEdyDwaY3iUxzzA" name="getPosition" method="_udWZ8DRvEdypGbuyt3_DaA">
<ownedComment xmi:type="uml:Comment" xmi:id="_HgW3UDRjEdyDwaY3iUxzzA" annotatedElement="_FX25wDRjEdyDwaY3iUxzzA">
<body>Get the current position within the string for scanning&#xD;
(via operator >>).</body>
</ownedComment>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_Jbvl8DRjEdyDwaY3iUxzzA" name="param_0" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_LTZesByeEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Kj3roDRjEdyDwaY3iUxzzA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Kj3roTRjEdyDwaY3iUxzzA" value="1"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="_UA3KgDRjEdyDwaY3iUxzzA" name="setPosition" method="_-lTQwDR2EdypGbuyt3_DaA">
<ownedComment xmi:type="uml:Comment" xmi:id="_ba4FADRjEdyDwaY3iUxzzA" annotatedElement="_UA3KgDRjEdyDwaY3iUxzzA">
<body>Set the current position within the string for scanning&#xD;
(via operator >>).</body>
</ownedComment>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_V4YFwDRjEdyDwaY3iUxzzA" name="pos">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_LTZesByeEduyofBvg4RL2w"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="_hifjgDRjEdyDwaY3iUxzzA" name="operator==" method="_WgIy4DRvEdypGbuyt3_DaA">
<ownedComment xmi:type="uml:Comment" xmi:id="_rLhd0DRkEdypGbuyt3_DaA" annotatedElement="_hifjgDRjEdyDwaY3iUxzzA">
<body>comparison operators with the obvious semantics ...</body>
</ownedComment>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_ogWGcDRjEdyDwaY3iUxzzA" name="ret" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_vAIV4I7PEdySGvm5GN66HA"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_3Y1ksDRjEdypGbuyt3_DaA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_3ZJGsDRjEdypGbuyt3_DaA" value="1"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_oiusEDRjEdyDwaY3iUxzzA" name="constCharP">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_5lVhgBydEduyofBvg4RL2w"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="_hujpkDRjEdyDwaY3iUxzzA" name="operator==" method="_ZW-dIDRvEdypGbuyt3_DaA">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_o2GUADRjEdyDwaY3iUxzzA" name="ret" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_vAIV4I7PEdySGvm5GN66HA"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_o4x0kDRjEdyDwaY3iUxzzA" name="bString" type="_WXH_4DO2EdyG-pUz-bb-Lg"/>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="_h3DeQDRjEdyDwaY3iUxzzA" name="operator!=" method="_bhtPUDRvEdypGbuyt3_DaA">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_pJBQADRjEdyDwaY3iUxzzA" name="ret" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_vAIV4I7PEdySGvm5GN66HA"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_pLG6sDRjEdyDwaY3iUxzzA" name="consCharP">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_5lVhgBydEduyofBvg4RL2w"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="_iQYkQDRjEdyDwaY3iUxzzA" name="operator!=" method="_dpdmADRvEdypGbuyt3_DaA">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_pfX6gDRjEdyDwaY3iUxzzA" name="ret" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_vAIV4I7PEdySGvm5GN66HA"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_pg3IQDRjEdyDwaY3iUxzzA" name="bString" type="_WXH_4DO2EdyG-pUz-bb-Lg"/>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="_hQh-4DRlEdypGbuyt3_DaA" name="data" method="_hWi7wDRvEdypGbuyt3_DaA">
<ownedComment xmi:type="uml:Comment" xmi:id="_tSyP0DRlEdypGbuyt3_DaA" annotatedElement="_hQh-4DRlEdypGbuyt3_DaA">
<body>Provide access to the memory location of the string. Use with care,&#xD;
since it allows a caller to corrupt the string contents.</body>
</ownedComment>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_jgxjMDRlEdypGbuyt3_DaA" name="param_0" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_5lVhgBydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_knjlEDRlEdypGbuyt3_DaA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_kntWEDRlEdypGbuyt3_DaA" value="1"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="_w9e_8DRlEdypGbuyt3_DaA" name="getSeparator" method="_18IfsDRvEdypGbuyt3_DaA">
<ownedComment xmi:type="uml:Comment" xmi:id="_38-hoDRlEdypGbuyt3_DaA" annotatedElement="_w9e_8DRlEdypGbuyt3_DaA">
<body>get the string containing separator characters that are used by&#xD;
getWord and during the scanning of characters.</body>
</ownedComment>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_yuSPMDRlEdypGbuyt3_DaA" name="param_0" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_5lVhgBydEduyofBvg4RL2w"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="_BSrFsDRmEdypGbuyt3_DaA" name="setSeparator" method="_44MBIDRvEdypGbuyt3_DaA">
<ownedComment xmi:type="uml:Comment" xmi:id="_DrjooDRmEdypGbuyt3_DaA" annotatedElement="_BSrFsDRmEdypGbuyt3_DaA">
<body>set the string containing separator characters. Only the address of&#xD;
the passed string is stored (no copy is made). Therefore, the passed&#xD;
string may not be a local variable that might run out of scope.</body>
</ownedComment>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_GkyfkDRmEdypGbuyt3_DaA" name="separator">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_5lVhgBydEduyofBvg4RL2w"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="_QpuIMDRmEdypGbuyt3_DaA" name="getWord" method="__1PgkDR0EdypGbuyt3_DaA">
<ownedComment xmi:type="uml:Comment" xmi:id="_TmEkkDRmEdypGbuyt3_DaA" annotatedElement="_QpuIMDRmEdypGbuyt3_DaA">
<body>retrieve a pointer to a part of the character string</body>
</ownedComment>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_Ws2vUDRmEdypGbuyt3_DaA" name="param_0" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_LTZesByeEduyofBvg4RL2w"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_WwIs0DRmEdypGbuyt3_DaA" name="buff" direction="inout">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_5lVhgBydEduyofBvg4RL2w"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_Wzj0QDRmEdypGbuyt3_DaA" name="sizeBuff">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_LTZesByeEduyofBvg4RL2w"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="_urQpMDRmEdypGbuyt3_DaA" name="size" method="_SRhdYDRvEdypGbuyt3_DaA">
<ownedComment xmi:type="uml:Comment" xmi:id="_ydaFIDRmEdypGbuyt3_DaA" annotatedElement="_urQpMDRmEdypGbuyt3_DaA">
<body>returns the size of the allocated memory (i.e. the maximum length&#xD;
of the string)</body>
</ownedComment>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_0abygDRmEdypGbuyt3_DaA" name="param_0" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_LTZesByeEduyofBvg4RL2w"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="_AJnWcDRnEdypGbuyt3_DaA" name="length" method="_jpxioDRvEdypGbuyt3_DaA">
<ownedComment xmi:type="uml:Comment" xmi:id="_IX8CwDRnEdypGbuyt3_DaA" annotatedElement="_AJnWcDRnEdypGbuyt3_DaA">
<body>returns the length of the string</body>
</ownedComment>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_KOi_EDRnEdypGbuyt3_DaA" name="param_0" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_LTZesByeEduyofBvg4RL2w"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="_ZakdUDRnEdypGbuyt3_DaA" name="commonInit" visibility="protected" method="_4mVX8DR2EdypGbuyt3_DaA"/>
<ownedOperation xmi:type="uml:Operation" xmi:id="_d6UmIDRnEdypGbuyt3_DaA" name="concat" visibility="protected" method="_paT5sDR2EdypGbuyt3_DaA">
<ownedComment xmi:type="uml:Comment" xmi:id="_gVb9sDRnEdypGbuyt3_DaA" annotatedElement="_d6UmIDRnEdypGbuyt3_DaA">
<body>internal function that appends (concatenates) a string to the&#xD;
character table</body>
</ownedComment>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_leUjEDRnEdypGbuyt3_DaA" name="constCharP">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_5lVhgBydEduyofBvg4RL2w"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="_tamdIDRnEdypGbuyt3_DaA" name="concat" visibility="protected" method="_0KdCgDR2EdypGbuyt3_DaA">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_x-EoUDRnEdypGbuyt3_DaA" name="ch">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_5lVhgBydEduyofBvg4RL2w"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_yC_kkDRnEdypGbuyt3_DaA" name="nChar">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_LTZesByeEduyofBvg4RL2w"/>
</ownedParameter>
</ownedOperation>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_Fqa9QDUPEdy0feurbW0fyQ" name="Print">
<ownedAttribute xmi:type="uml:Property" xmi:id="_4rbvkDUUEdyDReAOQiyvOg" name="m_shown" visibility="protected" isUnique="false">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_OTe2EDUVEdyDReAOQiyvOg" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_OToAADUVEdyDReAOQiyvOg" value="1"/>
</ownedAttribute>
<ownedAttribute xmi:type="uml:Property" xmi:id="_7ahzEDUUEdyDReAOQiyvOg" name="m_initFlag" visibility="protected" isStatic="true" isUnique="false">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_7aq9ADUUEdyDReAOQiyvOg" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_7aq9ATUUEdyDReAOQiyvOg" value="1"/>
<defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_td1uoBtaEeGTrd3FEQeyRQ" name=""/>
</ownedAttribute>
<ownedAttribute xmi:type="uml:Property" xmi:id="_sKD1gDUbEdyDReAOQiyvOg" name="m_mark" visibility="protected" type="_sQ1JADO0EdyG-pUz-bb-Lg" isUnique="false" association="_sJKdoDUbEdyDReAOQiyvOg">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_m_7nEDUoEdyDReAOQiyvOg" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_m_7nETUoEdyDReAOQiyvOg" value="1"/>
</ownedAttribute>
<ownedAttribute xmi:type="uml:Property" xmi:id="_vBIdYDUoEdyDReAOQiyvOg" name="m_head" visibility="protected" isStatic="true" type="_sQ1JADO0EdyG-pUz-bb-Lg" isUnique="false" association="_vA-sYDUoEdyDReAOQiyvOg">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_05_HIDUoEdyDReAOQiyvOg" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_06I4IDUoEdyDReAOQiyvOg" value="1"/>
</ownedAttribute>
<ownedAttribute xmi:type="uml:Property" xmi:id="__XEKATUoEdyDReAOQiyvOg" name="begin" visibility="protected" type="_1vnXoDO0EdyG-pUz-bb-Lg" isUnique="false" association="__XEKADUoEdyDReAOQiyvOg">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_DPxg8DUpEdyDReAOQiyvOg" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_DPxg8TUpEdyDReAOQiyvOg" value="1"/>
</ownedAttribute>
<ownedAttribute xmi:type="uml:Property" xmi:id="_E6BcQDUpEdyDReAOQiyvOg" name="middle" visibility="protected" type="_3W43cDO0EdyG-pUz-bb-Lg" isUnique="false" association="_E53rQDUpEdyDReAOQiyvOg">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Ism9EDUpEdyDReAOQiyvOg" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_IswuEDUpEdyDReAOQiyvOg" value="1"/>
</ownedAttribute>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_cnB0MDUVEdyDReAOQiyvOg" name="getMiddle" specification="_T-5BEDUSEdy0feurbW0fyQ">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_PD--ECBbEeOMKsPXBVC0DA" name="param_0" type="_3W43cDO0EdyG-pUz-bb-Lg" direction="return">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_PEfUYCBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_PEq6kCBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body>return middle;&#xD;
</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_fS_EIDUVEdyDReAOQiyvOg" name="getMiddleRef" specification="_WR0tADUSEdy0feurbW0fyQ">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_PFCG8CBbEeOMKsPXBVC0DA" name="param_0" type="_3W43cDO0EdyG-pUz-bb-Lg" direction="return">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_PFjrYCBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_PFuqgCBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body>return middle;&#xD;
</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_iP79cDUVEdyDReAOQiyvOg" name="setMark" specification="_MvhlcDUUEdyDReAOQiyvOg">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_PGGd8CBbEeOMKsPXBVC0DA" name="mark" type="_WXH_4DO2EdyG-pUz-bb-Lg">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_PGoCYCBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_PGzBgCBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body>m_mark = mark;&#xD;
</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_ma0pgDUVEdyDReAOQiyvOg" name="operator=" specification="_X5-9oDUSEdy0feurbW0fyQ">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_PHTX0CBbEeOMKsPXBVC0DA" name="param_0" type="_Fqa9QDUPEdy0feurbW0fyQ" direction="return">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_PH0VMCBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_PH_UUCBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_PIRoMCBbEeOMKsPXBVC0DA" name="str" type="_WXH_4DO2EdyG-pUz-bb-Lg">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_PIylkCBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_PI9ksCBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body>middle = str;&#xD;
return *this;&#xD;
</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_pFvXoDUVEdyDReAOQiyvOg" name="operator=" specification="_Y7GcYDUSEdy0feurbW0fyQ">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_PJcs4CBbEeOMKsPXBVC0DA" name="param_0" type="_Fqa9QDUPEdy0feurbW0fyQ" direction="return">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_PJ9DMCBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_PKICUCBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_PKaWMCBbEeOMKsPXBVC0DA" name="ccp">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_5lVhgBydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_PK7TkCBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_PLGSsCBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body>middle = ccp;&#xD;
return *this;&#xD;
</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_trmIcDUVEdyDReAOQiyvOg" name="operator&lt;&lt;" specification="_a43woDUSEdy0feurbW0fyQ">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_PLrhgCBbEeOMKsPXBVC0DA" name="ret" type="_Fqa9QDUPEdy0feurbW0fyQ" direction="return">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_PMSlgCBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_PMdkoCBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_PMwfkCBbEeOMKsPXBVC0DA" name="str" type="_WXH_4DO2EdyG-pUz-bb-Lg">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_PNRc8CBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_PNdDICBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body>middle &lt;&lt; str;&#xD;
return *this;&#xD;
</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_2QapMDUVEdyDReAOQiyvOg" name="operator&lt;&lt;" specification="_bfnnkDUSEdy0feurbW0fyQ">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_PN8yYCBbEeOMKsPXBVC0DA" name="ret" type="_Fqa9QDUPEdy0feurbW0fyQ" direction="return">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_POdvwCBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_POpV8CBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_PO7p0CBbEeOMKsPXBVC0DA" name="ccp">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_5lVhgBydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_PPcnMCBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_PPnmUCBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body>middle &lt;&lt; ccp;&#xD;
return *this;&#xD;
</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_ZbDgEDUYEdyDReAOQiyvOg" name="Print" specification="_ZgB1wDUPEdy0feurbW0fyQ">
<language>C/C++</language>
<body>&#xD;
</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_doUxwDUYEdyDReAOQiyvOg" name="setHead" specification="_BdhNEDUREdy0feurbW0fyQ">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_PQSUsCBbEeOMKsPXBVC0DA" name="ccp">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_5lVhgBydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_PQzSECBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_PQ-RMCBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body>m_initFlag = 1;&#xD;
m_head = ccp;&#xD;
</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_hSR7ADUYEdyDReAOQiyvOg" name="getHead" specification="_GLk3oDUREdy0feurbW0fyQ">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_PRkHECBbEeOMKsPXBVC0DA" name="param_0" type="_sQ1JADO0EdyG-pUz-bb-Lg" direction="return">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_PSFEcCBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_PSQDkCBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body>return m_head;&#xD;
</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_mhtNQDUYEdyDReAOQiyvOg" name="printErr" specification="_OQgXYDUREdy0feurbW0fyQ">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_PSoeECBbEeOMKsPXBVC0DA" name="ccp">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_5lVhgBydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_PTKpkCBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_PTVosCBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body>BString500 bstr;&#xD;
bstr &lt;&lt; OS_AL::ProcessingResources::Thread::getName () &lt;&lt; &quot; &quot;;&#xD;
bstr &lt;&lt; OS_AL::Time::TimeVal::current ().ticks () &lt;&lt; &quot; &quot;;&#xD;
&#xD;
if (m_initFlag) {&#xD;
bstr &lt;&lt; m_head;&#xD;
}&#xD;
bstr &lt;&lt; ErrMark &lt;&lt; ccp;&#xD;
if (errno)&#xD;
bstr &lt;&lt; &quot; - error &quot; &lt;&lt; errno&#xD;
&lt;&lt; &quot; (&quot; &lt;&lt; strerror (errno) &lt;&lt; &quot;)&quot;;&#xD;
cout &lt;&lt; bstr.data () &lt;&lt; endl;&#xD;
errno = 0;&#xD;
</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_qOoyADUYEdyDReAOQiyvOg" name="printErr" specification="_QP6qYDUREdy0feurbW0fyQ">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_PUAXECBbEeOMKsPXBVC0DA" name="file">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_5lVhgBydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_PUhUcCBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_PUsTkCBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_PVMC0CBbEeOMKsPXBVC0DA" name="line">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_PVsZICBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_PV3YQCBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_PWCXYCBbEeOMKsPXBVC0DA" name="charP">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_5lVhgBydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_PWjUwCBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_PWuT4CBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body>BString500 str (file);&#xD;
str &lt;&lt; line &lt;&lt; charP;&#xD;
printErr (str.data ());&#xD;
</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_S02ysDUZEdyDReAOQiyvOg" name="print" specification="_OMqR0DUUEdyDReAOQiyvOg">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_PXTisCBbEeOMKsPXBVC0DA" name="mark">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_5lVhgBydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_PXz5ACBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_PX_fMCBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_PYenYCBbEeOMKsPXBVC0DA" name="log">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_PZAL0CBbEeOMKsPXBVC0DA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_PZLK8CBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body>BString500 prefix;&#xD;
// prefix &lt;&lt; &quot;ID: &quot; &lt;&lt; (void*) Thread::getId () &lt;&lt; &quot; &quot;;&#xD;
prefix &lt;&lt; OS_AL::ProcessingResources::Thread::getName () &lt;&lt; &quot; &quot;;&#xD;
prefix &lt;&lt; OS_AL::Time::TimeVal::current ().ticks () &lt;&lt; &quot; &quot;;&#xD;
if (m_initFlag) {&#xD;
prefix &lt;&lt; m_head;&#xD;
}&#xD;
prefix &lt;&lt; mark &lt;&lt; begin;&#xD;
&#xD;
if (log) {&#xD;
// messages with file stamp&#xD;
clog &lt;&lt; prefix.data () &lt;&lt; middle.data() &lt;&lt; endl;&#xD;
}&#xD;
else {&#xD;
cout &lt;&lt; prefix.data () &lt;&lt; middle.data() &lt;&lt; endl;&#xD;
}&#xD;
m_shown = 1;&#xD;
</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_blcekDUZEdyDReAOQiyvOg" name="clean" specification="_Pfz7wDUUEdyDReAOQiyvOg">
<language>C/C++</language>
<body>middle = &quot;&quot;;&#xD;
m_shown = 1; // allows to avoid showing empty instances&#xD;
</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_Tqni4FlLEd-9TNLvplUFDQ" name="operator&lt;&lt;" specification="_GTV_wFlLEd-9TNLvplUFDQ">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_PZhJMCBbEeOMKsPXBVC0DA" name="ret" type="_Fqa9QDUPEdy0feurbW0fyQ" direction="return">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_PaCGkCBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_PaNFsCBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_PaYE0CBbEeOMKsPXBVC0DA" name="ch">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_5lVhgBydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Pa_I0CBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_PbKH8CBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body>middle &lt;&lt; ch;
return *this;</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_0pUYkFlLEd-9TNLvplUFDQ" name="operator&lt;&lt;" specification="_VeBaMFlLEd-9TNLvplUFDQ">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_PbamoCBbEeOMKsPXBVC0DA" name="ret" type="_Fqa9QDUPEdy0feurbW0fyQ" direction="return">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Pb8LECBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_PcHKMCBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_PcSwYCBbEeOMKsPXBVC0DA" name="dummy" type="_ITWTMFlMEd-9TNLvplUFDQ">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Pc0U0CBbEeOMKsPXBVC0DA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Pc_T8CBbEeOMKsPXBVC0DA" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body>print (StdMark);
clean ();
return *this;
</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_KaqE8CZsEeGP95nTW02SMA" name="Print" specification="_6Db-4CZrEeGP95nTW02SMA">
<language>C/C++</language>
<body>if (m_shown == 0) {
print (m_mark.data ()); // print residual middle text
printErr (&quot;Instance of print destroyed, before it was shown (missing \&quot;showI\&quot;). Stored text is: &quot;);
print (&quot; &lt;&lt;&quot;);
#if StopIfNeverShown == 1
exit(1);
#endif
}</body>
</ownedBehavior>
<ownedOperation xmi:type="uml:Operation" xmi:id="_ZgB1wDUPEdy0feurbW0fyQ" name="Print" method="_ZbDgEDUYEdyDReAOQiyvOg"/>
<ownedOperation xmi:type="uml:Operation" xmi:id="_BdhNEDUREdy0feurbW0fyQ" name="setHead" isStatic="true" method="_doUxwDUYEdyDReAOQiyvOg">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_VRVV0DUREdy0feurbW0fyQ" name="ccp">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_5lVhgBydEduyofBvg4RL2w"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="_GLk3oDUREdy0feurbW0fyQ" name="getHead" isStatic="true" method="_hSR7ADUYEdyDReAOQiyvOg">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_WjSs8DUREdy0feurbW0fyQ" name="param_0" type="_sQ1JADO0EdyG-pUz-bb-Lg" direction="return">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_XkHQwDUREdy0feurbW0fyQ" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_XkRBwDUREdy0feurbW0fyQ" value="1"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="_OQgXYDUREdy0feurbW0fyQ" name="printErr" isStatic="true" method="_mhtNQDUYEdyDReAOQiyvOg">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_YfIHgDUREdy0feurbW0fyQ" name="ccp">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_5lVhgBydEduyofBvg4RL2w"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="_QP6qYDUREdy0feurbW0fyQ" name="printErr" isStatic="true" method="_qOoyADUYEdyDReAOQiyvOg">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_Y6spMDUREdy0feurbW0fyQ" name="file">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_5lVhgBydEduyofBvg4RL2w"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_Y8oi4DUREdy0feurbW0fyQ" name="line">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_Y-RhoDUREdy0feurbW0fyQ" name="charP">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_5lVhgBydEduyofBvg4RL2w"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="_T-5BEDUSEdy0feurbW0fyQ" name="getMiddle" method="_cnB0MDUVEdyDReAOQiyvOg">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_e2yXsDUSEdy0feurbW0fyQ" name="param_0" type="_3W43cDO0EdyG-pUz-bb-Lg" direction="return">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_f6TDIDUSEdy0feurbW0fyQ" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_f6TDITUSEdy0feurbW0fyQ" value="1"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="_WR0tADUSEdy0feurbW0fyQ" name="getMiddleRef" method="_fS_EIDUVEdyDReAOQiyvOg">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_gUN_ADUSEdy0feurbW0fyQ" name="param_0" type="_3W43cDO0EdyG-pUz-bb-Lg" direction="return">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_haQaADUSEdy0feurbW0fyQ" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_haaLADUSEdy0feurbW0fyQ" value="1"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="_X5-9oDUSEdy0feurbW0fyQ" name="operator=" method="_ma0pgDUVEdyDReAOQiyvOg">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_iOHf4DUSEdy0feurbW0fyQ" name="param_0" type="_Fqa9QDUPEdy0feurbW0fyQ" direction="return">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_kCMsoDUSEdy0feurbW0fyQ" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_kCWdoDUSEdy0feurbW0fyQ" value="1"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_iUE98DUSEdy0feurbW0fyQ" name="str" type="_WXH_4DO2EdyG-pUz-bb-Lg">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_VCzfsDUTEdyDReAOQiyvOg" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_VDGaoDUTEdyDReAOQiyvOg" value="1"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="_Y7GcYDUSEdy0feurbW0fyQ" name="operator=" method="_pFvXoDUVEdyDReAOQiyvOg">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_ylPfUDUSEdyDReAOQiyvOg" name="param_0" type="_Fqa9QDUPEdy0feurbW0fyQ" direction="return">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_zk3wUDUSEdyDReAOQiyvOg" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_zlBhUDUSEdyDReAOQiyvOg" value="1"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_ypj-oDUSEdyDReAOQiyvOg" name="ccp">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_5lVhgBydEduyofBvg4RL2w"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="_a43woDUSEdy0feurbW0fyQ" name="operator&lt;&lt;" method="_trmIcDUVEdyDReAOQiyvOg">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_z9dPcDUSEdyDReAOQiyvOg" name="ret" type="_Fqa9QDUPEdy0feurbW0fyQ" direction="return">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_1J50cDUSEdyDReAOQiyvOg" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_1KDlcDUSEdyDReAOQiyvOg" value="1"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_0BVC0DUSEdyDReAOQiyvOg" name="str" type="_WXH_4DO2EdyG-pUz-bb-Lg"/>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="_bfnnkDUSEdy0feurbW0fyQ" name="operator&lt;&lt;" method="_2QapMDUVEdyDReAOQiyvOg">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_1f888DUSEdyDReAOQiyvOg" name="ret" type="_Fqa9QDUPEdy0feurbW0fyQ" direction="return">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_5XBVIDUSEdyDReAOQiyvOg" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_5XLGIDUSEdyDReAOQiyvOg" value="1"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_3iCwgDUSEdyDReAOQiyvOg" name="ccp">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_5lVhgBydEduyofBvg4RL2w"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="_MvhlcDUUEdyDReAOQiyvOg" name="setMark" method="_iP79cDUVEdyDReAOQiyvOg">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_Q3b2ADUUEdyDReAOQiyvOg" name="mark" type="_WXH_4DO2EdyG-pUz-bb-Lg">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_ZNgJEDUUEdyDReAOQiyvOg" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ZNgJETUUEdyDReAOQiyvOg" value="1"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="_OMqR0DUUEdyDReAOQiyvOg" name="print" method="_S02ysDUZEdyDReAOQiyvOg">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_VLaMoDUUEdyDReAOQiyvOg" name="mark">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_5lVhgBydEduyofBvg4RL2w"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_dCxxgDUUEdyDReAOQiyvOg" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_dC7igDUUEdyDReAOQiyvOg" value="1"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_VQVI4DUUEdyDReAOQiyvOg" name="log">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_jiiDMDUUEdyDReAOQiyvOg"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_jirNIDUUEdyDReAOQiyvOg" value="1"/>
<defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_KBAQoFe3EeOtBoURfZexXw"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="_Pfz7wDUUEdyDReAOQiyvOg" name="clean" method="_blcekDUZEdyDReAOQiyvOg"/>
<ownedOperation xmi:type="uml:Operation" xmi:id="_GTV_wFlLEd-9TNLvplUFDQ" name="operator&lt;&lt;" method="_Tqni4FlLEd-9TNLvplUFDQ">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_GTWm0FlLEd-9TNLvplUFDQ" name="ret" type="_Fqa9QDUPEdy0feurbW0fyQ" direction="return">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_GTWm0llLEd-9TNLvplUFDQ" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_GTWm0VlLEd-9TNLvplUFDQ" value="1"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_GTWm1FlLEd-9TNLvplUFDQ" name="ch">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_5lVhgBydEduyofBvg4RL2w"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="_VeBaMFlLEd-9TNLvplUFDQ" name="operator&lt;&lt;" method="_0pUYkFlLEd-9TNLvplUFDQ">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_VeCBQFlLEd-9TNLvplUFDQ" name="ret" type="_Fqa9QDUPEdy0feurbW0fyQ" direction="return">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_VeCBQllLEd-9TNLvplUFDQ" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_VeCBQVlLEd-9TNLvplUFDQ" value="1"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="_VeCBRFlLEd-9TNLvplUFDQ" name="dummy" type="_ITWTMFlMEd-9TNLvplUFDQ"/>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="_6Db-4CZrEeGP95nTW02SMA" name="Print" method="_KaqE8CZsEeGP95nTW02SMA"/>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_sJKdoDUbEdyDReAOQiyvOg" name="Association_Print_BString50" memberEnd="_sKD1gDUbEdyDReAOQiyvOg _sKf6YDUbEdyDReAOQiyvOg">
<ownedEnd xmi:type="uml:Property" xmi:id="_sKf6YDUbEdyDReAOQiyvOg" name="print" type="_Fqa9QDUPEdy0feurbW0fyQ" isUnique="false" association="_sJKdoDUbEdyDReAOQiyvOg">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sK8mUTUbEdyDReAOQiyvOg"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sK8mUDUbEdyDReAOQiyvOg" value="*"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_vA-sYDUoEdyDReAOQiyvOg" name="Association_Print_BString50" memberEnd="_vBIdYDUoEdyDReAOQiyvOg _vBbYUzUoEdyDReAOQiyvOg">
<ownedEnd xmi:type="uml:Property" xmi:id="_vBbYUzUoEdyDReAOQiyvOg" name="print" type="_Fqa9QDUPEdy0feurbW0fyQ" isUnique="false" association="_vA-sYDUoEdyDReAOQiyvOg">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_vBu6UjUoEdyDReAOQiyvOg"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_vBu6UTUoEdyDReAOQiyvOg" value="*"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="__XEKADUoEdyDReAOQiyvOg" name="Association_Print_BString500" memberEnd="__XEKATUoEdyDReAOQiyvOg __XXE8zUoEdyDReAOQiyvOg">
<ownedEnd xmi:type="uml:Property" xmi:id="__XXE8zUoEdyDReAOQiyvOg" name="print" type="_Fqa9QDUPEdy0feurbW0fyQ" isUnique="false" association="__XEKADUoEdyDReAOQiyvOg">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="__Xqm8jUoEdyDReAOQiyvOg"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="__Xqm8TUoEdyDReAOQiyvOg" value="*"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_E53rQDUpEdyDReAOQiyvOg" name="Association_Print_BString2000" memberEnd="_E6BcQDUpEdyDReAOQiyvOg _E6UXMzUpEdyDReAOQiyvOg">
<ownedEnd xmi:type="uml:Property" xmi:id="_E6UXMzUpEdyDReAOQiyvOg" name="print" type="_Fqa9QDUPEdy0feurbW0fyQ" isUnique="false" association="_E53rQDUpEdyDReAOQiyvOg">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_E6nSITUpEdyDReAOQiyvOg"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_E6nSIDUpEdyDReAOQiyvOg" value="*"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Dependency" xmi:id="_dQB60DVKEdyF2KWMAqLQBg" name="FromPrinttoBString50" client="_Fqa9QDUPEdy0feurbW0fyQ" supplier="_sQ1JADO0EdyG-pUz-bb-Lg"/>
<packagedElement xmi:type="uml:Dependency" xmi:id="_d01RADVKEdyF2KWMAqLQBg" name="FromPrinttoBString500" client="_Fqa9QDUPEdy0feurbW0fyQ" supplier="_1vnXoDO0EdyG-pUz-bb-Lg"/>
<packagedElement xmi:type="uml:Dependency" xmi:id="_eJ_osDVKEdyF2KWMAqLQBg" name="FromPrinttoBString2000" client="_Fqa9QDUPEdy0feurbW0fyQ" supplier="_3W43cDO0EdyG-pUz-bb-Lg"/>
<packagedElement xmi:type="uml:Dependency" xmi:id="_Ie1FEFbIEd-9TNLvplUFDQ" name="FromBStringtoTrace" client="_WXH_4DO2EdyG-pUz-bb-Lg" supplier="_1DM54DxBEdyfAeav5abbAw"/>
<packagedElement xmi:type="uml:Usage" xmi:id="_WP12gFbLEd-9TNLvplUFDQ" name="FromBStringtoThread" client="_WXH_4DO2EdyG-pUz-bb-Lg" supplier="_-HeCsDj_Edy0Rd6V_tf1-Q"/>
<packagedElement xmi:type="uml:Usage" xmi:id="_aZ7RUFbLEd-9TNLvplUFDQ" name="FromBStringtoTimeVal" client="_WXH_4DO2EdyG-pUz-bb-Lg" supplier="_FuKEEDj8Edy0Rd6V_tf1-Q"/>
<packagedElement xmi:type="uml:Enumeration" xmi:id="_ITWTMFlMEd-9TNLvplUFDQ" name="Show">
<ownedComment xmi:type="uml:Comment" xmi:id="_VE56IFlMEd-9TNLvplUFDQ" annotatedElement="_ITWTMFlMEd-9TNLvplUFDQ">
<body>Predefined types and variables to provoke output). The (dummy) types are
used to overload the &lt;&lt; operator and statically choose the associated
method if an instance (declared below) is passed.
Show: output the whole line immediately and reset the output string</body>
</ownedComment>
</packagedElement>
<packagedElement xmi:type="uml:Dependency" xmi:id="_E9NSEPVxEd-tirPvq3IDdA" name="FromBStringToProDesc" client="_WXH_4DO2EdyG-pUz-bb-Lg" supplier="_oSgIME_BEdy2tpS719xBwQ"/>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_0TXx4DUOEdy0feurbW0fyQ" name="BaseTypes"/>
<packagedElement xmi:type="uml:Package" xmi:id="_nPvEoNqEEeKrRY-H1kHnNA" name="pthread">
<packagedElement xmi:type="uml:Class" xmi:id="_4lsq4NqEEeKrRY-H1kHnNA" name="pthread"/>
</packagedElement>
<profileApplication xmi:type="uml:ProfileApplication" xmi:id="_ROTQYi-OEdySSa8YESkO2w">
<eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_ROTQYy-OEdySSa8YESkO2w" source="http://www.eclipse.org/uml2/2.0.0/UML">
<references xmi:type="ecore:EPackage" href="http://www.eclipse.org/uml2/5.0.0/UML/Profile/Standard#/"/>
</eAnnotations>
<appliedProfile xmi:type="uml:Profile" href="pathmap://UML_PROFILES/Standard.profile.uml#_0"/>
</profileApplication>
<profileApplication xmi:type="uml:ProfileApplication" xmi:id="_8kttUDRbEdyDwaY3iUxzzA">
<eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_8k23QDRbEdyDwaY3iUxzzA" source="http://www.eclipse.org/uml2/2.0.0/UML">
<references xmi:type="ecore:EPackage" href="http://www.eclipse.org/papyrus/C_Cpp/1#/"/>
</eAnnotations>
<appliedProfile xmi:type="uml:Profile" href="pathmap://PapyrusC_Cpp_PROFILES/C_Cpp.profile.uml#_j9REUByGEduN1bTiWJ0lyw"/>
</profileApplication>
<profileApplication xmi:type="uml:ProfileApplication" xmi:id="_TRZrgCgpEeC5Ga5kAgjl0g">
<eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Tb2A8CgpEeC5Ga5kAgjl0g" source="http://www.eclipse.org/uml2/2.0.0/UML">
<references xmi:type="ecore:EPackage" href="http://www.eclipse.org/papyrus/FCM/1#/"/>
</eAnnotations>
<appliedProfile xmi:type="uml:Profile" href="pathmap://FCM_PROFILES/FCM.profile.uml#_5mvT0MtjEd2H_o0jIC6qDQ"/>
</profileApplication>
</uml:Model>
<standard:Create xmi:id="_NafZoDRGEdyG-pUz-bb-Lg" base_BehavioralFeature="_J60NwDRGEdyG-pUz-bb-Lg"/>
<standard:Create xmi:id="_oOiq8DRGEdyG-pUz-bb-Lg" base_BehavioralFeature="_X1eKwDRGEdyG-pUz-bb-Lg"/>
<standard:Create xmi:id="_G5ptYDRHEdyG-pUz-bb-Lg" base_BehavioralFeature="_E8CKIDRHEdyG-pUz-bb-Lg"/>
<C_Cpp:Ptr xmi:id="_SJ2X0DReEdyDwaY3iUxzzA" base_parameter="_ajL4wDRHEdyG-pUz-bb-Lg"/>
<C_Cpp:Const xmi:id="_Zx35IDReEdyDwaY3iUxzzA" base_parameter="_ajL4wDRHEdyG-pUz-bb-Lg"/>
<C_Cpp:Const xmi:id="_kIr78DReEdyDwaY3iUxzzA" base_parameter="_vKHggDRHEdyG-pUz-bb-Lg"/>
<C_Cpp:Ptr xmi:id="_lzYjMDReEdyDwaY3iUxzzA" base_parameter="_vKHggDRHEdyG-pUz-bb-Lg"/>
<C_Cpp:Const xmi:id="_tsGL4DReEdyDwaY3iUxzzA" base_parameter="_2Do9EDRHEdyG-pUz-bb-Lg"/>
<C_Cpp:Ref xmi:id="_uNnkkDReEdyDwaY3iUxzzA" base_parameter="_2Do9EDRHEdyG-pUz-bb-Lg"/>
<C_Cpp:Ptr xmi:id="_yMcKkDReEdyDwaY3iUxzzA" base_parameter="_DEe9MDRIEdyG-pUz-bb-Lg"/>
<C_Cpp:Const xmi:id="_01kI8DReEdyDwaY3iUxzzA" base_parameter="_RcNQsDRIEdyG-pUz-bb-Lg"/>
<C_Cpp:Ptr xmi:id="_01kI8TReEdyDwaY3iUxzzA" base_parameter="_RcNQsDRIEdyG-pUz-bb-Lg"/>
<C_Cpp:Const xmi:id="__JQmUDReEdyDwaY3iUxzzA" base_parameter="_nIuAcDRIEdyG-pUz-bb-Lg"/>
<C_Cpp:Ref xmi:id="__JQmUTReEdyDwaY3iUxzzA" base_parameter="_nIuAcDRIEdyG-pUz-bb-Lg"/>
<C_Cpp:Ptr xmi:id="_rTwmEDRfEdyDwaY3iUxzzA" base_parameter="_qg5nwDRJEdyG-pUz-bb-Lg"/>
<C_Cpp:Ref xmi:id="_3ZclgDRfEdyDwaY3iUxzzA" base_parameter="_xw1XMDRfEdyDwaY3iUxzzA"/>
<C_Cpp:Const xmi:id="_7VlD4DRfEdyDwaY3iUxzzA" base_parameter="_2u7q4DRJEdyG-pUz-bb-Lg"/>
<C_Cpp:Ptr xmi:id="_7VlD4TRfEdyDwaY3iUxzzA" base_parameter="_2u7q4DRJEdyG-pUz-bb-Lg"/>
<C_Cpp:Ref xmi:id="_89vUgDRfEdyDwaY3iUxzzA" base_parameter="_XVuW4DRKEdyG-pUz-bb-Lg"/>
<C_Cpp:Inline xmi:id="__3HVYDRfEdyDwaY3iUxzzA" base_operation="_nyaBMDRJEdyG-pUz-bb-Lg"/>
<C_Cpp:Inline xmi:id="_Edj8EDRgEdyDwaY3iUxzzA" base_operation="_uTyqkDRJEdyG-pUz-bb-Lg"/>
<C_Cpp:Ref xmi:id="_LxeOkDRgEdyDwaY3iUxzzA" base_parameter="_aL0aQDRKEdyG-pUz-bb-Lg"/>
<C_Cpp:Inline xmi:id="_Mowb4DRgEdyDwaY3iUxzzA" base_operation="_xfysgDRJEdyG-pUz-bb-Lg"/>
<C_Cpp:Ref xmi:id="_RhiIsDRgEdyDwaY3iUxzzA" base_parameter="_ctWi4DRKEdyG-pUz-bb-Lg"/>
<C_Cpp:Inline xmi:id="_SlL-EDRgEdyDwaY3iUxzzA" base_operation="_xsnAgDRJEdyG-pUz-bb-Lg"/>
<C_Cpp:Ref xmi:id="_ZGuYcDRgEdyDwaY3iUxzzA" base_parameter="_fMgF4DRKEdyG-pUz-bb-Lg"/>
<C_Cpp:Ref xmi:id="_qDHBEDRgEdyDwaY3iUxzzA" base_parameter="_g3MtIDRKEdyG-pUz-bb-Lg"/>
<C_Cpp:Ref xmi:id="_qqS84DRgEdyDwaY3iUxzzA" base_parameter="_ienW4DRKEdyG-pUz-bb-Lg"/>
<C_Cpp:Ref xmi:id="_sKj1wDRgEdyDwaY3iUxzzA" base_parameter="_kFSZwDRKEdyG-pUz-bb-Lg"/>
<C_Cpp:Ref xmi:id="_s5f_YDRgEdyDwaY3iUxzzA" base_parameter="_mGLTcDRKEdyG-pUz-bb-Lg"/>
<C_Cpp:Ref xmi:id="_tkakoDRgEdyDwaY3iUxzzA" base_parameter="_nv1Y4DRKEdyG-pUz-bb-Lg"/>
<C_Cpp:Inline xmi:id="_wIoN0DRgEdyDwaY3iUxzzA" base_operation="_x1P_IDRJEdyG-pUz-bb-Lg"/>
<C_Cpp:Inline xmi:id="_w4T-UDRgEdyDwaY3iUxzzA" base_operation="_x8tSADRJEdyG-pUz-bb-Lg"/>
<C_Cpp:Inline xmi:id="_yAu-8DRgEdyDwaY3iUxzzA" base_operation="_yJ0g8DRJEdyG-pUz-bb-Lg"/>
<C_Cpp:Inline xmi:id="_yyqLIDRgEdyDwaY3iUxzzA" base_operation="_yQhl4DRJEdyG-pUz-bb-Lg"/>
<C_Cpp:Inline xmi:id="_zc1JgDRgEdyDwaY3iUxzzA" base_operation="_yXOq0DRJEdyG-pUz-bb-Lg"/>
<C_Cpp:Inline xmi:id="_0RuxMDRgEdyDwaY3iUxzzA" base_operation="_yjTX8DRJEdyG-pUz-bb-Lg"/>
<C_Cpp:Const xmi:id="_50YhcDRgEdyDwaY3iUxzzA" base_parameter="_5al_4DRJEdyG-pUz-bb-Lg"/>
<C_Cpp:Ref xmi:id="_50YhcTRgEdyDwaY3iUxzzA" base_parameter="_5al_4DRJEdyG-pUz-bb-Lg"/>
<C_Cpp:Const xmi:id="_Gsk74DRhEdyDwaY3iUxzzA" base_parameter="__jzkYDRKEdyG-pUz-bb-Lg"/>
<C_Cpp:Ptr xmi:id="_Gsk74TRhEdyDwaY3iUxzzA" base_parameter="__jzkYDRKEdyG-pUz-bb-Lg"/>
<C_Cpp:Ref xmi:id="_OnOeQDRhEdyDwaY3iUxzzA" base_parameter="_t_JBgDRPEdy1p4IpsoZYqA"/>
<C_Cpp:Ref xmi:id="_QACrUDRhEdyDwaY3iUxzzA" base_parameter="_1yC9IDRPEdy1p4IpsoZYqA"/>
<C_Cpp:Const xmi:id="_RpGT0DRhEdyDwaY3iUxzzA" base_parameter="_132qMDRPEdy1p4IpsoZYqA"/>
<C_Cpp:Ref xmi:id="_RpGT0TRhEdyDwaY3iUxzzA" base_parameter="_132qMDRPEdy1p4IpsoZYqA"/>
<C_Cpp:Ref xmi:id="_ekucwDRhEdyDwaY3iUxzzA" base_parameter="_BTXrQDRQEdy1p4IpsoZYqA"/>
<C_Cpp:Ref xmi:id="_gJA6ADRhEdyDwaY3iUxzzA" base_parameter="_BWpowDRQEdy1p4IpsoZYqA"/>
<C_Cpp:Ref xmi:id="_hf4mUDRhEdyDwaY3iUxzzA" base_parameter="_BaOhMDRQEdy1p4IpsoZYqA"/>
<C_Cpp:Ref xmi:id="_oEaDQDRhEdyDwaY3iUxzzA" base_parameter="_giLzgDRXEdy1p4IpsoZYqA"/>
<C_Cpp:Ref xmi:id="_o1uygDRhEdyDwaY3iUxzzA" base_parameter="_zmS9oDRXEdy1p4IpsoZYqA"/>
<C_Cpp:Ref xmi:id="_pjnzQDRhEdyDwaY3iUxzzA" base_parameter="_kTb3kDRXEdy1p4IpsoZYqA"/>
<C_Cpp:Ref xmi:id="_qMwP0DRhEdyDwaY3iUxzzA" base_parameter="_z-lh0DRXEdy1p4IpsoZYqA"/>
<C_Cpp:Ref xmi:id="_q0iokDRhEdyDwaY3iUxzzA" base_parameter="_m0EoUDRXEdy1p4IpsoZYqA"/>
<C_Cpp:Ref xmi:id="_rdXjIDRhEdyDwaY3iUxzzA" base_parameter="_0RNi4DRXEdy1p4IpsoZYqA"/>
<C_Cpp:Ref xmi:id="_sNW1oDRhEdyDwaY3iUxzzA" base_parameter="_orbLgDRXEdy1p4IpsoZYqA"/>
<C_Cpp:Ref xmi:id="_s8JOQDRhEdyDwaY3iUxzzA" base_parameter="_0ku70DRXEdy1p4IpsoZYqA"/>
<C_Cpp:Ref xmi:id="_toQGUDRhEdyDwaY3iUxzzA" base_parameter="_qoJW4DRXEdy1p4IpsoZYqA"/>
<C_Cpp:Ref xmi:id="_uSk1sDRhEdyDwaY3iUxzzA" base_parameter="_02A5EDRXEdy1p4IpsoZYqA"/>
<C_Cpp:Ref xmi:id="_vFPBsDRhEdyDwaY3iUxzzA" base_parameter="_tL6UIDRXEdy1p4IpsoZYqA"/>
<C_Cpp:Ref xmi:id="_vteGYDRhEdyDwaY3iUxzzA" base_parameter="_AArasDRYEdy1p4IpsoZYqA"/>
<C_Cpp:Ref xmi:id="_wT6bUDRhEdyDwaY3iUxzzA" base_parameter="_vCh3gDRXEdy1p4IpsoZYqA"/>
<C_Cpp:Ref xmi:id="_xABTYDRhEdyDwaY3iUxzzA" base_parameter="_AR0OADRYEdy1p4IpsoZYqA"/>
<C_Cpp:Const xmi:id="_INGeADRiEdyDwaY3iUxzzA" base_operation="_ZkKxIDRaEdy1p4IpsoZYqA"/>
<C_Cpp:Inline xmi:id="_INGeATRiEdyDwaY3iUxzzA" base_operation="_ZkKxIDRaEdy1p4IpsoZYqA"/>
<C_Cpp:Const xmi:id="_ifB5sDRiEdyDwaY3iUxzzA" base_operation="_O59-oDRiEdyDwaY3iUxzzA"/>
<C_Cpp:Inline xmi:id="_ifB5sTRiEdyDwaY3iUxzzA" base_operation="_O59-oDRiEdyDwaY3iUxzzA"/>
<C_Cpp:Const xmi:id="_8igCoDRiEdyDwaY3iUxzzA" base_parameter="_vozzYDRiEdyDwaY3iUxzzA"/>
<C_Cpp:Inline xmi:id="_91pskDRiEdyDwaY3iUxzzA" base_operation="_tMpS8DRiEdyDwaY3iUxzzA"/>
<C_Cpp:Const xmi:id="_Qs9w0DRjEdyDwaY3iUxzzA" base_operation="_FX25wDRjEdyDwaY3iUxzzA"/>
<C_Cpp:Inline xmi:id="_Qs9w0TRjEdyDwaY3iUxzzA" base_operation="_FX25wDRjEdyDwaY3iUxzzA"/>
<C_Cpp:Const xmi:id="_XxyB8DRkEdypGbuyt3_DaA" base_operation="_hifjgDRjEdyDwaY3iUxzzA"/>
<C_Cpp:Inline xmi:id="_XxyB8TRkEdypGbuyt3_DaA" base_operation="_hifjgDRjEdyDwaY3iUxzzA"/>
<C_Cpp:Const xmi:id="_YqaTEDRkEdypGbuyt3_DaA" base_operation="_hujpkDRjEdyDwaY3iUxzzA"/>
<C_Cpp:Inline xmi:id="_YqaTETRkEdypGbuyt3_DaA" base_operation="_hujpkDRjEdyDwaY3iUxzzA"/>
<C_Cpp:Const xmi:id="_ZaivgDRkEdypGbuyt3_DaA" base_operation="_h3DeQDRjEdyDwaY3iUxzzA"/>
<C_Cpp:Inline xmi:id="_ZaivgTRkEdypGbuyt3_DaA" base_operation="_h3DeQDRjEdyDwaY3iUxzzA"/>
<C_Cpp:Const xmi:id="_aOGTYDRkEdypGbuyt3_DaA" base_operation="_iQYkQDRjEdyDwaY3iUxzzA"/>
<C_Cpp:Inline xmi:id="_aOGTYTRkEdypGbuyt3_DaA" base_operation="_iQYkQDRjEdyDwaY3iUxzzA"/>
<C_Cpp:Const xmi:id="_d77QADRkEdypGbuyt3_DaA" base_parameter="_oiusEDRjEdyDwaY3iUxzzA"/>
<C_Cpp:Ptr xmi:id="_kpiXgDRkEdypGbuyt3_DaA" base_parameter="_oiusEDRjEdyDwaY3iUxzzA"/>
<C_Cpp:Const xmi:id="_fl4QYDRkEdypGbuyt3_DaA" base_parameter="_pLG6sDRjEdyDwaY3iUxzzA"/>
<C_Cpp:Ptr xmi:id="_l2ujYDRkEdypGbuyt3_DaA" base_parameter="_pLG6sDRjEdyDwaY3iUxzzA"/>
<C_Cpp:Const xmi:id="_ezNdUDRkEdypGbuyt3_DaA" base_parameter="_o4x0kDRjEdyDwaY3iUxzzA"/>
<C_Cpp:Ref xmi:id="_m8wXUDRkEdypGbuyt3_DaA" base_parameter="_o4x0kDRjEdyDwaY3iUxzzA"/>
<C_Cpp:Const xmi:id="_gX8mgDRkEdypGbuyt3_DaA" base_parameter="_pg3IQDRjEdyDwaY3iUxzzA"/>
<C_Cpp:Ref xmi:id="_oQDyQDRkEdypGbuyt3_DaA" base_parameter="_pg3IQDRjEdyDwaY3iUxzzA"/>
<C_Cpp:Const xmi:id="_ovwwkDRlEdypGbuyt3_DaA" base_operation="_hQh-4DRlEdypGbuyt3_DaA"/>
<C_Cpp:Inline xmi:id="_ovwwkTRlEdypGbuyt3_DaA" base_operation="_hQh-4DRlEdypGbuyt3_DaA"/>
<C_Cpp:Const xmi:id="_qoAroDRlEdypGbuyt3_DaA" base_parameter="_jgxjMDRlEdypGbuyt3_DaA"/>
<C_Cpp:Ptr xmi:id="_qoAroTRlEdypGbuyt3_DaA" base_parameter="_jgxjMDRlEdypGbuyt3_DaA"/>
<C_Cpp:Const xmi:id="_8sN38DRlEdypGbuyt3_DaA" base_operation="_w9e_8DRlEdypGbuyt3_DaA"/>
<C_Cpp:Inline xmi:id="_8sN38TRlEdypGbuyt3_DaA" base_operation="_w9e_8DRlEdypGbuyt3_DaA"/>
<C_Cpp:Const xmi:id="_-03mgDRlEdypGbuyt3_DaA" base_parameter="_yuSPMDRlEdypGbuyt3_DaA"/>
<C_Cpp:Ptr xmi:id="_-03mgTRlEdypGbuyt3_DaA" base_parameter="_yuSPMDRlEdypGbuyt3_DaA"/>
<C_Cpp:Inline xmi:id="_MWyTYDRmEdypGbuyt3_DaA" base_operation="_BSrFsDRmEdypGbuyt3_DaA"/>
<C_Cpp:Ptr xmi:id="_Nkk8MDRmEdypGbuyt3_DaA" base_parameter="_GkyfkDRmEdypGbuyt3_DaA"/>
<C_Cpp:Ptr xmi:id="_kGSOkDRmEdypGbuyt3_DaA" base_parameter="_WwIs0DRmEdypGbuyt3_DaA"/>
<C_Cpp:Const xmi:id="_5sjMYDRmEdypGbuyt3_DaA" base_operation="_urQpMDRmEdypGbuyt3_DaA"/>
<C_Cpp:Inline xmi:id="_5sjMYTRmEdypGbuyt3_DaA" base_operation="_urQpMDRmEdypGbuyt3_DaA"/>
<C_Cpp:Const xmi:id="_PABxEDRnEdypGbuyt3_DaA" base_operation="_AJnWcDRnEdypGbuyt3_DaA"/>
<C_Cpp:Inline xmi:id="_PABxETRnEdypGbuyt3_DaA" base_operation="_AJnWcDRnEdypGbuyt3_DaA"/>
<C_Cpp:Const xmi:id="_rnaoQDRnEdypGbuyt3_DaA" base_parameter="_leUjEDRnEdypGbuyt3_DaA"/>
<C_Cpp:Ptr xmi:id="_rnaoQTRnEdypGbuyt3_DaA" base_parameter="_leUjEDRnEdypGbuyt3_DaA"/>
<C_Cpp:Const xmi:id="_8nrEQDRnEdypGbuyt3_DaA" base_parameter="_x-EoUDRnEdypGbuyt3_DaA"/>
<C_Cpp:Ptr xmi:id="_JCg0UDRoEdypGbuyt3_DaA" base_property="_A2bjsDRoEdypGbuyt3_DaA"/>
<C_Cpp:Ptr xmi:id="_J6sZgDRoEdypGbuyt3_DaA" base_property="_FafkwDRoEdypGbuyt3_DaA"/>
<C_Cpp:Ptr xmi:id="_YxG0IDRoEdypGbuyt3_DaA" base_property="_WG7s4DRoEdypGbuyt3_DaA"/>
<C_Cpp:Include xmi:id="_Vh1d8DR3EdypGbuyt3_DaA" body="#include &lt;stdio.h>&#x9;&#x9;// for sprintf&#xD;&#xA;#include &lt;stdlib.h>&#x9;&#x9;// for strtod" header="#include &lt;string.h>&#xD;&#xA;&#xD;&#xA;#define StdSeparators &quot; `~!@#$%^&amp;*()-=+[]{}\\|;:'\&quot;/,&lt;.>?\a\b\f\n\r\t\v&quot;&#xD;&#xA;" base_class="_WXH_4DO2EdyG-pUz-bb-Lg"/>
<standard:Create xmi:id="_quTe4DR7EdypGbuyt3_DaA" base_BehavioralFeature="_m2Mk4DR7EdypGbuyt3_DaA"/>
<C_Cpp:Inline xmi:id="_quTe4TR7EdypGbuyt3_DaA" base_operation="_m2Mk4DR7EdypGbuyt3_DaA"/>
<standard:Create xmi:id="_1FHhsDR7EdypGbuyt3_DaA" base_BehavioralFeature="_rwKkgDR7EdypGbuyt3_DaA"/>
<C_Cpp:Inline xmi:id="_1FHhsTR7EdypGbuyt3_DaA" base_operation="_rwKkgDR7EdypGbuyt3_DaA"/>
<standard:Create xmi:id="_RoyWgDR8EdypGbuyt3_DaA" base_BehavioralFeature="_N8S2oDR8EdypGbuyt3_DaA"/>
<C_Cpp:Inline xmi:id="_RoyWgTR8EdypGbuyt3_DaA" base_operation="_N8S2oDR8EdypGbuyt3_DaA"/>
<C_Cpp:Const xmi:id="_sl7SYDR8Edy0feurbW0fyQ" base_parameter="_ToyfYDR8EdypGbuyt3_DaA"/>
<C_Cpp:Ref xmi:id="_uKW5kDR8Edy0feurbW0fyQ" base_parameter="_ToyfYDR8EdypGbuyt3_DaA"/>
<C_Cpp:Inline xmi:id="_9yZlcDR8Edy0feurbW0fyQ" base_operation="_63iW0DR8Edy0feurbW0fyQ"/>
<standard:Create xmi:id="_9yivYDR8Edy0feurbW0fyQ" base_BehavioralFeature="_63iW0DR8Edy0feurbW0fyQ"/>
<C_Cpp:Const xmi:id="_1FylMDR9Edy0feurbW0fyQ" base_parameter="_AvfosDR9Edy0feurbW0fyQ"/>
<C_Cpp:Ref xmi:id="_1FylMTR9Edy0feurbW0fyQ" base_parameter="_AvfosDR9Edy0feurbW0fyQ"/>
<C_Cpp:Const xmi:id="_b-oeEDR-Edy0feurbW0fyQ" base_parameter="_VQkqoDR-Edy0feurbW0fyQ"/>
<C_Cpp:Ptr xmi:id="_b-oeETR-Edy0feurbW0fyQ" base_parameter="_VQkqoDR-Edy0feurbW0fyQ"/>
<standard:Create xmi:id="_ddtEIDR-Edy0feurbW0fyQ" base_BehavioralFeature="_PngwYDR-Edy0feurbW0fyQ"/>
<C_Cpp:Inline xmi:id="_ddtEITR-Edy0feurbW0fyQ" base_operation="_PngwYDR-Edy0feurbW0fyQ"/>
<C_Cpp:Include xmi:id="_6BpjUDUOEdy0feurbW0fyQ" header="typedef unsigned int uint_t;&#xD;&#xA;typedef unsigned long ulong_t;&#xD;&#xA;&#xD;&#xA;#define IN&#xD;&#xA;#define OUT&#xD;&#xA;#define INOUT&#xD;&#xA;#define RETURN&#xD;&#xA;&#xD;&#xA;#ifndef FALSE&#xD;&#xA;&#x9;#define FALSE false&#xD;&#xA;#endif&#xD;&#xA;#ifndef TRUE&#xD;&#xA;&#x9;#define TRUE true&#xD;&#xA;#endif" base_class="_0TXx4DUOEdy0feurbW0fyQ"/>
<standard:Create xmi:id="_etYEYDUPEdy0feurbW0fyQ" base_BehavioralFeature="_ZgB1wDUPEdy0feurbW0fyQ"/>
<C_Cpp:Const xmi:id="_f1HdoDUREdy0feurbW0fyQ" base_parameter="_VRVV0DUREdy0feurbW0fyQ"/>
<C_Cpp:Ptr xmi:id="_f1HdoTUREdy0feurbW0fyQ" base_parameter="_VRVV0DUREdy0feurbW0fyQ"/>
<C_Cpp:Ref xmi:id="_lTTkoDUREdy0feurbW0fyQ" base_parameter="_WjSs8DUREdy0feurbW0fyQ"/>
<C_Cpp:Const xmi:id="_AYMHQDUSEdy0feurbW0fyQ" base_parameter="_YfIHgDUREdy0feurbW0fyQ"/>
<C_Cpp:Ptr xmi:id="_AYMHQTUSEdy0feurbW0fyQ" base_parameter="_YfIHgDUREdy0feurbW0fyQ"/>
<C_Cpp:Ref xmi:id="_E9trcDUTEdyDReAOQiyvOg" base_parameter="_gUN_ADUSEdy0feurbW0fyQ"/>
<C_Cpp:Inline xmi:id="_LSuswDUTEdyDReAOQiyvOg" base_operation="_WR0tADUSEdy0feurbW0fyQ"/>
<C_Cpp:Const xmi:id="_M-Bw8DUTEdyDReAOQiyvOg" base_operation="_T-5BEDUSEdy0feurbW0fyQ"/>
<C_Cpp:Inline xmi:id="_M-Bw8TUTEdyDReAOQiyvOg" base_operation="_T-5BEDUSEdy0feurbW0fyQ"/>
<C_Cpp:Inline xmi:id="_aXwLIDUTEdyDReAOQiyvOg" base_operation="_X5-9oDUSEdy0feurbW0fyQ"/>
<C_Cpp:Ref xmi:id="_bo0KYDUTEdyDReAOQiyvOg" base_parameter="_iOHf4DUSEdy0feurbW0fyQ"/>
<C_Cpp:Const xmi:id="_eKpN8DUTEdyDReAOQiyvOg" base_parameter="_iUE98DUSEdy0feurbW0fyQ"/>
<C_Cpp:Ref xmi:id="_eKpN8TUTEdyDReAOQiyvOg" base_parameter="_iUE98DUSEdy0feurbW0fyQ"/>
<C_Cpp:Inline xmi:id="_xvQdEDUTEdyDReAOQiyvOg" base_operation="_Y7GcYDUSEdy0feurbW0fyQ"/>
<C_Cpp:Ref xmi:id="_zR57kDUTEdyDReAOQiyvOg" base_parameter="_ylPfUDUSEdyDReAOQiyvOg"/>
<C_Cpp:Const xmi:id="_1PEy4DUTEdyDReAOQiyvOg" base_parameter="_ypj-oDUSEdyDReAOQiyvOg"/>
<C_Cpp:Ptr xmi:id="_1PEy4TUTEdyDReAOQiyvOg" base_parameter="_ypj-oDUSEdyDReAOQiyvOg"/>
<C_Cpp:Inline xmi:id="_80H4sDUTEdyDReAOQiyvOg" base_operation="_a43woDUSEdy0feurbW0fyQ"/>
<C_Cpp:Inline xmi:id="_9qzpEDUTEdyDReAOQiyvOg" base_operation="_bfnnkDUSEdy0feurbW0fyQ"/>
<C_Cpp:Ref xmi:id="_-2NsQDUTEdyDReAOQiyvOg" base_parameter="_z9dPcDUSEdyDReAOQiyvOg"/>
<C_Cpp:Const xmi:id="_Al0osDUUEdyDReAOQiyvOg" base_parameter="_0BVC0DUSEdyDReAOQiyvOg"/>
<C_Cpp:Ref xmi:id="_Al0osTUUEdyDReAOQiyvOg" base_parameter="_0BVC0DUSEdyDReAOQiyvOg"/>
<C_Cpp:Ref xmi:id="_Cii0EDUUEdyDReAOQiyvOg" base_parameter="_1f888DUSEdyDReAOQiyvOg"/>
<C_Cpp:Const xmi:id="_ECN3EDUUEdyDReAOQiyvOg" base_parameter="_3iCwgDUSEdyDReAOQiyvOg"/>
<C_Cpp:Ptr xmi:id="_ECN3ETUUEdyDReAOQiyvOg" base_parameter="_3iCwgDUSEdyDReAOQiyvOg"/>
<C_Cpp:Const xmi:id="_qV83wDUUEdyDReAOQiyvOg" base_parameter="_Q3b2ADUUEdyDReAOQiyvOg"/>
<C_Cpp:Ref xmi:id="_qV83wTUUEdyDReAOQiyvOg" base_parameter="_Q3b2ADUUEdyDReAOQiyvOg"/>
<C_Cpp:Const xmi:id="_r5MMIDUUEdyDReAOQiyvOg" base_parameter="_VLaMoDUUEdyDReAOQiyvOg"/>
<C_Cpp:Ptr xmi:id="_r5MMITUUEdyDReAOQiyvOg" base_parameter="_VLaMoDUUEdyDReAOQiyvOg"/>
<C_Cpp:Include xmi:id="_DXEWYDUWEdyDReAOQiyvOg" body="#include &lt;errno.h>&#xD;&#xA;&#xD;&#xA;#include &lt;iostream>&#xD;&#xA;#include &lt;OS_AL/ProcessingResources/Thread.h>&#xD;&#xA;#include &lt;OS_AL/Time/TimeVal.h>&#xD;&#xA;&#xD;&#xA;using namespace std;&#xD;&#xA;&#xD;&#xA;#define ErrMark &quot; &lt;&lt; &quot;&#xD;&#xA;#define StdMark &quot; # &quot;&#xD;&#xA;&#xD;&#xA;#define StopIfNeverShown &#x9;0&#x9;// 1 or 0&#xD;&#xA;&#xD;&#xA;// ---------------------------------------------------------------------------&#xD;&#xA;// Global variables:&#xD;&#xA;OS_AL::Util::Show showI;&#xD;&#xA;ShowErr showErr;&#xD;&#xA;" header="#define traceMark1&#x9;&quot; $ &quot;&#xD;&#xA;&#xD;&#xA;// MACROS (if __METHOD__ is used)&#xD;&#xA;#define PRINTpr(chars) OS_AL::Util::Print pr; pr &lt;&lt; __FILE__ &quot;: &quot; chars&#xD;&#xA;#define PRINTerr(chars) OS_AL::Util::Print::printErr (&quot;in &quot; __FILE__ &quot;, line &quot;, __LINE__, &quot;: &quot; chars)&#xD;&#xA;&#xD;&#xA;/**&#xD;&#xA; * Verbose(expression) removes expression unless compiled with -DVERBOSE&#xD;&#xA; * Caveat:&#xD;&#xA; *&#x9;- avoid comments&#xD;&#xA; *&#x9;- avoid multiline expressions (ugly to read)&#xD;&#xA; *&#x9;- everything after a &quot;,&quot; is interpreted as a 2nd argument&#xD;&#xA; *&#x9;=> use verbose for simple, single expressions only, in all&#xD;&#xA; * other cases use #ifdef VERBOSE ... #endif&#xD;&#xA; */&#xD;&#xA;#if defined(VERBOSE) || defined (CR_CHECK)&#xD;&#xA;&#x9;#define Verbose(expression)&#x9;expression&#xD;&#xA;#else&#xD;&#xA;&#x9;#define Verbose(expression)&#xD;&#xA;#endif&#xD;&#xA;&#xD;&#xA;/**&#xD;&#xA; * ShowErr: like show, but provoke an error message&#xD;&#xA; */&#xD;&#xA;enum ShowErr { };&#xD;&#xA;&#xD;&#xA;// show() is a method of VxWorks and IlogViews -> use showI&#xD;&#xA;extern OS_AL::Util::Show showI;&#xD;&#xA;extern ShowErr showErr;&#xD;&#xA;&#xD;&#xA;//---------------------------------------------------------------------------&#xD;&#xA;// definition of macros (reduce dependency on template compilers)&#xD;&#xA;&#xD;&#xA;&#xD;&#xA;// ====================================================================&#xD;&#xA;" base_class="_Fqa9QDUPEdy0feurbW0fyQ"/>
<C_Cpp:ConstInit xmi:id="_R0S4IDUaEdyDReAOQiyvOg" initialisation="m_shown (0)" base_operation="_ZgB1wDUPEdy0feurbW0fyQ"/>
<standard:Create xmi:id="_mlKLEDUyEdyDReAOQiyvOg" base_BehavioralFeature="_ky3HADUyEdyDReAOQiyvOg"/>
<C_Cpp:Inline xmi:id="_w3WzoDUyEdyDReAOQiyvOg" base_operation="_ky3HADUyEdyDReAOQiyvOg"/>
<standard:Destroy xmi:id="_PKez4DUzEdyDReAOQiyvOg" base_BehavioralFeature="_MPd0QDUzEdyDReAOQiyvOg"/>
<C_Cpp:Inline xmi:id="_PKok4DUzEdyDReAOQiyvOg" base_operation="_MPd0QDUzEdyDReAOQiyvOg"/>
<C_Cpp:Inline xmi:id="_QzicYDUzEdyDReAOQiyvOg" base_operation="_9DJbEDUyEdyDReAOQiyvOg"/>
<C_Cpp:Inline xmi:id="_SIxxADUzEdyDReAOQiyvOg" base_operation="_-f1bgDUyEdyDReAOQiyvOg"/>
<C_Cpp:Const xmi:id="_UMNBUDUzEdyDReAOQiyvOg" base_operation="_ApOw8DUzEdyDReAOQiyvOg"/>
<C_Cpp:Inline xmi:id="_UMNBUTUzEdyDReAOQiyvOg" base_operation="_ApOw8DUzEdyDReAOQiyvOg"/>
<C_Cpp:Const xmi:id="_V4inUDUzEdyDReAOQiyvOg" base_operation="_CTesQDUzEdyDReAOQiyvOg"/>
<C_Cpp:Inline xmi:id="_V4inUTUzEdyDReAOQiyvOg" base_operation="_CTesQDUzEdyDReAOQiyvOg"/>
<C_Cpp:Inline xmi:id="_YYbxMDUzEdyDReAOQiyvOg" base_operation="_HjplYDUzEdyDReAOQiyvOg"/>
<C_Cpp:Inline xmi:id="_ZKgHUDUzEdyDReAOQiyvOg" base_operation="_GN0a4DUzEdyDReAOQiyvOg"/>
<C_Cpp:Inline xmi:id="_Z67esDUzEdyDReAOQiyvOg" base_operation="_E8J-sDUzEdyDReAOQiyvOg"/>
<C_Cpp:Inline xmi:id="_asjI4DUzEdyDReAOQiyvOg" base_operation="_DrscYDUzEdyDReAOQiyvOg"/>
<C_Cpp:Const xmi:id="_ct5VkDUzEdyDReAOQiyvOg" base_operation="_I_JTADUzEdyDReAOQiyvOg"/>
<C_Cpp:Inline xmi:id="_ct5VkTUzEdyDReAOQiyvOg" base_operation="_I_JTADUzEdyDReAOQiyvOg"/>
<C_Cpp:Const xmi:id="_dku28DUzEdyDReAOQiyvOg" base_operation="_KWxNQDUzEdyDReAOQiyvOg"/>
<C_Cpp:Inline xmi:id="_dk4n8DUzEdyDReAOQiyvOg" base_operation="_KWxNQDUzEdyDReAOQiyvOg"/>
<C_Cpp:Ptr xmi:id="_xm2hcDUzEdyDReAOQiyvOg" base_parameter="_iGkDYDUzEdyDReAOQiyvOg"/>
<C_Cpp:Const xmi:id="_zRsSoDUzEdyDReAOQiyvOg" base_parameter="_m35EYDUzEdyDReAOQiyvOg"/>
<C_Cpp:Ref xmi:id="_zR2DoDUzEdyDReAOQiyvOg" base_parameter="_m35EYDUzEdyDReAOQiyvOg"/>
<C_Cpp:Const xmi:id="_NXjoQDU0EdylmKH0Uq8VaA" base_parameter="_8pB1cDUzEdyDReAOQiyvOg"/>
<C_Cpp:Ref xmi:id="_NXjoQTU0EdylmKH0Uq8VaA" base_parameter="_8pB1cDUzEdyDReAOQiyvOg"/>
<C_Cpp:Ptr xmi:id="_zby0YDU0EdylmKH0Uq8VaA" base_parameter="_XB94EDU0EdylmKH0Uq8VaA"/>
<C_Cpp:Ptr xmi:id="_LkU6oDU1EdylmKH0Uq8VaA" base_parameter="_F0HPgDU1EdylmKH0Uq8VaA"/>
<C_Cpp:Ptr xmi:id="_TPxjYDU1EdylmKH0Uq8VaA" base_parameter="_PzPLEDU1EdylmKH0Uq8VaA"/>
<C_Cpp:Ptr xmi:id="_ZYIBsDU1EdylmKH0Uq8VaA" base_parameter="_Vlh50DU1EdylmKH0Uq8VaA"/>
<C_Cpp:Ptr xmi:id="_wOG68DU1EdylmKH0Uq8VaA" base_parameter="_bbtqEDU1EdylmKH0Uq8VaA"/>
<C_Cpp:Ptr xmi:id="_JpDEQDU2EdylmKH0Uq8VaA" base_parameter="_yUhN0DU1EdylmKH0Uq8VaA"/>
<C_Cpp:Const xmi:id="_L6C2gDU2EdylmKH0Uq8VaA" base_parameter="_yYP3QDU1EdylmKH0Uq8VaA"/>
<C_Cpp:Ref xmi:id="_L6C2gTU2EdylmKH0Uq8VaA" base_parameter="_yYP3QDU1EdylmKH0Uq8VaA"/>
<C_Cpp:Visibility xmi:id="_yFTWADVJEdyF2KWMAqLQBg" value="public" base_generalization="_ZFUrgDO2EdyG-pUz-bb-Lg"/>
<C_Cpp:Ptr xmi:id="_oiW9oDadEdyC6dXxO2UOEQ" base_parameter="_V2hJkDadEdyC6dXxO2UOEQ"/>
<C_Cpp:Const xmi:id="_rCGWgDadEdyC6dXxO2UOEQ" base_parameter="_WOgLwDadEdyC6dXxO2UOEQ"/>
<C_Cpp:Ref xmi:id="_rCGWgTadEdyC6dXxO2UOEQ" base_parameter="_WOgLwDadEdyC6dXxO2UOEQ"/>
<C_Cpp:Inline xmi:id="_wtxN8DafEdyC6dXxO2UOEQ" base_operation="_ftqi8DafEdyC6dXxO2UOEQ"/>
<C_Cpp:Ptr xmi:id="_yLfwMDafEdyC6dXxO2UOEQ" base_parameter="_hoAIsDafEdyC6dXxO2UOEQ"/>
<C_Cpp:Inline xmi:id="_NNjoUDagEdyC6dXxO2UOEQ" base_operation="_A4X0UDagEdyC6dXxO2UOEQ"/>
<C_Cpp:Ptr xmi:id="_OfETgDagEdyC6dXxO2UOEQ" base_parameter="_GHp8oDagEdyC6dXxO2UOEQ"/>
<C_Cpp:Const xmi:id="_LC2j8DajEdyC6dXxO2UOEQ" base_parameter="_BHwMwDajEdyC6dXxO2UOEQ"/>
<C_Cpp:Ref xmi:id="_LC2j8TajEdyC6dXxO2UOEQ" base_parameter="_BHwMwDajEdyC6dXxO2UOEQ"/>
<standard:Create xmi:id="_NridcDajEdyC6dXxO2UOEQ" base_BehavioralFeature="_-xPoYDaiEdyC6dXxO2UOEQ"/>
<C_Cpp:Inline xmi:id="_NridcTajEdyC6dXxO2UOEQ" base_operation="_-xPoYDaiEdyC6dXxO2UOEQ"/>
<C_Cpp:ConstInit xmi:id="_REDRYDajEdyC6dXxO2UOEQ" initialisation="value (elt), next (NULL)" base_operation="_-xPoYDaiEdyC6dXxO2UOEQ"/>
<C_Cpp:Ptr xmi:id="_xFafoDakEdyMZ7r5-upW2A" base_parameter="_nU5AwDakEdyMZ7r5-upW2A"/>
<C_Cpp:Inline xmi:id="_zDU90DakEdyMZ7r5-upW2A" base_operation="_a-g58DakEdyMZ7r5-upW2A"/>
<C_Cpp:Inline xmi:id="_CU3OMDalEdyMZ7r5-upW2A" base_operation="_5hcQwDakEdyMZ7r5-upW2A"/>
<C_Cpp:Ptr xmi:id="_DWlJ4DalEdyMZ7r5-upW2A" base_parameter="_7GUj4DakEdyMZ7r5-upW2A"/>
<C_Cpp:Const xmi:id="_Qe-uEDamEdyMZ7r5-upW2A" base_operation="_Am2XwDamEdyMZ7r5-upW2A"/>
<C_Cpp:Inline xmi:id="_Qe-uETamEdyMZ7r5-upW2A" base_operation="_Am2XwDamEdyMZ7r5-upW2A"/>
<C_Cpp:Ptr xmi:id="_TeKcADamEdyMZ7r5-upW2A" base_parameter="_FBO4YDamEdyMZ7r5-upW2A"/>
<C_Cpp:Const xmi:id="_VqiM8DamEdyMZ7r5-upW2A" base_parameter="_FGADoDamEdyMZ7r5-upW2A"/>
<C_Cpp:Ref xmi:id="_VqiM8TamEdyMZ7r5-upW2A" base_parameter="_FGADoDamEdyMZ7r5-upW2A"/>
<C_Cpp:Ptr xmi:id="_p7j2IDamEdyMZ7r5-upW2A" base_parameter="_h1SSkDamEdyMZ7r5-upW2A"/>
<C_Cpp:Const xmi:id="_rkKysDamEdyMZ7r5-upW2A" base_operation="_gDSwgDamEdyMZ7r5-upW2A"/>
<C_Cpp:Inline xmi:id="_rkUjsDamEdyMZ7r5-upW2A" base_operation="_gDSwgDamEdyMZ7r5-upW2A"/>
<C_Cpp:Const xmi:id="_t6-SADamEdyMZ7r5-upW2A" base_parameter="_h5KF8DamEdyMZ7r5-upW2A"/>
<C_Cpp:Ref xmi:id="_t6-SATamEdyMZ7r5-upW2A" base_parameter="_h5KF8DamEdyMZ7r5-upW2A"/>
<C_Cpp:Inline xmi:id="_DFg9IDanEdyMZ7r5-upW2A" base_operation="_2-Vv8DamEdyMZ7r5-upW2A"/>
<C_Cpp:Const xmi:id="_E3XVQDanEdyMZ7r5-upW2A" base_parameter="_44iLwDamEdyMZ7r5-upW2A"/>
<C_Cpp:Ref xmi:id="_E3XVQTanEdyMZ7r5-upW2A" base_parameter="_44iLwDamEdyMZ7r5-upW2A"/>
<C_Cpp:Ptr xmi:id="_GKgYIDanEdyMZ7r5-upW2A" base_parameter="_47gnQDamEdyMZ7r5-upW2A"/>
<C_Cpp:Const xmi:id="_x1riIDaoEdyv9PRkTrTu0A" base_operation="_InFS0DaoEdyMZ7r5-upW2A"/>
<C_Cpp:Inline xmi:id="_x1riITaoEdyv9PRkTrTu0A" base_operation="_InFS0DaoEdyMZ7r5-upW2A"/>
<C_Cpp:Ptr xmi:id="_0i1r8DaoEdyv9PRkTrTu0A" base_parameter="_gR0CwDaoEdyMZ7r5-upW2A"/>
<C_Cpp:Inline xmi:id="_-s_LwDaoEdyv9PRkTrTu0A" base_operation="_Kzm0wDaoEdyMZ7r5-upW2A"/>
<C_Cpp:Ptr xmi:id="_AH5DgDapEdyv9PRkTrTu0A" base_parameter="_4jvVkDaoEdyv9PRkTrTu0A"/>
<C_Cpp:Ptr xmi:id="_WeuioDapEdyv9PRkTrTu0A" base_parameter="_F389oDapEdyv9PRkTrTu0A"/>
<C_Cpp:Inline xmi:id="_FKNG0DapEdyv9PRkTrTu0A" base_operation="_NLvw0DaoEdyMZ7r5-upW2A"/>
<C_Cpp:Inline xmi:id="_ofDUgDapEdyv9PRkTrTu0A" base_operation="_Mh4UcDaoEdyMZ7r5-upW2A"/>
<C_Cpp:Const xmi:id="_ofDUgTapEdyv9PRkTrTu0A" base_operation="_Mh4UcDaoEdyMZ7r5-upW2A"/>
<C_Cpp:Ptr xmi:id="_qn2NADapEdyv9PRkTrTu0A" base_parameter="_iP2AQDapEdyv9PRkTrTu0A"/>
<C_Cpp:Const xmi:id="_znMtoDapEdyv9PRkTrTu0A" base_operation="_ORpB4DaoEdyMZ7r5-upW2A"/>
<C_Cpp:Inline xmi:id="_znMtoTapEdyv9PRkTrTu0A" base_operation="_ORpB4DaoEdyMZ7r5-upW2A"/>
<C_Cpp:Ptr xmi:id="_1CPvUDapEdyv9PRkTrTu0A" base_parameter="_wDf9YDapEdyv9PRkTrTu0A"/>
<C_Cpp:Inline xmi:id="_87_50DapEdyv9PRkTrTu0A" base_operation="_QxrVsDaoEdyMZ7r5-upW2A"/>
<C_Cpp:Ptr xmi:id="_-w-ecDapEdyv9PRkTrTu0A" base_parameter="_5TPDYDapEdyv9PRkTrTu0A"/>
<C_Cpp:Const xmi:id="_GY2OwDaqEdyv9PRkTrTu0A" base_operation="_SaIhQDaoEdyMZ7r5-upW2A"/>
<C_Cpp:Inline xmi:id="_GY2OwTaqEdyv9PRkTrTu0A" base_operation="_SaIhQDaoEdyMZ7r5-upW2A"/>
<C_Cpp:Ptr xmi:id="_Hn-UUDaqEdyv9PRkTrTu0A" base_parameter="_DsSh4DaqEdyv9PRkTrTu0A"/>
<C_Cpp:Inline xmi:id="_QFWJQDaqEdyv9PRkTrTu0A" base_operation="_ToX2ADaoEdyMZ7r5-upW2A"/>
<C_Cpp:Ptr xmi:id="_R-pNMDaqEdyv9PRkTrTu0A" base_parameter="_LADDYDaqEdyv9PRkTrTu0A"/>
<C_Cpp:Const xmi:id="_aRlTwDaqEdyv9PRkTrTu0A" base_operation="_WklIcDaoEdyMZ7r5-upW2A"/>
<C_Cpp:Inline xmi:id="_aRlTwTaqEdyv9PRkTrTu0A" base_operation="_WklIcDaoEdyMZ7r5-upW2A"/>
<C_Cpp:Ptr xmi:id="_bZ2jYDaqEdyv9PRkTrTu0A" base_parameter="_XldrwDaqEdyv9PRkTrTu0A"/>
<C_Cpp:Inline xmi:id="_cA57UDa1Edyv9PRkTrTu0A" base_operation="_YZZ8EDaoEdyMZ7r5-upW2A"/>
<C_Cpp:Ptr xmi:id="_dYYEkDa1Edyv9PRkTrTu0A" base_parameter="_iOT5wDaqEdyv9PRkTrTu0A"/>
<C_Cpp:Const xmi:id="_m6JVwDa1Edyv9PRkTrTu0A" base_operation="_aO0lkDaoEdyMZ7r5-upW2A"/>
<C_Cpp:Inline xmi:id="_m6JVwTa1Edyv9PRkTrTu0A" base_operation="_aO0lkDaoEdyMZ7r5-upW2A"/>
<C_Cpp:Ptr xmi:id="_osSo0Da1Edyv9PRkTrTu0A" base_parameter="_iIN30Da1Edyv9PRkTrTu0A"/>
<C_Cpp:Inline xmi:id="_wt8yIDa1Edyv9PRkTrTu0A" base_operation="_ddN0MDaoEdyMZ7r5-upW2A"/>
<C_Cpp:Ptr xmi:id="_x_J7UDa1Edyv9PRkTrTu0A" base_parameter="_sFG-wDa1Edyv9PRkTrTu0A"/>
<C_Cpp:Ptr xmi:id="_TE8JEDa5Edyv9PRkTrTu0A" base_property="_JP6ksDa5Edyv9PRkTrTu0A"/>
<C_Cpp:Ptr xmi:id="_Z3LR4Da5Edyv9PRkTrTu0A" base_property="_yaiaUDa2Edyv9PRkTrTu0A"/>
<C_Cpp:Ptr xmi:id="_arLhsDa5Edyv9PRkTrTu0A" base_property="_0wvcsDa2Edyv9PRkTrTu0A"/>
<C_Cpp:Ptr xmi:id="_beAFwDa5Edyv9PRkTrTu0A" base_property="_1ZuIQTa2Edyv9PRkTrTu0A"/>
<C_Cpp:Ptr xmi:id="_cMMBcDa5Edyv9PRkTrTu0A" base_property="_2AnwMTa2Edyv9PRkTrTu0A"/>
<C_Cpp:Ptr xmi:id="_c74ZADa5Edyv9PRkTrTu0A" base_property="_3cG2wTa2Edyv9PRkTrTu0A"/>
<C_Cpp:Ptr xmi:id="_drROkDa5Edyv9PRkTrTu0A" base_property="_8nYBwDa2Edyv9PRkTrTu0A"/>
<C_Cpp:Inline xmi:id="_xb0n8Da5Edyv9PRkTrTu0A" base_operation="_lrJPMDa5Edyv9PRkTrTu0A"/>
<C_Cpp:Const xmi:id="_3xJyUDa5Edyv9PRkTrTu0A" base_parameter="_oX2tEDa5Edyv9PRkTrTu0A"/>
<C_Cpp:Ref xmi:id="_3xJyUTa5Edyv9PRkTrTu0A" base_parameter="_oX2tEDa5Edyv9PRkTrTu0A"/>
<C_Cpp:ConstInit xmi:id="_qkOokDa6Edyv9PRkTrTu0A" initialisation="beginning (NULL), endElement (NULL), current (NULL), firstFreeCellule (NULL), freeMemory ((ListCell *) ((char *) this + sizeof (BOL &lt; ElType >))), endOfMemory ((ListCell *) ((char *) this + sizeof (BOL &lt; ElType >) + (nbElem - 1) * sizeof (ListCell)))" base_operation="_ky3HADUyEdyDReAOQiyvOg"/>
<C_Cpp:Include xmi:id="_gutqEDa8Edy_E4ZljVbr-g" body="#if defined(_POSIX_SOURCE) || defined(PC)&#xD;&#xA;&#x9;#include &lt;string.h>&#xD;&#xA;#else&#xD;&#xA;&#x9;#include &lt;string.h>&#xD;&#xA;&#x9;#ifndef SYSTEM_VxWorks&#xD;&#xA;&#x9;&#x9;#include &lt;memory.h>&#xD;&#xA;&#x9;#endif &#xD;&#xA;#endif &#xD;&#xA;" header="/**&#xD;&#xA; * ----------------------------------------------------------------------&#xD;&#xA; * [todo: it would be very good to have lock-free set/list implementations.&#xD;&#xA; * Currently, two threads that are mixing adding/removals would need lock&#xD;&#xA; * protection] => examine solutions, for instance skip lists&#xD;&#xA; * ----------------------------------------------------------------------&#xD;&#xA; */&#xD;&#xA;&#xD;&#xA;&#xD;&#xA;/**&#xD;&#xA; * This macro is used for historical reasons: it is used by the&#xD;&#xA; * code generated by objecteering. It declares a variable of type SetOf&#xD;&#xA; * with the prefix set_of_&lt;typename>. This variable stores a set of pointers.&#xD;&#xA; */&#xD;&#xA;#define CR_SET(className)\&#xD;&#xA;&#x9;typedef ::OS_AL::Sets::SetOf&lt;className *> set_of_ ## className;&#xD;&#xA;&#xD;&#xA;/**&#xD;&#xA; * This macro is similar to the macro above. The difference is that a set&#xD;&#xA; * of values (and not pointers) is stored.&#xD;&#xA; */&#xD;&#xA;#define CR_SET_V(className)\&#xD;&#xA;&#x9;typedef ::OS_AL::Sets::SetOf&lt;className> set_of_ ## className;&#xD;&#xA;&#xD;&#xA;/**&#xD;&#xA; * This integer default value DEFAULT_SIZE_BLOCK is used to control (partly)&#xD;&#xA; * memory size and fragmentation during growing. The ARRAY&#xD;&#xA; * is roughly doubled in size until it hits the size_block limit, after&#xD;&#xA; * which it is grown only in size_block sized chunks, if necessary.&#xD;&#xA; * A large value limits fragmentation at the expense of using more memory.&#xD;&#xA; * DEFAULT_SIZE_BLOCK value must always be a number greater than zero.&#xD;&#xA; */&#xD;&#xA;#ifndef DEFAULT_BLOCK_SIZE&#xD;&#xA;#define DEFAULT_BLOCK_SIZE 1024&#xD;&#xA;#endif&#xD;&#xA;" base_class="_2bXLkDUuEdyDReAOQiyvOg"/>
<standard:Create xmi:id="_HVTDYDa_Edy_E4ZljVbr-g" base_BehavioralFeature="_rnk_IDa-Edy_E4ZljVbr-g"/>
<standard:Destroy xmi:id="_H9iIEDa_Edy_E4ZljVbr-g" base_BehavioralFeature="_-M24MDa-Edy_E4ZljVbr-g"/>
<C_Cpp:Const xmi:id="_LDIAADa_Edy_E4ZljVbr-g" base_parameter="_smT4QDa-Edy_E4ZljVbr-g"/>
<C_Cpp:Const xmi:id="_L59hYDa_Edy_E4ZljVbr-g" base_parameter="_sqyIkDa-Edy_E4ZljVbr-g"/>
<C_Cpp:Const xmi:id="_dnEcUDa_Edy_E4ZljVbr-g" base_operation="_Q1uQwDa_Edy_E4ZljVbr-g"/>
<C_Cpp:Inline xmi:id="_dnEcUTa_Edy_E4ZljVbr-g" base_operation="_Q1uQwDa_Edy_E4ZljVbr-g"/>
<C_Cpp:Const xmi:id="_7hAggDa_Edy0gLsbEakL5w" base_operation="_sUiWUDa_Edy0gLsbEakL5w"/>
<C_Cpp:Inline xmi:id="_7hAggTa_Edy0gLsbEakL5w" base_operation="_sUiWUDa_Edy0gLsbEakL5w"/>
<C_Cpp:Const xmi:id="_Y4rlIDbAEdy0gLsbEakL5w" base_parameter="_Eq75cDbAEdy0gLsbEakL5w"/>
<C_Cpp:Const xmi:id="_taifoDbAEdy0gLsbEakL5w" base_parameter="_dxdR8DbAEdy0gLsbEakL5w"/>
<C_Cpp:Const xmi:id="_6qujUDbAEdy0gLsbEakL5w" base_parameter="_0ywqYDbAEdy0gLsbEakL5w"/>
<C_Cpp:Const xmi:id="_SuMjYDbBEdy0gLsbEakL5w" base_parameter="_JbLf4DbBEdy0gLsbEakL5w"/>
<C_Cpp:Ptr xmi:id="_fhSl8DbCEdy0gLsbEakL5w" base_property="_QYjFMDbCEdy0gLsbEakL5w"/>
<C_Cpp:Const xmi:id="_3OjsgDbCEdy0gLsbEakL5w" base_operation="_q4yCoDbCEdy0gLsbEakL5w"/>
<C_Cpp:Const xmi:id="_5PAhUDbCEdy0gLsbEakL5w" base_parameter="_ugyrIDbCEdy0gLsbEakL5w"/>
<C_Cpp:Ref xmi:id="_5PAhUTbCEdy0gLsbEakL5w" base_parameter="_ugyrIDbCEdy0gLsbEakL5w"/>
<standard:Create xmi:id="_FHQtcDbeEdy0Rd6V_tf1-Q" base_BehavioralFeature="_C1-AQDbeEdy0Rd6V_tf1-Q"/>
<C_Cpp:Const xmi:id="_VH44cDbeEdy0Rd6V_tf1-Q" base_parameter="_NLvhQDbeEdy0Rd6V_tf1-Q"/>
<C_Cpp:Ref xmi:id="_VH44cTbeEdy0Rd6V_tf1-Q" base_parameter="_NLvhQDbeEdy0Rd6V_tf1-Q"/>
<C_Cpp:Ptr xmi:id="_kY0r4DbeEdy0Rd6V_tf1-Q" base_parameter="_Zd8SsDbeEdy0Rd6V_tf1-Q"/>
<C_Cpp:Inline xmi:id="_1HyjkDbeEdy0Rd6V_tf1-Q" base_operation="_p1ESIDbeEdy0Rd6V_tf1-Q"/>
<C_Cpp:Inline xmi:id="_ER4IIDbfEdy0Rd6V_tf1-Q" base_operation="_795fwDbeEdy0Rd6V_tf1-Q"/>
<C_Cpp:ConstInit xmi:id="_aslaoDbfEdy0Rd6V_tf1-Q" initialisation="current (0), full (FALSE)" base_operation="_C1-AQDbeEdy0Rd6V_tf1-Q"/>
<C_Cpp:Include xmi:id="_xGQLUDbfEdy0Rd6V_tf1-Q" body="#include &lt;OS_AL/ProcessingResources/ProDesc.h>&#xD;&#xA;#include &lt;OS_AL/Tracing/Trace.h>" base_class="_y68Y0DUuEdyDReAOQiyvOg"/>
<C_Cpp:Include xmi:id="_b4VAMDj8Edy0Rd6V_tf1-Q" header="#ifdef DEBUG&#xD;&#xA;" base_class="_BN92YDj8Edy0Rd6V_tf1-Q"/>
<C_Cpp:Ptr xmi:id="_E3dv0DkAEdy0Rd6V_tf1-Q" base_property="_B8mhMTkAEdy0Rd6V_tf1-Q"/>
<C_Cpp:Ptr xmi:id="_VYIFwDkAEdy0Rd6V_tf1-Q" base_parameter="_Q8_-QDkAEdy0Rd6V_tf1-Q"/>
<C_Cpp:Ptr xmi:id="_Wns3QDkAEdy0Rd6V_tf1-Q" base_parameter="_RLwL8DkAEdy0Rd6V_tf1-Q"/>
<C_Cpp:Include xmi:id="_tNGmwDkUEdyuzNpSiGPe4w" body="#include &lt;OS_AL/Time/Timer.h>&#xD;&#xA;#include &lt;OS_AL/Time/TimeVal.h>&#xD;&#xA;#include &lt;OS_AL/ProcessingResources/ProDesc.h>&#xD;&#xA;#include &lt;OS_AL/Tracing/Trace.h>&#xD;&#xA;&#xD;&#xA;#include &lt;limits.h>&#xD;&#xA;#include &lt;errno.h>&#xD;&#xA;&#xD;&#xA;#if defined SYSTEM_Solaris&#xD;&#xA;&#x9;// todo: reconsider using class Mutex&#xD;&#xA;&#x9;#include &lt;synch.h>&#xD;&#xA;#endif&#xD;&#xA;&#xD;&#xA;#if defined SYNCHRO_POSIX4&#xD;&#xA;&#x9;#include &lt;pthread.h>&#xD;&#xA;#endif&#xD;&#xA;&#xD;&#xA;#define TimerNotAssigned&#x9;((timer_t) -1)&#xD;&#xA;" header="#include &lt;sys/types.h>" base_class="_ETakYDj8Edy0Rd6V_tf1-Q"/>
<standard:Create xmi:id="_776kkDkUEdyuzNpSiGPe4w" base_BehavioralFeature="_4_tSIDkUEdyuzNpSiGPe4w"/>
<standard:Destroy xmi:id="_8sV78DkUEdyuzNpSiGPe4w" base_BehavioralFeature="_5IDV0DkUEdyuzNpSiGPe4w"/>
<C_Cpp:Const xmi:id="_mLyDoDkVEdyuzNpSiGPe4w" base_parameter="_B5PeoDkVEdyuzNpSiGPe4w"/>
<C_Cpp:Ptr xmi:id="_mLyDoTkVEdyuzNpSiGPe4w" base_parameter="_B5PeoDkVEdyuzNpSiGPe4w"/>
<C_Cpp:Ptr xmi:id="_nzDjcDkVEdyuzNpSiGPe4w" base_parameter="_B9j98DkVEdyuzNpSiGPe4w"/>
<C_Cpp:Ptr xmi:id="_1NOpkDkVEdyuzNpSiGPe4w" base_parameter="_GD1PwDkVEdyuzNpSiGPe4w"/>
<C_Cpp:Const xmi:id="_sazVMDkWEdyuzNpSiGPe4w" base_parameter="_blSJkDkWEdyuzNpSiGPe4w"/>
<C_Cpp:Ref xmi:id="_sazVMTkWEdyuzNpSiGPe4w" base_parameter="_blSJkDkWEdyuzNpSiGPe4w"/>
<C_Cpp:Const xmi:id="_8r0soDkWEdyuzNpSiGPe4w" base_parameter="_1vwSYDkWEdyuzNpSiGPe4w"/>
<C_Cpp:Ptr xmi:id="_8r0soTkWEdyuzNpSiGPe4w" base_parameter="_1vwSYDkWEdyuzNpSiGPe4w"/>
<C_Cpp:Const xmi:id="_DF6bMDkXEdyuzNpSiGPe4w" base_parameter="_10YTsDkWEdyuzNpSiGPe4w"/>
<C_Cpp:Ref xmi:id="_DF6bMTkXEdyuzNpSiGPe4w" base_parameter="_10YTsDkWEdyuzNpSiGPe4w"/>
<C_Cpp:Ref xmi:id="_wNg8YDkXEdyuzNpSiGPe4w" base_parameter="_efgpkDkXEdyuzNpSiGPe4w"/>
<C_Cpp:Ref xmi:id="_xNcIUDkXEdyuzNpSiGPe4w" base_parameter="_eio2EDkXEdyuzNpSiGPe4w"/>
<C_Cpp:Include xmi:id="_ceH5QDkaEdyuzNpSiGPe4w" body="&#xD;&#xA;" header="#if defined SYSTEM_VxWorks&#xD;&#xA;#&#x9;include &lt;sys/times.h>&#x9;&#x9;// -VxW: definition of 'struct timeval'&#xD;&#xA;#endif&#xD;&#xA;&#xD;&#xA;#include &lt;time.h>&#xD;&#xA;#include &lt;sys/time.h>&#xD;&#xA;#include &lt;sys/types.h>&#xD;&#xA;&#xD;&#xA;// TODO: operators that enable marshalling into message buffer&#xD;&#xA;#if defined __GNUC__&#xD;&#xA;// LeftShiftPrint (TimeVal);&#xD;&#xA;// LeftShiftTrace (TimeVal);&#xD;&#xA;#endif&#x9;// __GNUC__&#xD;&#xA;" base_class="_FuKEEDj8Edy0Rd6V_tf1-Q"/>
<standard:Create xmi:id="_7rTG8DkaEdyuzNpSiGPe4w" base_BehavioralFeature="_t7qHIDkaEdyuzNpSiGPe4w"/>
<standard:Create xmi:id="_8orVMDkaEdyuzNpSiGPe4w" base_BehavioralFeature="_uEc2wDkaEdyuzNpSiGPe4w"/>
<standard:Create xmi:id="_9PZ-ADkaEdyuzNpSiGPe4w" base_BehavioralFeature="_uKtPwDkaEdyuzNpSiGPe4w"/>
<C_Cpp:Const xmi:id="_Iat_4DkbEdyuzNpSiGPe4w" base_parameter="_DgL_kDkbEdyuzNpSiGPe4w"/>
<C_Cpp:Ref xmi:id="_Ia3J0DkbEdyuzNpSiGPe4w" base_parameter="_DgL_kDkbEdyuzNpSiGPe4w"/>
<C_Cpp:Const xmi:id="_Rm9F8DkbEdyuzNpSiGPe4w" base_parameter="_LywSsDkbEdyuzNpSiGPe4w"/>
<C_Cpp:Ref xmi:id="_8RKFsDkdEdyuzNpSiGPe4w" base_parameter="_ndW8EDkcEdyuzNpSiGPe4w"/>
<C_Cpp:Const xmi:id="_-WFK0DkdEdyuzNpSiGPe4w" base_parameter="_nhPWgDkcEdyuzNpSiGPe4w"/>
<C_Cpp:Ref xmi:id="_-WFK0TkdEdyuzNpSiGPe4w" base_parameter="_nhPWgDkcEdyuzNpSiGPe4w"/>
<C_Cpp:Ref xmi:id="_BZcOIDkeEdyuzNpSiGPe4w" base_parameter="_1jVYQDkcEdyuzNpSiGPe4w"/>
<C_Cpp:Const xmi:id="_CTs28DkeEdyuzNpSiGPe4w" base_parameter="_1lt94DkcEdyuzNpSiGPe4w"/>
<C_Cpp:Ref xmi:id="_CTs28TkeEdyuzNpSiGPe4w" base_parameter="_1lt94DkcEdyuzNpSiGPe4w"/>
<C_Cpp:Ref xmi:id="_FsOR8DkeEdyuzNpSiGPe4w" base_parameter="_8FwjcDkcEdyuzNpSiGPe4w"/>
<C_Cpp:Const xmi:id="_HO3wcDkeEdyuzNpSiGPe4w" base_parameter="_8JVb4DkcEdyuzNpSiGPe4w"/>
<C_Cpp:Ref xmi:id="_HO3wcTkeEdyuzNpSiGPe4w" base_parameter="_8JVb4DkcEdyuzNpSiGPe4w"/>
<C_Cpp:Const xmi:id="_NDs10DkeEdyuzNpSiGPe4w" base_operation="_T6uC4DkcEdyuzNpSiGPe4w"/>
<C_Cpp:Const xmi:id="_Qn_b8DkeEdyuzNpSiGPe4w" base_parameter="_EkwJADkdEdyuzNpSiGPe4w"/>
<C_Cpp:Ref xmi:id="_Qn_b8TkeEdyuzNpSiGPe4w" base_parameter="_EkwJADkdEdyuzNpSiGPe4w"/>
<C_Cpp:Const xmi:id="_SruOQDkeEdyuzNpSiGPe4w" base_operation="_T_yJEDkcEdyuzNpSiGPe4w"/>
<C_Cpp:Const xmi:id="_TijvoDkeEdyuzNpSiGPe4w" base_parameter="_ZsKAkDkdEdyuzNpSiGPe4w"/>
<C_Cpp:Ref xmi:id="_TijvoTkeEdyuzNpSiGPe4w" base_parameter="_ZsKAkDkdEdyuzNpSiGPe4w"/>
<C_Cpp:Const xmi:id="_cAhacDkeEdyuzNpSiGPe4w" base_operation="_UDgLcDkcEdyuzNpSiGPe4w"/>
<C_Cpp:Const xmi:id="_dv_M8DkeEdyuzNpSiGPe4w" base_parameter="_lppGQDkdEdyuzNpSiGPe4w"/>
<C_Cpp:Ref xmi:id="_dv_M8TkeEdyuzNpSiGPe4w" base_parameter="_lppGQDkdEdyuzNpSiGPe4w"/>
<C_Cpp:Const xmi:id="_fATlUDkeEdyuzNpSiGPe4w" base_operation="_UKNQYDkcEdyuzNpSiGPe4w"/>
<C_Cpp:Const xmi:id="_f2sawDkeEdyuzNpSiGPe4w" base_parameter="_pFuyoDkdEdyuzNpSiGPe4w"/>
<C_Cpp:Ref xmi:id="_f2sawTkeEdyuzNpSiGPe4w" base_parameter="_pFuyoDkdEdyuzNpSiGPe4w"/>
<C_Cpp:Const xmi:id="_hEx-gDkeEdyuzNpSiGPe4w" base_operation="_UPk4kDkcEdyuzNpSiGPe4w"/>
<C_Cpp:Const xmi:id="_iUWwADkeEdyuzNpSiGPe4w" base_parameter="_tPIQ8DkdEdyuzNpSiGPe4w"/>
<C_Cpp:Ref xmi:id="_iUWwATkeEdyuzNpSiGPe4w" base_parameter="_tPIQ8DkdEdyuzNpSiGPe4w"/>
<C_Cpp:Const xmi:id="_jPgwsDkeEdyuzNpSiGPe4w" base_operation="_UVFqsDkcEdyuzNpSiGPe4w"/>
<C_Cpp:Const xmi:id="_kA_Q8DkeEdyuzNpSiGPe4w" base_parameter="_wVT-wDkdEdyuzNpSiGPe4w"/>
<C_Cpp:Ref xmi:id="_kA_Q8TkeEdyuzNpSiGPe4w" base_parameter="_wVT-wDkdEdyuzNpSiGPe4w"/>
<C_Cpp:Const xmi:id="_lCtMoDkeEdyuzNpSiGPe4w" base_operation="_UcFqkDkcEdyuzNpSiGPe4w"/>
<C_Cpp:Const xmi:id="_mg4a0DkeEdyuzNpSiGPe4w" base_parameter="_y4CaMDkdEdyuzNpSiGPe4w"/>
<C_Cpp:Ref xmi:id="_mg4a0TkeEdyuzNpSiGPe4w" base_parameter="_y4CaMDkdEdyuzNpSiGPe4w"/>
<C_Cpp:Const xmi:id="_n354IDkeEdyuzNpSiGPe4w" base_operation="_Us7i8DkcEdyuzNpSiGPe4w"/>
<C_Cpp:Const xmi:id="_pOLukDkeEdyuzNpSiGPe4w" base_parameter="_1MAn8DkdEdyuzNpSiGPe4w"/>
<C_Cpp:Ref xmi:id="_pOVfkDkeEdyuzNpSiGPe4w" base_parameter="_1MAn8DkdEdyuzNpSiGPe4w"/>
<C_Cpp:Const xmi:id="_OlhjADkgEdyuzNpSiGPe4w" base_operation="_9jMDYDkfEdyuzNpSiGPe4w"/>
<C_Cpp:Const xmi:id="__Hbn4DkgEdyuzNpSiGPe4w" base_operation="_hArPsDkgEdyuzNpSiGPe4w"/>
<C_Cpp:Const xmi:id="_AAWz8DkhEdyuzNpSiGPe4w" base_operation="_hIbdgDkgEdyuzNpSiGPe4w"/>
<C_Cpp:Const xmi:id="_AsndADkhEdyuzNpSiGPe4w" base_operation="_hPbdYDkgEdyuzNpSiGPe4w"/>
<C_Cpp:Inline xmi:id="_CMynkDknEdyuzNpSiGPe4w" base_operation="_q8lQcDkmEdyuzNpSiGPe4w"/>
<C_Cpp:Inline xmi:id="_GL6IgDknEdyuzNpSiGPe4w" base_operation="_rCsfgDkmEdyuzNpSiGPe4w"/>
<C_Cpp:Const xmi:id="_J0q-8DknEdyuzNpSiGPe4w" base_parameter="_0LugkDkmEdyuzNpSiGPe4w"/>
<C_Cpp:Ref xmi:id="_LNoV8DknEdyuzNpSiGPe4w" base_parameter="_4lNpUDkmEdyuzNpSiGPe4w"/>
<C_Cpp:Include xmi:id="_57kQoE_BEdy2tpS719xBwQ" body="#include &lt;OS_AL/Tracing/Trace.h>&#xD;&#xA;#include &lt;OS_AL/ProcessingResources/Thread.h>&#xD;&#xA;#include &lt;OS_AL/ProcessingResources/ProDesc.h>&#xD;&#xA;#include &lt;OS_AL/Util/BString500.h>&#xD;&#xA;&#xD;&#xA;#include &lt;stdlib.h>&#xD;&#xA;#include &lt;stdio.h>&#xD;&#xA;#include &lt;errno.h>&#xD;&#xA;&#xD;&#xA;#if defined SYSTEM_Solaris&#xD;&#xA;&#x9;#include &lt;sys/priocntl.h>&#xD;&#xA;&#x9;#include &lt;sys/rtpriocntl.h>&#xD;&#xA;&#x9;#include &lt;sys/tspriocntl.h>&#xD;&#xA;&#x9;int posixPriorityNumbering;&#xD;&#xA;#elif defined SYSTEM_POSIX4 || defined SYSTEM_Linux&#xD;&#xA;&#x9;#include &lt;sys/resource.h>&#x9;&#x9;// Linux&#xD;&#xA;&#x9;#include &lt;sched.h>&#xD;&#xA;&#x9;int posixPriorityNumbering;&#xD;&#xA;#elif defined SYSTEM_VxWorks&#xD;&#xA;&#x9;#include &lt;envLib.h>&#x9;&#x9;&#x9;&#x9;//-VxW&#xD;&#xA;&#x9;#include &lt;sched.h>&#x9;&#x9;&#x9;&#x9;//-VxW&#xD;&#xA;&#x9;extern int posixPriorityNumbering;&#xD;&#xA;#else&#xD;&#xA;&#x9;#error Define SYSTEM_POSIX4 | SYSTEM_Solaris | SYSTEM_VxWorks | SYSTEM_Linux&#xD;&#xA;#endif&#xD;&#xA;" header="&#xD;&#xA;// for getpid, getppid&#xD;&#xA;#include &lt;unistd.h>&#x9;&#x9;&#xD;&#xA;&#xD;&#xA;&#xD;&#xA;#define ABANDON_SIG&#x9;SIGTERM&#x9;// ==> exit(SUCCESS)&#xD;&#xA;#define ExitERR_SIG&#x9;SIGABRT&#x9;// ==> exit(FAILURE) + core&#xD;&#xA;#define ABORT_SIG&#x9;SIGINT&#x9;// ==> exit(FAILURE) [usually by Control-C on controlling terminal&#xD;&#xA;#define ABORT2_SIG&#x9;SIGQUIT&#x9;// ==> exit(FAILURE) + core [usually by Control-| on controlling terminal&#xD;&#xA;&#xD;&#xA;#define OSAL_ERROR(msg) OS_AL::ProcessingResources::ProDesc::exitErr (__LINE__, __FILE__, msg)&#xD;&#xA;&#xD;&#xA;#ifdef SYSTEM_VxWorks&#xD;&#xA;&#x9;typedef int id_t;&#xD;&#xA;&#x9;#include &lt;OS_AL/ProcessingResources/Thread.h>&#xD;&#xA;#elif defined SYSTEM_Solaris || defined SYSTEM_Linux&#xD;&#xA;&#x9;#include &lt;sys/types.h>&#xD;&#xA;#endif&#xD;&#xA;&#xD;&#xA;#include &lt;signal.h>&#xD;&#xA;" base_class="_oSgIME_BEdy2tpS719xBwQ"/>
<C_Cpp:Const xmi:id="_3ZDbIE_CEdy2tpS719xBwQ" base_parameter="_w5c6cE_CEdy2tpS719xBwQ"/>
<C_Cpp:Ptr xmi:id="_3ZMlEE_CEdy2tpS719xBwQ" base_parameter="_w5c6cE_CEdy2tpS719xBwQ"/>
<C_Cpp:Const xmi:id="_WlrPME_DEdy2tpS719xBwQ" base_parameter="_5wJ1YE_CEdy2tpS719xBwQ"/>
<C_Cpp:Ptr xmi:id="_WlrPMU_DEdy2tpS719xBwQ" base_parameter="_5wJ1YE_CEdy2tpS719xBwQ"/>
<C_Cpp:Const xmi:id="_YiZakE_DEdy2tpS719xBwQ" base_parameter="_5y1V8E_CEdy2tpS719xBwQ"/>
<C_Cpp:Ptr xmi:id="_YiZakU_DEdy2tpS719xBwQ" base_parameter="_5y1V8E_CEdy2tpS719xBwQ"/>
<C_Cpp:Const xmi:id="_mKtqYE_DEdy2tpS719xBwQ" base_parameter="_bmpOsE_DEdy2tpS719xBwQ"/>
<C_Cpp:Ptr xmi:id="_mKtqYU_DEdy2tpS719xBwQ" base_parameter="_bmpOsE_DEdy2tpS719xBwQ"/>
<C_Cpp:Const xmi:id="_zMI5UE_DEdy2tpS719xBwQ" base_parameter="_rj1EIE_DEdy2tpS719xBwQ"/>
<C_Cpp:Ptr xmi:id="_zMI5UU_DEdy2tpS719xBwQ" base_parameter="_rj1EIE_DEdy2tpS719xBwQ"/>
<C_Cpp:Ptr xmi:id="_AhZDME_EEdy2tpS719xBwQ" base_parameter="_5by5gE_DEdy2tpS719xBwQ" declaration="**"/>
<C_Cpp:Ref xmi:id="_ZreGAE_EEdy2tpS719xBwQ" base_parameter="_T-YnYE_EEdy2tpS719xBwQ"/>
<C_Cpp:Const xmi:id="_i9lKkE_EEdy2tpS719xBwQ" base_parameter="_clSLwE_EEdy2tpS719xBwQ"/>
<C_Cpp:Ref xmi:id="_i9u7kE_EEdy2tpS719xBwQ" base_parameter="_clSLwE_EEdy2tpS719xBwQ"/>
<C_Cpp:Const xmi:id="_5-7J0E_FEdy2tpS719xBwQ" base_parameter="_wb-M4E_FEdy2tpS719xBwQ"/>
<C_Cpp:Ptr xmi:id="_5-7J0U_FEdy2tpS719xBwQ" base_parameter="_wb-M4E_FEdy2tpS719xBwQ"/>
<C_Cpp:Const xmi:id="_89qL0E_FEdy2tpS719xBwQ" base_parameter="_wfQKYE_FEdy2tpS719xBwQ"/>
<C_Cpp:Ptr xmi:id="_89qL0U_FEdy2tpS719xBwQ" base_parameter="_wfQKYE_FEdy2tpS719xBwQ"/>
<C_Cpp:Const xmi:id="_LGUIkE_GEdy2tpS719xBwQ" base_parameter="_BiBu4E_GEdy2tpS719xBwQ"/>
<C_Cpp:Ptr xmi:id="_LGUIkU_GEdy2tpS719xBwQ" base_parameter="_BiBu4E_GEdy2tpS719xBwQ"/>
<C_Cpp:Const xmi:id="_M2rS8E_GEdy2tpS719xBwQ" base_parameter="_BlTsYE_GEdy2tpS719xBwQ"/>
<C_Cpp:Ref xmi:id="_M2rS8U_GEdy2tpS719xBwQ" base_parameter="_BlTsYE_GEdy2tpS719xBwQ"/>
<C_Cpp:Ptr xmi:id="_DtBU4E_IEdy2tpS719xBwQ" base_parameter="_9L7mcE_HEdy2tpS719xBwQ"/>
<C_Cpp:Ptr xmi:id="_JwdeAE_IEdy2tpS719xBwQ" base_parameter="_G6XaoE_IEdy2tpS719xBwQ" declaration="**"/>
<C_Cpp:Ptr xmi:id="_s-l_sE_IEdy2tpS719xBwQ" base_property="_hkukcE_IEdy2tpS719xBwQ" declaration="**"/>
<C_Cpp:Const xmi:id="_U9T7gE_JEdy2tpS719xBwQ" base_parameter="_NHIpcE_JEdy2tpS719xBwQ"/>
<C_Cpp:Ref xmi:id="_U9T7gU_JEdy2tpS719xBwQ" base_parameter="_NHIpcE_JEdy2tpS719xBwQ"/>
<C_Cpp:Inline xmi:id="_55tV0E_JEdy2tpS719xBwQ" base_operation="_fBQXkE_HEdy2tpS719xBwQ"/>
<C_Cpp:Inline xmi:id="_6uKRkE_JEdy2tpS719xBwQ" base_operation="_fMk2wE_HEdy2tpS719xBwQ"/>
<C_Cpp:Inline xmi:id="_7YBt8E_JEdy2tpS719xBwQ" base_operation="_fRpkAE_HEdy2tpS719xBwQ"/>
<C_Cpp:Inline xmi:id="_8FB94E_JEdy2tpS719xBwQ" base_operation="_fWj5ME_HEdy2tpS719xBwQ"/>
<C_Cpp:Inline xmi:id="_8xvS4E_JEdy2tpS719xBwQ" base_operation="_fbomcE_HEdy2tpS719xBwQ"/>
<C_Cpp:Inline xmi:id="_9gOwkE_JEdy2tpS719xBwQ" base_operation="_ffqK0E_HEdy2tpS719xBwQ"/>
<C_Cpp:Inline xmi:id="_-NYKcE_JEdy2tpS719xBwQ" base_operation="_fkkgAE_HEdy2tpS719xBwQ"/>
<C_Cpp:Include xmi:id="_bphYAE_NEdy2tpS719xBwQ" body="#include &lt;OS_AL/ProcessingResources/System.h>&#xD;&#xA;#include &lt;OS_AL/ProcessingResources/ProDesc.h>&#xD;&#xA;#include &lt;OS_AL/Tracing/Trace.h>&#xD;&#xA;&#xD;&#xA;#if defined SYSTEM_Solaris&#xD;&#xA;&#x9;#include &lt;sys/priocntl.h>&#xD;&#xA;&#x9;#include &lt;sys/rtpriocntl.h>&#xD;&#xA;&#x9;#include &lt;sys/tspriocntl.h>&#xD;&#xA;&#xD;&#xA;#elif defined SYSTEM_VxWorks&#xD;&#xA;&#x9;#include &lt;configAll.h>&#x9;//-VxW&#xD;&#xA;&#xD;&#xA;#elif defined SYSTEM_Cygwin&#xD;&#xA; #include &lt;sys/unistd.h>&#x9;&#x9;// for _SC_SEM_NSEMS_MAX and _SC_OPEN_MQ_MAX&#xD;&#xA;#endif&#xD;&#xA;&#xD;&#xA;#if defined SYSTEM_Linux || defined SYSTEM_Solaris&#xD;&#xA;&#x9;#include &lt;sys/utsname.h>&#xA;&#x9;#include &lt;errno.h>&#xD;&#xA;#endif&#xD;&#xA;" header="#if defined SYSTEM_POSIX4 || defined SYSTEM_Linux&#xD;&#xA;&#x9;#define SYS_NMLN&#x9;250&#x9;&#x9;&#x9;// vérif. s'il existe&#xD;&#xA;&#x9;#include &lt;limits.h>&#xD;&#xA;&#x9;#include &lt;unistd.h>&#xD;&#xA;&#xD;&#xA;#elif defined SYSTEM_Solaris&#xD;&#xA;&#x9;#include &lt;sys/utsname.h>&#xD;&#xA;&#xD;&#xA;#elif defined SYSTEM_VxWorks&#xD;&#xA;&#x9;#include &lt;vxWorks.h>&#xD;&#xA;&#x9;#include &lt;configAll.h>&#x9;&#x9;//-VxW&#xD;&#xA;&#x9;#define SYS_NMLN&#x9;250&#x9;&#x9;// vérif. s'il existe&#xD;&#xA;#else&#xD;&#xA;&#x9;SYSTEM_x_not_defined;&#xD;&#xA;#endif&#xD;&#xA;" base_class="_TVGDsE_NEdy2tpS719xBwQ"/>
<C_Cpp:Const xmi:id="_cZtCUE_OEdy2tpS719xBwQ" base_parameter="_YIRCUE_OEdy2tpS719xBwQ"/>
<C_Cpp:Ptr xmi:id="_cZtCUU_OEdy2tpS719xBwQ" base_parameter="_YIRCUE_OEdy2tpS719xBwQ"/>
<C_Cpp:Ptr xmi:id="_5ufNME_dEdy2tpS719xBwQ" base_parameter="_1uCPgE_dEdy2tpS719xBwQ"/>
<C_Cpp:Ptr xmi:id="_GgHsoE_eEdy2tpS719xBwQ" base_parameter="__yhMME_dEdy2tpS719xBwQ"/>
<C_Cpp:Ptr xmi:id="_HZ7pgE_eEdy2tpS719xBwQ" base_parameter="_BjxHYE_eEdy2tpS719xBwQ"/>
<C_Cpp:Ptr xmi:id="_IQBkAE_eEdy2tpS719xBwQ" base_parameter="_DiSCgE_eEdy2tpS719xBwQ"/>
<C_Cpp:Ptr xmi:id="_u1BT0E_eEdy2tpS719xBwQ" base_property="_c8Tl0E_eEdy2tpS719xBwQ"/>
<C_Cpp:Ptr xmi:id="_vniV4E_eEdy2tpS719xBwQ" base_property="_c_4eQE_eEdy2tpS719xBwQ"/>
<C_Cpp:Ptr xmi:id="_wNFS8E_eEdy2tpS719xBwQ" base_property="_dC25wE_eEdy2tpS719xBwQ"/>
<C_Cpp:Ptr xmi:id="_w0IE0E_eEdy2tpS719xBwQ" base_property="_dF18UE_eEdy2tpS719xBwQ"/>
<C_Cpp:Ptr xmi:id="_xecNIE_eEdy2tpS719xBwQ" base_property="_dJHSwE_eEdy2tpS719xBwQ"/>
<C_Cpp:Include xmi:id="_UXASAE_gEdy2tpS719xBwQ" body="#include &lt;stdio.h>&#xD;&#xA;#if defined THREAD_Solaris&#xD;&#xA;&#x9;#include &lt;sys/priocntl.h>&#xD;&#xA;&#x9;#include &lt;sys/rtpriocntl.h>&#xD;&#xA;&#x9;#include &lt;sys/tspriocntl.h>&#xD;&#xA;&#xD;&#xA;#elif defined THREAD_POSIX4&#xD;&#xA;&#x9;#include &lt;sys/resource.h>&#xD;&#xA;&#xD;&#xA;#endif&#xD;&#xA;#include &lt;errno.h>&#xD;&#xA;&#xD;&#xA;#define ThExecOUT&#x9;-2&#xD;&#xA;&#xD;&#xA;// TODO: other sequence, avoid manual includes if possible&#xD;&#xA;#include &lt;OS_AL/Sets/SetOf.h>&#xD;&#xA;#include &lt;OS_AL/Util/BString50.h>&#xD;&#xA;&#xD;&#xA;OS_AL::Sets::SetOf &lt;OS_AL::ProcessingResources::Thread *> set_of_threads;&#xD;&#xA;&#xD;&#xA;const static OS_AL::Util::BString50 threadName_main (&quot;Main&quot;);&#xD;&#xA;" header="#define CancelThSIG&#x9;SIGQUIT&#x9;&#x9;// by waiting for availability of thread-cancellation&#xD;&#xA;#define DefaultExecPrio&#x9;-1&#xD;&#xA;&#xD;&#xA;#if defined THREAD_POSIX4&#xD;&#xA;&#x9;#include &lt;pthread.h>&#xD;&#xA;&#x9;#include &lt;sys/procfs.h> // lwpid_t type declaration&#xD;&#xA;&#x9;typedef struct sched_param SchedParam;&#xD;&#xA;&#x9;typedef pthread_t ThreadId;&#xD;&#xA;&#xD;&#xA;#elif defined THREAD_Solaris&#xD;&#xA;&#x9;#include &lt;thread.h>&#xD;&#xA;&#x9;typedef thread_t ThreadId;&#xD;&#xA;&#x9;typedef struct&#xD;&#xA;&#x9;{&#xD;&#xA;&#x9;&#x9;int sched_priority;&#xD;&#xA;&#x9;} SchedParam;&#xD;&#xA;&#xD;&#xA;#elif defined THREAD_VxWorks&#xD;&#xA;&#x9;#include &lt;vxWorks.h>&#x9;&#x9;&#x9;//-VxW&#xD;&#xA;&#x9;#include &lt;configAll.h>&#x9;&#x9;&#x9;//-VxW&#xD;&#xA;&#x9;#include &lt;signal.h>&#x9;&#x9;&#x9;&#x9;//-VxW&#xD;&#xA;&#x9;#include &lt;sched.h>&#x9;&#x9;&#x9;&#x9;//-VxW&#xD;&#xA;&#x9;#include &lt;taskLib.h>&#x9;&#x9;&#x9;//-VxW&#xD;&#xA;&#x9;#include &lt;taskVarLib.h>&#x9;&#x9;&#x9;//-VxW&#xD;&#xA;&#x9;typedef int ThreadId;&#x9;&#x9;&#x9;//-VxW&#xD;&#xA;&#x9;typedef struct sched_param SchedParam;&#xD;&#xA;#else&#xD;&#xA;&#x9;THREAD_x_not_defined;&#xD;&#xA;#endif&#xD;&#xA;" base_class="_-HeCsDj_Edy0Rd6V_tf1-Q"/>
<C_Cpp:Const xmi:id="_EEa-4E_hEdy2tpS719xBwQ" base_parameter="_srl3QE_gEdy2tpS719xBwQ"/>
<C_Cpp:Ref xmi:id="_EEkv4E_hEdy2tpS719xBwQ" base_parameter="_srl3QE_gEdy2tpS719xBwQ"/>
<C_Cpp:Ptr xmi:id="_FnXYUE_hEdy2tpS719xBwQ" base_parameter="_suk50E_gEdy2tpS719xBwQ"/>
<C_Cpp:Ptr xmi:id="_HRxEoE_hEdy2tpS719xBwQ" base_parameter="_s1R-wE_gEdy2tpS719xBwQ"/>
<standard:Create xmi:id="_VTHfgE_hEdy2tpS719xBwQ" base_BehavioralFeature="_oCK1EE_gEdy2tpS719xBwQ"/>
<C_Cpp:Const xmi:id="_mhqPIE_hEdy2tpS719xBwQ" base_parameter="_X1168E_hEdy2tpS719xBwQ"/>
<C_Cpp:Ref xmi:id="_mh0AIE_hEdy2tpS719xBwQ" base_parameter="_X1168E_hEdy2tpS719xBwQ"/>
<C_Cpp:Ptr xmi:id="_oPoz4E_hEdy2tpS719xBwQ" base_parameter="_X4XqgE_hEdy2tpS719xBwQ"/>
<standard:Create xmi:id="_zCc2ME_hEdy2tpS719xBwQ" base_BehavioralFeature="_VpnT8E_hEdy2tpS719xBwQ"/>
<standard:Destroy xmi:id="_0IfRME_hEdy2tpS719xBwQ" base_BehavioralFeature="_vOOWoE_hEdy2tpS719xBwQ"/>
<C_Cpp:Ptr xmi:id="_IYwFYE_iEdy2tpS719xBwQ" base_parameter="_BxQ0AE_iEdy2tpS719xBwQ"/>
<C_Cpp:Const xmi:id="_m7pnAE_iEdy2tpS719xBwQ" base_parameter="_h151ME_iEdy2tpS719xBwQ"/>
<C_Cpp:Ref xmi:id="_m7pnAU_iEdy2tpS719xBwQ" base_parameter="_h151ME_iEdy2tpS719xBwQ"/>
<C_Cpp:Const xmi:id="_7VcKoE_iEdy2tpS719xBwQ" base_parameter="_qgiDAE_iEdy2tpS719xBwQ"/>
<C_Cpp:Ref xmi:id="_7VcKoU_iEdy2tpS719xBwQ" base_parameter="_qgiDAE_iEdy2tpS719xBwQ"/>
<C_Cpp:Inline xmi:id="_D2YQ8E_jEdy2tpS719xBwQ" base_operation="_dS4V8E_iEdy2tpS719xBwQ"/>
<C_Cpp:Ref xmi:id="_kYiUkE_jEdy2tpS719xBwQ" base_parameter="_diu6YE_jEdy2tpS719xBwQ"/>
<C_Cpp:Inline xmi:id="_ySu-kE_jEdy2tpS719xBwQ" base_operation="_mdJ3sE_jEdy2tpS719xBwQ"/>
<C_Cpp:Ptr xmi:id="_H0zY4E_kEdy2tpS719xBwQ" base_parameter="__Um5cE_jEdy2tpS719xBwQ"/>
<C_Cpp:Ptr xmi:id="_I2XjkE_kEdy2tpS719xBwQ" base_parameter="__YLx4E_jEdy2tpS719xBwQ"/>
<C_Cpp:Ptr xmi:id="_grzusE_kEdy2tpS719xBwQ" base_parameter="_dhdSkE_kEdy2tpS719xBwQ" declaration="**"/>
<C_Cpp:Ptr xmi:id="_ig59ME_mEdy2tpS719xBwQ" base_parameter="_WqIjgE_mEdy2tpS719xBwQ"/>
<C_Cpp:Const xmi:id="_FvULsE_nEdy2tpS719xBwQ" base_parameter="_9hJ3cE_mEdy2tpS719xBwQ"/>
<C_Cpp:Ref xmi:id="_FvULsU_nEdy2tpS719xBwQ" base_parameter="_9hJ3cE_mEdy2tpS719xBwQ"/>
<C_Cpp:Ptr xmi:id="_cS8wsE_nEdy2tpS719xBwQ" base_parameter="_VzWQAE_nEdy2tpS719xBwQ" declaration="**"/>
<C_Cpp:Ptr xmi:id="_cm-DcE_oEdy2tpS719xBwQ" base_property="_Z47I0E_oEdy2tpS719xBwQ"/>
<C_Cpp:ConstInit xmi:id="_1BSAwE_pEdy2tpS719xBwQ" initialisation="&#x9;m_name (name),&#xD;&#xA;&#x9;m_semaphore (0),&#xD;&#xA;&#x9;m_threadId (0)&#xD;&#xA;#ifdef THREAD_Solaris&#xD;&#xA;&#x9;, m_lwpId (0)&#xD;&#xA;#endif&#xD;&#xA;" base_operation="_oCK1EE_gEdy2tpS719xBwQ"/>
<C_Cpp:ConstInit xmi:id="_75KekE_pEdy2tpS719xBwQ" initialisation="&#x9;m_name (name),&#xD;&#xA;&#x9;m_semaphore (0),&#xD;&#xA;&#x9;m_threadId (0),&#xD;&#xA;#ifdef THREAD_Solaris&#xD;&#xA;&#x9;m_lwpId (0),&#xD;&#xA;#endif&#xD;&#xA;&#x9;m_joined (false)&#xD;&#xA;" base_operation="_VpnT8E_hEdy2tpS719xBwQ"/>
<C_Cpp:Include xmi:id="_Q72YwE_rEdy2tpS719xBwQ" body="#include &lt;OS_AL/ProcessingResources/ProDesc.h>&#xD;&#xA;#include &lt;OS_AL/Tracing/Trace.h>&#xD;&#xA;&#xD;&#xA;#include &lt;errno.h>" header="#if defined THREAD_POSIX4&#xD;&#xA;&#x9;#include &lt;pthread.h>&#xD;&#xA;&#x9;#ifdef THREAD_Linux&#xD;&#xA;&#x9;&#x9;#include &lt;bits/local_lim.h>&#xD;&#xA;&#x9;#endif&#xD;&#xA;#elif defined THREAD_Solaris&#xD;&#xA;&#x9;#include &lt;thread.h>&#xD;&#xA;#elif defined THREAD_VxWorks&#xD;&#xA;&#x9;#define PTHREAD_STACK_MIN&#x9;WDB_SPAWN_STACK_SIZE&#xD;&#xA;#else&#xD;&#xA;&#x9;#error Define THREAD_POSIX4 | THREAD_Solaris | THREAD_VxWorks | THREAD_Linux&#xD;&#xA;#endif&#xD;&#xA;" base_class="_Saw1YDkDEdyuzNpSiGPe4w"/>
<standard:Create xmi:id="_cxbfoE_rEdy2tpS719xBwQ" base_BehavioralFeature="_YAjKkE_rEdy2tpS719xBwQ"/>
<C_Cpp:Const xmi:id="_sTffUE_rEdy2tpS719xBwQ" base_operation="_f_9RIE_rEdy2tpS719xBwQ"/>
<C_Cpp:Inline xmi:id="_sTffUU_rEdy2tpS719xBwQ" base_operation="_f_9RIE_rEdy2tpS719xBwQ"/>
<C_Cpp:Inline xmi:id="_7RMNsE_rEdy2tpS719xBwQ" base_operation="_vxhFYE_rEdy2tpS719xBwQ"/>
<C_Cpp:Ptr xmi:id="_8IoMAE_rEdy2tpS719xBwQ" base_parameter="_ztpjwE_rEdy2tpS719xBwQ"/>
<C_Cpp:Inline xmi:id="_-s-_IE_rEdy2tpS719xBwQ" base_operation="_v5HiME_rEdy2tpS719xBwQ"/>
<C_Cpp:Const xmi:id="_-tIwIE_rEdy2tpS719xBwQ" base_operation="_v5HiME_rEdy2tpS719xBwQ"/>
<C_Cpp:Ptr xmi:id="__8thoE_rEdy2tpS719xBwQ" base_parameter="_2eX-8E_rEdy2tpS719xBwQ"/>
<C_Cpp:Inline xmi:id="_2fr7oE_tEdy2tpS719xBwQ" base_operation="_oN8UUE_tEdy2tpS719xBwQ"/>
<C_Cpp:Inline xmi:id="_3pvT8E_tEdy2tpS719xBwQ" base_operation="_ofORkE_tEdy2tpS719xBwQ"/>
<C_Cpp:Const xmi:id="_3p5E8E_tEdy2tpS719xBwQ" base_operation="_ofORkE_tEdy2tpS719xBwQ"/>
<C_Cpp:Ptr xmi:id="_AHaD0E_uEdy2tpS719xBwQ" base_property="_9TGJIE_tEdy2tpS719xBwQ"/>
<C_Cpp:Include xmi:id="_PSuiAE_vEdy2tpS719xBwQ" body="#include &lt;OS_AL/Tracing/Trace.h>" header="#include &lt;errno.h>&#xD;&#xA;&#xD;&#xA;#if defined THREAD_POSIX4&#xD;&#xA;&#xD;&#xA;&#x9;#include &lt;pthread.h>&#xD;&#xA;&#x9;typedef pthread_key_t ThreadKey;&#xD;&#xA;&#xD;&#xA;#elif defined THREAD_Solaris&#xD;&#xA;&#xD;&#xA;&#x9;#include &lt;thread.h>&#xD;&#xA;&#x9;#if defined(__SunOS_5_5) || defined(__SunOS_5_5_1)&#xD;&#xA;&#x9;&#x9;typedef thread_t pthread_t;&#xD;&#xA;&#x9;&#x9;typedef int pthread_once_t;&#xD;&#xA;&#x9;#endif&#xD;&#xA;&#x9;typedef thread_key_t ThreadKey;&#xD;&#xA;&#xD;&#xA;#elif defined THREAD_VxWorks&#xD;&#xA;&#xD;&#xA;&#x9;#include &lt;sched.h>&#x9;&#x9;&#x9;&#x9;//-VxW&#xD;&#xA;&#x9;#include &lt;taskLib.h>&#x9;&#x9;&#x9;//-VxW&#xD;&#xA;&#x9;#include &lt;taskVarLib.h>&#x9;&#x9;&#x9;//-VxW&#xD;&#xA;&#x9;typedef int pthread_t;&#x9;&#x9;&#x9;//-VxW&#xD;&#xA;&#x9;typedef int ThreadKey;&#x9;&#x9;&#x9;//-VxW&#xD;&#xA;&#xD;&#xA;#else&#xD;&#xA;&#xD;&#xA;&#x9;THREAD_x_not_defined;&#xD;&#xA;&#xD;&#xA;#endif&#xD;&#xA;" base_class="_9-OUUE_uEdy2tpS719xBwQ"/>
<C_Cpp:Inline xmi:id="_gmJfsE_xEdy2tpS719xBwQ" base_operation="_ZtXqAE_xEdy2tpS719xBwQ"/>
<C_Cpp:Inline xmi:id="_hVYkQE_xEdy2tpS719xBwQ" base_operation="_Z2BPsE_xEdy2tpS719xBwQ"/>
<C_Cpp:Inline xmi:id="_icKmIE_xEdy2tpS719xBwQ" base_operation="_Z7FV4E_xEdy2tpS719xBwQ"/>
<C_Cpp:Inline xmi:id="_jVieIE_xEdy2tpS719xBwQ" base_operation="_aJrykE_xEdy2tpS719xBwQ"/>
<C_Cpp:Ptr xmi:id="_taxBsE_xEdy2tpS719xBwQ" base_parameter="_n-EvgE_xEdy2tpS719xBwQ"/>
<C_Cpp:Ptr xmi:id="_0mwuUE_xEdy2tpS719xBwQ" base_parameter="_vzzVoE_xEdy2tpS719xBwQ"/>
<C_Cpp:Ptr xmi:id="_41YD0E_xEdy2tpS719xBwQ" base_parameter="_1w0tsE_xEdy2tpS719xBwQ"/>
<C_Cpp:Inline xmi:id="_FZJGYE_yEdy2tpS719xBwQ" base_operation="_ECHpEE_yEdy2tpS719xBwQ"/>
<C_Cpp:Inline xmi:id="_GuFgEE_yEdy2tpS719xBwQ" base_operation="_ETtIUE_yEdy2tpS719xBwQ"/>
<C_Cpp:Inline xmi:id="_E4NjkE_yEdy2tpS719xBwQ" base_operation="_D9gO0E_yEdy2tpS719xBwQ"/>
<C_Cpp:Const xmi:id="_J_mUIE_yEdy2tpS719xBwQ" base_operation="_D9gO0E_yEdy2tpS719xBwQ"/>
<C_Cpp:Inline xmi:id="_GA7fIE_yEdy2tpS719xBwQ" base_operation="_EJIQAE_yEdy2tpS719xBwQ"/>
<C_Cpp:Const xmi:id="_KrGvQE_yEdy2tpS719xBwQ" base_operation="_EJIQAE_yEdy2tpS719xBwQ"/>
<C_Cpp:Ptr xmi:id="_YykZME_yEdy2tpS719xBwQ" base_property="_RwZ-AE_yEdy2tpS719xBwQ"/>
<C_Cpp:Ptr xmi:id="_p4eKME_yEdy2tpS719xBwQ" base_parameter="_iqPB4E_yEdy2tpS719xBwQ"/>
<C_Cpp:Ptr xmi:id="_zMONgE_yEdy2tpS719xBwQ" base_parameter="_tK4WIE_yEdy2tpS719xBwQ"/>
<C_Cpp:Include xmi:id="_iOOrAFClEdyTutVzffQTmQ" body="#include &lt;OS_AL/Communication/MessageBuffer.h>&#xD;&#xA;#include &lt;OS_AL/ProcessingResources/ProDesc.h>&#xD;&#xA;&#xD;&#xA;// it is useful to align objects in the buffer to allow for quicker&#xD;&#xA;// memory transfer (which might not be employed by memcpy)&#xD;&#xA;#define MB_ALIGNMENT 4&#xD;&#xA;&#xD;&#xA;#ifdef USE_NETWORK_BYTE_ORDER&#xD;&#xA;MessageBuffer &amp; operator &lt;&lt; (MessageBuffer &amp; msg, int value)&#xD;&#xA;{&#xD;&#xA;&#x9;byte value_buf[4];&#xD;&#xA;&#x9;value_buf[3] = value &amp; 0xff; value >>= 8;&#xD;&#xA;&#x9;value_buf[2] = value &amp; 0xff; value >>= 8;&#xD;&#xA;&#x9;value_buf[1] = value &amp; 0xff; value >>= 8;&#xD;&#xA;&#x9;value_buf[0] = value;&#xD;&#xA;&#x9;msg.addToBuffer (value_buf, 4);&#xD;&#xA;&#x9;return msg;&#xD;&#xA;};&#xD;&#xA;&#xD;&#xA;MessageBuffer &amp; operator >> (MessageBuffer &amp; msg, int &amp; value)&#xD;&#xA;{&#xD;&#xA;&#x9;byte value_buf[4];&#xD;&#xA;&#x9;msg.getFromBuffer (value_buf, 4);&#xD;&#xA;&#x9;value = value_buf[0] +&#xD;&#xA;&#x9;&#x9;(value_buf[1] &lt;&lt; 8) +&#xD;&#xA;&#x9;&#x9;(value_buf[1] &lt;&lt; 16) +&#xD;&#xA;&#x9;&#x9;(value_buf[2] &lt;&lt; 24);&#xD;&#xA;&#x9;return msg;&#xD;&#xA;};&#xD;&#xA;#endif&#xD;&#xA;" header="#define MAX_MESSAGE_SIZE 800&#xD;&#xA;&#xD;&#xA;/**&#xD;&#xA; * handle hetereogeneous network configurations (currently incomplete)&#xD;&#xA; */&#xD;&#xA;#ifdef USE_NETWORK_BYTE_ORDER&#xD;&#xA;&#x9;MessageBuffer &amp; operator &lt;&lt; (MessageBuffer &amp; msg, int value);&#xD;&#xA;&#x9;MessageBuffer &amp; operator >> (MessageBuffer &amp; msg, int &amp; value);&#xD;&#xA;#endif&#xD;&#xA;" base_class="_LbxUEDRPEdy1p4IpsoZYqA"/>
<C_Cpp:Const xmi:id="_1MrSAFClEdyTutVzffQTmQ" base_parameter="_qqshAFClEdyTutVzffQTmQ"/>
<C_Cpp:Ref xmi:id="_1MrSAVClEdyTutVzffQTmQ" base_parameter="_qqshAFClEdyTutVzffQTmQ"/>
<standard:Create xmi:id="_8P4PAFClEdyTutVzffQTmQ" base_BehavioralFeature="_3v1yUFClEdyTutVzffQTmQ"/>
<standard:Create xmi:id="_8_twgFClEdyTutVzffQTmQ" base_BehavioralFeature="_oHiAsFClEdyTutVzffQTmQ"/>
<C_Cpp:Inline xmi:id="_ASH8cFCmEdyTutVzffQTmQ" base_operation="_9XQt0FClEdyTutVzffQTmQ"/>
<C_Cpp:Inline xmi:id="_Km-3cFCmEdyTutVzffQTmQ" base_operation="_FSpQAFCmEdyTutVzffQTmQ"/>
<C_Cpp:Inline xmi:id="_QRh_cFCmEdyTutVzffQTmQ" base_operation="_Olf7cFCmEdyTutVzffQTmQ"/>
<C_Cpp:Const xmi:id="_Xe3v4FCmEdyTutVzffQTmQ" base_operation="_UH_6sFCmEdyTutVzffQTmQ"/>
<C_Cpp:Inline xmi:id="_Xe3v4VCmEdyTutVzffQTmQ" base_operation="_UH_6sFCmEdyTutVzffQTmQ"/>
<C_Cpp:Const xmi:id="_YN9qgFCmEdyTutVzffQTmQ" base_operation="_UVQTkFCmEdyTutVzffQTmQ"/>
<C_Cpp:Inline xmi:id="_YN9qgVCmEdyTutVzffQTmQ" base_operation="_UVQTkFCmEdyTutVzffQTmQ"/>
<C_Cpp:Const xmi:id="_scRW4FCmEdyTutVzffQTmQ" base_parameter="_lT2isFCmEdyTutVzffQTmQ"/>
<C_Cpp:Ptr xmi:id="_scRW4VCmEdyTutVzffQTmQ" base_parameter="_lT2isFCmEdyTutVzffQTmQ"/>
<C_Cpp:Ptr xmi:id="_6pse4FCmEdyTutVzffQTmQ" base_parameter="_04JXAFCmEdyTutVzffQTmQ"/>
<standard:Create xmi:id="_ObP90FCnEdyTutVzffQTmQ" base_BehavioralFeature="_9ececFCmEdyTutVzffQTmQ"/>
<C_Cpp:Inline xmi:id="_QO4eoFCnEdyTutVzffQTmQ" base_operation="_9ececFCmEdyTutVzffQTmQ"/>
<C_Cpp:Ptr xmi:id="_ztN_gFCnEdyTutVzffQTmQ" base_property="_iRkoAFCnEdyTutVzffQTmQ"/>
<C_Cpp:Ptr xmi:id="_0kgM0FCnEdyTutVzffQTmQ" base_property="_iVcbYFCnEdyTutVzffQTmQ"/>
<C_Cpp:Ptr xmi:id="_1TJbgFCnEdyTutVzffQTmQ" base_property="_iY4J4FCnEdyTutVzffQTmQ"/>
<standard:Create xmi:id="_rCIFYFCsEdyqzLG48ixyqA" base_BehavioralFeature="_i3atwFCsEdyqzLG48ixyqA"/>
<C_Cpp:Const xmi:id="_0NfowFCsEdyqzLG48ixyqA" base_parameter="_sZUh0FCsEdyqzLG48ixyqA"/>
<C_Cpp:Ref xmi:id="_0NpZwFCsEdyqzLG48ixyqA" base_parameter="_sZUh0FCsEdyqzLG48ixyqA"/>
<standard:Create xmi:id="_3FZC8FCsEdyqzLG48ixyqA" base_BehavioralFeature="_k-Am0FCsEdyqzLG48ixyqA"/>
<C_Cpp:Inline xmi:id="_EEzfsFCtEdyqzLG48ixyqA" base_operation="__McpoFCsEdyqzLG48ixyqA"/>
<C_Cpp:Ptr xmi:id="_QIAy4FCtEdyqzLG48ixyqA" base_parameter="_KUMaIFCtEdyqzLG48ixyqA"/>
<C_Cpp:Const xmi:id="_Tz6c4FCtEdyqzLG48ixyqA" base_operation="_JEUGoFCtEdyqzLG48ixyqA"/>
<C_Cpp:Inline xmi:id="_Tz6c4VCtEdyqzLG48ixyqA" base_operation="_JEUGoFCtEdyqzLG48ixyqA"/>
<C_Cpp:Const xmi:id="_Yf5q4FCtEdyqzLG48ixyqA" base_operation="_V5vg8FCtEdyqzLG48ixyqA"/>
<C_Cpp:Inline xmi:id="_Yf5q4VCtEdyqzLG48ixyqA" base_operation="_V5vg8FCtEdyqzLG48ixyqA"/>
<standard:Create xmi:id="_hfusoFCtEdyqzLG48ixyqA" base_BehavioralFeature="_cxNvEFCtEdyqzLG48ixyqA"/>
<C_Cpp:ConstInit xmi:id="_4CE4MFCtEdyqzLG48ixyqA" initialisation="&#x9;MessageBuffer (NO_RESET)" base_operation="_i3atwFCsEdyqzLG48ixyqA"/>
<C_Cpp:ConstInit xmi:id="_9REFkFCtEdyqzLG48ixyqA" initialisation="&#x9;MessageBuffer (NO_RESET)" base_operation="_cxNvEFCtEdyqzLG48ixyqA"/>
<C_Cpp:ConstInit xmi:id="__L2-UFCtEdyqzLG48ixyqA" initialisation="&#x9;MessageBuffer (msg)" base_operation="_k-Am0FCsEdyqzLG48ixyqA"/>
<C_Cpp:Include xmi:id="_LAexAFCwEdyqzLG48ixyqA" body="#include &lt;OS_AL/Communication/SharedMemory.h>&#xD;&#xA;#include &lt;OS_AL/Synchronization/SM_Mutex.h>&#xD;&#xA;#include &lt;OS_AL/Util/BString50.h>&#xD;&#xA;#include &lt;OS_AL/Util/BString500.h>&#xD;&#xA;#include &lt;OS_AL/ProcessingResources/Process.h>&#xD;&#xA;#include &lt;OS_AL/Tracing/Trace.h>&#xD;&#xA;&#xD;&#xA;#ifndef SYNCHRO_VxWorks&#xD;&#xA;&#xD;&#xA;// Extract from &lt;sys/ipc.h> &#xD;&#xA;// we use the compilation option -D_XOPEN_SOURCE to get shmdt(void*) defined&#xD;&#xA;// [todo: not true - don't use this option]&#xD;&#xA;extern &quot;C&quot;&#xD;&#xA;{&#xD;&#xA;&#x9;// #if defined(__STDC__) &amp;&amp; !defined(_KERNEL) &amp;&amp; !defined(_XOPEN_SOURCE)&#xD;&#xA;&#x9;key_t ftok (const char *, int);&#xD;&#xA;&#x9;// #endif&#xD;&#xA;}&#xD;&#xA;&#xD;&#xA;# include &lt;fcntl.h>&#xD;&#xA;&#xD;&#xA;#else //-VxW&#xD;&#xA;&#x9;//#define MultiCPU&#xD;&#xA;&#x9;#ifdef MultiCPU&#xD;&#xA;&#x9;&#x9;#include &lt;smMemLib.h>&#xD;&#xA;&#x9;#else // monoCPU&#xD;&#xA;&#x9;&#x9;//#define OutOfHeap&#xD;&#xA;&#x9;&#x9;#ifdef OutOfHeap&#xD;&#xA;&#x9;&#x9;&#x9;#include &lt;memLib.h>&#xD;&#xA;&#x9;&#x9;#endif&#xD;&#xA;&#x9;#endif&#xD;&#xA;#endif&#xD;&#xA;" header="#if defined SYNCHRO_Linux&#xD;&#xA;&#x9;#include &lt;sys/stat.h>&#xD;&#xA;&#x9;#include &lt;sys/mman.h>&#xD;&#xA;&#x9;#include &lt;sys/types.h>&#xD;&#xA;&#xD;&#xA;#elif defined SYNCHRO_Cygwin&#xD;&#xA;&#x9;#include &lt;cygwin/shm.h>&#xD;&#xA;&#x9;#include &lt;sys/mman.h>&#xD;&#xA;&#x9;#include &lt;sys/types.h>&#xD;&#xA;&#x9;&#xD;&#xA;#elif defined SYNCHRO_Solaris || defined SYNCHRO_Cygwin&#xD;&#xA;&#x9;#include &lt;sys/stat.h>&#xD;&#xA;&#x9;#include &lt;sys/shm.h>&#xD;&#xA;&#x9;#include &lt;sys/mman.h>&#xD;&#xA;&#x9;#include &lt;sys/types.h>&#xD;&#xA;&#xD;&#xA;#elif defined SYNCHRO_VxWorks&#xD;&#xA;&#x9;&#xD;&#xA;#else&#xD;&#xA;&#x9;# error SYNCHRO_x??? not defined&#xD;&#xA;#endif&#xD;&#xA;&#xD;&#xA;#if defined SYNCHRO_VxWorks&#xD;&#xA;&#x9;typedef int Key;&#xD;&#xA;#else&#xD;&#xA;&#x9;typedef key_t Key;&#xD;&#xA;#endif&#xD;&#xA;" base_class="_sq-yMFCvEdyqzLG48ixyqA"/>
<standard:Create xmi:id="_YkCcoFCwEdyqzLG48ixyqA" base_BehavioralFeature="_W9qUsFCwEdyqzLG48ixyqA"/>
<C_Cpp:Const xmi:id="_q0vz4FCwEdyqzLG48ixyqA" base_parameter="_bUnt4FCwEdyqzLG48ixyqA"/>
<C_Cpp:Ref xmi:id="_q0vz4VCwEdyqzLG48ixyqA" base_parameter="_bUnt4FCwEdyqzLG48ixyqA"/>
<standard:Create xmi:id="_w4VuAFCwEdyqzLG48ixyqA" base_BehavioralFeature="_ZznOIFCwEdyqzLG48ixyqA"/>
<standard:Destroy xmi:id="_0VUyQFCwEdyqzLG48ixyqA" base_BehavioralFeature="_yFEm4FCwEdyqzLG48ixyqA"/>
<C_Cpp:Const xmi:id="_NshrEFCxEdyqzLG48ixyqA" base_parameter="_87L00FCwEdyqzLG48ixyqA"/>
<C_Cpp:Ref xmi:id="_NshrEVCxEdyqzLG48ixyqA" base_parameter="_87L00FCwEdyqzLG48ixyqA"/>
<C_Cpp:Ptr xmi:id="_dt414FCxEdyqzLG48ixyqA" base_parameter="_bNjAEFCxEdyqzLG48ixyqA"/>
<C_Cpp:Const xmi:id="_oFmQkFCxEdyqzLG48ixyqA" base_parameter="_iRXBEFCxEdyqzLG48ixyqA"/>
<C_Cpp:Ptr xmi:id="_oFmQkVCxEdyqzLG48ixyqA" base_parameter="_iRXBEFCxEdyqzLG48ixyqA"/>
<C_Cpp:Ptr xmi:id="_0zNLoFCxEdyqzLG48ixyqA" base_parameter="_vhjEwFCxEdyqzLG48ixyqA"/>
<C_Cpp:Const xmi:id="_9D52gFCxEdyqzLG48ixyqA" base_operation="_7F2OYFCxEdyqzLG48ixyqA"/>
<C_Cpp:Ptr xmi:id="_UfunwFCyEdyqzLG48ixyqA" base_parameter="_-rLWUFCxEdyqzLG48ixyqA"/>
<C_Cpp:Inline xmi:id="_ac7UEFC0EdyqzLG48ixyqA" base_operation="_LAqaYFC0EdyqzLG48ixyqA"/>
<C_Cpp:Inline xmi:id="_YRmE8FC0EdyqzLG48ixyqA" base_operation="_KxUW0FC0EdyqzLG48ixyqA"/>
<C_Cpp:Const xmi:id="_cekbsFC0EdyqzLG48ixyqA" base_operation="_KxUW0FC0EdyqzLG48ixyqA"/>
<C_Cpp:Inline xmi:id="_Y6R1kFC0EdyqzLG48ixyqA" base_operation="_K3bl4FC0EdyqzLG48ixyqA"/>
<C_Cpp:Const xmi:id="_dHPlQFC0EdyqzLG48ixyqA" base_operation="_K3bl4FC0EdyqzLG48ixyqA"/>
<C_Cpp:Inline xmi:id="_ZtsPgFC0EdyqzLG48ixyqA" base_operation="_K8DAIFC0EdyqzLG48ixyqA"/>
<C_Cpp:Const xmi:id="_eAdsQFC0EdyqzLG48ixyqA" base_operation="_K8DAIFC0EdyqzLG48ixyqA"/>
<C_Cpp:Ptr xmi:id="_02JDgFC0EdyqzLG48ixyqA" base_property="_qTs_gFC0EdyqzLG48ixyqA"/>
<C_Cpp:Ptr xmi:id="_jYnnQFC1EdyqzLG48ixyqA" base_property="_gOHaIFC1EdyqzLG48ixyqA"/>
<C_Cpp:Ptr xmi:id="_kMxoEFC1EdyqzLG48ixyqA" base_property="_gR1cgFC1EdyqzLG48ixyqA"/>
<C_Cpp:Ptr xmi:id="_k3sNUFC1EdyqzLG48ixyqA" base_property="_gVRLAFC1EdyqzLG48ixyqA"/>
<C_Cpp:ConstInit xmi:id="_VNNcAFC2EdyqzLG48ixyqA" initialisation="&#x9;m_name (&quot;-&quot;),&#xD;&#xA;&#x9;m_mutex (NULL),&#xD;&#xA;&#x9;m_key (-1),&#xD;&#xA;&#x9;m_id (-1)&#xD;&#xA;" base_operation="_W9qUsFCwEdyqzLG48ixyqA"/>
<C_Cpp:ConstInit xmi:id="_ZB5OkFC2EdyqzLG48ixyqA" initialisation="&#x9;m_name (name),&#xD;&#xA;&#x9;m_mutex (NULL),&#xD;&#xA;&#x9;m_key (-1),&#xD;&#xA;&#x9;m_id (-1)&#xD;&#xA;" base_operation="_ZznOIFCwEdyqzLG48ixyqA"/>
<C_Cpp:Visibility xmi:id="_ATTYcFC3EdyqzLG48ixyqA" value="public" base_generalization="_TmRe8FCsEdyqzLG48ixyqA"/>
<C_Cpp:Include xmi:id="_3d4acFC3EdyqzLG48ixyqA" header="#ifdef SYSTEM_Linux&#xD;&#xA;&#x9;// [todo: check, if we can use the pthread barrier for Solaris as well]&#xD;&#xA;&#x9;#define USE_PTHREAD_BARRIER&#xD;&#xA;#endif&#xD;&#xA;&#xD;&#xA;#ifdef USE_PTHREAD_BARRIER&#xD;&#xA;&#x9;#include &lt;pthread.h>&#xD;&#xA;#endif&#xD;&#xA;" base_class="_jXTGsFC3EdyqzLG48ixyqA"/>
<standard:Destroy xmi:id="_HaeaAFC4EdyqzLG48ixyqA" base_BehavioralFeature="_FQyJoFC4EdyqzLG48ixyqA"/>
<C_Cpp:Const xmi:id="_QbnDUFC4EdyqzLG48ixyqA" base_parameter="_IsliIFC4EdyqzLG48ixyqA"/>
<C_Cpp:Ref xmi:id="_QbnDUVC4EdyqzLG48ixyqA" base_parameter="_IsliIFC4EdyqzLG48ixyqA"/>
<standard:Create xmi:id="_ShH-UFC4EdyqzLG48ixyqA" base_BehavioralFeature="_FFwlYFC4EdyqzLG48ixyqA"/>
<C_Cpp:Inline xmi:id="_WSYCYFC4EdyqzLG48ixyqA" base_operation="_VNO_QFC4EdyqzLG48ixyqA"/>
<C_Cpp:Ref xmi:id="_eyuS0FC4EdyqzLG48ixyqA" base_parameter="_XPBQ0FC4EdyqzLG48ixyqA"/>
<C_Cpp:Include xmi:id="_SQ2h4FFhEdyjobZYtXo9NQ" body="#include &lt;OS_AL/Synchronization/Mutex.h>&#xD;&#xA;#include &lt;OS_AL/Synchronization/SM_Mutex.h>&#xD;&#xA;#include &lt;OS_AL/Communication/SharedMemory.h>&#xD;&#xA;#include &lt;OS_AL/ProcessingResources/ProDesc.h>&#xD;&#xA;#include &lt;OS_AL/ProcessingResources/Thread.h>&#xD;&#xA;" header="#include &lt;signal.h>" base_class="_5HEaAFFgEdyjobZYtXo9NQ"/>
<C_Cpp:Ptr xmi:id="_pVQ4sFFhEdyjobZYtXo9NQ" base_parameter="_lihm4FFhEdyjobZYtXo9NQ"/>
<C_Cpp:Ptr xmi:id="_yJRsAFFhEdyjobZYtXo9NQ" base_parameter="_u2uWIFFhEdyjobZYtXo9NQ"/>
<C_Cpp:Const xmi:id="_0F_3YFFhEdyjobZYtXo9NQ" base_parameter="_u2uWIFFhEdyjobZYtXo9NQ"/>
<standard:Create xmi:id="_5sYREFFhEdyjobZYtXo9NQ" base_BehavioralFeature="_df1i0FFhEdyjobZYtXo9NQ"/>
<standard:Create xmi:id="_6p63YFFhEdyjobZYtXo9NQ" base_BehavioralFeature="_dnb_oFFhEdyjobZYtXo9NQ"/>
<standard:Destroy xmi:id="_7Ty60FFhEdyjobZYtXo9NQ" base_BehavioralFeature="_du4rcFFhEdyjobZYtXo9NQ"/>
<C_Cpp:Ptr xmi:id="_FVb-4FFiEdyjobZYtXo9NQ" base_property="__4miwFFhEdyjobZYtXo9NQ"/>
<C_Cpp:Include xmi:id="_xoZ-IFFiEdyjobZYtXo9NQ" body="#include &lt;OS_AL/ProcessingResources/ProDesc.h>&#xD;&#xA;#include &lt;OS_AL/Tracing/Trace.h>&#xD;&#xA;" header="# include &lt;fcntl.h>&#xD;&#xA;&#xD;&#xA;#if defined SYNCHRO_POSIX4 || defined SYNCHRO_Solaris || defined SYNCHRO_Linux&#xD;&#xA;&#x9;// see section 11 of POSIX standard&#xD;&#xA;&#x9;// see fcntl(2) or lockf(3C) of Solaris reference manual&#xD;&#xA;&#x9;#include &lt;sys/types.h>&#xD;&#xA;&#x9;#include &lt;unistd.h>&#xD;&#xA;#elif defined SYNCHRO_VxWorks&#xD;&#xA;&#x9;#include &lt;ioLib.h>&#xD;&#xA;&#x9;#define fcntl(a1, a2, a3) ioctl (a1, a2, (int) a3)&#x9;// use ioctl (works?)&#xD;&#xA;#else&#xD;&#xA;&#x9;#error SYNCHRO_??? not defined&#xD;&#xA;#endif&#xD;&#xA;" base_class="_qIyBkFC3EdyqzLG48ixyqA"/>
<standard:Create xmi:id="_Xly6YFFuEdyjobZYtXo9NQ" base_BehavioralFeature="_F6fWQFFuEdyjobZYtXo9NQ"/>
<C_Cpp:Ptr xmi:id="_3NPCMFFuEdyjobZYtXo9NQ" base_parameter="_wwdzEFFuEdyjobZYtXo9NQ"/>
<C_Cpp:ConstInit xmi:id="_OcrkUFFvEdyjobZYtXo9NQ" initialisation="&#x9;m_lockType (exclusive ? F_WRLCK : F_RDLCK),&#xD;&#xA;&#x9;m_fd (fileDesc)&#xD;&#xA;" base_operation="_F6fWQFFuEdyjobZYtXo9NQ"/>
<standard:Create xmi:id="_6UX80FFvEdyjobZYtXo9NQ" base_BehavioralFeature="_4NODEFFvEdyjobZYtXo9NQ"/>
<standard:Destroy xmi:id="_69DGYFFvEdyjobZYtXo9NQ" base_BehavioralFeature="_4cRLsFFvEdyjobZYtXo9NQ"/>
<standard:Create xmi:id="_RJcQEFFwEdyjobZYtXo9NQ" base_BehavioralFeature="_OEl_AFFwEdyjobZYtXo9NQ"/>
<C_Cpp:Ptr xmi:id="_M0zOQFF0EdyjobZYtXo9NQ" base_parameter="_Dd6-cFF0EdyjobZYtXo9NQ"/>
<C_Cpp:Const xmi:id="_M0zOQVF0EdyjobZYtXo9NQ" base_parameter="_Dd6-cFF0EdyjobZYtXo9NQ"/>
<C_Cpp:Include xmi:id="_X2-iQFF0EdyjobZYtXo9NQ" body="#include &lt;OS_AL/ProcessingResources/ProDesc.h>&#xD;&#xA;#include &lt;OS_AL/Tracing/Trace.h>&#xD;&#xA;#include &lt;stdio.h>&#xD;&#xA;&#xD;&#xA;#if defined SYNCHRO_VxWorks&#xD;&#xA;#define&#x9;SYNCHRO_VxWorks_MES&#x9;1&#x9;// Mutual-Exclusion Semaphore&#xD;&#xA;&#x9;// else Binary Semaphore&#xD;&#xA;#endif&#xD;&#xA;#include &lt;errno.h>" header="#if defined SYNCHRO_POSIX4 || defined SYNCHRO_Linux || defined SYNCHRO_WIN32&#xA; #include &lt;pthread.h>&#xA; typedef pthread_mutex_t MutexId;&#xA;&#xA;#elif defined SYNCHRO_Solaris&#xA; #include &lt;synch.h>&#xA; typedef mutex_t MutexId;&#xA;&#xA;#elif defined SYNCHRO_VxWorks&#xA; #include &lt;semLib.h>&#xA; typedef SEM_ID MutexId;&#xA;&#xA;#else&#xA; #error SYNCHRO_X not defined&#xA;&#xA;#endif&#xA;" base_class="_Jj9usFC7EdyqzLG48ixyqA"/>
<C_Cpp:Include xmi:id="_1Rt3EFF2EdyxP5ejovTmBw" body="#include &lt;OS_AL/ProcessingResources/ProDesc.h>&#xD;&#xA;#include &lt;OS_AL/Tracing/Trace.h>&#xD;&#xA;" header="#if defined SYNCHRO_Solaris&#xD;&#xA;&#x9;#include &lt;synch.h>&#xD;&#xA;&#x9;typedef rwlock_t RWLockStruc;&#xD;&#xA;&#xD;&#xA;#elif defined SYNCHRO_POSIX4 || SYNCHRO_Linux&#xD;&#xA;&#x9;#include &lt;pthread.h>&#xD;&#xA;&#x9;typedef pthread_rwlock_t RWLockStruc;&#xD;&#xA;&#xD;&#xA;#elif defined SYNCHRO_VxWorks&#xD;&#xA;&#x9;typedef struct&#xD;&#xA;&#x9;{&#xD;&#xA;&#x9;&#x9;int readers;&#xD;&#xA;&#x9;&#x9;int writers;&#xD;&#xA;&#x9;&#x9;MutexStruc readersMut;&#x9;&#x9;// protège readers&#xD;&#xA;&#x9;&#x9;MutexStruc writersMut;&#x9;&#x9;// protège writers&#xD;&#xA;&#x9;&#x9;MutexStruc readMut;&#x9;&#x9;&#x9;// protège le sémaphore 'read'&#xD;&#xA;&#x9;&#x9;SEM_ID writeSem;&#xD;&#xA;&#x9;&#x9;SEM_ID readSem;&#xD;&#xA;&#x9;} RWLockStruc;&#xD;&#xA;&#xD;&#xA;#else // defined RWLock_Simulation&#xD;&#xA;&#xD;&#xA;&#x9;// this new variant is not up to date (surtout tryRdLock et tryWrLock() )&#xD;&#xA;&#x9;#include &lt;OS_AL/Synchronization/Mutex.h>&#xD;&#xA;&#x9;#include &lt;OS_AL/Synchronization/Semaphore.h>&#xD;&#xA;&#xD;&#xA;&#x9;typedef struct&#xD;&#xA;&#x9;{&#xD;&#xA;&#x9;&#x9;int readers;&#xD;&#xA;&#x9;&#x9;int writers;&#xD;&#xA;&#x9;&#x9;Mutex readersMut;&#xD;&#xA;&#x9;&#x9;Mutex writersMut;&#xD;&#xA;&#x9;&#x9;Mutex readMut;&#xD;&#xA;&#x9;&#x9;Semaphore writeSem;&#xD;&#xA;&#x9;&#x9;Semaphore readSem;&#xD;&#xA;&#x9;} RWLockStruc;&#xD;&#xA;#endif&#xD;&#xA;" base_class="_dhMBIFF2EdyxP5ejovTmBw"/>
<standard:Create xmi:id="_xdF5cFF3EdyxP5ejovTmBw" base_BehavioralFeature="_tz4-IFF3EdyxP5ejovTmBw"/>
<standard:Destroy xmi:id="_yXNYUFF3EdyxP5ejovTmBw" base_BehavioralFeature="_t6TIIFF3EdyxP5ejovTmBw"/>
<C_Cpp:Inline xmi:id="_IHbjYFF4EdyxP5ejovTmBw" base_operation="_-EmMgFF3EdyxP5ejovTmBw"/>
<C_Cpp:Const xmi:id="_IHbjYVF4EdyxP5ejovTmBw" base_operation="_-EmMgFF3EdyxP5ejovTmBw"/>
<C_Cpp:Inline xmi:id="_JeAUwFF4EdyxP5ejovTmBw" base_operation="_-N-yAFF3EdyxP5ejovTmBw"/>
<C_Cpp:Include xmi:id="_TSTq8FF5EdyxP5ejovTmBw" body="#include &lt;OS_AL/ProcessingResources/ProDesc.h>&#xD;&#xA;#include &lt;OS_AL/Tracing/Trace.h>&#xD;&#xA;&#xD;&#xA;#include &lt;errno.h>" header="#if defined SYNCHRO_POSIX4 || defined SYNCHRO_VxWorks ||\&#xD;&#xA; defined SYNCHRO_Linux || defined SYNCHRO_Cygwin&#xD;&#xA;&#x9;// see section 11 of POSIX standard&#xD;&#xA;&#x9;// see semPxLib of section 1 in the VxWorks reference manual&#xD;&#xA;&#x9;// see sem_init(3R) of Solaris reference manual (but not available in&#xD;&#xA;&#x9;// Solaris 2.5 - which is probably not a restriction today)&#xD;&#xA;&#x9;#include &lt;semaphore.h>&#xD;&#xA;&#x9;typedef sem_t SemStruc;&#xD;&#xA;#elif defined SYNCHRO_Solaris&#xD;&#xA;&#x9;// see semaphore(3T) of Solaris reference manual&#xD;&#xA;&#x9;#include &lt;synch.h>&#xD;&#xA;&#x9;typedef sema_t SemStruc;&#xD;&#xA;#else&#xD;&#xA;&#x9;#error SYNCHRO_??? not defined&#xD;&#xA;#endif&#xD;&#xA;" base_class="_D8njME_gEdy2tpS719xBwQ"/>
<standard:Create xmi:id="_dGY0IFF5EdyxP5ejovTmBw" base_BehavioralFeature="_aemSgFF5EdyxP5ejovTmBw"/>
<standard:Destroy xmi:id="_d1Lz0FF5EdyxP5ejovTmBw" base_BehavioralFeature="_ak3SkFF5EdyxP5ejovTmBw"/>
<C_Cpp:Const xmi:id="_DKmLEFF6EdyxP5ejovTmBw" base_operation="_76k6EFF5EdyxP5ejovTmBw"/>
<C_Cpp:Inline xmi:id="_GyvK4FGEEdy2j6DfRsavvw" base_operation="_IM-wwFGDEdyxP5ejovTmBw"/>
<C_Cpp:Const xmi:id="_QJeQwFGEEdy2j6DfRsavvw" base_parameter="_3K3eIFGDEdy2j6DfRsavvw"/>
<C_Cpp:Ref xmi:id="_QtYPEFGEEdy2j6DfRsavvw" base_parameter="_3K3eIFGDEdy2j6DfRsavvw"/>
<C_Cpp:Include xmi:id="_Gyo1gFGKEdy7g9CjxdN7jw" body="#include &lt;OS_AL/Util/Print.h>" base_class="_5InEkFGAEdyxP5ejovTmBw"/>
<C_Cpp:Include xmi:id="_b0TcwFIfEdy7g9CjxdN7jw" header="// MACRO&#xD;&#xA;#ifdef ENABLE_TRACING&#xD;&#xA;&#x9;#define TRACEpr(flags)&#x9;&#x9;Trace pr(FLAG_ ## flags)&#xD;&#xA;&#x9;#define PR(arg)&#x9;&#x9;&#x9;&#x9;pr &lt;&lt; arg&#xD;&#xA;#else&#xD;&#xA;&#x9;#define TRACEpr(flags)&#xD;&#xA;&#x9;#define PR(arg)&#xD;&#xA;#endif&#xD;&#xA;" base_class="_1DM54DxBEdyfAeav5abbAw"/>
<standard:Create xmi:id="_qaUq8FIfEdy7g9CjxdN7jw" base_BehavioralFeature="_n7UR4FIfEdy7g9CjxdN7jw"/>
<standard:Destroy xmi:id="_vmw6oFIfEdy7g9CjxdN7jw" base_BehavioralFeature="_oFTUUFIfEdy7g9CjxdN7jw"/>
<C_Cpp:Ref xmi:id="_OnLesFIgEdy7g9CjxdN7jw" base_parameter="_DEXi0FIgEdy7g9CjxdN7jw"/>
<C_Cpp:Const xmi:id="_QdMlIVIgEdy7g9CjxdN7jw" base_operation="_BsdUsFIgEdy7g9CjxdN7jw"/>
<C_Cpp:Inline xmi:id="_VO1IIFIgEdy7g9CjxdN7jw" base_operation="_TAN7gFIgEdy7g9CjxdN7jw"/>
<C_Cpp:Const xmi:id="_VO-SEFIgEdy7g9CjxdN7jw" base_operation="_TAN7gFIgEdy7g9CjxdN7jw"/>
<C_Cpp:Inline xmi:id="_tph8cFIgEdy7g9CjxdN7jw" base_operation="_qIrE0FIgEdy7g9CjxdN7jw"/>
<C_Cpp:Ref xmi:id="_0n1LUFIgEdy7g9CjxdN7jw" base_parameter="_vzhHwFIgEdy7g9CjxdN7jw"/>
<C_Cpp:Const xmi:id="_0n1LUVIgEdy7g9CjxdN7jw" base_parameter="_vzhHwFIgEdy7g9CjxdN7jw"/>
<standard:Create xmi:id="_8oSawFIgEdy7g9CjxdN7jw" base_BehavioralFeature="_7hM24FIgEdy7g9CjxdN7jw"/>
<C_Cpp:Ptr xmi:id="_N4U_MFIhEdy7g9CjxdN7jw" base_property="_JByHAFIhEdy7g9CjxdN7jw"/>
<C_Cpp:Const xmi:id="_K-SJADReEdyDwaY3iUxzzA" base_parameter="_o4Q9YDRGEdyG-pUz-bb-Lg"/>
<C_Cpp:Ref xmi:id="_4wbsAFIFEd-OfYmxqPWG5g" base_parameter="_o4Q9YDRGEdyG-pUz-bb-Lg"/>
<C_Cpp:Typedef xmi:id="_pTNvoFdhEd-9TNLvplUFDQ" definition="void (*typeName) (void*)" base_primitivetype="_kor6MFdhEd-9TNLvplUFDQ"/>
<C_Cpp:Const xmi:id="_ecbxIFnDEd-9TNLvplUFDQ" base_property="_WG7s4DRoEdypGbuyt3_DaA"/>
<C_Cpp:Ptr xmi:id="_XZvckFnmEd-9TNLvplUFDQ" base_parameter="_FeNrIFnmEd-9TNLvplUFDQ"/>
<C_Cpp:Array xmi:id="_jwJS4F2nEd-12d_h0i1xhQ" definition="[maxSize]" base_property="_jwCk4DR-Edy0feurbW0fyQ"/>
<C_Cpp:Const xmi:id="_AvS_cF3MEd-12d_h0i1xhQ" base_parameter="_Y6spMDUREdy0feurbW0fyQ"/>
<C_Cpp:Ptr xmi:id="_L8pB4DUSEdy0feurbW0fyQ" base_parameter="_Y6spMDUREdy0feurbW0fyQ"/>
<C_Cpp:Const xmi:id="_D-HE0F3MEd-12d_h0i1xhQ" base_parameter="_Y-RhoDUREdy0feurbW0fyQ"/>
<C_Cpp:Ptr xmi:id="_NX10kDUSEdy0feurbW0fyQ" base_parameter="_Y-RhoDUREdy0feurbW0fyQ"/>
<C_Cpp:Include xmi:id="_jne3cLmvEd-Ncuei_moJtA" header="#ifdef OS_Cygwin&#xA;&#x9;#define SYSTEM_Cygwin&#xA;&#x9;#define SYSTEM_POSIX4&#xA;&#x9;#define SYNCHRO_Cygwin&#xA;&#x9;#define SYNCHRO_POSIX4&#xA;&#x9;#define THREAD_POSIX4&#xA;&#x9;#define TIMER_POSIX4&#xA;&#x9;#define TIMER_Cygwin&#xA;#endif&#xA;&#xA;#ifdef OS_Linux&#xA;&#x9;#define SYSTEM_Linux&#xA;&#x9;#define SYSTEM_POSIX4&#xA;&#x9;#ifdef OS_Xenomai&#xA;&#x9;&#x9;#define SYSTEM_Xenomai&#xA;&#x9;#endif&#xA;&#x9;#define SYNCHRO_POSIX4&#xA;&#x9;#define THREAD_POSIX4&#xA;&#x9;#define TIMER_POSIX4&#xA;&#x9;#define TIMER_Linux&#xA;#endif&#xA;&#xA;#ifdef OS_Solaris&#xA;&#x9;#define SYSTEM_Solaris&#xA;&#x9;#define THREAD_Solaris&#xA;&#x9;#define SYNCHRO_Solaris&#xA;#endif" base_package="_ROTQYC-OEdySSa8YESkO2w"/>
<C_Cpp:Const xmi:id="_yh6NYIu7EeC1j5hJbrrc8g" base_parameter="_efgpkDkXEdyuzNpSiGPe4w"/>
<C_Cpp:Const xmi:id="__fXiUIu7EeC1j5hJbrrc8g" base_operation="_9xV0IDkfEdyuzNpSiGPe4w"/>
<C_Cpp:Include xmi:id="_QWmjoPRTEeCUGrV0Hl4JwQ" body="#include &lt;OS_AL/Synchronization/Condition.h>&#xD;&#xA;#include &lt;OS_AL/Synchronization/Mutex.h>&#xD;&#xA;#include &lt;OS_AL/Time/TimeVal.h>&#xD;&#xA;#include &lt;OS_AL/ProcessingResources/ProDesc.h>&#xD;&#xA;#include &lt;OS_AL/Tracing/Trace.h>&#xD;&#xA;&#xD;&#xA;#include &lt;errno.h>" header="#if defined SYNCHRO_POSIX4 || defined SYNCHRO_Linux || defined SYNCHRO_WIN32&#xA;&#x9;#include &lt;pthread.h>&#xA;&#x9;typedef pthread_cond_t ConditionId;&#xA;&#xA;#elif defined SYNCHRO_Solaris&#xA;&#x9;#include &lt;synch.h>&#xA;&#x9;typedef cond_t ConditionId;&#xA;&#xA;#elif defined SYNCHRO_VxWorks&#xA;&#x9;#include &lt;semLib.h>&#xA;&#x9;typedef int ConditionId;&#x9;&#x9;&#x9;// dummy declaration&#xA;&#xA;#else&#xA; #error SYNCHRO_X not defined&#xA;&#xA;#endif&#xA;" base_class="_QWlVgPRTEeCUGrV0Hl4JwQ"/>
<standard:Create xmi:id="_QWmjofRTEeCUGrV0Hl4JwQ" base_BehavioralFeature="_QWlVkfRTEeCUGrV0Hl4JwQ"/>
<C_Cpp:ConstInit xmi:id="_QWmjovRTEeCUGrV0Hl4JwQ" initialisation="&#x9;m_mutex (),&#xD;&#xA;&#x9;m_isLocked (false)&#xD;&#xA;" base_operation="_QWlVkfRTEeCUGrV0Hl4JwQ"/>
<standard:Destroy xmi:id="_QWmjo_RTEeCUGrV0Hl4JwQ" base_BehavioralFeature="_QWlVkvRTEeCUGrV0Hl4JwQ"/>
<C_Cpp:Const xmi:id="_QWmjpPRTEeCUGrV0Hl4JwQ" base_parameter="_QWlVofRTEeCUGrV0Hl4JwQ"/>
<C_Cpp:Ref xmi:id="_QWmjpfRTEeCUGrV0Hl4JwQ" base_parameter="_QWlVofRTEeCUGrV0Hl4JwQ"/>
<standard:Destroy xmi:id="__A9BwCZrEeGP95nTW02SMA" base_BehavioralFeature="_6Db-4CZrEeGP95nTW02SMA"/>
<C_Cpp:ExternLibrary xmi:id="_siAPgNqEEeKrRY-H1kHnNA" base_package="_nPvEoNqEEeKrRY-H1kHnNA">
<libs>pthread</libs>
<libs>rt</libs>
</C_Cpp:ExternLibrary>
<C_Cpp:NoCodeGen xmi:id="_2wrHsBpmEeONpa5JgejICQ" base_element="_5YJA0It4EeCA0czgCf_91g"/>
<C_Cpp:External xmi:id="_B5U3IBpnEeONpa5JgejICQ" name="time.h" base_Classifier="_SPVucIt6EeCA0czgCf_91g"/>
<C_Cpp:NoCodeGen xmi:id="_YYbsABpoEeOa5ZlfiNMZuA" base_element="_vZD1EFKWEd-OfYmxqPWG5g"/>
<C_Cpp:Ptr xmi:id="_n4mjsCBaEeOMKsPXBVC0DA" base_parameter="_n3fJYCBaEeOMKsPXBVC0DA"/>
<C_Cpp:Const xmi:id="_n5y2gCBaEeOMKsPXBVC0DA" base_parameter="_n4z_ECBaEeOMKsPXBVC0DA"/>
<C_Cpp:Ref xmi:id="_n57ZYCBaEeOMKsPXBVC0DA" base_parameter="_n4z_ECBaEeOMKsPXBVC0DA"/>
<C_Cpp:Ptr xmi:id="_n7Eo4CBaEeOMKsPXBVC0DA" base_parameter="_n6INsCBaEeOMKsPXBVC0DA"/>
<C_Cpp:Const xmi:id="_n8RiwCBaEeOMKsPXBVC0DA" base_parameter="_n7PoACBaEeOMKsPXBVC0DA"/>
<C_Cpp:Ref xmi:id="_n8aFoCBaEeOMKsPXBVC0DA" base_parameter="_n7PoACBaEeOMKsPXBVC0DA"/>
<C_Cpp:Const xmi:id="_n9iHACBaEeOMKsPXBVC0DA" base_parameter="_n8lEwCBaEeOMKsPXBVC0DA"/>
<C_Cpp:Ref xmi:id="_n9qC0CBaEeOMKsPXBVC0DA" base_parameter="_n8lEwCBaEeOMKsPXBVC0DA"/>
<C_Cpp:Ptr xmi:id="_n-oTMCBaEeOMKsPXBVC0DA" base_parameter="_n9wJcCBaEeOMKsPXBVC0DA"/>
<C_Cpp:Ptr xmi:id="_n_xisCBaEeOMKsPXBVC0DA" base_parameter="_n-4x4CBaEeOMKsPXBVC0DA"/>
<C_Cpp:Ptr xmi:id="_oA6LICBaEeOMKsPXBVC0DA" base_parameter="_oACBYCBaEeOMKsPXBVC0DA"/>
<C_Cpp:Ptr xmi:id="_oCDaoCBaEeOMKsPXBVC0DA" base_parameter="_oBLQ4CBaEeOMKsPXBVC0DA"/>
<C_Cpp:Ptr xmi:id="_oDN4QCBaEeOMKsPXBVC0DA" base_parameter="_oCUgYCBaEeOMKsPXBVC0DA"/>
<C_Cpp:Ptr xmi:id="_oEcAQCBaEeOMKsPXBVC0DA" base_parameter="_oDeW8CBaEeOMKsPXBVC0DA"/>
<C_Cpp:Ptr xmi:id="_oFl20CBaEeOMKsPXBVC0DA" base_parameter="_oEse8CBaEeOMKsPXBVC0DA"/>
<C_Cpp:Ptr xmi:id="_oGvGUCBaEeOMKsPXBVC0DA" base_parameter="_oF2VgCBaEeOMKsPXBVC0DA"/>
<C_Cpp:Ptr xmi:id="_oH4V0CBaEeOMKsPXBVC0DA" base_parameter="_oHAMECBaEeOMKsPXBVC0DA"/>
<C_Cpp:Ptr xmi:id="_oJA-QCBaEeOMKsPXBVC0DA" base_parameter="_oII0gCBaEeOMKsPXBVC0DA"/>
<C_Cpp:Ptr xmi:id="_oKJmsCBaEeOMKsPXBVC0DA" base_parameter="_oJRc8CBaEeOMKsPXBVC0DA"/>
<C_Cpp:Ptr xmi:id="_oLSPICBaEeOMKsPXBVC0DA" base_parameter="_oKaFYCBaEeOMKsPXBVC0DA"/>
<C_Cpp:Ptr xmi:id="_oMfwECBaEeOMKsPXBVC0DA" base_parameter="_oLoNYCBaEeOMKsPXBVC0DA"/>
<C_Cpp:Ptr xmi:id="_oOi-gCBaEeOMKsPXBVC0DA" base_parameter="_oNrb0CBaEeOMKsPXBVC0DA"/>
<C_Cpp:Const xmi:id="_oPmucCBaEeOMKsPXBVC0DA" base_parameter="_oOuksCBaEeOMKsPXBVC0DA"/>
<C_Cpp:Ref xmi:id="_oPuqQCBaEeOMKsPXBVC0DA" base_parameter="_oOuksCBaEeOMKsPXBVC0DA"/>
<C_Cpp:Const xmi:id="_oRngoCBaEeOMKsPXBVC0DA" base_parameter="_oQv98CBaEeOMKsPXBVC0DA"/>
<C_Cpp:Ref xmi:id="_oRvccCBaEeOMKsPXBVC0DA" base_parameter="_oQv98CBaEeOMKsPXBVC0DA"/>
<C_Cpp:Ptr xmi:id="_oS4E4CBaEeOMKsPXBVC0DA" base_parameter="_oR6bkCBaEeOMKsPXBVC0DA"/>
<C_Cpp:Ptr xmi:id="_oUAtUCBaEeOMKsPXBVC0DA" base_parameter="_oTIjkCBaEeOMKsPXBVC0DA"/>
<C_Cpp:Ptr xmi:id="_oVIusCBaEeOMKsPXBVC0DA" base_parameter="_oURMACBaEeOMKsPXBVC0DA"/>
<C_Cpp:Ptr xmi:id="_oWR-MCBaEeOMKsPXBVC0DA" base_parameter="_oVZNYCBaEeOMKsPXBVC0DA"/>
<C_Cpp:Ptr xmi:id="_oXbNsCBaEeOMKsPXBVC0DA" base_parameter="_oWic4CBaEeOMKsPXBVC0DA"/>
<C_Cpp:Ptr xmi:id="_oZaxwCBaEeOMKsPXBVC0DA" base_parameter="_oYiA8CBaEeOMKsPXBVC0DA"/>
<C_Cpp:Const xmi:id="_oakoUCBaEeOMKsPXBVC0DA" base_parameter="_oZmX8CBaEeOMKsPXBVC0DA"/>
<C_Cpp:Ref xmi:id="_oavncCBaEeOMKsPXBVC0DA" base_parameter="_oZmX8CBaEeOMKsPXBVC0DA"/>
<C_Cpp:Ptr xmi:id="_ob3BwCBaEeOMKsPXBVC0DA" base_parameter="_oa-Q8CBaEeOMKsPXBVC0DA"/>
<C_Cpp:Const xmi:id="_oc5jkCBaEeOMKsPXBVC0DA" base_parameter="_ocCA4CBaEeOMKsPXBVC0DA"/>
<C_Cpp:Ref xmi:id="_odBfYCBaEeOMKsPXBVC0DA" base_parameter="_ocCA4CBaEeOMKsPXBVC0DA"/>
<C_Cpp:Const xmi:id="_ofEGwCBaEeOMKsPXBVC0DA" base_parameter="_oeMkECBaEeOMKsPXBVC0DA"/>
<C_Cpp:Ref xmi:id="_ofLbgCBaEeOMKsPXBVC0DA" base_parameter="_oeMkECBaEeOMKsPXBVC0DA"/>
<C_Cpp:Const xmi:id="_sYw8MCBaEeOMKsPXBVC0DA" base_parameter="_sX4ycCBaEeOMKsPXBVC0DA"/>
<C_Cpp:Ref xmi:id="_sY44ACBaEeOMKsPXBVC0DA" base_parameter="_sX4ycCBaEeOMKsPXBVC0DA"/>
<C_Cpp:Ptr xmi:id="_sZ7Z0CBaEeOMKsPXBVC0DA" base_parameter="_sZD3ICBaEeOMKsPXBVC0DA"/>
<C_Cpp:Const xmi:id="_uOCbwCBaEeOMKsPXBVC0DA" base_parameter="_uNFZgCBaEeOMKsPXBVC0DA"/>
<C_Cpp:Ref xmi:id="_uOKXkCBaEeOMKsPXBVC0DA" base_parameter="_uNFZgCBaEeOMKsPXBVC0DA"/>
<C_Cpp:Const xmi:id="_uPMSUCBaEeOMKsPXBVC0DA" base_parameter="_uOUvoCBaEeOMKsPXBVC0DA"/>
<C_Cpp:Const xmi:id="_uQJUkCBaEeOMKsPXBVC0DA" base_parameter="_uPRx4CBaEeOMKsPXBVC0DA"/>
<C_Cpp:Const xmi:id="_uSGcYCBaEeOMKsPXBVC0DA" base_parameter="_uRPgwCBaEeOMKsPXBVC0DA"/>
<C_Cpp:Const xmi:id="_uTJlQCBaEeOMKsPXBVC0DA" base_parameter="_uSRbgCBaEeOMKsPXBVC0DA"/>
<C_Cpp:Const xmi:id="_uVDCsCBaEeOMKsPXBVC0DA" base_parameter="_uUKR4CBaEeOMKsPXBVC0DA"/>
<C_Cpp:Const xmi:id="_uXAKgCBaEeOMKsPXBVC0DA" base_parameter="_uWIAwCBaEeOMKsPXBVC0DA"/>
<C_Cpp:Ref xmi:id="_1ni_8CBaEeOMKsPXBVC0DA" base_parameter="_1miTUCBaEeOMKsPXBVC0DA"/>
<C_Cpp:Ptr xmi:id="_3AskMCBaEeOMKsPXBVC0DA" base_parameter="_2_5S8CBaEeOMKsPXBVC0DA"/>
<C_Cpp:Ptr xmi:id="_4M_YMCBaEeOMKsPXBVC0DA" base_parameter="_4MH1gCBaEeOMKsPXBVC0DA"/>
<C_Cpp:Const xmi:id="_4NMzkCBaEeOMKsPXBVC0DA" base_parameter="_4MH1gCBaEeOMKsPXBVC0DA"/>
<C_Cpp:Ptr xmi:id="_5r1UwCBaEeOMKsPXBVC0DA" base_parameter="_5q784CBaEeOMKsPXBVC0DA"/>
<C_Cpp:Ptr xmi:id="_5s_LUCBaEeOMKsPXBVC0DA" base_parameter="_5sGagCBaEeOMKsPXBVC0DA"/>
<C_Cpp:Const xmi:id="_5tMmsCBaEeOMKsPXBVC0DA" base_parameter="_5sGagCBaEeOMKsPXBVC0DA"/>
<C_Cpp:Const xmi:id="_8jHq8CBaEeOMKsPXBVC0DA" base_parameter="_8iPhMCBaEeOMKsPXBVC0DA"/>
<C_Cpp:Ref xmi:id="_8jO_sCBaEeOMKsPXBVC0DA" base_parameter="_8iPhMCBaEeOMKsPXBVC0DA"/>
<C_Cpp:Ptr xmi:id="__aDb0CBaEeOMKsPXBVC0DA" base_parameter="__ZLSECBaEeOMKsPXBVC0DA"/>
<C_Cpp:Ptr xmi:id="__bNSYCBaEeOMKsPXBVC0DA" base_parameter="__aOa8CBaEeOMKsPXBVC0DA"/>
<C_Cpp:Const xmi:id="_A0qYoCBbEeOMKsPXBVC0DA" base_parameter="_AzsIQCBbEeOMKsPXBVC0DA"/>
<C_Cpp:Ptr xmi:id="_A0xtYCBbEeOMKsPXBVC0DA" base_parameter="_AzsIQCBbEeOMKsPXBVC0DA"/>
<C_Cpp:Const xmi:id="_A11dUCBbEeOMKsPXBVC0DA" base_parameter="_A09TkCBbEeOMKsPXBVC0DA"/>
<C_Cpp:Ref xmi:id="_A19ZICBbEeOMKsPXBVC0DA" base_parameter="_A09TkCBbEeOMKsPXBVC0DA"/>
<C_Cpp:Const xmi:id="_A5jfsCBbEeOMKsPXBVC0DA" base_parameter="_A4qu4CBbEeOMKsPXBVC0DA"/>
<C_Cpp:Ptr xmi:id="_A5q0cCBbEeOMKsPXBVC0DA" base_parameter="_A4qu4CBbEeOMKsPXBVC0DA"/>
<C_Cpp:Ptr xmi:id="_A6vLcCBbEeOMKsPXBVC0DA" base_parameter="_A52aoCBbEeOMKsPXBVC0DA"/>
<C_Cpp:Ptr xmi:id="_A82rUCBbEeOMKsPXBVC0DA" base_parameter="_A79TcCBbEeOMKsPXBVC0DA"/>
<C_Cpp:Const xmi:id="_BBlaUCBbEeOMKsPXBVC0DA" base_parameter="_BAtQkCBbEeOMKsPXBVC0DA"/>
<C_Cpp:Ref xmi:id="_BBtWICBbEeOMKsPXBVC0DA" base_parameter="_BAtQkCBbEeOMKsPXBVC0DA"/>
<C_Cpp:Ref xmi:id="_BDvWcCBbEeOMKsPXBVC0DA" base_parameter="_BCup0CBbEeOMKsPXBVC0DA"/>
<C_Cpp:Const xmi:id="_BD2rMCBbEeOMKsPXBVC0DA" base_parameter="_BCup0CBbEeOMKsPXBVC0DA"/>
<C_Cpp:Ref xmi:id="_BE07kCBbEeOMKsPXBVC0DA" base_parameter="_BD8x0CBbEeOMKsPXBVC0DA"/>
<C_Cpp:Const xmi:id="_CUrZ4CBbEeOMKsPXBVC0DA" base_parameter="_CTzQICBbEeOMKsPXBVC0DA"/>
<C_Cpp:Ref xmi:id="_CbcJMCBbEeOMKsPXBVC0DA" base_parameter="_Caj_cCBbEeOMKsPXBVC0DA"/>
<C_Cpp:Const xmi:id="_CdglwCBbEeOMKsPXBVC0DA" base_parameter="_CcpDECBbEeOMKsPXBVC0DA"/>
<C_Cpp:Ref xmi:id="_CdohkCBbEeOMKsPXBVC0DA" base_parameter="_CcpDECBbEeOMKsPXBVC0DA"/>
<C_Cpp:Const xmi:id="_CesRgCBbEeOMKsPXBVC0DA" base_parameter="_CdzgsCBbEeOMKsPXBVC0DA"/>
<C_Cpp:Ref xmi:id="_Chz28CBbEeOMKsPXBVC0DA" base_parameter="_CgzKUCBbEeOMKsPXBVC0DA"/>
<C_Cpp:Const xmi:id="_CiyuYCBbEeOMKsPXBVC0DA" base_parameter="_Ch5WgCBbEeOMKsPXBVC0DA"/>
<C_Cpp:Ref xmi:id="_Ci6DICBbEeOMKsPXBVC0DA" base_parameter="_Ch5WgCBbEeOMKsPXBVC0DA"/>
<C_Cpp:Ref xmi:id="_Cj9zECBbEeOMKsPXBVC0DA" base_parameter="_CjFCQCBbEeOMKsPXBVC0DA"/>
<C_Cpp:Const xmi:id="_Ck8DcCBbEeOMKsPXBVC0DA" base_parameter="_CkD5sCBbEeOMKsPXBVC0DA"/>
<C_Cpp:Ref xmi:id="_ClD_QCBbEeOMKsPXBVC0DA" base_parameter="_CkD5sCBbEeOMKsPXBVC0DA"/>
<C_Cpp:Ref xmi:id="_CmIWQCBbEeOMKsPXBVC0DA" base_parameter="_ClQMgCBbEeOMKsPXBVC0DA"/>
<C_Cpp:Const xmi:id="_CnKRACBbEeOMKsPXBVC0DA" base_parameter="_CmN10CBbEeOMKsPXBVC0DA"/>
<C_Cpp:Ref xmi:id="_CnRlwCBbEeOMKsPXBVC0DA" base_parameter="_CmN10CBbEeOMKsPXBVC0DA"/>
<C_Cpp:Const xmi:id="_CpSX8CBbEeOMKsPXBVC0DA" base_parameter="_CoS5cCBbEeOMKsPXBVC0DA"/>
<C_Cpp:Ref xmi:id="_CpZssCBbEeOMKsPXBVC0DA" base_parameter="_CoS5cCBbEeOMKsPXBVC0DA"/>
<C_Cpp:Const xmi:id="_CrTKICBbEeOMKsPXBVC0DA" base_parameter="_CqbAYCBbEeOMKsPXBVC0DA"/>
<C_Cpp:Ref xmi:id="_Crae4CBbEeOMKsPXBVC0DA" base_parameter="_CqbAYCBbEeOMKsPXBVC0DA"/>
<C_Cpp:Const xmi:id="_CtTVQCBbEeOMKsPXBVC0DA" base_parameter="_CsbykCBbEeOMKsPXBVC0DA"/>
<C_Cpp:Ref xmi:id="_CtaqACBbEeOMKsPXBVC0DA" base_parameter="_CsbykCBbEeOMKsPXBVC0DA"/>
<C_Cpp:Const xmi:id="_CvUHcCBbEeOMKsPXBVC0DA" base_parameter="_Cub9sCBbEeOMKsPXBVC0DA"/>
<C_Cpp:Ref xmi:id="_CvcDQCBbEeOMKsPXBVC0DA" base_parameter="_Cub9sCBbEeOMKsPXBVC0DA"/>
<C_Cpp:Const xmi:id="_CxbnUCBbEeOMKsPXBVC0DA" base_parameter="_CwjdkCBbEeOMKsPXBVC0DA"/>
<C_Cpp:Ref xmi:id="_Cxi8ECBbEeOMKsPXBVC0DA" base_parameter="_CwjdkCBbEeOMKsPXBVC0DA"/>
<C_Cpp:Const xmi:id="_CzdAkCBbEeOMKsPXBVC0DA" base_parameter="_CykPwCBbEeOMKsPXBVC0DA"/>
<C_Cpp:Ref xmi:id="_Czk8YCBbEeOMKsPXBVC0DA" base_parameter="_CykPwCBbEeOMKsPXBVC0DA"/>
<C_Cpp:Const xmi:id="_C1fA4CBbEeOMKsPXBVC0DA" base_parameter="_C0lpACBbEeOMKsPXBVC0DA"/>
<C_Cpp:Ref xmi:id="_C1mVoCBbEeOMKsPXBVC0DA" base_parameter="_C0lpACBbEeOMKsPXBVC0DA"/>
<C_Cpp:Const xmi:id="_C3hBMCBbEeOMKsPXBVC0DA" base_parameter="_C2o3cCBbEeOMKsPXBVC0DA"/>
<C_Cpp:Ref xmi:id="_C3vDoCBbEeOMKsPXBVC0DA" base_parameter="_C2o3cCBbEeOMKsPXBVC0DA"/>
<C_Cpp:Ref xmi:id="_FQm_gCBbEeOMKsPXBVC0DA" base_parameter="_FPu1wCBbEeOMKsPXBVC0DA"/>
<C_Cpp:Ref xmi:id="_FRskoCBbEeOMKsPXBVC0DA" base_parameter="_FQx-oCBbEeOMKsPXBVC0DA"/>
<C_Cpp:Const xmi:id="_FR0gcCBbEeOMKsPXBVC0DA" base_parameter="_FQx-oCBbEeOMKsPXBVC0DA"/>
<C_Cpp:Const xmi:id="_GuVhwCBbEeOMKsPXBVC0DA" base_parameter="_Gta7wCBbEeOMKsPXBVC0DA"/>
<C_Cpp:Ref xmi:id="_GuddkCBbEeOMKsPXBVC0DA" base_parameter="_Gta7wCBbEeOMKsPXBVC0DA"/>
<C_Cpp:Ref xmi:id="_KILycCBbEeOMKsPXBVC0DA" base_parameter="_KHNiECBbEeOMKsPXBVC0DA"/>
<C_Cpp:Const xmi:id="_KLC5MCBbEeOMKsPXBVC0DA" base_parameter="_KKKIYCBbEeOMKsPXBVC0DA"/>
<C_Cpp:Ptr xmi:id="_KLKN8CBbEeOMKsPXBVC0DA" base_parameter="_KKKIYCBbEeOMKsPXBVC0DA"/>
<C_Cpp:Const xmi:id="_KNLnMCBbEeOMKsPXBVC0DA" base_parameter="_KMS2YCBbEeOMKsPXBVC0DA"/>
<C_Cpp:Ref xmi:id="_KNTjACBbEeOMKsPXBVC0DA" base_parameter="_KMS2YCBbEeOMKsPXBVC0DA"/>
<C_Cpp:Const xmi:id="_KPPcsCBbEeOMKsPXBVC0DA" base_parameter="_KOWE0CBbEeOMKsPXBVC0DA"/>
<C_Cpp:Ptr xmi:id="_KPXYgCBbEeOMKsPXBVC0DA" base_parameter="_KOWE0CBbEeOMKsPXBVC0DA"/>
<C_Cpp:Const xmi:id="_KRe4YCBbEeOMKsPXBVC0DA" base_parameter="_KQlggCBbEeOMKsPXBVC0DA"/>
<C_Cpp:Ref xmi:id="_KRmNICBbEeOMKsPXBVC0DA" base_parameter="_KQlggCBbEeOMKsPXBVC0DA"/>
<C_Cpp:Const xmi:id="_KSsZUCBbEeOMKsPXBVC0DA" base_parameter="_KRxzUCBbEeOMKsPXBVC0DA"/>
<C_Cpp:Ptr xmi:id="_KSzuECBbEeOMKsPXBVC0DA" base_parameter="_KRxzUCBbEeOMKsPXBVC0DA"/>
<C_Cpp:Const xmi:id="_KU4xsCBbEeOMKsPXBVC0DA" base_parameter="_KUAn8CBbEeOMKsPXBVC0DA"/>
<C_Cpp:Const xmi:id="_KYxzMCBbEeOMKsPXBVC0DA" base_parameter="_KX5CYCBbEeOMKsPXBVC0DA"/>
<C_Cpp:Ptr xmi:id="_KY5vACBbEeOMKsPXBVC0DA" base_parameter="_KX5CYCBbEeOMKsPXBVC0DA"/>
<C_Cpp:Ptr xmi:id="_KaC-gCBbEeOMKsPXBVC0DA" base_parameter="_KZK0wCBbEeOMKsPXBVC0DA"/>
<C_Cpp:Ptr xmi:id="_KbMOACBbEeOMKsPXBVC0DA" base_parameter="_KaUEQCBbEeOMKsPXBVC0DA"/>
<C_Cpp:Const xmi:id="_KbZpYCBbEeOMKsPXBVC0DA" base_parameter="_KaUEQCBbEeOMKsPXBVC0DA"/>
<C_Cpp:Const xmi:id="_KcdZUCBbEeOMKsPXBVC0DA" base_parameter="_KbkogCBbEeOMKsPXBVC0DA"/>
<C_Cpp:Ptr xmi:id="_KclVICBbEeOMKsPXBVC0DA" base_parameter="_KbkogCBbEeOMKsPXBVC0DA"/>
<C_Cpp:Const xmi:id="_Kdt9kCBbEeOMKsPXBVC0DA" base_parameter="_Kc1z0CBbEeOMKsPXBVC0DA"/>
<C_Cpp:Ref xmi:id="_Kd15YCBbEeOMKsPXBVC0DA" base_parameter="_Kc1z0CBbEeOMKsPXBVC0DA"/>
<C_Cpp:Ptr xmi:id="_KfA-ECBbEeOMKsPXBVC0DA" base_parameter="_KeA4gCBbEeOMKsPXBVC0DA"/>
<C_Cpp:Const xmi:id="_KgKNkCBbEeOMKsPXBVC0DA" base_parameter="_KfRcwCBbEeOMKsPXBVC0DA"/>
<C_Cpp:Ptr xmi:id="_KgVzwCBbEeOMKsPXBVC0DA" base_parameter="_KfRcwCBbEeOMKsPXBVC0DA"/>
<C_Cpp:Const xmi:id="_KicskCBbEeOMKsPXBVC0DA" base_parameter="_Khki0CBbEeOMKsPXBVC0DA"/>
<C_Cpp:Ref xmi:id="_KikoYCBbEeOMKsPXBVC0DA" base_parameter="_Khki0CBbEeOMKsPXBVC0DA"/>
<C_Cpp:Ptr xmi:id="_KqLsQCBbEeOMKsPXBVC0DA" base_parameter="_KpTigCBbEeOMKsPXBVC0DA"/>
<C_Cpp:Ref xmi:id="_KsLQUCBbEeOMKsPXBVC0DA" base_parameter="_KrTGkCBbEeOMKsPXBVC0DA"/>
<C_Cpp:Ref xmi:id="_KtJgsCBbEeOMKsPXBVC0DA" base_parameter="_KsQv4CBbEeOMKsPXBVC0DA"/>
<C_Cpp:Ref xmi:id="_KuT-UCBbEeOMKsPXBVC0DA" base_parameter="_KtbNgCBbEeOMKsPXBVC0DA"/>
<C_Cpp:Ref xmi:id="_KvRnoCBbEeOMKsPXBVC0DA" base_parameter="_KuZd4CBbEeOMKsPXBVC0DA"/>
<C_Cpp:Ref xmi:id="_KwUwgCBbEeOMKsPXBVC0DA" base_parameter="_KvdN0CBbEeOMKsPXBVC0DA"/>
<C_Cpp:Ref xmi:id="_KxTA4CBbEeOMKsPXBVC0DA" base_parameter="_Kwa3ICBbEeOMKsPXBVC0DA"/>
<C_Cpp:Ref xmi:id="_KyWw0CBbEeOMKsPXBVC0DA" base_parameter="_KxeAACBbEeOMKsPXBVC0DA"/>
<C_Cpp:Ref xmi:id="_KzVBMCBbEeOMKsPXBVC0DA" base_parameter="_Kyc3cCBbEeOMKsPXBVC0DA"/>
<C_Cpp:Ref xmi:id="_K0YxICBbEeOMKsPXBVC0DA" base_parameter="_KzgAUCBbEeOMKsPXBVC0DA"/>
<C_Cpp:Ref xmi:id="_K1dvMCBbEeOMKsPXBVC0DA" base_parameter="_K0e3wCBbEeOMKsPXBVC0DA"/>
<C_Cpp:Ref xmi:id="_K2hfICBbEeOMKsPXBVC0DA" base_parameter="_K1pVYCBbEeOMKsPXBVC0DA"/>
<C_Cpp:Ref xmi:id="_K3fvgCBbEeOMKsPXBVC0DA" base_parameter="_K2m-sCBbEeOMKsPXBVC0DA"/>
<C_Cpp:Ref xmi:id="_K4jfcCBbEeOMKsPXBVC0DA" base_parameter="_K3rVsCBbEeOMKsPXBVC0DA"/>
<C_Cpp:Ref xmi:id="_K5hv0CBbEeOMKsPXBVC0DA" base_parameter="_K4o_ACBbEeOMKsPXBVC0DA"/>
<C_Cpp:Const xmi:id="_K6lfwCBbEeOMKsPXBVC0DA" base_parameter="_K5su8CBbEeOMKsPXBVC0DA"/>
<C_Cpp:Ptr xmi:id="_K6tbkCBbEeOMKsPXBVC0DA" base_parameter="_K5su8CBbEeOMKsPXBVC0DA"/>
<C_Cpp:Const xmi:id="_K72rECBbEeOMKsPXBVC0DA" base_parameter="_K696QCBbEeOMKsPXBVC0DA"/>
<C_Cpp:Ptr xmi:id="_K7-m4CBbEeOMKsPXBVC0DA" base_parameter="_K696QCBbEeOMKsPXBVC0DA"/>
<C_Cpp:Const xmi:id="_K-E4oCBbEeOMKsPXBVC0DA" base_parameter="_K9MH0CBbEeOMKsPXBVC0DA"/>
<C_Cpp:Ptr xmi:id="_LBAQ0CBbEeOMKsPXBVC0DA" base_parameter="_LAIHECBbEeOMKsPXBVC0DA"/>
<C_Cpp:Ref xmi:id="_LCF18CBbEeOMKsPXBVC0DA" base_parameter="_LBNFICBbEeOMKsPXBVC0DA"/>
<C_Cpp:Const xmi:id="_LDJl4CBbEeOMKsPXBVC0DA" base_parameter="_LCQ1ECBbEeOMKsPXBVC0DA"/>
<C_Cpp:Ptr xmi:id="_LDRhsCBbEeOMKsPXBVC0DA" base_parameter="_LCQ1ECBbEeOMKsPXBVC0DA"/>
<C_Cpp:Ref xmi:id="_LEb_UCBbEeOMKsPXBVC0DA" base_parameter="_LDcg0CBbEeOMKsPXBVC0DA"/>
<C_Cpp:Ref xmi:id="_LGX5ACBbEeOMKsPXBVC0DA" base_parameter="_LFfIMCBbEeOMKsPXBVC0DA"/>
<C_Cpp:Ref xmi:id="_LITLoCBbEeOMKsPXBVC0DA" base_parameter="_LHaa0CBbEeOMKsPXBVC0DA"/>
<C_Cpp:Ref xmi:id="_LKOeQCBbEeOMKsPXBVC0DA" base_parameter="_LJWUgCBbEeOMKsPXBVC0DA"/>
<C_Cpp:Ref xmi:id="_LMPQcCBbEeOMKsPXBVC0DA" base_parameter="_LLWfoCBbEeOMKsPXBVC0DA"/>
<C_Cpp:Ref xmi:id="_LOJU8CBbEeOMKsPXBVC0DA" base_parameter="_LNRLMCBbEeOMKsPXBVC0DA"/>
<C_Cpp:Ref xmi:id="_LQFOoCBbEeOMKsPXBVC0DA" base_parameter="_LPMd0CBbEeOMKsPXBVC0DA"/>
<C_Cpp:Const xmi:id="_LRI-kCBbEeOMKsPXBVC0DA" base_parameter="_LQQNwCBbEeOMKsPXBVC0DA"/>
<C_Cpp:Ref xmi:id="_LRQTUCBbEeOMKsPXBVC0DA" base_parameter="_LQQNwCBbEeOMKsPXBVC0DA"/>
<C_Cpp:Ref xmi:id="_LSOjsCBbEeOMKsPXBVC0DA" base_parameter="_LRVy4CBbEeOMKsPXBVC0DA"/>
<C_Cpp:Const xmi:id="_MvXQECBbEeOMKsPXBVC0DA" base_parameter="_MufGUCBbEeOMKsPXBVC0DA"/>
<C_Cpp:Ref xmi:id="_MvfL4CBbEeOMKsPXBVC0DA" base_parameter="_MufGUCBbEeOMKsPXBVC0DA"/>
<C_Cpp:Const xmi:id="_MwiUwCBbEeOMKsPXBVC0DA" base_parameter="_MvqLACBbEeOMKsPXBVC0DA"/>
<C_Cpp:Ref xmi:id="_MwppgCBbEeOMKsPXBVC0DA" base_parameter="_MvqLACBbEeOMKsPXBVC0DA"/>
<C_Cpp:Const xmi:id="_MxtZcCBbEeOMKsPXBVC0DA" base_parameter="_Mw1PsCBbEeOMKsPXBVC0DA"/>
<C_Cpp:Ptr xmi:id="_Mx0uMCBbEeOMKsPXBVC0DA" base_parameter="_Mw1PsCBbEeOMKsPXBVC0DA"/>
<C_Cpp:Ref xmi:id="_PF7e0CBbEeOMKsPXBVC0DA" base_parameter="_PFCG8CBbEeOMKsPXBVC0DA"/>
<C_Cpp:Const xmi:id="_PG_OwCBbEeOMKsPXBVC0DA" base_parameter="_PGGd8CBbEeOMKsPXBVC0DA"/>
<C_Cpp:Ref xmi:id="_PHIYsCBbEeOMKsPXBVC0DA" base_parameter="_PGGd8CBbEeOMKsPXBVC0DA"/>
<C_Cpp:Ref xmi:id="_PILhkCBbEeOMKsPXBVC0DA" base_parameter="_PHTX0CBbEeOMKsPXBVC0DA"/>
<C_Cpp:Const xmi:id="_PJJx8CBbEeOMKsPXBVC0DA" base_parameter="_PIRoMCBbEeOMKsPXBVC0DA"/>
<C_Cpp:Ref xmi:id="_PJRtwCBbEeOMKsPXBVC0DA" base_parameter="_PIRoMCBbEeOMKsPXBVC0DA"/>
<C_Cpp:Ref xmi:id="_PKU2oCBbEeOMKsPXBVC0DA" base_parameter="_PJcs4CBbEeOMKsPXBVC0DA"/>
<C_Cpp:Const xmi:id="_PLTHACBbEeOMKsPXBVC0DA" base_parameter="_PKaWMCBbEeOMKsPXBVC0DA"/>
<C_Cpp:Ptr xmi:id="_PLabwCBbEeOMKsPXBVC0DA" base_parameter="_PKaWMCBbEeOMKsPXBVC0DA"/>
<C_Cpp:Ref xmi:id="_PMqY8CBbEeOMKsPXBVC0DA" base_parameter="_PLrhgCBbEeOMKsPXBVC0DA"/>
<C_Cpp:Const xmi:id="_PNp3cCBbEeOMKsPXBVC0DA" base_parameter="_PMwfkCBbEeOMKsPXBVC0DA"/>
<C_Cpp:Ref xmi:id="_PNxMMCBbEeOMKsPXBVC0DA" base_parameter="_PMwfkCBbEeOMKsPXBVC0DA"/>
<C_Cpp:Ref xmi:id="_PO2KQCBbEeOMKsPXBVC0DA" base_parameter="_PN8yYCBbEeOMKsPXBVC0DA"/>
<C_Cpp:Const xmi:id="_PP0aoCBbEeOMKsPXBVC0DA" base_parameter="_PO7p0CBbEeOMKsPXBVC0DA"/>
<C_Cpp:Ptr xmi:id="_PP7vYCBbEeOMKsPXBVC0DA" base_parameter="_PO7p0CBbEeOMKsPXBVC0DA"/>
<C_Cpp:Const xmi:id="_PRLFgCBbEeOMKsPXBVC0DA" base_parameter="_PQSUsCBbEeOMKsPXBVC0DA"/>
<C_Cpp:Ptr xmi:id="_PRSaQCBbEeOMKsPXBVC0DA" base_parameter="_PQSUsCBbEeOMKsPXBVC0DA"/>
<C_Cpp:Ref xmi:id="_PSc34CBbEeOMKsPXBVC0DA" base_parameter="_PRkHECBbEeOMKsPXBVC0DA"/>
<C_Cpp:Const xmi:id="_PTh18CBbEeOMKsPXBVC0DA" base_parameter="_PSoeECBbEeOMKsPXBVC0DA"/>
<C_Cpp:Ptr xmi:id="_PTvRUCBbEeOMKsPXBVC0DA" base_parameter="_PSoeECBbEeOMKsPXBVC0DA"/>
<C_Cpp:Const xmi:id="_PU5H4CBbEeOMKsPXBVC0DA" base_parameter="_PUAXECBbEeOMKsPXBVC0DA"/>
<C_Cpp:Ptr xmi:id="_PVAcoCBbEeOMKsPXBVC0DA" base_parameter="_PUAXECBbEeOMKsPXBVC0DA"/>
<C_Cpp:Const xmi:id="_PW6hICBbEeOMKsPXBVC0DA" base_parameter="_PWCXYCBbEeOMKsPXBVC0DA"/>
<C_Cpp:Ptr xmi:id="_PXB14CBbEeOMKsPXBVC0DA" base_parameter="_PWCXYCBbEeOMKsPXBVC0DA"/>
<C_Cpp:Const xmi:id="_PYLscCBbEeOMKsPXBVC0DA" base_parameter="_PXTisCBbEeOMKsPXBVC0DA"/>
<C_Cpp:Ptr xmi:id="_PYTBMCBbEeOMKsPXBVC0DA" base_parameter="_PXTisCBbEeOMKsPXBVC0DA"/>
<C_Cpp:Ptr xmi:id="_aWlTsCBbEeOMKsPXBVC0DA" base_parameter="_aVr70CBbEeOMKsPXBVC0DA"/>
<C_Cpp:Ptr xmi:id="_aX1Q4CBbEeOMKsPXBVC0DA" base_parameter="_aW1yYCBbEeOMKsPXBVC0DA"/>
<C_Cpp:Ptr xmi:id="_aZGcMCBbEeOMKsPXBVC0DA" base_parameter="_aYL2MCBbEeOMKsPXBVC0DA"/>
<C_Cpp:Ptr xmi:id="_aaQ50CBbEeOMKsPXBVC0DA" base_parameter="_aZW64CBbEeOMKsPXBVC0DA"/>
<C_Cpp:Ptr xmi:id="_abawYCBbEeOMKsPXBVC0DA" base_parameter="_aah_kCBbEeOMKsPXBVC0DA"/>
<C_Cpp:Ptr xmi:id="_cuaGsCBbEeOMKsPXBVC0DA" base_parameter="_cth88CBbEeOMKsPXBVC0DA"/>
<C_Cpp:Const xmi:id="_cvj9QCBbEeOMKsPXBVC0DA" base_parameter="_curMcCBbEeOMKsPXBVC0DA"/>
<C_Cpp:Ptr xmi:id="_cvrSACBbEeOMKsPXBVC0DA" base_parameter="_curMcCBbEeOMKsPXBVC0DA"/>
<C_Cpp:Ptr xmi:id="_cww3ICBbEeOMKsPXBVC0DA" base_parameter="_cv8XwCBbEeOMKsPXBVC0DA"/>
<C_Cpp:Const xmi:id="_c16c4CBbEeOMKsPXBVC0DA" base_parameter="_c1BsECBbEeOMKsPXBVC0DA"/>
<C_Cpp:Ref xmi:id="_c2CYsCBbEeOMKsPXBVC0DA" base_parameter="_c1BsECBbEeOMKsPXBVC0DA"/>
<C_Cpp:Const xmi:id="_c6sPMCBbEeOMKsPXBVC0DA" base_parameter="_c5y3UCBbEeOMKsPXBVC0DA"/>
<C_Cpp:Ref xmi:id="_c6zj8CBbEeOMKsPXBVC0DA" base_parameter="_c5y3UCBbEeOMKsPXBVC0DA"/>
<C_Cpp:Ptr xmi:id="_dAUWECBbEeOMKsPXBVC0DA" base_parameter="_c_WFsCBbEeOMKsPXBVC0DA"/>
<C_Cpp:Const xmi:id="_elC4MCBbEeOMKsPXBVC0DA" base_parameter="_ekJgUCBbEeOMKsPXBVC0DA"/>
<C_Cpp:Ref xmi:id="_elKM8CBbEeOMKsPXBVC0DA" base_parameter="_ekJgUCBbEeOMKsPXBVC0DA"/>
<C_Cpp:Const xmi:id="_emOj8CBbEeOMKsPXBVC0DA" base_parameter="_elVMECBbEeOMKsPXBVC0DA"/>
<C_Cpp:Ptr xmi:id="_emWfwCBbEeOMKsPXBVC0DA" base_parameter="_elVMECBbEeOMKsPXBVC0DA"/>
<C_Cpp:Ptr xmi:id="_eodYkCBbEeOMKsPXBVC0DA" base_parameter="_enfIMCBbEeOMKsPXBVC0DA"/>
<C_Cpp:Ref xmi:id="_eqfY4CBbEeOMKsPXBVC0DA" base_parameter="_epmBACBbEeOMKsPXBVC0DA"/>
<C_Cpp:Ref xmi:id="_ereQUCBbEeOMKsPXBVC0DA" base_parameter="_eqk4cCBbEeOMKsPXBVC0DA"/>
<C_Cpp:Const xmi:id="_esdu0CBbEeOMKsPXBVC0DA" base_parameter="_erkW8CBbEeOMKsPXBVC0DA"/>
<C_Cpp:Ref xmi:id="_eslDkCBbEeOMKsPXBVC0DA" base_parameter="_erkW8CBbEeOMKsPXBVC0DA"/>
<C_Cpp:Ref xmi:id="_etqBoCBbEeOMKsPXBVC0DA" base_parameter="_eswpwCBbEeOMKsPXBVC0DA"/>
<C_Cpp:Ref xmi:id="_euo5ECBbEeOMKsPXBVC0DA" base_parameter="_etvhMCBbEeOMKsPXBVC0DA"/>
<C_Cpp:Ref xmi:id="_evspACBbEeOMKsPXBVC0DA" base_parameter="_euuYoCBbEeOMKsPXBVC0DA"/>
<C_Cpp:Ref xmi:id="_gpeOECBbEeOMKsPXBVC0DA" base_parameter="_gok2MCBbEeOMKsPXBVC0DA"/>
<C_Cpp:Const xmi:id="_grg1cCBbEeOMKsPXBVC0DA" base_parameter="_gqndkCBbEeOMKsPXBVC0DA"/>
<C_Cpp:Ref xmi:id="_groKMCBbEeOMKsPXBVC0DA" base_parameter="_gqndkCBbEeOMKsPXBVC0DA"/>
<C_Cpp:Const xmi:id="_gszO4CBbEeOMKsPXBVC0DA" base_parameter="_grzwYCBbEeOMKsPXBVC0DA"/>
<C_Cpp:Ref xmi:id="_gs6joCBbEeOMKsPXBVC0DA" base_parameter="_grzwYCBbEeOMKsPXBVC0DA"/>
<C_Cpp:Ptr xmi:id="_gt5bECBbEeOMKsPXBVC0DA" base_parameter="_gtADMCBbEeOMKsPXBVC0DA"/>
<C_Cpp:Ptr xmi:id="_gv170CBbEeOMKsPXBVC0DA" base_parameter="_gu8j8CBbEeOMKsPXBVC0DA"/>
<C_Cpp:Const xmi:id="_gx4jMCBbEeOMKsPXBVC0DA" base_parameter="_gw_LUCBbEeOMKsPXBVC0DA"/>
<C_Cpp:Ref xmi:id="_gyAfACBbEeOMKsPXBVC0DA" base_parameter="_gw_LUCBbEeOMKsPXBVC0DA"/>
<C_Cpp:Ptr xmi:id="_gy_WcCBbEeOMKsPXBVC0DA" base_parameter="_gyF-kCBbEeOMKsPXBVC0DA"/>
<C_Cpp:Ptr xmi:id="_g0bg4CBbEeOMKsPXBVC0DA" base_parameter="_gziJACBbEeOMKsPXBVC0DA"/>
<C_Cpp:Ptr xmi:id="_g1hGACBbEeOMKsPXBVC0DA" base_parameter="_g0nHECBbEeOMKsPXBVC0DA"/>
<C_Cpp:Const xmi:id="_g3ol4CBbEeOMKsPXBVC0DA" base_parameter="_g2vOACBbEeOMKsPXBVC0DA"/>
<C_Cpp:Ref xmi:id="_g3v6oCBbEeOMKsPXBVC0DA" base_parameter="_g2vOACBbEeOMKsPXBVC0DA"/>
<C_Cpp:Ptr xmi:id="_g8qP0CBbEeOMKsPXBVC0DA" base_parameter="_g7w38CBbEeOMKsPXBVC0DA"/>
<C_Cpp:Ptr xmi:id="_g9um0CBbEeOMKsPXBVC0DA" base_parameter="_g812ACBbEeOMKsPXBVC0DA"/>
<C_Cpp:Ptr xmi:id="_hA0XECBbEeOMKsPXBVC0DA" base_parameter="_g_6_MCBbEeOMKsPXBVC0DA" declaration="**"/>
<C_Cpp:Ptr xmi:id="_hC9FECBbEeOMKsPXBVC0DA" base_parameter="_hCDtMCBbEeOMKsPXBVC0DA"/>
<C_Cpp:Const xmi:id="_hHxToCBbEeOMKsPXBVC0DA" base_parameter="_hG37wCBbEeOMKsPXBVC0DA"/>
<C_Cpp:Ref xmi:id="_hH4oYCBbEeOMKsPXBVC0DA" base_parameter="_hG37wCBbEeOMKsPXBVC0DA"/>
<C_Cpp:Ptr xmi:id="_hLD4MCBbEeOMKsPXBVC0DA" base_parameter="_hKKgUCBbEeOMKsPXBVC0DA" declaration="**"/>
<C_Cpp:Ptr xmi:id="_jBXSgCBbEeOMKsPXBVC0DA" base_parameter="_jAdTkCBbEeOMKsPXBVC0DA" declaration="**"/>
<C_Cpp:Ptr xmi:id="_jCjlUCBbEeOMKsPXBVC0DA" base_parameter="_jBoYQCBbEeOMKsPXBVC0DA"/>
<C_Cpp:Const xmi:id="_jEthcCBbEeOMKsPXBVC0DA" base_parameter="_jDy7cCBbEeOMKsPXBVC0DA"/>
<C_Cpp:Ref xmi:id="_jE02MCBbEeOMKsPXBVC0DA" base_parameter="_jDy7cCBbEeOMKsPXBVC0DA"/>
<C_Cpp:Ref xmi:id="_jF50QCBbEeOMKsPXBVC0DA" base_parameter="_jFAcYCBbEeOMKsPXBVC0DA"/>
<C_Cpp:Const xmi:id="_jOtyACBbEeOMKsPXBVC0DA" base_parameter="_jNzzECBbEeOMKsPXBVC0DA"/>
<C_Cpp:Ptr xmi:id="_jO1t0CBbEeOMKsPXBVC0DA" base_parameter="_jNzzECBbEeOMKsPXBVC0DA"/>
<C_Cpp:Const xmi:id="_jQAygCBbEeOMKsPXBVC0DA" base_parameter="_jPGzkCBbEeOMKsPXBVC0DA"/>
<C_Cpp:Ptr xmi:id="_jQIuUCBbEeOMKsPXBVC0DA" base_parameter="_jPGzkCBbEeOMKsPXBVC0DA"/>
<C_Cpp:Const xmi:id="_jRO6gCBbEeOMKsPXBVC0DA" base_parameter="_jQUUgCBbEeOMKsPXBVC0DA"/>
<C_Cpp:Ptr xmi:id="_jRWPQCBbEeOMKsPXBVC0DA" base_parameter="_jQUUgCBbEeOMKsPXBVC0DA"/>
<C_Cpp:Const xmi:id="_jTgLYCBbEeOMKsPXBVC0DA" base_parameter="_jSmMcCBbEeOMKsPXBVC0DA"/>
<C_Cpp:Ptr xmi:id="_jTngICBbEeOMKsPXBVC0DA" base_parameter="_jSmMcCBbEeOMKsPXBVC0DA"/>
<C_Cpp:Const xmi:id="_jWi4UCBbEeOMKsPXBVC0DA" base_parameter="_jVo5YCBbEeOMKsPXBVC0DA"/>
<C_Cpp:Ptr xmi:id="_jWqNECBbEeOMKsPXBVC0DA" base_parameter="_jVo5YCBbEeOMKsPXBVC0DA"/>
<C_Cpp:Ptr xmi:id="_jZznsCBbEeOMKsPXBVC0DA" base_parameter="_jY5owCBbEeOMKsPXBVC0DA" declaration="**"/>
<C_Cpp:Const xmi:id="_jizLoCBbEeOMKsPXBVC0DA" base_parameter="_jh4loCBbEeOMKsPXBVC0DA"/>
<C_Cpp:Ptr xmi:id="_ji7HcCBbEeOMKsPXBVC0DA" base_parameter="_jh4loCBbEeOMKsPXBVC0DA"/>
<C_Cpp:Const xmi:id="_jkB6sCBbEeOMKsPXBVC0DA" base_parameter="_jjHUsCBbEeOMKsPXBVC0DA"/>
<C_Cpp:Ptr xmi:id="_jkJ2gCBbEeOMKsPXBVC0DA" base_parameter="_jjHUsCBbEeOMKsPXBVC0DA"/>
<C_Cpp:Const xmi:id="_jmO6ICBbEeOMKsPXBVC0DA" base_parameter="_jlUUICBbEeOMKsPXBVC0DA"/>
<C_Cpp:Ptr xmi:id="_jmW18CBbEeOMKsPXBVC0DA" base_parameter="_jlUUICBbEeOMKsPXBVC0DA"/>
<C_Cpp:Const xmi:id="_jnjIwCBbEeOMKsPXBVC0DA" base_parameter="_jmicICBbEeOMKsPXBVC0DA"/>
<C_Cpp:Ref xmi:id="_jnrEkCBbEeOMKsPXBVC0DA" base_parameter="_jmicICBbEeOMKsPXBVC0DA"/>
<C_Cpp:Const xmi:id="_joxQwCBbEeOMKsPXBVC0DA" base_parameter="_jn2qwCBbEeOMKsPXBVC0DA"/>
<C_Cpp:Ref xmi:id="_jo6asCBbEeOMKsPXBVC0DA" base_parameter="_jn2qwCBbEeOMKsPXBVC0DA"/>
<C_Cpp:Ptr xmi:id="_oiVAsCBbEeOMKsPXBVC0DA" base_parameter="_ohbBwCBbEeOMKsPXBVC0DA"/>
<C_Cpp:Ptr xmi:id="_ojfeUCBbEeOMKsPXBVC0DA" base_parameter="_oimGcCBbEeOMKsPXBVC0DA"/>
<C_Cpp:Const xmi:id="_p-pNsCBbEeOMKsPXBVC0DA" base_parameter="_p9unsCBbEeOMKsPXBVC0DA"/>
<C_Cpp:Ptr xmi:id="_p-wicCBbEeOMKsPXBVC0DA" base_parameter="_p9unsCBbEeOMKsPXBVC0DA"/>
<C_Cpp:Ptr xmi:id="_p_8OMCBbEeOMKsPXBVC0DA" base_parameter="_p_BoMCBbEeOMKsPXBVC0DA"/>
<C_Cpp:Ptr xmi:id="_qBIhACBbEeOMKsPXBVC0DA" base_parameter="_qANT8CBbEeOMKsPXBVC0DA"/>
<C_Cpp:Ptr xmi:id="_qCZsUCBbEeOMKsPXBVC0DA" base_parameter="_qBaN0CBbEeOMKsPXBVC0DA"/>
<C_Cpp:Ptr xmi:id="_qDlYECBbEeOMKsPXBVC0DA" base_parameter="_qCrZICBbEeOMKsPXBVC0DA"/>
<C_Cpp:Ptr xmi:id="_rg0LECBbEeOMKsPXBVC0DA" base_parameter="_rf6MICBbEeOMKsPXBVC0DA"/>
<C_Cpp:Const xmi:id="_rlG1MCBbEeOMKsPXBVC0DA" base_parameter="_rkMPMCBbEeOMKsPXBVC0DA"/>
<C_Cpp:Ref xmi:id="_rlOJ8CBbEeOMKsPXBVC0DA" base_parameter="_rkMPMCBbEeOMKsPXBVC0DA"/>
<C_Cpp:Ptr xmi:id="_v2FiMCBbEeOMKsPXBVC0DA" base_parameter="_v1LjQCBbEeOMKsPXBVC0DA"/>
<C_Cpp:Ptr xmi:id="_v3RN8CBbEeOMKsPXBVC0DA" base_parameter="_v2XPACBbEeOMKsPXBVC0DA"/>
<C_Cpp:Const xmi:id="_v4eH0CBbEeOMKsPXBVC0DA" base_parameter="_v3jh0CBbEeOMKsPXBVC0DA"/>
<C_Cpp:Ref xmi:id="_v4lckCBbEeOMKsPXBVC0DA" base_parameter="_v3jh0CBbEeOMKsPXBVC0DA"/>
<standard:Create xmi:id="_jMIuAL-QEeWzCKjiZE_bAw" base_BehavioralFeature="_ZtXqAE_xEdy2tpS719xBwQ"/>
<C_Cpp:NoCodeGen xmi:id="_AKjPML-_EeWSBNihBXiulQ" base_element="_9-OUUE_uEdy2tpS719xBwQ"/>
</xmi:XMI>