| <?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,
 |
| 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
 |
| added to (read from) the buffer by means of overloaded << (>>) 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 ();
 |
| resetWriter ();
 |
| </body> |
| </ownedBehavior> |
| <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_miDeYFCqEdyTutVzffQTmQ" name="MessageBuffer" specification="_3v1yUFClEdyTutVzffQTmQ"> |
| <language>C/C++</language> |
| <body> m_data_start = m_buffer;
 |
| reset ();
 |
| </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);
 |
| // m_data_start is modified by a subclass, thus, we cannot simply
 |
| // reset m_data_start to m_buffer
 |
| m_data_start = m_buffer + (msgBuf.m_data_start - msgBuf.m_buffer);
 |
| m_reader_ptr = m_buffer + (msgBuf.m_reader_ptr - msgBuf.m_buffer);
 |
| m_writer_ptr = m_buffer + (msgBuf.m_writer_ptr - msgBuf.m_buffer);
 |
| </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) {
 |
| OSAL_ERROR("Message buffer too small");
 |
| }
 |
| memcpy (m_writer_ptr, ptr, size);
 |
| // keep alignment of pointers
 |
| m_writer_ptr += (size + MB_ALIGNMENT - 1) & (- MB_ALIGNMENT);
 |
| </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) {
 |
| OSAL_ERROR("read past end of buffer");
 |
| }
 |
| memcpy (ptr, m_reader_ptr, size);
 |
| m_reader_ptr += (size + MB_ALIGNMENT - 1) & (- MB_ALIGNMENT);
 |
| </body> |
| </ownedBehavior> |
| <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_p3s1wDR1EdypGbuyt3_DaA" name="operator<<" 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( &bstr.nbytes, sizeof (size_t));
 |
| msg.addToBuffer( bstr.charTable, bstr.nbytes+1);
 |
| return msg;
 |
| </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;
 |
| msg.getFromBuffer (&length, sizeof (size_t));
 |
| if (length < bstr.charTableSize) {
 |
| msg.getFromBuffer (bstr.charTable, length+1);
 |
| bstr.nbytes = length;
 |
| bstr.current = bstr.charTable;
 |
| }
 |
| return msg;
 |
| </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
 |
| 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
 |
| method but the overloaded << 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
 |
| 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
 |
| initialize the reader and writer pointers. It is used by subclasses
 |
| that modify the data_start and therefore need to invoke reset
 |
| 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<<" method="_p3s1wDR1EdypGbuyt3_DaA"> |
| <ownedComment xmi:type="uml:Comment" xmi:id="_OgIngDRQEdy1p4IpsoZYqA" annotatedElement="_lKriQDRPEdy1p4IpsoZYqA"> |
| <body>declare specific marshalling operators for BString, since
 |
| (1) this is more efficient
 |
| (2) a memory copy based marshalling would copy pointers that become
 |
| 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.
 |
| For the sake of efficiency, the storage of the header is mapped directly
 |
| 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);
 |
| reset ();
 |
| </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
 |
| 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
 |
| the zone number has been removed from the constructor, since the zone
 |
| number is not defined at compile time [todo: would that be a good
 |
| idea?] and its initialization would not work for statically declared
 |
| messages.
 |
| 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
 |
| 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 &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);
 |
| // constructor without args is useful e.g. for use as element of an array
 |
| </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);
 |
| 
 |
| int r;
 |
| 
 |
| #ifdef SYNCHRO_VxWorks
 |
| r = openIntern (char1, 0, 0, size, synchro);
 |
| #else
 |
| r = openIntern (char1, O_RDWR | O_CREAT, 0777, size, synchro);
 |
| #endif
 |
| if (r == -1)
 |
| OSAL_ERROR ("ON open(O_RDWR | O_CREAT, ...)");
 |
| </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;
 |
| 
 |
| m_name = name;
 |
| #ifdef SYNCHRO_VxWorks
 |
| r = openIntern (char1, 0, 0, size, synchro);
 |
| #else
 |
| r = openIntern (char1, O_RDWR | O_CREAT, 0777, size, synchro);
 |
| #endif
 |
| 
 |
| return r;
 |
| </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;
 |
| 
 |
| r = (void *) m_address;
 |
| char * newAddr;
 |
| 
 |
| newAddr = m_address + itemSize;
 |
| if (newAddr - m_address0 > shmSize)
 |
| {
 |
| BString500 s1 ("allocation fails: shared memory '");
 |
| OSAL_ERROR (s1 << m_name.data ()
 |
| << "' : shmSize= " << shmSize << " is too small");
 |
| }
 |
| 
 |
| m_address = newAddr;
 |
| 
 |
| return r;
 |
| </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;
 |
| 
 |
| #if defined SYNCHRO_Linux
 |
| //cout<<"SHM name : "<<m_name.data()<<endl;
 |
| r = shm_unlink (m_name.data ());
 |
| //if(r == -1)
 |
| // PRINTerr("ON shm_unlink");
 |
| 
 |
| #elif defined SYNCHRO_Solaris || defined SYNCHRO_Cygwin
 |
| if (m_id != -1)
 |
| {
 |
| r = shmdt (m_address00); // detach
 |
| if (r == -1)
 |
| PRINTerr ("ON shmdt (m_address)");
 |
| else
 |
| {
 |
| struct shmid_ds semStat;
 |
| r = shmctl (m_id, IPC_STAT, &semStat);
 |
| if (r == -1)
 |
| PRINTerr ("ON shmctl(m_id, IPC_STAT, )");
 |
| else if (semStat.shm_nattch == 0)
 |
| { /**** Only for the last process coming here ****/
 |
| r = shmctl (m_id, IPC_RMID, NULL);
 |
| if (r == -1)
 |
| PRINTerr ("ON shmctl( ,IPC_RMID, )");
 |
| //essai DS 7/11/02 pour virer les fichiers *.shmKey
 |
| //mais n'a pas l'air de marcher en Solaris 2.7
 |
| // et gnu
 |
| //::unlink(m_name.data()); // remove the file system entry,
 |
| // BUT so, 'key' would not be const
 |
| }
 |
| }
 |
| }
 |
| #endif
 |
| 
 |
| return r;
 |
| </body> |
| </ownedBehavior> |
| <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_rbZVcFC2EdyqzLG48ixyqA" name="SharedMemory" specification="_yFEm4FCwEdyqzLG48ixyqA"> |
| <language>C/C++</language> |
| <body> if (m_mutex != NULL) {
 |
| delete m_mutex;
 |
| }
 |
| unlink ();
 |
| </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)
 |
| {
 |
| /**** Only for the 1st process coming here ****/
 |
| // 4-- check if shared memory is filled with 0
 |
| for (int i = 0; i < size; ++i)
 |
| #ifndef SYNCHRO_VxWorks
 |
| if (m_address00[i])
 |
| {
 |
| BString500 s1 ("shm zone not clean. DO : ipcrm -M ");
 |
| OSAL_ERROR (s1 << (long) m_key);
 |
| }
 |
| #else
 |
| m_address00[i] = '\0';
 |
| #endif
 |
| // 5- If access synchronisation is wanted, use of a shared mutex
 |
| if (synchro)
 |
| {
 |
| // a mutex needs to be allocated in shared memory
 |
| // and initialised once
 |
| m_mutex = new (allocate (sizeof (SM_Mutex))) SM_Mutex ();
 |
| m_address0 = m_address; // Hide this first item
 |
| }
 |
| }
 |
| else
 |
| {
 |
| /**** for next processes : allocate, but not initialize ****/
 |
| // we need a semaphore to block up to the end of the
 |
| // zone memory initialuzation
 |
| // 5- If access synchronisation is wanted, use of a shared m_mutex
 |
| if (synchro)
 |
| {
 |
| // a mutex needs to be allocated in shared memory
 |
| m_mutex = (SM_Mutex *) allocate (sizeof (SM_Mutex));
 |
| m_address0 = m_address; // Hide this first item
 |
| }
 |
| }
 |
| </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);
 |
| PR (showI);
 |
| 
 |
| int r = 0;
 |
| 
 |
| shmSize = size; // required size
 |
| if (synchro)
 |
| size += sizeof (SM_Mutex); // useful size
 |
| 
 |
| //============================================================
 |
| #if defined SYNCHRO_Linux
 |
| // creation of a new segment
 |
| r = m_id = shm_open (m_name.data (), oflag, 00777);
 |
| if (m_id == -1)
 |
| {
 |
| OSAL_ERROR ("ON shm_open");
 |
| }
 |
| // the returned id is a file descriptor. Thus, the size of the
 |
| // memory identified by the descriptor can be set via ftruncate
 |
| if (ftruncate (m_id, size) == -1)
 |
| OSAL_ERROR ("ON ftruncate");
 |
| // mapping memory
 |
| m_address00 =
 |
| (char *) mmap (0, size, PROT_READ | PROT_WRITE, MAP_SHARED, m_id, 0);
 |
| 
 |
| if (m_address00 == MAP_FAILED)
 |
| OSAL_ERROR ("ON mmap");
 |
| // creation of a mutex at the address m_address00
 |
| m_mutex = (SM_Mutex *) m_address00;
 |
| // address0 : adress of the start of the available segment
 |
| m_address0 = m_address00 + sizeof (SM_Mutex);
 |
| //address : current adress
 |
| m_address = m_address0;
 |
| 
 |
| //============================================================
 |
| 
 |
| #elif SYNCHRO_VxWorks
 |
| 
 |
| // 'm_name' specified a physical address visiable for the CPU
 |
| /* currently not used
 |
| long memPart; // memory partition
 |
| m_name.setBase (16);
 |
| m_name >> memPart;
 |
| */
 |
| 
 |
| #ifdef MultiCPU // for multi CPU, with optional VxMP component
 |
| //--- See VxWorks5.3.1 Programmer's Guide, Example 6-3 -------
 |
| // [todo the system partition is preallocated, but where du we see
 |
| // the generation of the kernel? sysMemTop()?]
 |
| {
 |
| SEM_ID localSemId;
 |
| typedef struct shared_buff
 |
| {
 |
| SEM_ID semSmId;
 |
| char buff[]; // [size CHUNK_SIZE ?]
 |
| } SHARED_BUFF;
 |
| SHARED_BUFF *laOfAlSMB; // local address of shared memory block
 |
| SHARED_BUFF *gaOfAlSMB; // global address of shared Memory block
 |
| int objType;
 |
| 
 |
| // is this the first demand of the 'shared memory block' of the
 |
| // system partition?
 |
| r = smNameFind (m_name.data (), (void **) &gaOfAlSMB, &objType,
 |
| WAIT_FOREVER);
 |
| if (r == -1 && errno != S_smNameLib_NAME_NOT_FOUND)
 |
| OSAL_ERROR ("ON smNameFind()");
 |
| if (r == OK)
 |
| {
 |
| // CREATION
 |
| laOfAlSMB = (SHARED_BUFF *) smMemMalloc (size);
 |
| if (laOfAlSMB == NULL)
 |
| OSAL_ERROR ("ON smMemMalloc()");
 |
| m_address = m_address0 = m_address00 = laOfAlSMB;
 |
| 
 |
| if (synchro)
 |
| {
 |
| localSemId = semBSmCreate (SEM_QFIFO, SEM_EMPTY);
 |
| if (localSemId == NULL)
 |
| OSAL_ERROR ("ON semBSmCreate()");
 |
| laOfAlSMB->semSmId = (SEM_ID) htonl ((int) localSemId);
 |
| }
 |
| 
 |
| r = (char *) smNameAdd (m_name.data (),
 |
| (void *) smObjLocalToGlobal (laOfAlSMB),
 |
| T_SM_BLOCK);
 |
| if (r == -1)
 |
| OSAL_ERROR ("ON smNameAdd()");
 |
| 
 |
| if (synchro)
 |
| {
 |
| r = semGive (localSemId);
 |
| if (r == -1)
 |
| OSAL_ERROR ("ON semGive()");
 |
| }
 |
| init1 (TRUE, synchro, size);
 |
| }
 |
| else
 |
| {
 |
| // RE-UTILISATION
 |
| laOfAlSMB = (SHARED_BUFF *) smObjGlobalToLocal (gaOfAlSMB);
 |
| m_address = m_address0 = m_address00 = laOfAlSMB;
 |
| localSemId = (SEM_ID) ntohl ((int) laOfAlSMB->semSmId);
 |
| if (synchro)
 |
| {
 |
| r = semTake (localSemId, WAIT_FOREVER);
 |
| if (r == -1)
 |
| OSAL_ERROR ("ON semTake()");
 |
| }
 |
| }
 |
| // ---------------------------------------------------------------
 |
| }
 |
| #else // monoCPU
 |
| #ifdef OutOfHeap
 |
| id = (int) memPartCreate (m_address00, size);
 |
| if (id == NULL)
 |
| OSAL_ERROR ("ON memPartCreate()");
 |
| m_address00 = memPartAlloc (m_id, size /* -?? */ );
 |
| if (m_address00 == NULL)
 |
| OSAL_ERROR ("ON memPartAlloc()");
 |
| #else
 |
| m_address00 = new char[size];
 |
| #endif
 |
| m_address = m_address0 = m_address00;
 |
| init1 (TRUE, synchro, size); // 1 seul process (createur)
 |
| #endif
 |
| 
 |
| // ============================================================
 |
| 
 |
| #elif defined SYNCHRO_Solaris || defined SYNCHRO_Cygwin
 |
| m_name << ".shmKey"; // add a suffix to recognize it with Ipcrm
 |
| 
 |
| // 1- Get the key from the name ----------------------------------------
 |
| 
 |
| // #define GET_KEY 1 //--- version proposed by SUN, BUT
 |
| // the key returned by ftok() is: 0xCHMMMINO
 |
| // CH is the character char1
 |
| // INO is the inodenumber of the file & 0xFFF
 |
| // MMM is the minor unit number of the file system, but if the file
 |
| // system is mounted via NFS, it is not guaranted to find the
 |
| // same minor number after a reboot which prevents us to conserve
 |
| // this number within a script for its destruction
 |
| // #define GET_KEY 2 //--- version perso
 |
| #define GET_KEY 1
 |
| #if GET_KEY == 1
 |
| while (m_key == -1)
 |
| {
 |
| m_key = ftok (m_name.data (), char1);
 |
| if (m_key == -1)
 |
| {
 |
| int fd =::creat (m_name.data (), 00777);
 |
| if (fd == -1)
 |
| {
 |
| BString500 s1 ("ON ::creat('");
 |
| OSAL_ERROR (s1 << m_name << "', 00777)");
 |
| }
 |
| close (fd);
 |
| }
 |
| }
 |
| #else // GET_KEY == 2
 |
| int fd =::creat (m_name.data (), 00777);
 |
| if (fd == -1)
 |
| {
 |
| BString500 s1 ("ON ::creat('");
 |
| OSAL_ERROR (s1 << m_name.data () << "', 00777)");
 |
| }
 |
| struct stat st;
 |
| if (fstat (fd, &st) == -1) {
 |
| OSAL_ERROR ("ON fstat(fd, &st)");
 |
| }
 |
| 
 |
| // inode number is unique inside a filesystem
 |
| m_key = (st.st_ino + classKey) & 0xFFFFFF;
 |
| // (st_ino,st_dev) uniquely identifies regular files
 |
| // but ino_t and dev_t are of type ulong_t: too large for a m_key !
 |
| 
 |
| m_key |= ((char1 & 0xFF) << 24);
 |
| // m_key = 0xCHINODEI does not guarantee uniqueness for the same inode on
 |
| // two file systems
 |
| // but ftok() guarantees less (+ dependency de mount NFS ...)
 |
| close (fd);
 |
| 
 |
| #endif //--- GET_KEY
 |
| 
 |
| #define ATT_SHM 2
 |
| // 1 shmget(IPC_CREAT | IPC_EXCL): in case of no error
 |
| // it is for the creator, who makes initializations
 |
| // although it is not the first attached.
 |
| 
 |
| // 2- Get the shared memory identifier ---------------------------------
 |
| 
 |
| #if ATT_SHM == 1
 |
| r = m_id = shmget (m_key, size, 00777 | IPC_CREAT);
 |
| if (r == -1)
 |
| OSAL_ERROR ("ON shmget(m_key, size, 00777 | IPC_CREAT)");
 |
| 
 |
| // 3 - Attach the shared memory to an address in the calling
 |
| // address-space (zone)
 |
| m_address = m_address0 = m_address00 = (char *) shmat (m_id, 0, 0);
 |
| if ((int) m_address0 == -1)
 |
| OSAL_ERROR ("ON shmat(m_id, )");
 |
| 
 |
| {
 |
| // CriticalSection. Who is taking it?
 |
| struct shmid_ds stat;
 |
| r = shmctl (m_id, IPC_STAT, &stat);
 |
| if (r == -1)
 |
| OSAL_ERROR ("ON shmctl(shmId, IPC_STAT, )");
 |
| init1 (stat.shm_nattch < 2, synchro, size);
 |
| }
 |
| 
 |
| #else // ATT_SHM == 2 --------------------------------------------------
 |
| bool creator;
 |
| errno = 0;
 |
| r = m_id = shmget (m_key, size, 00777 | IPC_CREAT | IPC_EXCL);
 |
| if (r == -1)
 |
| {
 |
| if (errno == EEXIST)
 |
| {
 |
| r = m_id = shmget (m_key, size, 0);
 |
| // we know we are not the creator (first who demands) of the zone
 |
| creator = FALSE;
 |
| if (r == -1)
 |
| OSAL_ERROR ("ON shmget(m_key, size, 0)");
 |
| }
 |
| else
 |
| OSAL_ERROR ("ON shmget(m_key, size, IPC_CREAT | IPC_EXCL)");
 |
| }
 |
| else
 |
| {
 |
| // For the creator of this shared memory:
 |
| creator = TRUE;
 |
| }
 |
| 
 |
| // 3 - Attach the shared memory to an address in the calling
 |
| // address-space (zone)
 |
| m_address = m_address0 = m_address00 = (char *) shmat (m_id, 0, 0);
 |
| if ((int) m_address0 == -1)
 |
| OSAL_ERROR ("ON shmat(m_id, )");
 |
| 
 |
| init1 (creator, synchro, size);
 |
| #endif // ATT_SHM
 |
| 
 |
| #endif // SYNCHRO_Solaris || SYNCHRO_Cygwin
 |
| // ============================================================
 |
| 
 |
| PR ("for " << m_name << " , m_key= " << (long) m_key
 |
| << ", required size= " << shmSize << ", effective size= "
 |
| << size << showI
 |
| << ", adr00 = " << (void *) m_address00
 |
| << ", adr0 = " << (void *) m_address0
 |
| << ", adr = " << (void *) m_address << showI);
 |
| 
 |
| return r;
 |
| </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
 |
| 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,
 |
| accessible file). Together with the least significant 8 bits of
 |
| char1 (which must be nonzero) a key for the access is generated.
 |
| 
 |
| oflag is not used.
 |
| 
 |
| If synchro is TRUE, an instance of class SM_Mutex is place at the
 |
| begin of the segment, increasing its size. The first process
 |
| establishing a connection that to ensure that the segment is
 |
| 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
 |
| This address is might not be the same for all processes, but all
 |
| 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
 |
| of successive allocate calls is the same for all communicating
 |
| processes, they share the same view of the segment organization.
 |
| If there is not enough space for the item, the process is stopped
 |
| 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
 |
| priorities and the thread's lifecycle (suspend/resume/exit).
 |
| 
 |
| \code
 |
| Example:
 |
| 
 |
| class Run {
 |
| void run ();
 |
| static void run_fct (void * arg);
 |
| }
 |
| 
 |
| void Run::run_fct (void * arg)
 |
| {
 |
| ((Run*) myThreadCode)->run ();
 |
| }
 |
| 
 |
| void Run::run ()
 |
| {
 |
| // do something ...
 |
| }
 |
| 
 |
| Thread myThread ("MyThread");
 |
| myThread.exec (myThreadCode);
 |
| \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
 |
| 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
 |
| 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
 |
| 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);
 |
| PR ("Thread::Thread (...)" << showI);
 |
| 
 |
| if (attrPtr != NULL) {
 |
| m_threadAttributes = *attrPtr;
 |
| }
 |
| int r = exec (startRoutine, arg, exPrio);
 |
| 
 |
| if (r < 0) {
 |
| OSAL_ERROR ("could not exec thread");
 |
| }
 |
| 
 |
| set_of_threads.append (this);
 |
| </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) {
 |
| m_threadAttributes = *attrPtr;
 |
| }
 |
| 
 |
| set_of_threads.append (this);
 |
| </body> |
| </ownedBehavior> |
| <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_-P0M4E_pEdy2tpS719xBwQ" name="Thread" specification="_vOOWoE_hEdy2tpS719xBwQ"> |
| <language>C/C++</language> |
| <body> TRACEpr (VM);
 |
| PR ("Thread::~Thread () : isDetached () = " << isDetached ()
 |
| << ", m_joined= " << m_joined << showI);
 |
| 
 |
| if (!isDetached () && !m_joined) {
 |
| // don't join, if thread hasn't been executed yet.
 |
| if (m_threadId != 0) {
 |
| PR ("really delete thread, m_threadId: " << m_threadId << showI);
 |
| join ();
 |
| }
 |
| }
 |
| set_of_threads.eraseValue (this);
 |
| </body> |
| </ownedBehavior> |
| <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_AwmHkE_qEdy2tpS719xBwQ" name="initZ " specification="_5LQAcE_hEdy2tpS719xBwQ"> |
| <language>C/C++</language> |
| <body> TRACEpr (VM);
 |
| PR ("Thread::initZ ()" << showI);
 |
| 
 |
| #if defined THREAD_VxWorks
 |
| bool stackFill = ProDesc::isEnvTrue ("A_StackFill");
 |
| m_vx_options = VX_FP_TASK | (stackFill ? 0 : VX_NO_STACK_FILL);
 |
| #elif defined THREAD_Linux || defined THREAD_POSIX4
 |
| m_suspendPriority = 1; // lowest priority for SCHED_RR/SCHED_FIFO
 |
| #endif
 |
| </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
 |
| modifySigMask (SIG_BLOCK, SIGRTMIN);
 |
| ((Thread*) arg)->entryRoutine ();
 |
| </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
 |
| return pthread_self ();
 |
| 
 |
| #elif defined THREAD_Solaris
 |
| return thr_self ();
 |
| 
 |
| #elif defined THREAD_VxWorks //-VxW
 |
| return taskIdSelf ();
 |
| #endif
 |
| </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 ();
 |
| for (int i = 0; i < set_of_threads.size (); i++) {
 |
| if (set_of_threads.get(i)->m_threadId == id) {
 |
| return set_of_threads.get(i)->m_name;
 |
| }
 |
| }
 |
| return threadName_main;
 |
| </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);
 |
| PR ("Thread::getPriority ()" << showI);
 |
| 
 |
| int priority;
 |
| 
 |
| #if defined THREAD_POSIX4
 |
| SchedParam schedParam;
 |
| int policy;
 |
| if (pthread_getschedparam (getId (), &policy, &schedParam)) {
 |
| OSAL_ERROR ("ON pthread_getschedparam(...)");
 |
| }
 |
| priority = schedParam.sched_priority;
 |
| 
 |
| #elif defined THREAD_Solaris
 |
| 
 |
| // errno= thr_getprio(thr_self(), &pri);
 |
| // if (errno) OSAL_ERROR("ON thr_getprio()");
 |
| 
 |
| pcparms_t params;
 |
| params.pc_cid = PC_CLNULL;
 |
| long l;
 |
| l = priocntl (P_LWPID, _lwp_self (), PC_GETPARMS, (caddr_t) & params);
 |
| if (l == -1L)
 |
| OSAL_ERROR ("ON priocntl( , PC_GETPARMS, )");
 |
| 
 |
| rtparms_t *rtParms = (rtparms_t *) params.pc_clparms;
 |
| prio = rtParms->rt_pri;
 |
| 
 |
| #elif defined THREAD_VxWorks
 |
| if (taskPriorityGet (taskIdSelf (), &prio)) //-VxW
 |
| OSAL_ERROR ("ON taskPriorityGet()");
 |
| #endif
 |
| 
 |
| return priority;
 |
| </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);
 |
| PR ("Thread::setPriority (" << prio << "), old prio: "
 |
| << getPriority () << showI);
 |
| 
 |
| #if defined THREAD_POSIX4
 |
| SchedParam schedParam;
 |
| schedParam.sched_priority = prio;
 |
| 
 |
| if (pthread_setschedparam (getId (), m_policy, &schedParam)) {
 |
| OSAL_ERROR ("ON pthread_setschedparam (...)");
 |
| }
 |
| 
 |
| #elif defined THREAD_Solaris
 |
| pcparms_t params;
 |
| params.pc_cid = ProDesc::_classId ();
 |
| long l;
 |
| 
 |
| rtparms_t *rtParms = (rtparms_t *) params.pc_clparms;
 |
| rtParms->rt_pri = prio;
 |
| rtParms->rt_tqsecs = 0;
 |
| rtParms->rt_tqnsecs = RT_NOCHANGE;
 |
| l = priocntl (P_LWPID, _lwp_self (), PC_SETPARMS, (caddr_t) & params);
 |
| if (l == -1L)
 |
| {
 |
| BString500 tmp ("to pri= ");
 |
| tmp << prio << ", ON priocntl( , PC_SETPARMS, )";
 |
| OSAL_ERROR (tmp);
 |
| }
 |
| 
 |
| #elif defined THREAD_VxWorks
 |
| if (taskPrioritySet (taskIdSelf (), prio)) //-VxW
 |
| OSAL_ERROR ("ON taskPrioritySet()");
 |
| #endif
 |
| PR (" after setting, prio= " << getPriority () << showI);
 |
| </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);
 |
| PR ("Thread::changeSigMask (...)" << showI);
 |
| 
 |
| #if defined THREAD_POSIX4 || defined THREAD_Linux
 |
| errno = pthread_sigmask (how, newSet, oldSet);
 |
| if (errno) {
 |
| OSAL_ERROR ("ON pthread_sigmask()");
 |
| }
 |
| #elif defined THREAD_Solaris
 |
| errno = thr_sigsetmask (how, newSet, oldSet);
 |
| if (errno) {
 |
| OSAL_ERROR ("ON thr_sigsetmask()");
 |
| }
 |
| #elif defined THREAD_VxWorks
 |
| if (sigprocmask (how, newSet, oldSet)) { //-VxW
 |
| OSAL_ERROR ("ON sigprocmask()");
 |
| }
 |
| #endif
 |
| </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;
 |
| if (sigemptyset (&sigSet) == -1) {
 |
| OSAL_ERROR ("ON sigemptyset( )");
 |
| }
 |
| if (sigaddset (&sigSet, signalID) == -1) { // add 'sig' as a signal
 |
| OSAL_ERROR ("ON sigaddset( )");
 |
| }
 |
| 
 |
| Thread::changeSigMask (how, &sigSet, NULL); // modify signal mask
 |
| </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;
 |
| changeSigMask (SIG_UNBLOCK, NULL, &sigSet); // get current signal mask
 |
| 
 |
| PRINTpr ("signals to block for current thread ");
 |
| PR (" : \n\t\t");
 |
| 
 |
| for (int s = 1; s < SIGRTMAX; ++s) {
 |
| if (sigismember (&sigSet, s))
 |
| {
 |
| #ifdef SYSTEM_VxWorks
 |
| PR (s << ", ");
 |
| #else
 |
| PR (strsignal (s) << ", ");
 |
| #endif
 |
| }
 |
| }
 |
| 
 |
| PR (showI);
 |
| </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);
 |
| PR ("Thread::exit ()" << showI);
 |
| 
 |
| #if defined THREAD_POSIX4 || defined THREAD_Linux
 |
| throw ("Thread::exit() : throw()"); // an attempt for exception catching
 |
| pthread_exit (status);
 |
| 
 |
| #elif defined THREAD_Solaris
 |
| throw ("Thread::exit() : throw()"); // an attempt for exception catching
 |
| thr_exit (status);
 |
| 
 |
| #elif defined THREAD_VxWorks
 |
| // throw("Thread::exit(): throw()"); => 'use -fhandle-exceptions to enable'
 |
| // but VxWorks does not support C/C++ exceptions
 |
| int code = status ? *(int *) status : 0;
 |
| ::exit (code);
 |
| #endif
 |
| </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
 |
| m_startRoutine = startRoutine; // save pointer for entryRoutine
 |
| m_startArg = arg; // save pointer for entryRoutine
 |
| m_execPrio = execPrio; // demanded priority
 |
| 
 |
| m_threadAttributes.getDetached ();
 |
| 
 |
| #if defined THREAD_POSIX4
 |
| 
 |
| pthread_attr_t attributes;
 |
| pthread_attr_init (&attributes);
 |
| pthread_attr_setdetachstate (&attributes,
 |
| (isDetached () ? PTHREAD_CREATE_DETACHED : PTHREAD_CREATE_JOINABLE));
 |
| if (m_threadAttributes.getStackAddr () != NULL) {
 |
| #ifdef THREAD_LINUX
 |
| pthread_attr_setstack (&attributes,
 |
| m_threadAttributes.getStackAddr (),
 |
| m_threadAttributes.getStackSize ());
 |
| #endif
 |
| }
 |
| else if (m_threadAttributes.getStackSize () != 0) {
 |
| pthread_attr_setstacksize (&attributes,
 |
| m_threadAttributes.getStackSize ());
 |
| }
 |
| 
 |
| if (execPrio != DefaultExecPrio) {
 |
| if (m_RTthreads) {
 |
| pthread_attr_setinheritsched (&attributes, PTHREAD_EXPLICIT_SCHED);
 |
| }
 |
| pthread_attr_setschedpolicy (&attributes, m_policy);
 |
| sched_param sp;
 |
| sp.sched_priority = execPrio;
 |
| pthread_attr_setschedparam (&attributes, &sp);
 |
| }
 |
| 
 |
| errno = pthread_create (&m_threadId, &attributes,
 |
| entryRoutC, (void *) this); // , startRoutine, arg
 |
| 
 |
| #elif defined THREAD_Solaris
 |
| long flags = THR_BOUND; // THR_NEW_LWP leads to SIGLWP;
 |
| if (ProDesc::existEnv ("A_ThreadFlags"))
 |
| {
 |
| OS_AL::Util::BString500 s (ProDesc::getEnv ("A_ThreadFlags"));
 |
| if (s == "THR_BOUND")
 |
| flags = THR_BOUND;
 |
| else if (s == "THR_NEW_LWP")
 |
| flags = THR_NEW_LWP;
 |
| else
 |
| OSAL_ERROR
 |
| ("Recognised values for A_ThreadFlags : THR_BOUND, THR_NEW_LWP.");
 |
| }
 |
| if (isDetached ()) {
 |
| flags |= THR_DETACHED;
 |
| }
 |
| errno = thr_create (
 |
| m_threadAttributes.getStackAddr (),
 |
| m_threadAttributes.getStackSize (),
 |
| (PfAvpRvp) entryRoutC, (void *) this, // , startRoutine, arg
 |
| flags, &thrId);
 |
| 
 |
| #elif defined THREAD_VxWorks
 |
| if (execPrio == DefaultExecPrio)
 |
| {
 |
| // priority of this tasks inherits by current tasks
 |
| if (taskPriorityGet (taskIdSelf (), &m_execPrio)) //-VxW
 |
| PRINTerr ("ON taskPriorityGet()");
 |
| }
 |
| m_threadId =
 |
| taskSpawn (NULL, m_execPrio, m_vx_options,
 |
| (int) m_threadAttributes.getStackSize (),
 |
| (FUNCPTR) entryRoutC, (int) this, 0, 0, 0, 0, 0, 0, 0, 0, 0);
 |
| if (m_threadId != -1)
 |
| errno = 0; // OK
 |
| 
 |
| #endif
 |
| if ((errno && (errno != EINTR))) {
 |
| if (errno == EPERM) {
 |
| OS_AL::Util::Print warning;
 |
| warning << "warning: insufficient permission to create rt-thread (must be root)" << showI;
 |
| if (m_RTthreads)
 |
| {
 |
| warning << "falling back to non-rt threads" << showI;
 |
| m_RTthreads = false;
 |
| // retry exec
 |
| // use "return" to avoid that semaphore wait is executed twice
 |
| return exec (startRoutine, arg, execPrio);
 |
| }
 |
| }
 |
| else {
 |
| OSAL_ERROR (OS_AL::Util::BString50 ("thread_create() failed with code ") << errno);
 |
| }
 |
| }
 |
| 
 |
| #if defined THREAD_POSIX4 || THREAD_Linux || THREAD_Solaris
 |
| // No error on thread_create... continue
 |
| m_semaphore.wait();
 |
| 
 |
| #endif
 |
| TRACEpr (VM);
 |
| PR ("return." << showI);
 |
| return errno;
 |
| </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
 |
| lwpId = _lwp_self ();
 |
| #endif
 |
| #if !defined THREAD_VxWorks // else done in taskSpawn ()
 |
| // synchronization to force the system to start this thread
 |
| // [todo: necessary?]
 |
| m_semaphore.post ();
 |
| #endif
 |
| 
 |
| m_startRoutine (m_startArg); // go to user function
 |
| 
 |
| #ifdef THREAD_VxWorks
 |
| if (!isDetached ())
 |
| m_semaphore.post ();
 |
| #endif
 |
| 
 |
| m_threadId = (pthread_t) ThExecOUT; // quasi completed
 |
| </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;
 |
| 
 |
| #if defined THREAD_POSIX4 || defined THREAD_Linux
 |
| currentId = pthread_self ();
 |
| 
 |
| #elif defined THREAD_Solaris
 |
| currentId = thr_self ();
 |
| 
 |
| #elif defined THREAD_VxWorks
 |
| currentId = taskIdSelf (); //-VxW
 |
| #endif
 |
| 
 |
| return (currentId == m_threadId);
 |
| </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);
 |
| PR ("Thread::resume ()" << showI);
 |
| 
 |
| OS_AL::Util::Print pr2;
 |
| pr2 << "in resume" << showI;
 |
| int r = 0;
 |
| 
 |
| if (m_threadId == 0)
 |
| OSAL_ERROR ("call exec() first");
 |
| 
 |
| if ((int) m_threadId != ThExecOUT)
 |
| { // Execution not completed
 |
| #if defined THREAD_POSIX4
 |
| // version that uses priority modification
 |
| SchedParam schedParam;
 |
| schedParam.sched_priority = m_execPrio;
 |
| r = pthread_setschedparam (m_threadId, m_policy, &schedParam);
 |
| 
 |
| if (r && r != ESRCH) {
 |
| OS_AL::Util::Print pr;
 |
| pr << "Thread::resume: cannot change thread priority. Are you root?"
 |
| << showI;
 |
| }
 |
| 
 |
| #elif defined THREAD_Solaris
 |
| r = thr_continue (m_threadId);
 |
| // only ESRCH is possible
 |
| 
 |
| #elif defined THREAD_VxWorks
 |
| if (taskResume (m_threadId) == -1) { //-VxW
 |
| r = errno;
 |
| }
 |
| else {
 |
| r = 0;
 |
| }
 |
| 
 |
| #endif
 |
| }
 |
| else {
 |
| r = 0; // Execution has been completed
 |
| }
 |
| 
 |
| return r;
 |
| </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);
 |
| PR ("Thread::suspend ()" << showI);
 |
| 
 |
| int r = 0;
 |
| 
 |
| if (m_threadId == 0) {
 |
| OSAL_ERROR ("Thread::suspend (): call exec() first");
 |
| }
 |
| OS_AL::Util::Print pr2;
 |
| pr2 << "in suspend" << showI;
 |
| 
 |
| if ((int) m_threadId != ThExecOUT)
 |
| {
 |
| #if defined THREAD_POSIX4 || defined THREAD_Linux
 |
| // suspend by setting priority to a low value. Only works for root
 |
| SchedParam schedParam;
 |
| schedParam.sched_priority = m_suspendPriority;
 |
| 
 |
| if (pthread_setschedparam (m_threadId, m_policy, &schedParam) != 0) {
 |
| OS_AL::Util::Print pr2;
 |
| pr2 << "Thread::suspend: cannot change thread priority. Are you root?"
 |
| << showI;
 |
| }
 |
| #elif defined THREAD_Solaris
 |
| // version with real suspension:
 |
| r = thr_suspend (m_threadId);
 |
| // only ESRCH is possible
 |
| #elif defined THREAD_VxWorks
 |
| if (taskSuspend (m_threadId) == -1) { //-VxW
 |
| r = errno;
 |
| }
 |
| else {
 |
| r = 0;
 |
| }
 |
| #endif
 |
| }
 |
| else {
 |
| OSAL_ERROR ("Execution has been completed.");
 |
| }
 |
| return r;
 |
| </body> |
| </ownedBehavior> |
| <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_1UZ7oE_qEdy2tpS719xBwQ" name="runBackground" specification="_x0gqIE_mEdy2tpS719xBwQ"> |
| <language>C/C++</language> |
| <body>TRACEpr (VM);
 |
| PR ("Thread::runBackground ()" << showI);
 |
| 
 |
| OS_AL::Util::Print pr2;
 |
| pr2 << "run background" << showI;
 |
| if (m_threadId == 0) {
 |
| OSAL_ERROR ("Tread::runBackground (): call exec() first");
 |
| }
 |
| 
 |
| if ((int) m_threadId != ThExecOUT) {
 |
| int backgroundPriority = 0; // background priority
 |
| setPriority (backgroundPriority);
 |
| }
 |
| else {
 |
| OSAL_ERROR ("Execution has been completed.");
 |
| }
 |
| </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);
 |
| PR ("Thread::join (...)" << showI);
 |
| 
 |
| if ((int) m_threadId != ThExecOUT)
 |
| {
 |
| int r;
 |
| 
 |
| if (isDetached ()) {
 |
| errno = EINVAL; // join is forbiden (and not necessary)
 |
| }
 |
| else { // attached
 |
| if (m_joined) {
 |
| errno = EINVAL; // already joined
 |
| }
 |
| else {
 |
| #if defined THREAD_POSIX4 || defined THREAD_Linux
 |
| PR ("join thread 1" << showI);
 |
| // if (pthread_equal (m_threadId, pthread_self ()) == 0)
 |
| {
 |
| PR ("join thread 2" << showI);
 |
| r = errno = pthread_join (m_threadId, status);
 |
| }
 |
| #elif defined THREAD_Solaris
 |
| errno = 0;
 |
| r = errno = thr_join (m_threadId, NULL, status);
 |
| 
 |
| #elif defined THREAD_VxWorks
 |
| m_semaphore.wait ();
 |
| m_joined = true;
 |
| #endif
 |
| 
 |
| #if defined THREAD_POSIX4 || defined THREAD_Linux || defined THREAD_Solaris
 |
| if (r == 0) {
 |
| m_joined = true;
 |
| }
 |
| #endif
 |
| }
 |
| }
 |
| if (errno && (errno != ESRCH)) {
 |
| OSAL_ERROR ("join of threads failed");
 |
| }
 |
| }
 |
| // else Execution has been completed. OK.
 |
| </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);
 |
| PR ("Thread::cancel ()" << showI);
 |
| 
 |
| int r;
 |
| 
 |
| if (m_threadId == 0)
 |
| OSAL_ERROR ("call exec() firstly.");
 |
| 
 |
| if ((int) m_threadId != ThExecOUT)
 |
| {
 |
| #if defined THREAD_POSIX4 || defined THREAD_Linux
 |
| // treat as well? setCancelState(), setCancelType(), testCancel(),
 |
| // cleanupPush(), cleanupPop() ??
 |
| r = errno = pthread_cancel (m_threadId);
 |
| #elif defined THREAD_Solaris
 |
| r = errno = thr_kill (m_threadId, CancelThSIG);
 |
| 
 |
| #elif defined THREAD_VxWorks
 |
| // use taskSafe() and taskUnsafe() ??
 |
| r = taskDelete (m_threadId);
 |
| 
 |
| #endif
 |
| 
 |
| if (errno)
 |
| {
 |
| OS_AL::Util::BString500 tmp ("m_threadId= ");
 |
| tmp << m_threadId;
 |
| OSAL_ERROR (tmp);
 |
| }
 |
| }
 |
| else
 |
| r = 0; // Execution has been completed. OK.
 |
| 
 |
| return r;
 |
| </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
 |
| identify the thread in the trace files.
 |
| 
 |
| By default, the Thread will block the SIGRTMIN signal which is
 |
| 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
 |
| pointer to ThreadAttributes.
 |
| 
 |
| By default, the Thread will block the SIGRTMIN signal which is
 |
| 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
 |
| and the suspension mode (static method). This method has to
 |
| 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
 |
| the how and newmask arguments. If oldmask is not NULL, the previous
 |
| signal mask is stored in the location pointed to by oldmask.
 |
| 
 |
| The meaning of the how and newmask arguments is the same as for
 |
| sig-procmask(2). If how is SIG_SETMASK, the signal mask is set to
 |
| newmask.
 |
| If how is SIG_BLOCK, the signals specified to newmask are added to
 |
| the current signal mask.
 |
| If how is SIG_UNBLOCK, the signals specified to newmask are removed
 |
| from the current signal mask.
 |
| Recall that signal masks are set on a per-thread basis, but signal
 |
| actions and signal handlers, as set with sigaction(2), are shared
 |
| 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.
 |
| Compared to changeSigMask, it is more convenient to use if a single
 |
| signal is modified, since the user does not have to create a set and
 |
| 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
 |
| will start the entryRoutine, which acts as a wrapper for the execution
 |
| of the passed startRoutine. The parameter arg will be passed to it
 |
| (often a "this" pointer, if a static method is passed).
 |
| 
 |
| The last parameter is the Tasks priority. It is optional, if not
 |
| given, the priority has a default value.
 |
| 
 |
| Don't confuse this method with the Task::exec which will execute
 |
| 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
 |
| 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
 |
| is detached (becomes independent from initiator) or joinable (it
 |
| can be/has to be explicitly joined by the thread initiator).
 |
| 
 |
| => 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;
 |
| #if defined THREAD_POSIX4 || THREAD_Linux
 |
| m_stackSize = 0; // use defaults from system
 |
| #else
 |
| m_stackSize = 0x10000; // default values : 64 Kbytes
 |
| #endif
 |
| m_detached = true;
 |
| </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
 |
| if (stackSize != 0 && stackSize < PTHREAD_STACK_MIN) {
 |
| #else
 |
| if (stackSize != 0) {
 |
| #endif
 |
| return -EINVAL;
 |
| }
 |
| else
 |
| {
 |
| m_stackSize = stackSize;
 |
| return 0;
 |
| }
 |
| </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:
 |
| - a stack address chosen by the system
 |
| - a stack size of 64K in case of Solaris and vxWorks
 |
| or the system default, in case of Linux
 |
| - 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
 |
| return getpid ();
 |
| #elif defined SYSTEM_Solaris
 |
| return getpid ();
 |
| #elif defined SYSTEM_VxWorks
 |
| return Thread::getMyId ();
 |
| #else
 |
| SYSTEM_x_not_defined;
 |
| return -1;
 |
| #endif
 |
| </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
 |
| return getppid ();
 |
| #elif defined SYSTEM_Solaris
 |
| return getppid ();
 |
| #elif defined SYSTEM_VxWorks
 |
| return -1;
 |
| #else
 |
| SYSTEM_x_not_defined;
 |
| return -1;
 |
| #endif
 |
| </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);
 |
| m_sigOnErr = errSig;
 |
| 
 |
| m_pauseOnErr = isEnvTrue ("A_PauseOnErr");
 |
| errno = 0;
 |
| 
 |
| if (existEnv ("A_NumberOfProcesses"))
 |
| {
 |
| m_numberOfProcesses = atoi (getEnv ("A_NumberOfProcesses"));
 |
| if (m_numberOfProcesses < 1)
 |
| {
 |
| OSAL_ERROR
 |
| ("The environment variable 'A_NumberOfProcesses' must be > 0");
 |
| }
 |
| }
 |
| 
 |
| #if defined SYSTEM_Solaris
 |
| pcparms_t params;
 |
| params.pc_cid = PC_CLNULL; // To force update of pc_cid
 |
| long l;
 |
| l = priocntl (P_PID, getPid (), PC_GETPARMS, (caddr_t) & params);
 |
| if (l == -1L)
 |
| OSAL_ERROR ("ON priocntl( , PC_GETPARMS, )");
 |
| classId = params.pc_cid;
 |
| 
 |
| pcinfo_t infos;
 |
| infos.pc_cid = classId; // Infos about current process
 |
| l = priocntl ((idtype_t) 0, (id_t) 0, PC_GETCLINFO, (caddr_t) & infos);
 |
| if (l == -1L)
 |
| OSAL_ERROR ("ON priocntl( , PC_GETCLINFO, )");
 |
| 
 |
| m_prioMax = 59;
 |
| m_prioMin = 0;
 |
| 
 |
| #else // SYSTEM_POSIX4, SYSTEM_Linux and SYSTEM_VxWorks
 |
| 
 |
| m_policy = sched_getscheduler (getPid ());
 |
| if (m_policy == -1)
 |
| OSAL_ERROR ("ON sched_getscheduler(myPid)");
 |
| PR (" Current scheduling policy is ");
 |
| PR ((m_policy == SCHED_FIFO ? "SCHED_FIFO" :
 |
| (m_policy == SCHED_RR ? "SCHED_RR" : "SCHED_OTHER")));
 |
| 
 |
| posixPriorityNumbering = true; // for VxWorks, otherwise number inversion
 |
| 
 |
| m_prioMax = sched_get_priority_max (m_policy);
 |
| if (m_prioMax == -1)
 |
| OSAL_ERROR ("ON sched_get_priority_max()");
 |
| m_prioMin = sched_get_priority_min (m_policy);
 |
| if (m_prioMin == -1)
 |
| OSAL_ERROR ("ON sched_get_priority_min()");
 |
| 
 |
| #endif
 |
| 
 |
| PR (", priority mini for a thread =" << m_prioMin);
 |
| PR (", priority maxi for a thread =" << m_prioMax << showI);
 |
| </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;
 |
| const char *p =::getenv (name);
 |
| if (p && *p != '\0')
 |
| r = true;
 |
| 
 |
| return r;
 |
| </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
 |
| const char *p =::getenv (name);
 |
| 
 |
| // result is "" if name is not found in environment
 |
| 
 |
| return (p ? p : "");
 |
| </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)
 |
| 
 |
| const char *p = ::getenv (name);
 |
| if (p && *p != '\0')
 |
| {
 |
| char *pEnd;
 |
| r = (int) strtol (p, &pEnd, base);
 |
| if (pEnd == p) {
 |
| // the variable exists, but is not numeric
 |
| OS_AL::Util::BString200 s ("Environment variable '");
 |
| s << name << "' should be integer.";
 |
| OSAL_ERROR (s);
 |
| }
 |
| }
 |
| 
 |
| return r;
 |
| </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
 |
| const char *p = ::getenv (name);
 |
| if (p) {
 |
| char c = *p;
 |
| if (c == 't' || c == 'T' || // true or TRUE or True or ...
 |
| c == 'y' || c == 'Y') { // yes or YES or Yes or ...
 |
| r = true;
 |
| }
 |
| else if (c == 'f' || c == 'F' || c == 'n' || c == 'N') {
 |
| // false is already assigned
 |
| }
 |
| else {
 |
| OS_AL::Util::BString200 str (name);
 |
| OSAL_ERROR (str << " is not boolean.");
 |
| }
 |
| }
 |
| 
 |
| return r;
 |
| </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) {
 |
| init ();
 |
| }
 |
| 
 |
| return m_numberOfProcesses;
 |
| </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;
 |
| m_argv = argv;
 |
| </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 < 0) || (zoneNumber >= m_numberOfProcesses)) {
 |
| OSAL_ERROR ("requires : 0 <= number < numberOfProcesses");
 |
| }
 |
| 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) {
 |
| OSAL_ERROR ("zone number not yet assigned");
 |
| }
 |
| 
 |
| 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) {
 |
| init ();
 |
| }
 |
| 
 |
| 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) {
 |
| init ();
 |
| }
 |
| 
 |
| 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;
 |
| 
 |
| if (prio < getPrioMin () || prio > getPrioMax ())
 |
| {
 |
| OS_AL::Util::BString200 s ("priority = ");
 |
| s << prio << " out of range [" << getPrioMin ()
 |
| << ", " << getPrioMax () << "]";
 |
| OSAL_ERROR (s);
 |
| }
 |
| 
 |
| #ifdef SYSTEM_VxWorks
 |
| OSAL_ERROR ("Not available with VxWorks"); //-VxW
 |
| // sched_setparam() set a task's priority for VxWorks
 |
| // for us, a task is a thread
 |
| // VxWorks is mono-process (only 1 address space)
 |
| // so inter-process facilities like this one should not be required
 |
| 
 |
| #elif defined SYSTEM_POSIX4
 |
| struct sched_param params;
 |
| params.sched_priority = prio;
 |
| 
 |
| r = sched_setparam (0, &params);
 |
| if (r == -1)
 |
| OSAL_ERROR ("ON sched_setparam()");
 |
| 
 |
| #elif defined SYSTEM_Linux
 |
| if (getPolicy () != SCHED_OTHER)
 |
| {
 |
| // SCHED_RR or SCHED_FIFO: use POSIX functions to change static priority
 |
| struct sched_param params;
 |
| params.sched_priority = prio;
 |
| r = sched_setparam (0, &params);
 |
| if (r == -1)
 |
| OSAL_ERROR ("ON sched_setparam()");
 |
| }
 |
| else
 |
| {
 |
| // TIME-SHARING
 |
| // We have to be super-user to modify the priority
 |
| }
 |
| #else
 |
| if (getPolicy () != SCHED_OTHER)
 |
| { // REAL-TIME
 |
| pcparms_t params;
 |
| params.pc_cid = classId;
 |
| long l;
 |
| 
 |
| rtparms_t *rtParms = (rtparms_t *) params.pc_clparms;
 |
| rtParms->rt_pri = pri;
 |
| rtParms->rt_tqsecs = 0;
 |
| rtParms->rt_tqnsecs = RT_NOCHANGE;
 |
| l = priocntl (P_PID, getPid (), PC_SETPARMS, (caddr_t) & params);
 |
| if (l == -1L)
 |
| OSAL_ERROR ("ON priocntl( , PC_SETPARMS, )");
 |
| }
 |
| else {
 |
| // TIME-SHARING
 |
| // We have to be super-user to modify the priority
 |
| }
 |
| #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);
 |
| 
 |
| int prio = getMyPriority ();
 |
| PR ("old priority = " << prio);
 |
| 
 |
| #ifdef SYSTEM_VxWorks
 |
| prio = -1;
 |
| OSAL_ERROR ("Not available with VxWorks"); //-VxW
 |
| 
 |
| #elif defined SYSTEM_POSIX4
 |
| setMyPriority (prio - decrement);
 |
| 
 |
| #else
 |
| // Linux or other
 |
| if (getPolicy () != SCHED_OTHER)
 |
| { // REAL-TIME
 |
| setMyPriority (prio - decrement);
 |
| }
 |
| else
 |
| { // TIME-SHARING
 |
| if (nice (decrement) == -1)
 |
| OSAL_ERROR ("ON nice()");
 |
| }
 |
| PR (", new = " << getMyPriority() << showI);
 |
| #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;
 |
| 
 |
| #if defined SYSTEM_VxWorks
 |
| prio = -1;
 |
| OSAL_ERROR ("Not available with VxWorks"); //-VxW
 |
| 
 |
| #elif defined SYSTEM_POSIX4
 |
| struct sched_param params;
 |
| int r;
 |
| 
 |
| r = sched_getparam (0, &params);
 |
| if (r == -1)
 |
| OSAL_ERROR ("ON sched_getparam()");
 |
| prio = params.sched_priority;
 |
| 
 |
| 
 |
| #elif defined SYSTEM_Linux
 |
| if (getPolicy () != SCHED_OTHER)
 |
| {
 |
| // SCHED_RR or SCHED_FIFO: use POSIX functions to get static priority
 |
| struct sched_param params;
 |
| int r;
 |
| 
 |
| r = sched_getparam (0, &params);
 |
| if (r == -1)
 |
| OSAL_ERROR ("ON sched_getparam()");
 |
| prio = params.sched_priority;
 |
| }
 |
| else
 |
| {
 |
| // SCHED_OTHER: i.e. time-sharing like for Solaris: dynamic priority
 |
| errno = 0;
 |
| prio = getpriority (PRIO_PROCESS, getPid ());
 |
| if ((prio == -1) && (errno != 0))
 |
| OSAL_ERROR ("ON getpriority()");
 |
| }
 |
| #else
 |
| pcparms_t params;
 |
| params.pc_cid = classId;
 |
| long l;
 |
| l = priocntl (P_PID, P_MYID, PC_GETPARMS, (caddr_t) & params);
 |
| if (l == -1L)
 |
| OSAL_ERROR ("ON priocntl( , PC_GETPARMS, )");
 |
| 
 |
| if (isRealTime ())
 |
| { // REAL-TIME
 |
| rtparms_t *rtParms = (rtparms_t *) params.pc_clparms;
 |
| prio = rtParms->rt_pri;
 |
| }
 |
| else
 |
| { // TIME-SHARING
 |
| tsparms_t *tsParms = (tsparms_t *) params.pc_clparms;
 |
| prio = tsParms->ts_upri;
 |
| }
 |
| #endif
 |
| 
 |
| 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 ("error in ");
 |
| exitErrP (str0 << file << ":" << line << " : " << str);
 |
| </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 ("error in ");
 |
| exitErrP (str0 << file << ":" << line << " : " << str);
 |
| </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)
 |
| init ();
 |
| 
 |
| OS_AL::Util::Print pr1;
 |
| pr1 << str << showErr;
 |
| 
 |
| if (errno)
 |
| pr1 << " - error code/msg: " << strerror (errno);
 |
| errno = 0;
 |
| 
 |
| if (m_pauseOnErr) {
 |
| OS_AL::Util::Print pr2;
 |
| pr2 << "\n\t pausing due to error!" << showI;
 |
| pause (); // or for(;;) for debugger: debug appliX pid
 |
| }
 |
| 
 |
| // removed code that sends a signal instead of exiting
 |
| // [todo: reason might have been clean-up?]
 |
| exit (1);
 |
| </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
 |
| (uname), as well as the number of processors, the number of message
 |
| queues.
 |
| 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 = "";
 |
| 
 |
| // =======================================================================
 |
| #if defined SYSTEM_Cygwin
 |
| m_cpuNb = 1; // default value
 |
| 
 |
| // Max number of opened MQ
 |
| m_mqMax = _SC_MQ_OPEN_MAX;
 |
| // Max number of semaphores
 |
| m_semsMax = _SC_SEM_NSEMS_MAX;
 |
| 
 |
| // other system infos
 |
| m_hostId = gethostid ();
 |
| int hostIndex = 0;
 |
| 
 |
| #elif defined SYSTEM_POSIX4 || defined SYSTEM_Linux
 |
| m_cpuNb = 1; // default value
 |
| 
 |
| //*** Max number of Message Queues ***//
 |
| errno = 0;
 |
| m_mqMax = _POSIX_MQ_OPEN_MAX;
 |
| 
 |
| errno = 0;
 |
| m_semsMax = _POSIX_SEM_NSEMS_MAX;
 |
| 
 |
| // other system infos
 |
| m_hostId = gethostid ();
 |
| 
 |
| // =======================================================================
 |
| #elif defined SYSTEM_Solaris
 |
| // Number of configured CPUs
 |
| // or? _SC_NPROCESSORS_ONLN (see sysconf(3C) )
 |
| m_cpuNb = sysconf (_SC_NPROCESSORS_CONF);
 |
| 
 |
| //*** Max number of Message Queues ***//
 |
| errno = 0;
 |
| m_mqMax = sysconf (_SC_OPEN_MAX); // _SC_MQ_OPEN_MAX 'not defined...'
 |
| 
 |
| if (m_mqMax == -1)
 |
| OSAL_ERROR ("ON sysconf(_SC_OPEN_MAX)");
 |
| 
 |
| //*** Max number of Semaphores ***//
 |
| /*
 |
| semsMax= sysconf(_SC_SEM_NSEMS_MAX);
 |
| Extract of sysconf(3C) : If sysconf() fails due to
 |
| a value of name that is not defined on the system, the func-
 |
| tion will return a value of -1 without changing the value of
 |
| errno
 |
| */
 |
| 
 |
| /* in which library is _sysconf() ?
 |
| #include <sys/sysconfig.h>
 |
| int _sysconf(int);
 |
| 
 |
| semsMax = _sysconf(_CONFIG_SEM_NSEMS_MAX);
 |
| if (semsMax == -1)
 |
| OSAL_ERROR("ON sysconf(SEM_NSEMS_MAX)");
 |
| */
 |
| m_semsMax = 25; // semget( ) --> EINVAL au dela de 25
 |
| 
 |
| // =======================================================================
 |
| 
 |
| #elif defined SYSTEM_VxWorks
 |
| m_cpuNb = 1; // default value
 |
| 
 |
| //*** Max number of Message Queues ***//
 |
| errno = 0;
 |
| m_mqMax = SM_OBJ_MAX_MSG_Q;
 |
| 
 |
| //*** Max number of Semaphores ***//
 |
| errno = 0;
 |
| m_semsMax = SM_OBJ_MAX_SEM;
 |
| 
 |
| // =======================================================================
 |
| #endif
 |
| 
 |
| 
 |
| #if defined SYSTEM_Linux || defined SYSTEM_Solaris
 |
| struct utsname names;
 |
| if (uname (&names) < 0)
 |
| OSAL_ERROR ("ON uname( )");
 |
| 
 |
| m_hostName = names.nodename;
 |
| m_sysname = names.sysname;
 |
| m_release = names.release;
 |
| m_version = names.version;
 |
| m_machine = names.machine;
 |
| #endif
 |
| 
 |
| #ifdef DEBUG
 |
| activateDebugTimer ();
 |
| #endif
 |
| </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).
 |
| There is currently only one use of this class in SRcompeting (and the
 |
| 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);
 |
| 
 |
| TRACEpr (VM);
 |
| PR (showI);
 |
| 
 |
| if (++instanceNb > 1)
 |
| {
 |
| OSAL_ERROR ("in ThreadContext::ThreadContext: ++instanceNb > 1");
 |
| }
 |
| 
 |
| // puisque seulement 1 instance , key peut être non 'static' 
 |
| // et pas de précaution par mutex
 |
| #if defined THREAD_POSIX4
 |
| errno = pthread_key_create (&key, NULL);
 |
| if (errno) {
 |
| OSAL_ERROR ("ON pthread_key_create()");
 |
| }
 |
| 
 |
| #elif defined THREAD_Solaris
 |
| errno = thr_keycreate (&key, NULL);
 |
| if (errno) {
 |
| OSAL_ERROR ("ON thr_keycreate()");
 |
| }
 |
| 
 |
| #elif defined THREAD_VxWorks //-VxW
 |
| ;
 |
| #endif
 |
| </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
 |
| // d'avoir besoin du pointeur (spécifique de ce thread)
 |
| // via une variable globale (cf. operateur -> surchargé)
 |
| 
 |
| TRACEpr (VM);
 |
| PR (showI);
 |
| 
 |
| dataPtr = ptr;
 |
| #if defined THREAD_POSIX4
 |
| errno = pthread_setspecific (key, dataPtr);
 |
| if (errno) {
 |
| OSAL_ERROR ("ON pthread_setspecific()");
 |
| }
 |
| 
 |
| #elif defined THREAD_Solaris
 |
| errno = thr_setspecific (key, dataPtr);
 |
| if (errno) {
 |
| OSAL_ERROR ("ON thr_setspecific()");
 |
| }
 |
| 
 |
| #elif defined THREAD_VxWorks //-VxW
 |
| errno = taskVarAdd (0, (int *) &dataPtr);
 |
| if (errno) {
 |
| OSAL_ERROR ("ON taskVarAdd()");
 |
| }
 |
| #endif
 |
| </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 :
 |
| // if (globalVar.getPtr() ==NULL) // in client side,
 |
| // before globalVar->memberOfCLASS
 |
| 
 |
| // Get the thread specific pointer
 |
| #if defined THREAD_POSIX4
 |
| dataPtr = (CLASS *) pthread_getspecific (key);
 |
| 
 |
| #elif defined THREAD_Solaris
 |
| errno = thr_getspecific (key, (void **) &dataPtr);
 |
| if (errno) {
 |
| OSAL_ERROR ("ON thr_getspecific()");
 |
| }
 |
| 
 |
| #elif defined THREAD_VxWorks //-VxW
 |
| // l'attribut 'dataPtr' doit être restauré par le système
 |
| // pour ce thread à chaque fois qu'il est réélu pour la CPU
 |
| ;
 |
| #endif
 |
| 
 |
| return dataPtr;
 |
| </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 ->
 |
| // since the unique instance of ThrCtxt<CLASS> is a global variable
 |
| // directly accessed (not via a pointer)
 |
| // operator-> can't be confused with access to members of ThrCtxt<CLASS>
 |
| // globalVar.savePtr(...)
 |
| // globalVar->memberOfCLASS // to Access to the thread specific data
 |
| 
 |
| TRACEpr (VM);
 |
| PR (showI);
 |
| 
 |
| CLASS *dataP = getPtr ();
 |
| 
 |
| if (dataP == NULL) {
 |
| OSAL_ERROR ("lack of previous 'globalVar.savePtr(...)'");
 |
| }
 |
| 
 |
| return dataP;
 |
| </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
 |
| certain type element type (ELType). The list consists of cells of type
 |
| ListCell<ELType>: the elements are stored by value in each cell. The
 |
| element type must have a default constructor.
 |
| 
 |
| The element type has to fulfill two criterions:
 |
| - It has to define a comparison relation to enable the insertion of an
 |
| element at the right position within the list. It requires the existence
 |
| of the operators ElType::operator>= and ElType::operator!=
 |
| 
 |
| - the second criterion rests on the identity of data of two elements,
 |
| independently of the value being used for their scheduling. It makes it
 |
| possible to compare two elements or to seek an element in the list and to
 |
| modify it. It requires l'existence of the method ElType::sameAs() and
 |
| possibly of the operator ElType::operator=
 |
| 
 |
| These two criteria can be independent. The super class of BOL, SMO,
 |
| redefines the new operator to allows for specifying an address where to
 |
| the instance should be located in memory. The class BOL can be used for
 |
| any management * of ordered lists according to specified comparison
 |
| criterions'. A list of unlimited size has to create and release memory
 |
| dynamicylly, which is expensive. Moreover, one list divided between
 |
| several processes and established in a shared memory segment of fixed
 |
| 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);
 |
| 
 |
| ListCell *cur = beginning, *lstCelPtr = NULL;
 |
| for (; cur->next; cur = cur->next) {
 |
| if (element.sameAs (cur->next->value))
 |
| {
 |
| lstCelPtr = cur;
 |
| break;
 |
| }
 |
| }
 |
| PR ("BOL< ElType >::findElement");
 |
| 
 |
| 
 |
| return (lstCelPtr);
 |
| </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);
 |
| PR ("BOL< ElType >::findPrevious");
 |
| 
 |
| ListCell *cur = beginning;
 |
| for (; cur->next && element >= cur->next->value; cur = cur->next);
 |
| 
 |
| return (cur);
 |
| </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 :
 |
| if (!(element >= beginning->value)) // C'est le premier.
 |
| {
 |
| cellule->next = beginning;
 |
| beginning = cellule;
 |
| // Il y avait au départ plus d'un élément,
 |
| // le dernier et le premier sont donc différents,
 |
| // endElement est donc à jour.
 |
| }
 |
| else if (element >= endElement->value) // Dernier élément
 |
| {
 |
| endElement->next = cellule;
 |
| endElement = cellule;
 |
| cellule->next = NULL;
 |
| }
 |
| else // Autres cas :
 |
| {
 |
| ListCell *newPrevCel = findPrevious (element);
 |
| 
 |
| // Réinsertion de la cellule :
 |
| cellule->next = newPrevCel->next;
 |
| newPrevCel->next = cellule;
 |
| }
 |
| </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);
 |
| PR (" $$$ endOfMemory : " << (void *) endOfMemory);
 |
| PR (" - freeMemory : " << (void *) freeMemory);
 |
| PR (" = " << (int) endOfMemory - (int) freeMemory << showI);
 |
| </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);
 |
| ElType *elementPtr = NULL;
 |
| 
 |
| ListCell *newCellule = new (this) ListCell (element);
 |
| 
 |
| PR ("newCellule=" << (void *) newCellule << showI);
 |
| 
 |
| if (newCellule)
 |
| {
 |
| PR ("beginning=" << (void *) beginning);
 |
| PR (", endElement=" << (void *) endElement << showI);
 |
| 
 |
| if (!beginning)
 |
| { // Cas liste vide :
 |
| current = endElement = beginning = newCellule;
 |
| PR (element << " : single element.");
 |
| }
 |
| else if (!(element >= beginning->value))
 |
| { // Cas élément plus petit que tous les autres (plus petit que le premier) :
 |
| newCellule->next = beginning;
 |
| beginning = newCellule;
 |
| PR (element << " : element stored ahead.");
 |
| }
 |
| else if (element >= endElement->value)
 |
| { // Cas élément plus grand que tous les autres, ou égal au(x) plus grand(s),
 |
| // (supérieur ou égal au dernier de la liste):
 |
| endElement->next = newCellule;
 |
| endElement = newCellule;
 |
| PR (element << " : element stored at bottom.");
 |
| }
 |
| else
 |
| {
 |
| // Cas général, élément à insérer en milieu de liste:
 |
| ListCell *prevCel = findPrevious (element);
 |
| PR ("prevCel=" << (void *) prevCel << showI);
 |
| newCellule->next = prevCel->next;
 |
| prevCel->next = newCellule;
 |
| PR (element << " : element stored after : " << prevCel->value);
 |
| }
 |
| 
 |
| elementPtr = &(newCellule->value);
 |
| }
 |
| PR (showI);
 |
| 
 |
| return elementPtr;
 |
| </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);
 |
| PR (showI);
 |
| bool result = FALSE;
 |
| 
 |
| if (beginning)
 |
| { // List not empty.
 |
| if (element.sameAs (beginning->value))
 |
| { // Cas où l'élément est le premier de la liste :
 |
| ListCell *nextBeginning = beginning->next;
 |
| 
 |
| if (endElement == beginning)
 |
| endElement = NULL;
 |
| 
 |
| beginning->free (this);
 |
| 
 |
| current = beginning = nextBeginning;
 |
| // Sinon, current risque d'indiquer un élément inexistant ;
 |
| 
 |
| result = TRUE;
 |
| }
 |
| else
 |
| { // Autres cas :
 |
| ListCell *prevCel = findElement (element);
 |
| 
 |
| if (prevCel)
 |
| { // L'élément est trouvé.
 |
| // prevCel->next est toujours non NULL, car c'est
 |
| // le précédent. S'il n'y en a pas, c'est soit que la
 |
| // liste est vide (beginning == NULL), soit qu'elle n'a
 |
| // qu'un élément, c'est alors aussi le premier et c'est
 |
| // traité avant !
 |
| ListCell *destroyedCel = prevCel->next;
 |
| 
 |
| if (prevCel->next->next)
 |
| prevCel->next = prevCel->next->next;
 |
| else // prevCel->next == endElement
 |
| {
 |
| prevCel->next = NULL;
 |
| endElement = prevCel;
 |
| }
 |
| 
 |
| if (current == destroyedCel)
 |
| current = beginning;
 |
| // Sinon, current risque d'indiquer un élément inexistant.
 |
| destroyedCel->free (this);
 |
| result = TRUE;
 |
| }
 |
| else
 |
| OSAL_ERROR ("Element not found !");
 |
| // ERROR ( "HORREUR, Element inexistant..." ) ;
 |
| }
 |
| }
 |
| else
 |
| OSAL_ERROR ("empty list !");
 |
| // ERROR ( "HORREUR, Retrait d'un element dans une liste vide..." ) ;
 |
| 
 |
| return result;
 |
| </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);
 |
| PR (showI);
 |
| 
 |
| ElType *element = NULL;
 |
| 
 |
| if (beginning)
 |
| element = &(beginning->value);
 |
| else
 |
| OSAL_ERROR ("empty list !");
 |
| // ERROR ( "HORREUR, Demande du premier élément d'une liste vide..." ) ;
 |
| 
 |
| return ((element));
 |
| </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);
 |
| PR (showI);
 |
| 
 |
| ElType *element = NULL;
 |
| 
 |
| if (endElement)
 |
| element = &(endElement->value);
 |
| else
 |
| OSAL_ERROR ("empty list !");
 |
| // ERROR ("HORREUR, Demande du dernier élément d'une liste vide...") ;
 |
| 
 |
| return ((element));
 |
| </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);
 |
| PR (showI);
 |
| 
 |
| ElType *element = NULL;
 |
| 
 |
| if (beginning)
 |
| {
 |
| element = &(beginning->value);
 |
| current = beginning;
 |
| }
 |
| else
 |
| OSAL_ERROR ("empty list !");
 |
| 
 |
| return element;
 |
| </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);
 |
| PR (showI);
 |
| 
 |
| ElType *element = NULL;
 |
| 
 |
| if (endElement)
 |
| {
 |
| element = &(endElement->value);
 |
| current = endElement;
 |
| }
 |
| else {
 |
| OSAL_ERROR ("empty list !");
 |
| }
 |
| 
 |
| return element;
 |
| </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);
 |
| PR (showI);
 |
| 
 |
| ElType *element = NULL;
 |
| 
 |
| while (current != NULL && (index--) > 0)
 |
| {
 |
| if (current->next != NULL)
 |
| {
 |
| element = &(current->next->value);
 |
| current = current->next;
 |
| }
 |
| else {
 |
| // current->next == NULL
 |
| current = NULL;
 |
| }
 |
| }
 |
| 
 |
| return element;
 |
| </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);
 |
| PR (showI);
 |
| 
 |
| ElType *elementPtr = NULL;
 |
| 
 |
| if (beginning)
 |
| { // List not empty
 |
| if (element.sameAs (beginning->value))
 |
| { // Cas où l'élément est le premier :
 |
| elementPtr = &(beginning->value);
 |
| 
 |
| if (element != (*elementPtr))
 |
| { // Sa valeur est différente
 |
| beginning->value = element;
 |
| if (beginning->next)
 |
| { // La liste contient plus d'un élément
 |
| if (element >= beginning->next->value)
 |
| modifyFirst (element);
 |
| // else, on ne modifie pas la place, il reste le premier.
 |
| }
 |
| // else, la liste n'a qu'un élément, c'est donc le premier.
 |
| }
 |
| // else, sa valeur est la même que celle qu'on veut mettre,
 |
| // on ne fait donc rien.
 |
| }
 |
| 
 |
| else {
 |
| ListCell *prevCel = findElement (element);
 |
| 
 |
| if (prevCel)
 |
| { // L'élément est trouvé
 |
| // prevCel->next est toujours non NULL,
 |
| // car c'est le "précédent". S'il n'y en a pas,
 |
| // c'est soit que la la liste est vide (beginning == NULL),
 |
| // soit qu'elle n'a qu'un élément qui est alors aussi le
 |
| // premier et cela a été traité avant !
 |
| 
 |
| elementPtr = &(prevCel->next->value);
 |
| 
 |
| if (element != (*elementPtr))
 |
| { // Valeur différente.
 |
| // Mémorisation et mise à jour de la cellule :
 |
| ListCell *cellule = prevCel->next;
 |
| cellule->value = element;
 |
| 
 |
| // Retrait de la cellule de la liste :
 |
| if (cellule == endElement)
 |
| endElement = prevCel;
 |
| prevCel->next = prevCel->next->next;
 |
| 
 |
| // Recherche de la place de la cellule dans la liste :
 |
| modifyCellule (element, cellule);
 |
| 
 |
| 
 |
| }
 |
| // else, sa valeur est la même que celle qu'on veut mettre,
 |
| // on ne fait donc rien.
 |
| }
 |
| else
 |
| OSAL_ERROR ("Element not found !");
 |
| }
 |
| }
 |
| else {
 |
| OSAL_ERROR ("empty list !");
 |
| }
 |
| 
 |
| return elementPtr;
 |
| </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);
 |
| PR (showI);
 |
| 
 |
| ElType *elementPtr = NULL;
 |
| 
 |
| if (beginning)
 |
| { // List not empty
 |
| if (element.sameAs (beginning->value))
 |
| // This is the first element
 |
| elementPtr = &(beginning->value);
 |
| else
 |
| {
 |
| ListCell *prevCel = findElement (element);
 |
| 
 |
| if (prevCel)
 |
| elementPtr = &(prevCel->next->value);
 |
| //else
 |
| // ERROR ( "Element not found !" ) ;
 |
| }
 |
| }
 |
| else {
 |
| OSAL_ERROR ("empty list !");
 |
| }
 |
| 
 |
| return elementPtr;
 |
| </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);
 |
| PR (showI);
 |
| 
 |
| return (beginning ? FALSE : TRUE);
 |
| </body> |
| </ownedBehavior> |
| <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_ToGOkDa7Edyv9PRkTrTu0A" name="BOL" specification="_MPd0QDUzEdyDReAOQiyvOg"> |
| <language>C/C++</language> |
| <body> current = beginning;
 |
| ListCell *destroyedCel;
 |
| while (current)
 |
| {
 |
| destroyedCel = current;
 |
| current = current->next;
 |
| destroyedCel->free (this);
 |
| }
 |
| 
 |
| current = beginning = endElement = NULL;
 |
| </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 :
 |
| 
 |
| ListCell *oldBeginning = beginning;
 |
| beginning = beginning->next;
 |
| 
 |
| if (element >= endElement->value)
 |
| {
 |
| // if this element is bigger than the others:
 |
| endElement->next = oldBeginning;
 |
| endElement = oldBeginning;
 |
| oldBeginning->next = NULL;
 |
| }
 |
| else
 |
| {
 |
| // general case, element is inserted in the middle
 |
| ListCell *prevCel = findPrevious (element);
 |
| 
 |
| oldBeginning->next = prevCel->next;
 |
| prevCel->next = oldBeginning;
 |
| }
 |
| </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;
 |
| 
 |
| if (currentList->firstFreeCellule)
 |
| {
 |
| allocatedCellule = currentList->firstFreeCellule;
 |
| currentList->firstFreeCellule =
 |
| currentList->firstFreeCellule->next;
 |
| }
 |
| else if (currentList->freeMemory)
 |
| {
 |
| allocatedCellule = currentList->freeMemory;
 |
| 
 |
| if (currentList->freeMemory < currentList->endOfMemory) {
 |
| currentList->freeMemory++;
 |
| }
 |
| else if (currentList->freeMemory == currentList->endOfMemory) {
 |
| currentList->freeMemory = NULL;
 |
| }
 |
| else {
 |
| OSAL_ERROR ("Bad allocation pointers !");
 |
| }
 |
| }
 |
| else {
 |
| OSAL_ERROR ("Bounded list is full !");
 |
| }
 |
| 
 |
| return allocatedCellule;
 |
| </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;
 |
| currentList->firstFreeCellule = this;
 |
| 
 |
| delete this;
 |
| </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
 |
| should be replaced by the call to the new operator defined above
 |
| (with the additional parameter currentList).
 |
| I.e. don't use "new ListCell", use "new (this) ListCell" 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).
 |
| [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;
 |
| 
 |
| if (current == nbElem)
 |
| {
 |
| current = 0; // if end is reached, start add the beginning
 |
| full = TRUE; // only useful the first time
 |
| }</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;
 |
| 
 |
| if ((relativeIndex >= 0) && (relativeIndex < nbElem))
 |
| {
 |
| if (full)
 |
| {
 |
| index = current + relativeIndex;
 |
| if (index >= nbElem) {
 |
| index -= nbElem;
 |
| }
 |
| }
 |
| }
 |
| else if ((relativeIndex < 0) && (relativeIndex >= -nbElem))
 |
| {
 |
| if (full || (relativeIndex >= -current))
 |
| {
 |
| index = current + relativeIndex;
 |
| if (index < 0) {
 |
| index += nbElem;
 |
| }
 |
| }
 |
| }
 |
| 
 |
| if (index != -1) {
 |
| return vector + index;
 |
| }
 |
| else {
 |
| return NULL;
 |
| }</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
 |
| 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
 |
| addition to the buffer: negative values address "backward" elements
 |
| (-1 addresses the last added), positive values "forward" elements
 |
| (only useful, if the buffer has already been completely filled).
 |
| 
 |
| Thus, values in the range [-m_nbElem, m_nbElem] are possible.
 |
| Returns NULL, if index is out of bounds or no element stored so far
 |
| 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)
 |
| This class roughly resembles Objecteering's set_of macro and is used to
 |
| migrate existing code easily to other case tools.
 |
| 
 |
| The second class for the template instantiation needs to be a
 |
| "const variant" of the first class.
 |
| 
 |
| Caveat: this class uses dynamic memory allocation
 |
| => 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;
 |
| 
 |
| while (size < desired_size)
 |
| {
 |
| if (size < size_block) {
 |
| size = size*2;
 |
| }
 |
| else {
 |
| size += size_block;
 |
| }
 |
| }
 |
| return size;
 |
| </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;
 |
| real_size = adjust_size(init_size);
 |
| content = new T [real_size];
 |
| cardinal_number = 0;
 |
| </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 < cardinal_number; i++) {
 |
| if (content[i] == entry) {
 |
| return i;
 |
| }
 |
| }
 |
| 
 |
| return -1;
 |
| </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)
 |
| {
 |
| real_size = adjust_size(cardinal_number + 1);
 |
| T * new_content = new T [real_size];
 |
| memcpy(new_content, content, cardinal_number * sizeof(T));
 |
| delete [] content;
 |
| content = new_content;
 |
| }
 |
| content[cardinal_number++] = (T) entry;
 |
| </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)
 |
| {
 |
| real_size = adjust_size(cardinal_number + 1);
 |
| T * new_content = new T [real_size];
 |
| memcpy(new_content, content, cardinal_number * sizeof(T));
 |
| delete [] content;
 |
| content = new_content;
 |
| }
 |
| if (index < cardinal_number) {
 |
| memmove(
 |
| &(content[index+1]),
 |
| &(content[index]),
 |
| (cardinal_number-index) * sizeof(T));
 |
| }
 |
| content[index] = (T) entry;
 |
| 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 < cardinal_number; i++) {
 |
| if (content[i] == entry) {
 |
| erase(i);
 |
| return true; // only erase first entry
 |
| }
 |
| }
 |
| return false;
 |
| </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) {
 |
| index_to = index_from;
 |
| }
 |
| 
 |
| if (index_to >= cardinal_number) {
 |
| // out of bounds
 |
| return;
 |
| } 
 |
| int remaining_elements = cardinal_number - (index_to + 1);
 |
| cardinal_number -= (index_to - index_from + 1);
 |
| 
 |
| if (remaining_elements > 0)
 |
| {
 |
| memmove(
 |
| &(content[index_from]),
 |
| &(content[index_to+1]),
 |
| remaining_elements * sizeof(T)); 
 |
| }
 |
| </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
 |
| 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
 |
| with a matching value (not further elements that might match as well)
 |
| will be removed from the list. Returns true, if a matching value is
 |
| 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 "from" and "to" index. If
 |
| the latter is not supplied, only one element is erased (to = from).
 |
| 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);
 |
| PR ("Semaphore::Semaphore (" << initValue << ")" << showI);
 |
| 
 |
| errno = 0;
 |
| #if defined SYNCHRO_Solaris
 |
| errno = sema_init (&m_sema, initValue, USYNC_THREAD, NULL);
 |
| #else
 |
| sem_init (&m_sema, 0, initValue); // function sets errno on error
 |
| #endif
 |
| 
 |
| if (errno) {
 |
| OSAL_ERROR ("Semaphore init failed");
 |
| }
 |
| </body> |
| </ownedBehavior> |
| <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_P_9T8FF6EdyxP5ejovTmBw" name="Semaphore" specification="_ak3SkFF5EdyxP5ejovTmBw"> |
| <language>C/C++</language> |
| <body> TRACEpr (F7);
 |
| PR ("Semaphore::~Semaphore ()" << showI);
 |
| 
 |
| errno = 0;
 |
| #if defined SYNCHRO_Solaris
 |
| errno = sema_destroy (&m_sema);
 |
| #else
 |
| sem_destroy (&m_sema); // function sets errno on error
 |
| #endif
 |
| 
 |
| if (errno) {
 |
| OSAL_ERROR ("");
 |
| }
 |
| </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);
 |
| PR ("Semaphore::post ()" << showI);
 |
| 
 |
| errno = 0;
 |
| 
 |
| #if defined SYNCHRO_Solaris
 |
| errno = sema_post (&m_sema);
 |
| #else
 |
| sem_post (&m_sema); // function sets errno if r not 0
 |
| #endif
 |
| 
 |
| if (errno) {
 |
| OSAL_ERROR (""); }
 |
| 
 |
| return errno;
 |
| </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);
 |
| PR ("Semaphore::wait ()" << showI);
 |
| int r;
 |
| errno = 0;
 |
| for (;;)
 |
| {
 |
| #if defined SYNCHRO_Solaris
 |
| errno = sema_wait (&m_sema);
 |
| if ((errno == 0) || (errno == EBUSY))
 |
| break;
 |
| #elif defined SYNCHRO_POSIX4 || defined SYNCHRO_VxWorks
 |
| r = sem_wait (&m_sema); // sem_wait sets errno if r not 0
 |
| if ((r == 0) || (errno == EAGAIN))
 |
| break;
 |
| #else
 |
| #error define synchronization strategy
 |
| #endif
 |
| if (errno != EINTR)
 |
| OSAL_ERROR ("wait returned error code");
 |
| errno = 0;
 |
| }
 |
| 
 |
| return errno;
 |
| </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);
 |
| PR ("Semaphore::trywait ()" << showI);
 |
| int r;
 |
| errno = 0;
 |
| 
 |
| for (;;)
 |
| {
 |
| #if defined SYNCHRO_Solaris
 |
| errno = sema_trywait (&m_sema);
 |
| if ((errno == 0) || (errno == EBUSY))
 |
| break;
 |
| #elif defined SYNCHRO_POSIX4 || defined SYNCHRO_VxWorks
 |
| r = sem_trywait (&m_sema); // sem_trywait sets errno if r not 0
 |
| if ((r == 0) || (errno == EAGAIN))
 |
| break;
 |
| #else
 |
| #error define synchronization strategy
 |
| #endif
 |
| if (errno != EINTR)
 |
| OSAL_ERROR ("tryWait returned error code");
 |
| errno = 0;
 |
| }
 |
| PR ("Semaphore::tryWait () - returns value (errno): " << errno << showI);
 |
| 
 |
| return errno;
 |
| </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);
 |
| PR ("Semaphore::getValue ()" << showI);
 |
| 
 |
| int value;
 |
| sem_getvalue ((sem_t*) &m_sema, &value);
 |
| return value;
 |
| </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.
 |
| It increments atomically the counter and if other threads are
 |
| 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
 |
| not locked - that is, if the semaphore value is currently positive.
 |
| 
 |
| The underlying posix function is executed in a loop, since it could
 |
| legally return with an error code, if it is interrupted by a
 |
| signal (EINTR).
 |
| 
 |
| 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.
 |
| If the counter is zero, this method blocks the current thread until the
 |
| counter is positive. Afterwords it decrements the counter atomically.
 |
| 
 |
| The underlying posix function is executed in a loop, since it could
 |
| legally return with an error code, if it is interrupted by a
 |
| signal (EINTR).
 |
| 
 |
| 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
 |
| are blocked, the last arriving thread unblocks all threads.
 |
| 
 |
| Only one thread creates the barrier, other threads should only use
 |
| references.
 |
| In addition to an inefficient (file based!) implementation, we use
 |
| 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;
 |
| }
 |
| </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
 |
| 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)
 |
| This class is currently a candidate for being removed from the
 |
| virtual machine, since file based locking is seldom relevant in
 |
| embedded system. Its main use is the inefficient fallback implementation
 |
| 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);
 |
| PR ("Lock::Lock (...)" << showI);
 |
| 
 |
| // probably not a good idea to reset a global error variable here
 |
| // errno = 0;
 |
| 
 |
| /* #if defined SYNCHRO_VxWorks // it compiles on VxWorks 
 |
| OSAL_ERROR ("Not implemented for VxWorks");
 |
| #endif */
 |
| </body> |
| </ownedBehavior> |
| <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_RgCAkFFvEdyjobZYtXo9NQ" name="take" specification="_GNaSQFFuEdyjobZYtXo9NQ"> |
| <language>C/C++</language> |
| <body> TRACEpr (VM);
 |
| PR ("Lock::take" << showI);
 |
| 
 |
| m_flock.l_type = m_lockType;
 |
| m_flock.l_whence = 0;
 |
| m_flock.l_start = (off_t) 0;
 |
| m_flock.l_len = (off_t) 0;
 |
| 
 |
| if (fcntl (m_fd, F_SETLKW, &m_flock) < 0) { // wait if hold
 |
| OSAL_ERROR ("ON fcntl(m_fd, F_SETLKW:F_WRLCK) ");
 |
| }
 |
| </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);
 |
| 
 |
| int r;
 |
| m_flock.l_type = m_lockType;
 |
| m_flock.l_whence = 0;
 |
| m_flock.l_start = (off_t) 0;
 |
| m_flock.l_len = (off_t) 0;
 |
| 
 |
| while ((r = fcntl (m_fd, F_SETLK, &m_flock)) < 0) // NO wait if hold
 |
| {
 |
| if (errno == 0 || errno == EAGAIN)
 |
| break;
 |
| if (errno != EINTR)
 |
| OSAL_ERROR ("");
 |
| errno = 0;
 |
| }
 |
| 
 |
| PR ("Lock::tryTake () - return value (errno): " << errno << showI);
 |
| return errno;
 |
| </body> |
| </ownedBehavior> |
| <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_V21owFFvEdyjobZYtXo9NQ" name="release" specification="_GZx6UFFuEdyjobZYtXo9NQ"> |
| <language>C/C++</language> |
| <body> TRACEpr (VM);
 |
| PR ("Lock::release ()" << showI);
 |
| 
 |
| m_flock.l_type = F_UNLCK;
 |
| m_flock.l_whence = 0;
 |
| m_flock.l_start = (off_t) 0;
 |
| m_flock.l_len = (off_t) 0;
 |
| 
 |
| if (fcntl (m_fd, F_SETLK, &m_flock) < 0) {
 |
| OSAL_ERROR ("");
 |
| }
 |
| </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);
 |
| PR ("Lock::getInfo" << showI);
 |
| 
 |
| infoP->l_whence = 0;
 |
| infoP->l_start = 0L;
 |
| infoP->l_len = 0L;
 |
| infoP->l_type = m_lockType;
 |
| if (fcntl (m_fd, F_GETLK, infoP) == -1) {
 |
| OSAL_ERROR ("");
 |
| }
 |
| 
 |
| // return TRUE, if lock busy
 |
| return (infoP->l_type != F_UNLCK);
 |
| </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
 |
| descriptor can be obtained for instance using the "open". The second,
 |
| optional parameter denotes whether the lock is also exclusive for
 |
| reading (otherwise, only the write access is protected). The default
 |
| value "true" 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
 |
| is not yet known at creation time. This should only be called once
 |
| 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
 |
| 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
 |
| 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);
 |
| PR ("before Mutex::lock()" << showI);
 |
| #if defined SYNCHRO_POSIX4
 |
| int error = pthread_mutex_lock (&m_mutexS);
 |
| 
 |
| #elif defined SYNCHRO_Solaris
 |
| int error = mutex_lock (&m_mutexS);
 |
| 
 |
| #elif defined SYNCHRO_VxWorks
 |
| int error = 0;
 |
| if (semTake (m_mutexS, WAIT_FOREVER) != OK)
 |
| OSAL_ERROR ("ON semTake()");
 |
| #endif
 |
| 
 |
| if (error) { // == EDEADLK : the current thread already owns the mutex
 |
| OSAL_ERROR ("can't lock mutex");
 |
| }
 |
| </body> |
| </ownedBehavior> |
| <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_dWfe8FF0EdyjobZYtXo9NQ" name="unlock" specification="_DEz3sFFwEdyjobZYtXo9NQ"> |
| <language>C/C++</language> |
| <body>TRACEpr (F7);
 |
| PR ("Mutex::unlock ()" << showI);
 |
| 
 |
| #if defined SYNCHRO_POSIX4
 |
| int error = pthread_mutex_unlock (&m_mutexS);
 |
| 
 |
| #elif defined SYNCHRO_Solaris
 |
| int error = mutex_unlock (&m_mutexS);
 |
| 
 |
| #elif defined SYNCHRO_VxWorks
 |
| int error = 0;
 |
| if (semGive (m_mutexS) != OK)
 |
| OSAL_ERROR ("ON semGive()");
 |
| #endif
 |
| 
 |
| if (error) { // == EPERM : the current thread does not own the mutex
 |
| OSAL_ERROR ("can't unlock mutex");
 |
| }</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);
 |
| PR ("before Mutex::trylock()"<< showI);
 |
| 
 |
| #define Nretry 3 // re-try N times if EINTR
 |
| 
 |
| int i;
 |
| int error;
 |
| for (i = 0; i < Nretry; ++i)
 |
| {
 |
| #if defined SYNCHRO_POSIX4
 |
| error = pthread_mutex_trylock (&m_mutexS);
 |
| 
 |
| #elif defined SYNCHRO_Solaris
 |
| error = mutex_trylock (&m_mutexS);
 |
| 
 |
| #elif defined SYNCHRO_VxWorks
 |
| error = semTake (m_mutexS, NO_WAIT);
 |
| if (error == S_objLib_OBJ_UNAVAILABLE) {
 |
| error = EBUSY;
 |
| }
 |
| 
 |
| #endif
 |
| if (error == 0 || error == EBUSY) {
 |
| break;
 |
| }
 |
| if (error != EINTR) {
 |
| OSAL_ERROR ("");
 |
| }
 |
| }
 |
| if (i == Nretry) {
 |
| OSAL_ERROR ("EINTR Nretry times");
 |
| }
 |
| 
 |
| // errno == EBUSY : the mutex could not be acquired because it was already
 |
| // locked
 |
| return error;
 |
| </body> |
| </ownedBehavior> |
| <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_larX0FF0EdyjobZYtXo9NQ" name="Mutex" specification="_4cRLsFFvEdyjobZYtXo9NQ"> |
| <language>C/C++</language> |
| <body>int error;
 |
| #if defined SYNCHRO_POSIX4
 |
| TRACEpr (F7);
 |
| PR ("Mutex::~Mutex: m_mutexS = " << &m_mutexS << showI);
 |
| error = pthread_mutex_destroy (&m_mutexS);
 |
| 
 |
| #elif defined SYNCHRO_Solaris
 |
| error = mutex_destroy (&m_mutexS);
 |
| 
 |
| #elif defined SYNCHRO_VxWorks
 |
| if (semDelete (m_mutexS) == OK) {
 |
| error = 0;
 |
| }
 |
| else {
 |
| error = -1;
 |
| }
 |
| #endif
 |
| 
 |
| if (error) {
 |
| OSAL_ERROR ("cannot delete Mutex");
 |
| }
 |
| </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
 |
| // inutile d'avoir une portee InterProcess couteuse si le process est seul.
 |
| 
 |
| creatEff (OS_AL::ProcessingResources::ProDesc::getNumerOfProcesses() > 1 ? InterProcess : IntraProcess);
 |
| </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>// --------------------------------------------
 |
| #if defined SYNCHRO_POSIX4
 |
| pthread_mutexattr_t attr; // mutex attributes object
 |
| int result = pthread_mutexattr_init (&attr); // and initialized by only 1 process
 |
| // ?? comment savoir que je suis le premier ?? .....................
 |
| if (result != 0) {
 |
| OSAL_ERROR ("ON pthread_mutexattr_init()");
 |
| }
 |
| if (scope == InterProcess) {
 |
| result = pthread_mutexattr_setpshared (&attr, PTHREAD_PROCESS_SHARED);
 |
| if (errno != 0) {
 |
| OSAL_ERROR ("ON pthread_mutexattr_setpshared()");
 |
| }
 |
| }
 |
| result = pthread_mutex_init (&m_mutexS, &attr);
 |
| if (result != 0) {
 |
| OSAL_ERROR ("ON pthread_mutex_init()");
 |
| }
 |
| 
 |
| // pthread_mutexattr_destroy(&attr); // required?
 |
| 
 |
| // --------------------------------------------
 |
| #elif defined SYNCHRO_Solaris
 |
| if (scope != InterProcess) {
 |
| // initial RAZ, with only 1 thread
 |
| // #include <string.h>
 |
| // memset(&m_mutexS, 0, sizeof(MutexStruc));
 |
| char *pc = (char *) &m_mutexS;
 |
| for (int k = 0; k < sizeof (MutexStruc); ++k) {
 |
| *pC/C++ = '\0'; // initial reset
 |
| }
 |
| }
 |
| //else
 |
| // only 1 process must reset this structure
 |
| 
 |
| int result = mutex_init ((MutexStruc *) & m_mutexS,
 |
| (scope == InterProcess) ? USYNC_PROCESS : USYNC_THREAD, NULL);
 |
| if (result != 0) {
 |
| OSAL_ERROR ("ON mutex_init()");
 |
| }
 |
| 
 |
| // --------------------------------------------
 |
| #elif defined SYNCHRO_VxWorks
 |
| if (scope == InterProcess) {
 |
| OSAL_ERROR ("Only 1 processus for VxWorks");
 |
| }
 |
| #if defined SYNCHRO_VxWorks_MES
 |
| m_mutexS = semMCreate (SEM_Q_PRIORITY | SEM_DELETE_SAFE | SEM_INVERSION_SAFE);
 |
| #else
 |
| m_mutexS = semBCreate (SEM_Q_PRIORITY, SEM_FULL);
 |
| #endif
 |
| if (m_mutexS == NULL) {
 |
| OSAL_ERROR ("ON semaphore create()");
 |
| }
 |
| 
 |
| // --------------------------------------------
 |
| #else
 |
| #error SYNCHRO_?? not defined
 |
| #endif
 |
| 
 |
| TRACEpr (F7);
 |
| PR ("after Mutex::createEff()" << showI);
 |
| </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);
 |
| PR ("Mutex::print (" << label << "), errno= " << errno << showI);
 |
| 
 |
| unsigned short *pc1;
 |
| int size;
 |
| #if defined SYNCHRO_VxWorks
 |
| if (m_mutexS == NULL) {
 |
| OSAL_ERROR ("m_mutexS == NULL");
 |
| }
 |
| pc1 = (unsigned short *) m_mutexS;
 |
| size = 40; // sizeof(class semaphore);
 |
| 
 |
| semShow (m_mutexS, 1); // dump of system structure
 |
| //-- errno= 0;
 |
| #else
 |
| pc1 = (unsigned short *) &m_mutexS;
 |
| size = sizeof (MutexId);
 |
| #endif
 |
| 
 |
| char buffer[200];
 |
| char *pb = buffer;
 |
| unsigned short *pc = pc1;
 |
| for (int k = 0; k < size; k += 2)
 |
| {
 |
| if (k % 16 == 0)
 |
| pb += sprintf (pb, "\n\t");
 |
| pb += sprintf (pb, "%4.4x ", *pc++);
 |
| if ((pb - buffer) > (int) sizeof (buffer))
 |
| OSAL_ERROR ("Enlarge size of buffer.");
 |
| }
 |
| 
 |
| PR (", dump of m_mutexS at 0x" << pc1 << ": " << buffer << showI);
 |
| </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
 |
| and owned by the calling thread, and returns immediately.
 |
| If the mutex is already locked by another thread, "lock" suspends the
 |
| 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
 |
| by the calling thread on entrance to unlock.
 |
| unlock always returns the mutex to the unlocked state (we do not use the
 |
| pthread option "recursive", which decrements the locking count of the mutex
 |
| [number of lock operations performed on it by the calling thread], and
 |
| 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
 |
| against an interruption for signal handling and against reentrance of
 |
| this code. It is associated with an instance of class Mutex (passed in
 |
| the constructor).
 |
| 
 |
| Example:
 |
| Management of a list (see class SR_List) that can be accessed by multiple
 |
| threads. To assure data integrity, each list instance contains a mutex,
 |
| all public methods look like:
 |
| SR_Liste::append()
 |
| {
 |
| CriticalSection cs(mutex);
 |
| ...
 |
| } // 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;
 |
| 
 |
| sigfillset (&m_maskAll);
 |
| Thread::changeSigMask (SIG_SETMASK, &m_maskAll, &m_oldMask);
 |
| 
 |
| m_mutex->lock ();
 |
| </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 ();
 |
| 
 |
| sigfillset (&m_maskAll);
 |
| Thread::changeSigMask (SIG_SETMASK, &m_maskAll, &m_oldMask);
 |
| m_mutex->lock ();
 |
| </body> |
| </ownedBehavior> |
| <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_X3u1YFFiEdyjobZYtXo9NQ" name="CriticalSection" specification="_du4rcFFhEdyjobZYtXo9NQ"> |
| <language>C/C++</language> |
| <body> if (m_mutex) {
 |
| m_mutex->unlock ();
 |
| }
 |
| 
 |
| Thread::changeSigMask (SIG_SETMASK, &m_oldMask, NULL);
 |
| </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.
 |
| 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
 |
| errno = rwlock_init (&rwl, USYNC_THREAD, NULL);
 |
| 
 |
| #elif defined SYNCHRO_POSIX4 || SYNCHRO_Linux
 |
| errno = pthread_rwlock_init (&rwl, NULL);
 |
| 
 |
| #elif defined SYNCHRO_VxWorks
 |
| rwl.readers = 0; // pas de lecteur au début
 |
| rwl.writers = 0; // pas d'écrivain au début
 |
| 
 |
| rwl.readersMut = semBCreate (SEM_Q_FIFO, SEM_FULL); //initialisation
 |
| rwl.writersMut = semBCreate (SEM_Q_FIFO, SEM_FULL); //des
 |
| rwl.readMut = semBCreate (SEM_Q_FIFO, SEM_FULL); //mutexes
 |
| rwl.writeSem = semCCreate (SEM_Q_FIFO, 1); //et des
 |
| rwl.readSem = semCCreate (SEM_Q_FIFO, 1); //semaphores
 |
| 
 |
| if ((rwl.readersMut != NULL) && (rwl.writersMut != NULL)
 |
| && (rwl.readMut != NULL)
 |
| && (rwl.writeSem != NULL) && (rwl.readSem != NULL))
 |
| errno = 0;
 |
| else
 |
| errno = ENOMEM; // semBCreate et semCCreate ne positionnent pas errno
 |
| 
 |
| 
 |
| #else // RWLock_Simulation
 |
| rwl.readers = 0; //pas de lecteur au début
 |
| rwl.writers = 0; //pas d'écrivain au début
 |
| errno = 0;
 |
| #endif
 |
| 
 |
| if (errno) {
 |
| OSAL_ERROR ("");
 |
| }
 |
| </body> |
| </ownedBehavior> |
| <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_gGHKEFF4EdyxP5ejovTmBw" name="RWLock" specification="_t6TIIFF3EdyxP5ejovTmBw"> |
| <language>C/C++</language> |
| <body>#if defined SYNCHRO_Solaris
 |
| errno = rwlock_destroy (&rwl);
 |
| 
 |
| #elif defined SYNCHRO_POSIX4 || SYNCHRO_Linux
 |
| errno = pthread_rwlock_destroy (&rwl);
 |
| 
 |
| 
 |
| #elif defined SYNCHRO_VxWorks //-VxW
 |
| errno = 0; // je suppose qu'1 exécution OK ne touche pas errno 
 |
| semDelete (rwl.readersMut);
 |
| semDelete (rwl.writersMut);
 |
| semDelete (rwl.readMut);
 |
| semDelete (rwl.readSem);
 |
| semDelete (rwl.writeSem);
 |
| 
 |
| #else
 |
| errno = 0;
 |
| #endif
 |
| 
 |
| if (errno) {
 |
| OSAL_ERROR ("");
 |
| }
 |
| </body> |
| </ownedBehavior> |
| <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_jtFQwFF4EdyxP5ejovTmBw" name="rdlock" specification="_uA2cEFF3EdyxP5ejovTmBw"> |
| <language>C/C++</language> |
| <body>#if defined SYNCHRO_Solaris
 |
| errno = rw_rdlock (&rwl);
 |
| 
 |
| #elif defined SYNCHRO_POSIX4 || SYNCHRO_Linux
 |
| errno = pthread_rwlock_rdlock (&rwl);
 |
| 
 |
| #elif defined SYNCHRO_VxWorks
 |
| errno = 0;
 |
| if (semTake (rwl.readMut, WAIT_FOREVER) == OK)
 |
| if (semTake (rwl.readSem, WAIT_FOREVER) == OK)
 |
| if (semTake (rwl.readersMut, WAIT_FOREVER) == OK) //début de section critique
 |
| {
 |
| rwl.readers++; //incremente nb de lecteurs
 |
| if (rwl.readers == 1) //si premier lecteur alors il 
 |
| semTake (rwl.writeSem, WAIT_FOREVER); //bloque l'ecriture
 |
| if (semGive (rwl.readersMut) == OK) //fin de section critique
 |
| if (semGive (rwl.readSem) == OK)
 |
| semGive (rwl.readMut);
 |
| }
 |
| 
 |
| #else // RWLock_Simulation
 |
| errno = 0;
 |
| rwl.readMut.lock ();
 |
| rwl.readSem.wait ();
 |
| rwl.readersMut.lock (); // début de section critique
 |
| {
 |
| rwl.readers++; //incrémente nb de lecteurs
 |
| if (rwl.readers == 1) //si premier lecteur alors il 
 |
| rwl.writeSem.wait (); //bloque l'ecriture
 |
| }
 |
| rwl.readersMut.unlock (); // fin de section critique
 |
| rwl.readSem.post ();
 |
| rwl.readMut.unlock ();
 |
| 
 |
| #endif
 |
| 
 |
| if (errno) {
 |
| OSAL_ERROR ("");
 |
| }
 |
| </body> |
| </ownedBehavior> |
| <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_mnfzcFF4EdyxP5ejovTmBw" name="wrlock" specification="_uHG1EFF3EdyxP5ejovTmBw"> |
| <language>C/C++</language> |
| <body>#if defined SYNCHRO_Solaris
 |
| errno = rw_wrlock (&rwl);
 |
| 
 |
| #elif defined SYNCHRO_POSIX4 || SYNCHRO_Linux
 |
| errno = pthread_rwlock_wrlock (&rwl);
 |
| 
 |
| #elif defined SYNCHRO_VxWorks
 |
| errno = 0;
 |
| if (semTake (rwl.writersMut, WAIT_FOREVER) == OK) //début de section critique
 |
| {
 |
| if (++rwl.writers == 1) //si premier écrivain, alors 
 |
| semTake (rwl.readSem, WAIT_FOREVER); // attendre fin des lecteurs et les bloquer
 |
| if (semGive (rwl.writersMut) == OK) //fin de section critique
 |
| semTake (rwl.writeSem, WAIT_FOREVER); //verrouille acces en ecriture/lecture pour autres
 |
| }
 |
| 
 |
| #else // RWLock_Simulation
 |
| errno = 0;
 |
| rwl.writersMut.lock (); // début de section critique
 |
| if (++rwl.writers == 1) //si premier écrivain, alors 
 |
| rwl.readSem.wait (); // attendre fin des lecteurs et les bloquer
 |
| rwl.writersMut.unlock (); // fin de section critique
 |
| rwl.writeSem.wait (); // demande à écrire seul
 |
| #endif
 |
| 
 |
| if (errno) {
 |
| OSAL_ERROR ("");
 |
| }
 |
| </body> |
| </ownedBehavior> |
| <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_p0ZNQFF4EdyxP5ejovTmBw" name="unlock" specification="_uL4AUFF3EdyxP5ejovTmBw"> |
| <language>C/C++</language> |
| <body>#if defined SYNCHRO_Solaris
 |
| errno = rw_unlock (&rwl);
 |
| 
 |
| #elif defined SYNCHRO_POSIX4 || SYNCHRO_Linux
 |
| errno = pthread_rwlock_unlock (&rwl);
 |
| 
 |
| #elif defined SYNCHRO_VxWorks
 |
| errno = 0;
 |
| // test, if a reader or writer requires end
 |
| if (rwl.readers)
 |
| {
 |
| if (semTake (rwl.readersMut, WAIT_FOREVER) == OK)
 |
| {
 |
| // entered critical section (through semTake)
 |
| if (--rwl.readers == 0) // if last reader, authorize writers
 |
| semGive (rwl.writeSem);
 |
| semGive (rwl.readersMut); // end of critical section
 |
| }
 |
| }
 |
| else if (rwl.writers)
 |
| {
 |
| if (semGive (rwl.writeSem) == OK) // authorize other writers
 |
| if (semTake (rwl.writersMut, WAIT_FOREVER) == OK)
 |
| {
 |
| // entered critical section (through semTake)
 |
| if (--rwl.writers == 0) // if last writer, authorize readers
 |
| semGive (rwl.readSem);
 |
| semGive (rwl.writersMut); // end of critical section
 |
| }
 |
| }
 |
| else
 |
| OSAL_ERROR ("readers==0 && writers==0");
 |
| 
 |
| #else // RWLock_Simulation
 |
| errno = 0;
 |
| // test, if a reader or writer requires end
 |
| if (rwl.readers)
 |
| {
 |
| rwl.readersMut.lock (); // enter ciritical section
 |
| if (--rwl.readers == 0) // if last reader, authorize writers
 |
| rwl.writeSem.post ();
 |
| rwl.readersMut.unlock (); // end of critical section
 |
| }
 |
| else if (rwl.writers)
 |
| {
 |
| rwl.writeSem.post (); // authorize other writer
 |
| rwl.writersMut.lock (); // enter critical section
 |
| if (--rwl.writers == 0) // if last writer, authorize readers
 |
| rwl.readSem.post ();
 |
| rwl.writersMut.unlock (); // end of critical section
 |
| }
 |
| else
 |
| OSAL_ERROR ("readers==0 && writers==0");
 |
| #endif
 |
| 
 |
| if (errno)
 |
| OSAL_ERROR ("");
 |
| </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
 |
| errno = rw_tryrdlock (&rwl);
 |
| 
 |
| #elif defined SYNCHRO_POSIX4 || SYNCHRO_Linux
 |
| errno = pthread_rwlock_tryrdlock (&rwl);
 |
| 
 |
| 
 |
| #elif defined SYNCHRO_VxWorks
 |
| if (semTake (rwl.readMut, WAIT_FOREVER) == OK)
 |
| if (semTake (rwl.readSem, WAIT_FOREVER) == OK) // VERIFIER ???????????
 |
| if (semTake (rwl.readersMut, WAIT_FOREVER) == OK)
 |
| {
 |
| // entered critical section (through semTake)
 |
| rwl.readers++; // increment number of readers
 |
| if (rwl.readers == 1) // if first reader, ...
 |
| semTake (rwl.writeSem, NO_WAIT); // ... block writer // VERIFIER ???????????
 |
| if (semGive (rwl.readersMut) == OK) // end of critical section
 |
| if (semGive (rwl.readSem) == OK)
 |
| semGive (rwl.readMut);
 |
| }
 |
| 
 |
| #else // RWLock_Simulation
 |
| errno = 0;
 |
| rwl.readMut.lock ();
 |
| if (rwl.readSem.tryWait () == 0)
 |
| {
 |
| rwl.readersMut.lock (); // begin of critical section
 |
| {
 |
| rwl.readers++; // increment number of readers
 |
| if (rwl.readers == 1) // if first reader, ...
 |
| rwl.writeSem.wait (); // ... block writer
 |
| }
 |
| rwl.readersMut.unlock (); // end of critical section
 |
| rwl.readSem.post ();
 |
| }
 |
| rwl.readMut.unlock ();
 |
| #endif
 |
| 
 |
| if (errno && errno != EBUSY)
 |
| OSAL_ERROR ("");
 |
| 
 |
| return errno;
 |
| </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
 |
| errno = rw_trywrlock (&rwl);
 |
| 
 |
| #elif defined SYNCHRO_POSIX4 || SYNCHRO_Linux
 |
| errno = pthread_rwlock_trywrlock (&rwl);
 |
| 
 |
| #elif defined SYNCHRO_VxWorks
 |
| errno = 0;
 |
| if (semTake (rwl.writeSem, NO_WAIT) == OK) // request write access
 |
| {
 |
| if (semTake (rwl.writersMut, WAIT_FOREVER) == OK)
 |
| {
 |
| // entered critical section (through semTake)
 |
| if (++rwl.writers == 1) //si premier ecrivain alors il 
 |
| semTake (rwl.readSem, WAIT_FOREVER); //bloque les lecteurs
 |
| semGive (rwl.writersMut); //fin de section critique
 |
| }
 |
| }
 |
| else
 |
| {
 |
| if (errno == S_objLib_OBJ_UNAVAILABLE)
 |
| errno = EBUSY;
 |
| }
 |
| 
 |
| #else // RWLock_Simulation
 |
| errno = 0;
 |
| rwl.writersMut.lock (); // begin of critical section
 |
| {
 |
| rwl.writers++; // increment number of readers
 |
| if (rwl.writers == 1) // if first reader, ... 
 |
| rwl.readSem.wait (); // ... block writers
 |
| }
 |
| rwl.writersMut.unlock (); // end of critical section
 |
| rwl.writeSem.wait (); // lock write/read access for others
 |
| #endif
 |
| 
 |
| if (errno && errno != EBUSY)
 |
| OSAL_ERROR ("");
 |
| 
 |
| return errno;
 |
| </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:
 |
| A condition (short for ``condition variable'') is a synchronization
 |
| device that allows threads to suspend execution and relinquish the
 |
| processors until some predicate on shared data is satisfied. The basic
 |
| operations on conditions are: signal the condition (when the predicate
 |
| becomes true), and wait for the condition, suspending the thread
 |
| execution until another thread signals the condition.
 |
| 
 |
| A condition variable must always be associated with a mutex, to avoid
 |
| the race condition where a thread prepares to wait on a condition
 |
| variable and another thread signals the condition just before the
 |
| 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
 |
| int error = pthread_cond_init (&m_condition, NULL);
 |
| 
 |
| #elif defined SYNCHRO_Solaris
 |
| int error = cond_init (&m_condition, USYNC_THREAD, 0);
 |
| 
 |
| #elif defined SYNCHRO_VxWorks
 |
| OSAL_ERROR ("Not available with VxWorks");
 |
| // maybe a mechanism can be implemented by means of a signal pendants
 |
| 
 |
| #else
 |
| #error SYNCHRO_???? not defined
 |
| #endif
 |
| 
 |
| if (error) {
 |
| OSAL_ERROR ("Condition constructor failed");
 |
| }</body> |
| </ownedBehavior> |
| <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_QWlVivRTEeCUGrV0Hl4JwQ" name="Condition" specification="_QWlVkvRTEeCUGrV0Hl4JwQ"> |
| <language>C/C++</language> |
| <body>if (m_isLocked) {
 |
| unlock ();
 |
| }
 |
| 
 |
| #if defined SYNCHRO_POSIX4 || defined SYNCHRO_Linux
 |
| int error = pthread_cond_destroy (&m_condition);
 |
| #elif defined SYNCHRO_Solaris
 |
| int error = cond_destroy (&m_condition);
 |
| #endif
 |
| 
 |
| if (error) {
 |
| OSAL_ERROR ("destructor failed");
 |
| }</body> |
| </ownedBehavior> |
| <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_QWlVi_RTEeCUGrV0Hl4JwQ" name="lock" specification="_QWlVk_RTEeCUGrV0Hl4JwQ"> |
| <language>C/C++</language> |
| <body>m_mutex.lock ();
 |
| m_isLocked = true;
 |
| </body> |
| </ownedBehavior> |
| <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_QWlVjPRTEeCUGrV0Hl4JwQ" name="unlock" specification="_QWlVlPRTEeCUGrV0Hl4JwQ"> |
| <language>C/C++</language> |
| <body>if (!m_isLocked) {
 |
| // OSAL_ERROR ("already unlocked");
 |
| }
 |
| m_mutex.unlock ();
 |
| m_isLocked = false;
 |
| </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 (;;) {
 |
| #if defined SYNCHRO_POSIX4
 |
| /*
 |
| * POSIX man page:
 |
| * The pthread_cond_timedwait() and pthread_cond_wait() functions shall
 |
| * block on a condition variable. They shall be called with mutex locked
 |
| * by the calling thread or undefined behavior results.
 |
| */
 |
| 
 |
| int result = pthread_cond_wait (&m_condition, &m_mutex.m_mutexS);
 |
| 
 |
| #elif defined SYNCHRO_Solaris
 |
| int result = cond_wait (&m_condition, &m_mutex.m_mutexS);
 |
| 
 |
| #endif
 |
| if (result == 0) {
 |
| // upon successful return, the lock is re-locked
 |
| m_isLocked = true;
 |
| return result;
 |
| }
 |
| if (result == EPERM) {
 |
| OSAL_ERROR ("wait failed (EPERM - operation not permitted)");
 |
| } 
 |
| else if (result != EINTR) {
 |
| OSAL_ERROR ("wait failed");
 |
| }
 |
| }</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);
 |
| PR ("Condition::waitUpTo ()" << showI);
 |
| 
 |
| int result;
 |
| if (date.hasPassed ()) {
 |
| result = ERANGE; // it is too late !
 |
| }
 |
| else {
 |
| result = 0;
 |
| 
 |
| m_isLocked = false; // cond_timedwait will unlock the lock
 |
| OS_AL::Time::TimeVal absTime = date + OS_AL::Time::TimeVal::sysStartTime();
 |
| #if defined SYNCHRO_POSIX4
 |
| struct timespec finalDate; // final date in standard type
 |
| finalDate.tv_sec = absTime.getSec();
 |
| finalDate.tv_nsec = absTime.getUsec() * 1000;
 |
| 
 |
| for (;;) {
 |
| result = pthread_cond_timedwait (&m_condition, &m_mutex.m_mutexS, &finalDate);
 |
| #elif defined SYNCHRO_Solaris
 |
| timestruc_t finalDate; // final date in standard type
 |
| finalDate.tv_sec = absTime.getSec();
 |
| finalDate.tv_nsec = absTime.getUsec() * 1000;
 |
| 
 |
| for (;;) {
 |
| result = cond_timedwait (&m_condition, &m_mutex.m_mutexS, &finalDate);
 |
| #else
 |
| // not supported in vxWorks, open loop to satisfy the compilers
 |
| for (;;) {
 |
| result = 0;
 |
| #endif
 |
| if ((result == 0) || (result == ETIMEDOUT)) {
 |
| break;
 |
| }
 |
| if (result != EINTR) {
 |
| OS_AL::Util::BString500 s1 ("date=");
 |
| OSAL_ERROR (s1 << finalDate.tv_sec << " sec. , " << finalDate.tv_nsec);
 |
| }
 |
| }
 |
| }
 |
| 
 |
| // upon successful return, the lock is re-locked
 |
| if (result == 0) {
 |
| m_isLocked = true;
 |
| }
 |
| return result;
 |
| </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
 |
| int result = pthread_cond_signal (&m_condition);
 |
| 
 |
| #elif defined SYNCHRO_Solaris
 |
| int result = cond_signal (&m_condition);
 |
| 
 |
| #endif
 |
| 
 |
| if (result != 0) {
 |
| OSAL_ERROR ("could not signal condition");
 |
| }
 |
| 
 |
| 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
 |
| int result = pthread_cond_broadcast (&m_condition);
 |
| 
 |
| #elif defined SYNCHRO_Solaris
 |
| int result = cond_broadcast (&m_condition);
 |
| 
 |
| #endif
 |
| 
 |
| if (result != 0) {
 |
| OSAL_ERROR ("");
 |
| }
 |
| 
 |
| return result;
 |
| </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.
 |
| 
 |
| The associated mutex must be locked before calling waitUpto. It will
 |
| 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
 |
| has pased.
 |
| 
 |
| The associated mutex must be locked before calling waitUpto. It will
 |
| 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
 |
| condition will continue. If multiple threads are waiting, only one
 |
| 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
 |
| 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;
 |
| sigset_t sigset;
 |
| sigemptyset (&sigset);
 |
| sigaddset (&sigset, SIGRTMIN);
 |
| for (;;) {
 |
| sigwait (&sigset, &receivedSigID);
 |
| int overruns = debugTimer.getOverrun ();
 |
| if (overruns > 0) {
 |
| TRACEpr (F6);
 |
| PR ("detected return from debugger" << showI);
 |
| TimeVal delta;
 |
| overruns++; // the actual delay is between overruns and overruns+1
 |
| delta.setSec ((overruns / DBG_TICKS_PER_SECOND));
 |
| delta.setUsec ((overruns % DBG_TICKS_PER_SECOND) *
 |
| DBG_RESOLUTION_MS * 1000);
 |
| TimeVal::adjustTime (delta);
 |
| PR ("adjusted time" << showI);
 |
| }
 |
| }
 |
| 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 = {
 |
| {0, DBG_RESOLUTION_MS*1000*1000},
 |
| {0, DBG_RESOLUTION_MS*1000*1000}
 |
| };
 |
| 
 |
| // need high priority (1)
 |
| Thread::modifySigMask (SIG_BLOCK, SIGRTMIN);
 |
| // not declared globally, since initialization order of gcc is incorrect
 |
| // (set_of_threads is initialized after)
 |
| overrunCheckThread = new Thread ("dbg-check");
 |
| overrunCheckThread->exec (checkOverruns, NULL, 10);
 |
| 
 |
| debugTimer.setTime (0, &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
 |
| 
 |
| This class serves two different functions: if an instance is
 |
| created via the constructor, it provides a (posix) timer. The configuration
 |
| of this timer is done by means of the method settime, which allows
 |
| principally to configure a period length and the initial delay.
 |
| 
 |
| In addtion, the timer class offers the possibility to use system
 |
| functions for waiting a specific time:
 |
| 
 |
| - sleep
 |
| - wakeup
 |
| - wakePeriodicforZero
 |
| 
 |
| In order to use These, it is not necessary to create a timer instance,
 |
| 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;
 |
| 
 |
| #if defined TIMER_POSIX4
 |
| #define ITIMER CLOCK_REALTIME // or CLOCK_MONOTONIC
 |
| 
 |
| // With evp==NULL and SA_SIGINFO set ,
 |
| // SIGALRM will be sent to the process (or to the thread
 |
| // not masked for this signal)
 |
| // replace SIG_IGN by a handleSigAlarm() ??????
 |
| // mask other signals !!
 |
| 
 |
| // initialisation of sigaction structure
 |
| struct sigaction act;
 |
| //act.sa_handler = (VOIDFUNCPTR) sigHandler;
 |
| //act.sa_mask = 0;
 |
| //act.sa_flags = 0;
 |
| // we have to define a handler with the following arguments:
 |
| // void sigHandler(int sig, int code, SIGCONTEXT *sigContext) {};
 |
| 
 |
| if (sigaction (SIGALRM, &act, NULL))
 |
| OSAL_ERROR ("ON sigaction()");
 |
| 
 |
| struct sigevent sig_event;
 |
| sig_event.sigev_notify = SIGEV_SIGNAL;
 |
| sig_event.sigev_value.sival_ptr = this;
 |
| sig_event.sigev_signo = SIGRTMIN;
 |
| // sig_event.sigev_notify_function = SysTimer_impl::handler_fct;
 |
| // sig_event.sigev_notify_attributes = NULL;
 |
| 
 |
| int r = timer_create (ITIMER, &sig_event, &m_id);
 |
| if (r == -1)
 |
| OSAL_ERROR ("ON timer_create()");
 |
| 
 |
| #elif defined TIMER_Solaris
 |
| #define ITIMER ITIMER_REAL // PAS CONSEILLÉ par Doc SunOS5.5
 |
| //#define ITIMER ITIMER_VIRTUAL ???
 |
| #define SIG_ITIMER SIGALRM // or SIGVTALRM
 |
| 
 |
| // 
 |
| // Si la Realtime Library de Solaris ne marche vraiment pas pour les timers
 |
| // masquer ce thread contre les autres signaux !!
 |
| // faire la methode de classe handleTimerSignal() contenant seulement :
 |
| // flag= 1;
 |
| //
 |
| //**** Prepare signal receiving
 |
| // struct sigaction sigAct;
 |
| // sigAct.sa_handler= (VOIDFUNCPTR) sigHandler);
 |
| // sigAct.sa_mask= 0;
 |
| // sigAct.sa_flags= 0;
 |
| // sigaction(SIGALRM, &sigAct, NULL);
 |
| //
 |
| // void (*f)(int);
 |
| // f= sigset(SIG_ITIMER, (void(*)(int))handleTimerSignal);
 |
| // if (f == SIG_ERR)
 |
| // OSAL_ERROR("ON sigset(SIG_ITIMER, )");
 |
| 
 |
| PRINTpr ("not yet implemented.");
 |
| pr << shErr;
 |
| #else
 |
| #error Timer_??? not defined
 |
| #endif
 |
| </body> |
| </ownedBehavior> |
| <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_eQrRcDkZEdyuzNpSiGPe4w" name="Timer" specification="_5IDV0DkUEdyuzNpSiGPe4w"> |
| <language>C/C++</language> |
| <body> int r;
 |
| 
 |
| #if defined TIMER_POSIX4
 |
| if (m_id != TimerNotAssigned)
 |
| {
 |
| r = timer_delete (m_id);
 |
| if (r == -1) {
 |
| OSAL_ERROR ("ON timer_delete()");
 |
| }
 |
| }
 |
| #elif defined TIMER_Solaris
 |
| // [todo: resource leak?]
 |
| #else
 |
| #error Timer_??? not defined
 |
| #endif
 |
| </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;
 |
| 
 |
| OS_AL::Util::Print pr2;
 |
| pr2 << txt;
 |
| 
 |
| while (*intPtr) // while pointed integer is not zero
 |
| {
 |
| if (txt.length () != 0) // print if txt string is not empty
 |
| {
 |
| pr2 << "value *intPtr = " << *intPtr << " - wait " << duration
 |
| << " timetick(s)" << showI;
 |
| }
 |
| count ++;
 |
| Timer::sleep (duration);
 |
| 
 |
| if (!(errno == EINTR || errno == ETIME))
 |
| OSAL_ERROR ("");
 |
| }
 |
| pr2.clean ();
 |
| 
 |
| TRACEpr (F7);
 |
| PR (txt << "> return after " << count
 |
| << " * " << duration << " timeticks" << showI);
 |
| </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;
 |
| 
 |
| #if defined TIMER_POSIX4 || defined TIMER_Linux
 |
| // flags == TIMER_RELTIME ou TIMER_ABSTIME
 |
| r = timer_settime (m_id, flags, value, oldValue);
 |
| if (r == -1)
 |
| OSAL_ERROR ("ON timer_settime()");
 |
| 
 |
| #elif defined TIMER_Solaris
 |
| struct itimerval val, oldVal;
 |
| val.it_interval.tv_sec = value->it_interval.tv_sec;
 |
| val.it_interval.tv_usec = value->it_interval.tv_nsec / 1000;
 |
| val.it_value.tv_sec = value->it_value.tv_sec;
 |
| val.it_value.tv_usec = value->it_value.tv_nsec / 1000;
 |
| 
 |
| if (setitimer (ITIMER, &val, &oldVal))
 |
| OSAL_ERROR ("ON setitimer()");
 |
| 
 |
| if (oldValue)
 |
| {
 |
| oldValue->it_interval.tv_sec = oldVal.it_interval.tv_sec;
 |
| oldValue->it_interval.tv_nsec = oldVal.it_interval.tv_usec * 1000;
 |
| oldValue->it_value.tv_sec = oldVal.it_value.tv_sec;
 |
| oldValue->it_value.tv_nsec = oldVal.it_value.tv_usec * 1000;
 |
| }
 |
| #else
 |
| #error Timer_??? not defined
 |
| #endif
 |
| 
 |
| return r;
 |
| </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;
 |
| 
 |
| #if defined TIMER_POSIX4 || defined TIMER_Linux
 |
| r = timer_gettime (m_id, value);
 |
| if (r == -1)
 |
| OSAL_ERROR ("ON timer_gettime()");
 |
| 
 |
| #elif defined TIMER_Solaris
 |
| struct itimerval val;
 |
| val.it_interval.tv_sec = value->it_interval.tv_sec;
 |
| val.it_interval.tv_usec = value->it_interval.tv_nsec / 1000;
 |
| val.it_value.tv_sec = value->it_value.tv_sec;
 |
| val.it_value.tv_usec = value->it_value.tv_nsec / 1000;
 |
| 
 |
| if (getitimer (ITIMER, &val))
 |
| OSAL_ERROR ("ON getitimer()");
 |
| #else
 |
| #error Timer_??? not defined
 |
| #endif
 |
| 
 |
| return r;
 |
| </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;
 |
| 
 |
| #if defined TIMER_Linux
 |
| r = timer_getoverrun (m_id);
 |
| if (r == -1)
 |
| OSAL_ERROR ("ON timer_getoverrun()");
 |
| 
 |
| #elif defined TIMER_Cygwin || defined TIMER_Solaris
 |
| // not supported
 |
| r = 0;
 |
| #else
 |
| #error Timer_??? not defined
 |
| #endif
 |
| 
 |
| return r;
 |
| </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;
 |
| 
 |
| if (duration > 0)
 |
| {
 |
| TimeVal finalDate = TimeVal::current () + TimeVal (duration);
 |
| r = wakeUp (finalDate);
 |
| }
 |
| 
 |
| return r;
 |
| </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;
 |
| 
 |
| if (!date.hasPassed ()) {
 |
| TimeVal remainder;
 |
| do {
 |
| r = waitDate (date, remainder);
 |
| } while (remainder > 0);
 |
| }
 |
| return r;
 |
| </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;
 |
| 
 |
| #ifdef SYSTEM_Solaris
 |
| mutex_t sleepLock = DEFAULTMUTEX; // without init(), requires zeroed memory
 |
| cond_t sleepCond = DEFAULTCV; // this condition variable will never be unblocked
 |
| struct timespec final; // final date in standard type
 |
| TimeVal absTime = finalDate + TimeVal::sysStartTime ();
 |
| final.tv_sec = absTime.getSec ();
 |
| final.tv_nsec = absTime.getUsec () * 1000;
 |
| 
 |
| mutex_lock (&sleepLock);
 |
| errno = r = cond_timedwait (&sleepCond, &sleepLock, &final);
 |
| mutex_unlock (&sleepLock);
 |
| // cond_destroy(&sleepCond);
 |
| // mutex_destroy(&sleepLock);
 |
| 
 |
| if (errno == ETIME || errno == 0) {
 |
| r = 0;
 |
| remainder.setSec (0);
 |
| remainder.setNSec (0);
 |
| }
 |
| else if (errno == EINTR) {
 |
| // call has been interrupted by signal
 |
| r = 1;
 |
| remainder = finalDate - TimeVal::current ();
 |
| }
 |
| else {
 |
| OSAL_ERROR ("ON cond_timedwait()");
 |
| }
 |
| #else
 |
| struct timespec delay, remainingTime;
 |
| TimeVal delayTime = finalDate - TimeVal::current ();
 |
| // #define PRECISE_WAIT
 |
| #ifdef PRECISE_WAIT
 |
| // idea: wait some ms less with nanosleep, perform busy wait after
 |
| // [todo:] does not work for remainingTime
 |
| TimeVal some_ms;
 |
| some_ms.setUsec (5*1000);
 |
| 
 |
| TimeVal sleepTime = delayTime - some_ms;
 |
| delay.tv_sec = sleepTime.getSec ();
 |
| delay.tv_nsec = sleepTime.getNsec ();
 |
| r = 0;
 |
| if (sleepTime > 0) {
 |
| r = nanosleep (&delay, &remainingTime);
 |
| }
 |
| // perform busy wait for last (upto) 10 ms
 |
| do {
 |
| delayTime = finalDate - TimeVal::current ();
 |
| }
 |
| while (delayTime > 0);
 |
| #else
 |
| delay.tv_sec = delayTime.getSec ();
 |
| delay.tv_nsec = delayTime.getNsec ();
 |
| r = nanosleep (&delay, &remainingTime);
 |
| #endif
 |
| if (r == 0)
 |
| {
 |
| remainder = 0;
 |
| }
 |
| else
 |
| {
 |
| if (errno != EINTR)
 |
| OSAL_ERROR ("ON nanosleep()");
 |
| r = 1;
 |
| // todo: remainder not used?
 |
| remainder.setSec (remainingTime.tv_sec);
 |
| remainder.setNsec (remainingTime.tv_nsec);
 |
| }
 |
| #endif
 |
| 
 |
| return r;
 |
| </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
 |
| and period length. In addition, the first parameter flags is a bit
 |
| vector. If it includes TIMER_ABSTIME, it denotes that an absolute
 |
| time value for is passed as initial delay.
 |
| [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,
 |
| an overrun counter is increased with each expiration. It can be used
 |
| 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
 |
| TimeVal::_moduleSec)
 |
| 
 |
| If the process receives a signal, the OS sleep is interrupted
 |
| (e.g. nanosleep in case of Posix). This sleep method will recall the
 |
| 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
 |
| 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
 |
| determines the interval in which the variable is checked. If the
 |
| parameter txt is not empty, its contents is printed out during each
 |
| check.
 |
| 
 |
| 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 ("A_TimeScale");
 |
| if (s <= 0)
 |
| {
 |
| OS_AL::Util::BString500 bstr (
 |
| "--- Environment variable 'A_TimeScale' must be positive (length of ticks in microseconds)");
 |
| OSAL_ERROR (bstr);
 |
| }
 |
| else {
 |
| s = 1000; // default value 1000 µs = 1 ms
 |
| 
 |
| OS_AL::Util::Print print;
 |
| print <<
 |
| " --- Environment variable 'A_TimeScale' not found. Time intervals are assumed expressed in milliseconds." << showI;
 |
| }
 |
| 
 |
| 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();
 |
| m_timespec = t2.m_timespec;
 |
| </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();
 |
| setSec (ticks / m_moduloSec);
 |
| setUsec ((ticks % m_moduloSec) * m_timeScale);
 |
| </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;
 |
| current.update ();
 |
| return current;
 |
| </body> |
| </ownedBehavior> |
| <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_DYbVMDngEdyuzNpSiGPe4w" name="update" specification="_5GJNIDkbEdyuzNpSiGPe4w"> |
| <language>C/C++</language> |
| <body>/*
 |
| if (m_bFrozen) {
 |
| *this = m_freezeTime;
 |
| }
 |
| else {
 |
| */
 |
| *this = systemTime () - m_sysStartTime;
 |
| // }
 |
| </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;
 |
| clock_gettime (CLOCK_REALTIME, &current.m_timespec);
 |
| 
 |
| return current;
 |
| </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;
 |
| 
 |
| return *this;
 |
| </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;
 |
| m_timespec.tv_nsec += incr.m_timespec.tv_nsec;
 |
| 
 |
| if (m_timespec.tv_nsec >= 1000*1000*1000)
 |
| {
 |
| m_timespec.tv_sec ++;
 |
| m_timespec.tv_nsec -= 1000*1000*1000;
 |
| }
 |
| 
 |
| return *this;
 |
| </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;
 |
| m_timespec.tv_nsec -= incr.m_timespec.tv_nsec;
 |
| 
 |
| if (m_timespec.tv_nsec < 0)
 |
| {
 |
| m_timespec.tv_sec --;
 |
| m_timespec.tv_nsec += 1000*1000*1000;
 |
| }
 |
| 
 |
| return *this;
 |
| </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);
 |
| r += tv2;
 |
| 
 |
| return r;
 |
| </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);
 |
| r -= tv2;
 |
| 
 |
| return r;
 |
| </body> |
| </ownedBehavior> |
| <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_bE5KgDngEdyuzNpSiGPe4w" name="operator<" 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 (
 |
| (getSec () < tv2.getSec ()) ||
 |
| (getSec () == tv2.getSec () && getNsec () < tv2.getNsec ()));
 |
| </body> |
| </ownedBehavior> |
| <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_ds2EMDngEdyuzNpSiGPe4w" name="operator<=" 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 (
 |
| (getSec () < tv2.getSec ()) ||
 |
| (getSec () == tv2.getSec () && getNsec () <= tv2.getNsec ()));
 |
| </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 (
 |
| (getSec () == tv2.getSec ()) && (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 (
 |
| (getSec () > tv2.getSec ()) ||
 |
| (getSec () == tv2.getSec () && getNsec () >= tv2.getNsec ()));
 |
| </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 (
 |
| (getSec () > tv2.getSec ()) ||
 |
| (getSec () == tv2.getSec () && getNsec () > tv2.getNsec ()));
 |
| </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 ();
 |
| 
 |
| return (
 |
| (getSec () < current.getSec ()) ||
 |
| (getSec () == current.getSec () && getNsec () <= current.getNsec ()));
 |
| </body> |
| </ownedBehavior> |
| <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_r6enkDngEdyuzNpSiGPe4w" name="reset" specification="_IKEGADkhEdyuzNpSiGPe4w"> |
| <language>C/C++</language> |
| <body>m_timespec.tv_sec = 0;
 |
| m_timespec.tv_nsec = 0;
 |
| </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
 |
| return
 |
| (getSec () * m_moduloSec) +
 |
| (getUsec () / m_timeScale);
 |
| </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
 |
| m_sysStartTime += delta;
 |
| </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 "accord" time, returned time is relative to
 |
| 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<" 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<=" 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.
 |
| The method is called "hasPassed", since it can be used as a test
 |
| whether a deadline has passed - assuming that the stored timevalue
 |
| 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
 |
| (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
 |
| by passing a value of type Flag. These flags specify the trace
 |
| category (for instance traces related to an abstract object) and
 |
| are defined in class FlagSet. An environment variable controls
 |
| at execution time which trace categories are actually producing
 |
| output.
 |
| 
 |
| Instead of directly creating instances of class Trace (on the stack),
 |
| the developer should use the macro TRACEpr which respects the compile
 |
| time flag ENABLE_TRACING. It creates the instance "pr" on the stack,
 |
| if ENABLE_TRACING is set.
 |
| 
 |
| Messages to the instance "pr" are sent via the overloaded operator<<,
 |
| the supported datatypes are the same as for class Print (in fact,
 |
| the operators delegate the calls to an internal object of type print).
 |
| As for class Trace, the developer should use the macro PR to do this.
 |
| Don't forget to pass at least one "showI" to the trace instance before
 |
| it gets out of scope - otherwise the output would be empty.
 |
| 
 |
| \code
 |
| Example:
 |
| function f ()
 |
| {
 |
| TRACEpr (AO); // if ENABLE_TRACING => Trace pr (Flag_AO);
 |
| PR ("Function f << showI");
 |
| PR ("This is message number " << number << showI);
 |
| }
 |
| \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=""#""/> |
| </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)
 |
| PRINTerr ("NO Print for this Trace instance");
 |
| 
 |
| return (*m_prt);
 |
| </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
 |
| 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
 |
| 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.
 |
| 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 & 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;
 |
| current |= f;
 |
| 
 |
| return old;
 |
| </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;
 |
| current = current & (~f);
 |
| 
 |
| return old;
 |
| </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;
 |
| current = f;
 |
| 
 |
| return old;
 |
| </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;
 |
| for (unsigned int i = 0; i < fStr.length (); ++i)
 |
| {
 |
| const char f = fStr[i];
 |
| switch (f)
 |
| {
 |
| case 'A':
 |
| flags |= FLAG_Ap;
 |
| break;
 |
| case 'C':
 |
| flags |= FLAG_Ch;
 |
| break;
 |
| case 'G':
 |
| flags |= FLAG_Gr;
 |
| break;
 |
| case 'O':
 |
| flags |= FLAG_AO;
 |
| break;
 |
| case 'R':
 |
| flags |= FLAG_RB;
 |
| break;
 |
| case 'S':
 |
| flags |= FLAG_Sc;
 |
| break;
 |
| case 'T':
 |
| flags |= FLAG_Ti;
 |
| break;
 |
| case 'U':
 |
| flags |= FLAG_Ut;
 |
| break;
 |
| case 'V':
 |
| flags |= FLAG_VM;
 |
| break;
 |
| case 'Z':
 |
| flags |= FLAG_Z;
 |
| break;
 |
| case '1':
 |
| flags |= FLAG_F1;
 |
| break;
 |
| case '2':
 |
| flags |= FLAG_F2;
 |
| break;
 |
| case '3':
 |
| flags |= FLAG_F3;
 |
| break;
 |
| case '4':
 |
| flags |= FLAG_F4;
 |
| break;
 |
| case '5':
 |
| flags |= FLAG_F5;
 |
| break;
 |
| case '6':
 |
| flags |= FLAG_F6;
 |
| break;
 |
| case '7':
 |
| flags |= FLAG_F7;
 |
| break;
 |
| case '8':
 |
| flags |= FLAG_F8;
 |
| break;
 |
| case '9':
 |
| flags |= FLAG_F9;
 |
| break;
 |
| case 'a':
 |
| flags |= FLAG_Fa;
 |
| break;
 |
| case 'b':
 |
| flags |= FLAG_Fb;
 |
| break;
 |
| case 'c':
 |
| flags |= FLAG_Fc;
 |
| break;
 |
| case 'd':
 |
| flags |= FLAG_Fd;
 |
| break;
 |
| case 'e':
 |
| flags |= FLAG_Fe;
 |
| break;
 |
| case 'f':
 |
| flags |= FLAG_Ff;
 |
| break;
 |
| case 'g':
 |
| flags |= FLAG_Fg;
 |
| break;
 |
| case 'h':
 |
| flags |= FLAG_Fh;
 |
| break;
 |
| case 'i':
 |
| flags |= FLAG_Fi;
 |
| break;
 |
| default:
 |
| PRINTpr ("unknown flag : ");
 |
| pr << f << showErr;
 |
| break;
 |
| }
 |
| }
 |
| Flag old = setUp ((Flag) flags);
 |
| 
 |
| return old;
 |
| </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)
 |
| * It forms a bit vector. In the list below, we list the flags that
 |
| * are available, together with the letter in the A_Trace<zone-nr>
 |
| * environment variable that is used to activate the tracing.
 |
| * (if one zone is used, A_Trace0 defines the tracing that is
 |
| * activated)
 |
| *
 |
| * * FLAG_Ap 'A': appliation tracing
 |
| * * FLAG_Ch 'C': Message channel/queue (in case of distribution)
 |
| * * FLAG_Gr 'G': currently unused
 |
| * * FLAG_AO 'O': active object
 |
| * * FLAG_RB 'R': rbox - used for passing out and return parameters
 |
| * back to a caller
 |
| * * FLAG_Sc 'S': Scheduling
 |
| * * FLAG_Ti 'T': Task related
 |
| * * FLAG_Ut 'U': currently unused
 |
| * * FLAG_VM 'V': virtual machine (now OS abstraction layer), i.e. for
 |
| * Threads, SharedMemory and synchronisation classes
 |
| * such as Lock, Barrier and Condition
 |
| * * FLAG_Z 'Z': Related to zone aspects, used by ZoneController and
 |
| * in class Main.
 |
| * * FLAG_F1 '1': currently unused (used by a test program)
 |
| * * FLAG_F2 '2': currently unused
 |
| * * FLAG_F3 '3': currently unused
 |
| * * FLAG_F4 '4': currently unused
 |
| * * FLAG_F5 '5': currently unused (used by a test program)
 |
| * * FLAG_F6 '6': Indicates "return from debugger detection" in
 |
| * Time/DebugTimer and deadline violations
 |
| * * FLAG_F7 '7': Related to "container" classes, i.e. class
 |
| * CircularBuffer and BOL (Bounded ordered list)
 |
| * * FLAG_F8 '8': used for class SR_List (list of service requests)
 |
| * * FLAG_F9 '9': used for class ProDesc
 |
| * * FLAG_Fa 'a': currently unused
 |
| * * FLAG_Fb 'b': currently unused
 |
| * * FLAG_Fc 'c': currently unused
 |
| * * FLAG_Fd 'd': deadline control
 |
| * * FLAG_Fe 'e': currently unused
 |
| * * FLAG_Ff 'f': currently unused
 |
| * * FLAG_Fg 'g': currently unused
 |
| * * FLAG_Fh 'h': currently unused
 |
| * * FLAG_Fi 'i': currently unused
 |
| * * FLAG_Fj 'j': currently unused
 |
| * * 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
 |
| are factored out to the superclass BString. Constructors and the
 |
| 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;
 |
| charTableSize = maxSize;
 |
| commonInit ();
 |
| </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;
 |
| charTableSize = maxSize;
 |
| commonInit ();
 |
| 
 |
| concat (ch, nChar);
 |
| </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;
 |
| charTableSize = maxSize;
 |
| commonInit ();
 |
| 
 |
| concat (bString.data());
 |
| </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;
 |
| charTableSize = maxSize;
 |
| commonInit ();
 |
| 
 |
| concat (bString.data());
 |
| </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;
 |
| charTableSize = maxSize;
 |
| commonInit ();
 |
| 
 |
| concat (constCharP);
 |
| </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
 |
| 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.
 |
| Although it would be always ok to use the constructor above, this copy
 |
| constructor is necessary to avoid that the compiler implicitly
 |
| 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
 |
| all functions that do not depend on the template parameter.
 |
| Since it does not provide storage for the string, never instantiate
 |
| this class but BStringT instead (to enforce this, the constructor
 |
| 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<<" 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;
 |
| numBase = newBase;
 |
| 
 |
| return old;
 |
| </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;
 |
| numBase = 0;
 |
| m_separator = StdSeparators;
 |
| charTableSize = 0;
 |
| nbytes = strlen(charP);
 |
| </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;
 |
| concat (constCharP);
 |
| current = charTable;
 |
| </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;
 |
| concat (bString.charTable);
 |
| current = charTable;
 |
| </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];
 |
| 
 |
| sprintf (buffer, "%x", (unsigned int) 0 /*vp*/);
 |
| concat (buffer);
 |
| </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);
 |
| </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());
 |
| </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:
 |
| // round-up the log10 of maxint + 2 bytes for the sign and the
 |
| // trailing 0, but it is simpler to come up with something "big enough"
 |
| char buffer[30];
 |
| sprintf (buffer, "%i", i);
 |
| concat (buffer);
 |
| </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];
 |
| sprintf (buffer, "%d", (int) l);
 |
| concat (buffer);
 |
| </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];
 |
| sprintf (buffer, "%g", d);
 |
| concat (buffer);
 |
| </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];
 |
| sprintf (buffer, "%f", f);
 |
| concat (buffer);
 |
| </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];
 |
| sprintf (buffer, "%u", ui);
 |
| concat (buffer);
 |
| </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];
 |
| sprintf (buffer, "%u", (unsigned int) ul);
 |
| concat (buffer);
 |
| </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;
 |
| 
 |
| for (; current < charTable + nbytes; ++current)
 |
| {
 |
| if (strrchr (m_separator, *current) != NULL)
 |
| { // *current IS a separator
 |
| if (n > 0)
 |
| break; // end of word
 |
| // else // separators before word
 |
| }
 |
| else
 |
| { // *current IS a character of word
 |
| if (n >= sizeBuff - 1)
 |
| {
 |
| break; // truncate if word too long
 |
| }
 |
| // with NO WARNING ! but caller may test :
 |
| // if (n == sizeBuff-1) ...
 |
| buff[n++] = *current; // store a character of word 
 |
| }
 |
| }
 |
| 
 |
| buff[n] = '\0'; // append a null terminator
 |
| 
 |
| return n;
 |
| </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];
 |
| if (getWord (buff, sizeof (buff)) > 0)
 |
| {
 |
| c = buff[0];
 |
| }
 |
| m_scanOk = (current < charTable + nbytes);
 |
| return *this;
 |
| </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;
 |
| //double k= strtol(current, &lastP, numBase);
 |
| double k = strtod (current, &lastP);
 |
| 
 |
| m_scanOk = (current != lastP);
 |
| if (m_scanOk) {
 |
| d = k; // don't modify arg, if extraction failed
 |
| current = lastP;
 |
| }
 |
| return *this;
 |
| </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;
 |
| //float k= strtol(current, &lastP, numBase);
 |
| #ifdef SYSTEM_VxWorks
 |
| // strtof seems to be missin in vxWorks
 |
| float k = strtod (current, &lastP);
 |
| #else
 |
| float k = strtof (current, &lastP);
 |
| #endif
 |
| 
 |
| m_scanOk = (current != lastP);
 |
| if (m_scanOk) {
 |
| f = k; // don't modify arg, if extraction failed
 |
| current = lastP;
 |
| }
 |
| return *this;
 |
| </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;
 |
| int k = strtol (current, &lastP, numBase);
 |
| 
 |
| m_scanOk = (current != lastP);
 |
| if (m_scanOk) {
 |
| i = k; // don't modify arg, if extraction failed
 |
| current = lastP;
 |
| }
 |
| return *this;
 |
| </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;
 |
| long k = strtol (current, &lastP, numBase);
 |
| 
 |
| m_scanOk = (current != lastP);
 |
| if (m_scanOk) {
 |
| l = k; // don't modify arg, if extraction failed
 |
| current = lastP;
 |
| }
 |
| return *this;
 |
| </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;
 |
| long k = strtol (current, &lastP, numBase);
 |
| 
 |
| m_scanOk = (current != lastP);
 |
| if (m_scanOk) {
 |
| ui = k; // don't modify arg, if extraction failed
 |
| current = lastP;
 |
| }
 |
| return *this;
 |
| </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;
 |
| unsigned long k = strtol (current, &lastP, numBase);
 |
| 
 |
| m_scanOk = (current != lastP);
 |
| if (m_scanOk) {
 |
| ul = k; // don't modify arg, if extraction failed
 |
| current = lastP;
 |
| }
 |
| return *this;
 |
| </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;
 |
| char *bound = charTable + charTableSize;
 |
| while (target != bound && *constCharP != '\0')
 |
| {
 |
| *target++ = *constCharP++;
 |
| nbytes++;
 |
| }
 |
| if (target == bound)
 |
| OSAL_ERROR ("Bounded character table too short");
 |
| *target = '\0';
 |
| </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;
 |
| char *bound = charTable + charTableSize;
 |
| unsigned int i = 0;
 |
| while (target != bound && i < size)
 |
| {
 |
| *target++ = *constCharP++;
 |
| nbytes++;
 |
| i++;
 |
| }
 |
| if (target == bound)
 |
| OSAL_ERROR ("Bounded character table too short");
 |
| *target = '\0';
 |
| </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) {
 |
| OSAL_ERROR ("Bounded character table too short");
 |
| }
 |
| 
 |
| unsigned int i;
 |
| char *cP = charTable + nbytes;
 |
| for (i = 0; i < nChar; i++) { // concat stops on terminating zero
 |
| *cP++ = ch;
 |
| }
 |
| *cP = '\0';
 |
| nbytes += nChar;
 |
| </body> |
| </ownedBehavior> |
| <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_4mVX8DR2EdypGbuyt3_DaA" name="commonInit" specification="_ZakdUDRnEdypGbuyt3_DaA"> |
| <language>C/C++</language> |
| <body>numBase = 0;
 |
| current = charTable;
 |
| 
 |
| m_separator = StdSeparators;
 |
| 
 |
| charTable[0] = '\0';
 |
| nbytes = 0;
 |
| </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)) {
 |
| OSAL_ERROR ("BString::setPosition pos > current-begin");
 |
| }
 |
| 
 |
| current = charTable + pos;
 |
| </body> |
| </ownedBehavior> |
| <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_20RkgFIJEd-OfYmxqPWG5g" name="operator<<" 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<<" 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<<" 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<<" 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<<" 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<<" 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<<" 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<<" 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<<" 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.
 |
| If the copying to a BStringT type should be avoided for the sake
 |
| of efficiency, an assignment to a reference type (BString&) should be
 |
| used explicitly.
 |
| The constructor is declared private to avoid that the default
 |
| copy constructor of a subclass will based on it (which won't work,
 |
| since it is empty). Effectively, we force that the subclass declares
 |
| 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*
 |
| A string initialized with this pointer has a size of 0 (allocated
 |
| memory) and cannot be modified. It is a convenient way to pass
 |
| C-strings directly to functions that have a const BString &
 |
| 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<<" 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<<" 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<<" 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<<" 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<<" 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<<" 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<<" 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<<" 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<<" 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<<" 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
 |
| was successfull (see operation scanOk), the current scan position
 |
| is set just behind the input consumed. Therefore, a successive
 |
| invocation of this operator will continue scanning at the new
 |
| 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)
 |
| (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
 |
| (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
 |
| (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,
 |
| 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
 |
| 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
 |
| the passed string is stored (no copy is made). Therefore, the passed
 |
| 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
 |
| 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
 |
| 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;
 |
| </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;
 |
| </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;
 |
| </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;
 |
| return *this;
 |
| </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;
 |
| return *this;
 |
| </body> |
| </ownedBehavior> |
| <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_trmIcDUVEdyDReAOQiyvOg" name="operator<<" 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 << str;
 |
| return *this;
 |
| </body> |
| </ownedBehavior> |
| <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_2QapMDUVEdyDReAOQiyvOg" name="operator<<" 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 << ccp;
 |
| return *this;
 |
| </body> |
| </ownedBehavior> |
| <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_ZbDgEDUYEdyDReAOQiyvOg" name="Print" specification="_ZgB1wDUPEdy0feurbW0fyQ"> |
| <language>C/C++</language> |
| <body>
 |
| </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;
 |
| m_head = ccp;
 |
| </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;
 |
| </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;
 |
| bstr << OS_AL::ProcessingResources::Thread::getName () << " ";
 |
| bstr << OS_AL::Time::TimeVal::current ().ticks () << " ";
 |
| 
 |
| if (m_initFlag) {
 |
| bstr << m_head;
 |
| }
 |
| bstr << ErrMark << ccp;
 |
| if (errno)
 |
| bstr << " - error " << errno
 |
| << " (" << strerror (errno) << ")";
 |
| cout << bstr.data () << endl;
 |
| errno = 0;
 |
| </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);
 |
| str << line << charP;
 |
| printErr (str.data ());
 |
| </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;
 |
| // prefix << "ID: " << (void*) Thread::getId () << " ";
 |
| prefix << OS_AL::ProcessingResources::Thread::getName () << " ";
 |
| prefix << OS_AL::Time::TimeVal::current ().ticks () << " ";
 |
| if (m_initFlag) {
 |
| prefix << m_head;
 |
| }
 |
| prefix << mark << begin;
 |
| 
 |
| if (log) {
 |
| // messages with file stamp
 |
| clog << prefix.data () << middle.data() << endl;
 |
| }
 |
| else {
 |
| cout << prefix.data () << middle.data() << endl;
 |
| }
 |
| m_shown = 1;
 |
| </body> |
| </ownedBehavior> |
| <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_blcekDUZEdyDReAOQiyvOg" name="clean" specification="_Pfz7wDUUEdyDReAOQiyvOg"> |
| <language>C/C++</language> |
| <body>middle = "";
 |
| m_shown = 1; // allows to avoid showing empty instances
 |
| </body> |
| </ownedBehavior> |
| <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_Tqni4FlLEd-9TNLvplUFDQ" name="operator<<" 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 << ch; |
| return *this;</body> |
| </ownedBehavior> |
| <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_0pUYkFlLEd-9TNLvplUFDQ" name="operator<<" 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 ("Instance of print destroyed, before it was shown (missing \"showI\"). Stored text is: "); |
| print (" <<"); |
| #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<<" 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<<" 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<<" 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<<" 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 << 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 <stdio.h>		// for sprintf
#include <stdlib.h>		// for strtod" header="#include <string.h>

#define StdSeparators " `~!@#$%^&*()-=+[]{}\\|;:'\"/,<.>?\a\b\f\n\r\t\v"
" 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;
typedef unsigned long ulong_t;

#define IN
#define OUT
#define INOUT
#define RETURN

#ifndef FALSE
	#define FALSE false
#endif
#ifndef TRUE
	#define TRUE true
#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 <errno.h>

#include <iostream>
#include <OS_AL/ProcessingResources/Thread.h>
#include <OS_AL/Time/TimeVal.h>

using namespace std;

#define ErrMark " << "
#define StdMark " # "

#define StopIfNeverShown 	0	// 1 or 0

// ---------------------------------------------------------------------------
// Global variables:
OS_AL::Util::Show showI;
ShowErr showErr;
" header="#define traceMark1	" $ "

// MACROS (if __METHOD__ is used)
#define PRINTpr(chars) OS_AL::Util::Print pr; pr << __FILE__ ": " chars
#define PRINTerr(chars) OS_AL::Util::Print::printErr ("in " __FILE__ ", line ", __LINE__, ": " chars)

/**
 * Verbose(expression) removes expression unless compiled with -DVERBOSE
 * Caveat:
 *	- avoid comments
 *	- avoid multiline expressions (ugly to read)
 *	- everything after a "," is interpreted as a 2nd argument
 *	=> use verbose for simple, single expressions only, in all
 * other cases use #ifdef VERBOSE ... #endif
 */
#if defined(VERBOSE) || defined (CR_CHECK)
	#define Verbose(expression)	expression
#else
	#define Verbose(expression)
#endif

/**
 * ShowErr: like show, but provoke an error message
 */
enum ShowErr { };

// show() is a method of VxWorks and IlogViews -> use showI
extern OS_AL::Util::Show showI;
extern ShowErr showErr;

//---------------------------------------------------------------------------
// definition of macros (reduce dependency on template compilers)


// ====================================================================
" 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 < ElType >))), endOfMemory ((ListCell *) ((char *) this + sizeof (BOL < ElType >) + (nbElem - 1) * sizeof (ListCell)))" base_operation="_ky3HADUyEdyDReAOQiyvOg"/> |
| <C_Cpp:Include xmi:id="_gutqEDa8Edy_E4ZljVbr-g" body="#if defined(_POSIX_SOURCE) || defined(PC)
	#include <string.h>
#else
	#include <string.h>
	#ifndef SYSTEM_VxWorks
		#include <memory.h>
	#endif 
#endif 
" header="/**
 * ----------------------------------------------------------------------
 * [todo: it would be very good to have lock-free set/list implementations.
 * Currently, two threads that are mixing adding/removals would need lock
 * protection] => examine solutions, for instance skip lists
 * ----------------------------------------------------------------------
 */


/**
 * This macro is used for historical reasons: it is used by the
 * code generated by objecteering. It declares a variable of type SetOf
 * with the prefix set_of_<typename>. This variable stores a set of pointers.
 */
#define CR_SET(className)\
	typedef ::OS_AL::Sets::SetOf<className *> set_of_ ## className;

/**
 * This macro is similar to the macro above. The difference is that a set
 * of values (and not pointers) is stored.
 */
#define CR_SET_V(className)\
	typedef ::OS_AL::Sets::SetOf<className> set_of_ ## className;

/**
 * This integer default value DEFAULT_SIZE_BLOCK is used to control (partly)
 * memory size and fragmentation during growing. The ARRAY
 * is roughly doubled in size until it hits the size_block limit, after
 * which it is grown only in size_block sized chunks, if necessary.
 * A large value limits fragmentation at the expense of using more memory.
 * DEFAULT_SIZE_BLOCK value must always be a number greater than zero.
 */
#ifndef DEFAULT_BLOCK_SIZE
#define DEFAULT_BLOCK_SIZE 1024
#endif
" 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 <OS_AL/ProcessingResources/ProDesc.h>
#include <OS_AL/Tracing/Trace.h>" base_class="_y68Y0DUuEdyDReAOQiyvOg"/> |
| <C_Cpp:Include xmi:id="_b4VAMDj8Edy0Rd6V_tf1-Q" header="#ifdef DEBUG
" 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 <OS_AL/Time/Timer.h>
#include <OS_AL/Time/TimeVal.h>
#include <OS_AL/ProcessingResources/ProDesc.h>
#include <OS_AL/Tracing/Trace.h>

#include <limits.h>
#include <errno.h>

#if defined SYSTEM_Solaris
	// todo: reconsider using class Mutex
	#include <synch.h>
#endif

#if defined SYNCHRO_POSIX4
	#include <pthread.h>
#endif

#define TimerNotAssigned	((timer_t) -1)
" header="#include <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="
" header="#if defined SYSTEM_VxWorks
#	include <sys/times.h>		// -VxW: definition of 'struct timeval'
#endif

#include <time.h>
#include <sys/time.h>
#include <sys/types.h>

// TODO: operators that enable marshalling into message buffer
#if defined __GNUC__
// LeftShiftPrint (TimeVal);
// LeftShiftTrace (TimeVal);
#endif	// __GNUC__
" 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 <OS_AL/Tracing/Trace.h>
#include <OS_AL/ProcessingResources/Thread.h>
#include <OS_AL/ProcessingResources/ProDesc.h>
#include <OS_AL/Util/BString500.h>

#include <stdlib.h>
#include <stdio.h>
#include <errno.h>

#if defined SYSTEM_Solaris
	#include <sys/priocntl.h>
	#include <sys/rtpriocntl.h>
	#include <sys/tspriocntl.h>
	int posixPriorityNumbering;
#elif defined SYSTEM_POSIX4 || defined SYSTEM_Linux
	#include <sys/resource.h>		// Linux
	#include <sched.h>
	int posixPriorityNumbering;
#elif defined SYSTEM_VxWorks
	#include <envLib.h>				//-VxW
	#include <sched.h>				//-VxW
	extern int posixPriorityNumbering;
#else
	#error Define SYSTEM_POSIX4 | SYSTEM_Solaris | SYSTEM_VxWorks | SYSTEM_Linux
#endif
" header="
// for getpid, getppid
#include <unistd.h>		


#define ABANDON_SIG	SIGTERM	// ==> exit(SUCCESS)
#define ExitERR_SIG	SIGABRT	// ==> exit(FAILURE) + core
#define ABORT_SIG	SIGINT	// ==> exit(FAILURE) [usually by Control-C on controlling terminal
#define ABORT2_SIG	SIGQUIT	// ==> exit(FAILURE) + core [usually by Control-| on controlling terminal

#define OSAL_ERROR(msg) OS_AL::ProcessingResources::ProDesc::exitErr (__LINE__, __FILE__, msg)

#ifdef SYSTEM_VxWorks
	typedef int id_t;
	#include <OS_AL/ProcessingResources/Thread.h>
#elif defined SYSTEM_Solaris || defined SYSTEM_Linux
	#include <sys/types.h>
#endif

#include <signal.h>
" 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 <OS_AL/ProcessingResources/System.h>
#include <OS_AL/ProcessingResources/ProDesc.h>
#include <OS_AL/Tracing/Trace.h>

#if defined SYSTEM_Solaris
	#include <sys/priocntl.h>
	#include <sys/rtpriocntl.h>
	#include <sys/tspriocntl.h>

#elif defined SYSTEM_VxWorks
	#include <configAll.h>	//-VxW

#elif defined SYSTEM_Cygwin
 #include <sys/unistd.h>		// for _SC_SEM_NSEMS_MAX and _SC_OPEN_MQ_MAX
#endif

#if defined SYSTEM_Linux || defined SYSTEM_Solaris
	#include <sys/utsname.h>
	#include <errno.h>
#endif
" header="#if defined SYSTEM_POSIX4 || defined SYSTEM_Linux
	#define SYS_NMLN	250			// vérif. s'il existe
	#include <limits.h>
	#include <unistd.h>

#elif defined SYSTEM_Solaris
	#include <sys/utsname.h>

#elif defined SYSTEM_VxWorks
	#include <vxWorks.h>
	#include <configAll.h>		//-VxW
	#define SYS_NMLN	250		// vérif. s'il existe
#else
	SYSTEM_x_not_defined;
#endif
" 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 <stdio.h>
#if defined THREAD_Solaris
	#include <sys/priocntl.h>
	#include <sys/rtpriocntl.h>
	#include <sys/tspriocntl.h>

#elif defined THREAD_POSIX4
	#include <sys/resource.h>

#endif
#include <errno.h>

#define ThExecOUT	-2

// TODO: other sequence, avoid manual includes if possible
#include <OS_AL/Sets/SetOf.h>
#include <OS_AL/Util/BString50.h>

OS_AL::Sets::SetOf <OS_AL::ProcessingResources::Thread *> set_of_threads;

const static OS_AL::Util::BString50 threadName_main ("Main");
" header="#define CancelThSIG	SIGQUIT		// by waiting for availability of thread-cancellation
#define DefaultExecPrio	-1

#if defined THREAD_POSIX4
	#include <pthread.h>
	#include <sys/procfs.h> // lwpid_t type declaration
	typedef struct sched_param SchedParam;
	typedef pthread_t ThreadId;

#elif defined THREAD_Solaris
	#include <thread.h>
	typedef thread_t ThreadId;
	typedef struct
	{
		int sched_priority;
	} SchedParam;

#elif defined THREAD_VxWorks
	#include <vxWorks.h>			//-VxW
	#include <configAll.h>			//-VxW
	#include <signal.h>				//-VxW
	#include <sched.h>				//-VxW
	#include <taskLib.h>			//-VxW
	#include <taskVarLib.h>			//-VxW
	typedef int ThreadId;			//-VxW
	typedef struct sched_param SchedParam;
#else
	THREAD_x_not_defined;
#endif
" 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="	m_name (name),
	m_semaphore (0),
	m_threadId (0)
#ifdef THREAD_Solaris
	, m_lwpId (0)
#endif
" base_operation="_oCK1EE_gEdy2tpS719xBwQ"/> |
| <C_Cpp:ConstInit xmi:id="_75KekE_pEdy2tpS719xBwQ" initialisation="	m_name (name),
	m_semaphore (0),
	m_threadId (0),
#ifdef THREAD_Solaris
	m_lwpId (0),
#endif
	m_joined (false)
" base_operation="_VpnT8E_hEdy2tpS719xBwQ"/> |
| <C_Cpp:Include xmi:id="_Q72YwE_rEdy2tpS719xBwQ" body="#include <OS_AL/ProcessingResources/ProDesc.h>
#include <OS_AL/Tracing/Trace.h>

#include <errno.h>" header="#if defined THREAD_POSIX4
	#include <pthread.h>
	#ifdef THREAD_Linux
		#include <bits/local_lim.h>
	#endif
#elif defined THREAD_Solaris
	#include <thread.h>
#elif defined THREAD_VxWorks
	#define PTHREAD_STACK_MIN	WDB_SPAWN_STACK_SIZE
#else
	#error Define THREAD_POSIX4 | THREAD_Solaris | THREAD_VxWorks | THREAD_Linux
#endif
" 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 <OS_AL/Tracing/Trace.h>" header="#include <errno.h>

#if defined THREAD_POSIX4

	#include <pthread.h>
	typedef pthread_key_t ThreadKey;

#elif defined THREAD_Solaris

	#include <thread.h>
	#if defined(__SunOS_5_5) || defined(__SunOS_5_5_1)
		typedef thread_t pthread_t;
		typedef int pthread_once_t;
	#endif
	typedef thread_key_t ThreadKey;

#elif defined THREAD_VxWorks

	#include <sched.h>				//-VxW
	#include <taskLib.h>			//-VxW
	#include <taskVarLib.h>			//-VxW
	typedef int pthread_t;			//-VxW
	typedef int ThreadKey;			//-VxW

#else

	THREAD_x_not_defined;

#endif
" 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 <OS_AL/Communication/MessageBuffer.h>
#include <OS_AL/ProcessingResources/ProDesc.h>

// it is useful to align objects in the buffer to allow for quicker
// memory transfer (which might not be employed by memcpy)
#define MB_ALIGNMENT 4

#ifdef USE_NETWORK_BYTE_ORDER
MessageBuffer & operator << (MessageBuffer & msg, int value)
{
	byte value_buf[4];
	value_buf[3] = value & 0xff; value >>= 8;
	value_buf[2] = value & 0xff; value >>= 8;
	value_buf[1] = value & 0xff; value >>= 8;
	value_buf[0] = value;
	msg.addToBuffer (value_buf, 4);
	return msg;
};

MessageBuffer & operator >> (MessageBuffer & msg, int & value)
{
	byte value_buf[4];
	msg.getFromBuffer (value_buf, 4);
	value = value_buf[0] +
		(value_buf[1] << 8) +
		(value_buf[1] << 16) +
		(value_buf[2] << 24);
	return msg;
};
#endif
" header="#define MAX_MESSAGE_SIZE 800

/**
 * handle hetereogeneous network configurations (currently incomplete)
 */
#ifdef USE_NETWORK_BYTE_ORDER
	MessageBuffer & operator << (MessageBuffer & msg, int value);
	MessageBuffer & operator >> (MessageBuffer & msg, int & value);
#endif
" 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="	MessageBuffer (NO_RESET)" base_operation="_i3atwFCsEdyqzLG48ixyqA"/> |
| <C_Cpp:ConstInit xmi:id="_9REFkFCtEdyqzLG48ixyqA" initialisation="	MessageBuffer (NO_RESET)" base_operation="_cxNvEFCtEdyqzLG48ixyqA"/> |
| <C_Cpp:ConstInit xmi:id="__L2-UFCtEdyqzLG48ixyqA" initialisation="	MessageBuffer (msg)" base_operation="_k-Am0FCsEdyqzLG48ixyqA"/> |
| <C_Cpp:Include xmi:id="_LAexAFCwEdyqzLG48ixyqA" body="#include <OS_AL/Communication/SharedMemory.h>
#include <OS_AL/Synchronization/SM_Mutex.h>
#include <OS_AL/Util/BString50.h>
#include <OS_AL/Util/BString500.h>
#include <OS_AL/ProcessingResources/Process.h>
#include <OS_AL/Tracing/Trace.h>

#ifndef SYNCHRO_VxWorks

// Extract from <sys/ipc.h> 
// we use the compilation option -D_XOPEN_SOURCE to get shmdt(void*) defined
// [todo: not true - don't use this option]
extern "C"
{
	// #if defined(__STDC__) && !defined(_KERNEL) && !defined(_XOPEN_SOURCE)
	key_t ftok (const char *, int);
	// #endif
}

# include <fcntl.h>

#else //-VxW
	//#define MultiCPU
	#ifdef MultiCPU
		#include <smMemLib.h>
	#else // monoCPU
		//#define OutOfHeap
		#ifdef OutOfHeap
			#include <memLib.h>
		#endif
	#endif
#endif
" header="#if defined SYNCHRO_Linux
	#include <sys/stat.h>
	#include <sys/mman.h>
	#include <sys/types.h>

#elif defined SYNCHRO_Cygwin
	#include <cygwin/shm.h>
	#include <sys/mman.h>
	#include <sys/types.h>
	
#elif defined SYNCHRO_Solaris || defined SYNCHRO_Cygwin
	#include <sys/stat.h>
	#include <sys/shm.h>
	#include <sys/mman.h>
	#include <sys/types.h>

#elif defined SYNCHRO_VxWorks
	
#else
	# error SYNCHRO_x??? not defined
#endif

#if defined SYNCHRO_VxWorks
	typedef int Key;
#else
	typedef key_t Key;
#endif
" 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="	m_name ("-"),
	m_mutex (NULL),
	m_key (-1),
	m_id (-1)
" base_operation="_W9qUsFCwEdyqzLG48ixyqA"/> |
| <C_Cpp:ConstInit xmi:id="_ZB5OkFC2EdyqzLG48ixyqA" initialisation="	m_name (name),
	m_mutex (NULL),
	m_key (-1),
	m_id (-1)
" base_operation="_ZznOIFCwEdyqzLG48ixyqA"/> |
| <C_Cpp:Visibility xmi:id="_ATTYcFC3EdyqzLG48ixyqA" value="public" base_generalization="_TmRe8FCsEdyqzLG48ixyqA"/> |
| <C_Cpp:Include xmi:id="_3d4acFC3EdyqzLG48ixyqA" header="#ifdef SYSTEM_Linux
	// [todo: check, if we can use the pthread barrier for Solaris as well]
	#define USE_PTHREAD_BARRIER
#endif

#ifdef USE_PTHREAD_BARRIER
	#include <pthread.h>
#endif
" 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 <OS_AL/Synchronization/Mutex.h>
#include <OS_AL/Synchronization/SM_Mutex.h>
#include <OS_AL/Communication/SharedMemory.h>
#include <OS_AL/ProcessingResources/ProDesc.h>
#include <OS_AL/ProcessingResources/Thread.h>
" header="#include <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 <OS_AL/ProcessingResources/ProDesc.h>
#include <OS_AL/Tracing/Trace.h>
" header="# include <fcntl.h>

#if defined SYNCHRO_POSIX4 || defined SYNCHRO_Solaris || defined SYNCHRO_Linux
	// see section 11 of POSIX standard
	// see fcntl(2) or lockf(3C) of Solaris reference manual
	#include <sys/types.h>
	#include <unistd.h>
#elif defined SYNCHRO_VxWorks
	#include <ioLib.h>
	#define fcntl(a1, a2, a3) ioctl (a1, a2, (int) a3)	// use ioctl (works?)
#else
	#error SYNCHRO_??? not defined
#endif
" 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="	m_lockType (exclusive ? F_WRLCK : F_RDLCK),
	m_fd (fileDesc)
" 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 <OS_AL/ProcessingResources/ProDesc.h>
#include <OS_AL/Tracing/Trace.h>
#include <stdio.h>

#if defined SYNCHRO_VxWorks
#define	SYNCHRO_VxWorks_MES	1	// Mutual-Exclusion Semaphore
	// else Binary Semaphore
#endif
#include <errno.h>" header="#if defined SYNCHRO_POSIX4 || defined SYNCHRO_Linux || defined SYNCHRO_WIN32
 #include <pthread.h>
 typedef pthread_mutex_t MutexId;

#elif defined SYNCHRO_Solaris
 #include <synch.h>
 typedef mutex_t MutexId;

#elif defined SYNCHRO_VxWorks
 #include <semLib.h>
 typedef SEM_ID MutexId;

#else
 #error SYNCHRO_X not defined

#endif
" base_class="_Jj9usFC7EdyqzLG48ixyqA"/> |
| <C_Cpp:Include xmi:id="_1Rt3EFF2EdyxP5ejovTmBw" body="#include <OS_AL/ProcessingResources/ProDesc.h>
#include <OS_AL/Tracing/Trace.h>
" header="#if defined SYNCHRO_Solaris
	#include <synch.h>
	typedef rwlock_t RWLockStruc;

#elif defined SYNCHRO_POSIX4 || SYNCHRO_Linux
	#include <pthread.h>
	typedef pthread_rwlock_t RWLockStruc;

#elif defined SYNCHRO_VxWorks
	typedef struct
	{
		int readers;
		int writers;
		MutexStruc readersMut;		// protège readers
		MutexStruc writersMut;		// protège writers
		MutexStruc readMut;			// protège le sémaphore 'read'
		SEM_ID writeSem;
		SEM_ID readSem;
	} RWLockStruc;

#else // defined RWLock_Simulation

	// this new variant is not up to date (surtout tryRdLock et tryWrLock() )
	#include <OS_AL/Synchronization/Mutex.h>
	#include <OS_AL/Synchronization/Semaphore.h>

	typedef struct
	{
		int readers;
		int writers;
		Mutex readersMut;
		Mutex writersMut;
		Mutex readMut;
		Semaphore writeSem;
		Semaphore readSem;
	} RWLockStruc;
#endif
" 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 <OS_AL/ProcessingResources/ProDesc.h>
#include <OS_AL/Tracing/Trace.h>

#include <errno.h>" header="#if defined SYNCHRO_POSIX4 || defined SYNCHRO_VxWorks ||\
 defined SYNCHRO_Linux || defined SYNCHRO_Cygwin
	// see section 11 of POSIX standard
	// see semPxLib of section 1 in the VxWorks reference manual
	// see sem_init(3R) of Solaris reference manual (but not available in
	// Solaris 2.5 - which is probably not a restriction today)
	#include <semaphore.h>
	typedef sem_t SemStruc;
#elif defined SYNCHRO_Solaris
	// see semaphore(3T) of Solaris reference manual
	#include <synch.h>
	typedef sema_t SemStruc;
#else
	#error SYNCHRO_??? not defined
#endif
" 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 <OS_AL/Util/Print.h>" base_class="_5InEkFGAEdyxP5ejovTmBw"/> |
| <C_Cpp:Include xmi:id="_b0TcwFIfEdy7g9CjxdN7jw" header="// MACRO
#ifdef ENABLE_TRACING
	#define TRACEpr(flags)		Trace pr(FLAG_ ## flags)
	#define PR(arg)				pr << arg
#else
	#define TRACEpr(flags)
	#define PR(arg)
#endif
" 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
	#define SYSTEM_Cygwin
	#define SYSTEM_POSIX4
	#define SYNCHRO_Cygwin
	#define SYNCHRO_POSIX4
	#define THREAD_POSIX4
	#define TIMER_POSIX4
	#define TIMER_Cygwin
#endif

#ifdef OS_Linux
	#define SYSTEM_Linux
	#define SYSTEM_POSIX4
	#ifdef OS_Xenomai
		#define SYSTEM_Xenomai
	#endif
	#define SYNCHRO_POSIX4
	#define THREAD_POSIX4
	#define TIMER_POSIX4
	#define TIMER_Linux
#endif

#ifdef OS_Solaris
	#define SYSTEM_Solaris
	#define THREAD_Solaris
	#define SYNCHRO_Solaris
#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 <OS_AL/Synchronization/Condition.h>
#include <OS_AL/Synchronization/Mutex.h>
#include <OS_AL/Time/TimeVal.h>
#include <OS_AL/ProcessingResources/ProDesc.h>
#include <OS_AL/Tracing/Trace.h>

#include <errno.h>" header="#if defined SYNCHRO_POSIX4 || defined SYNCHRO_Linux || defined SYNCHRO_WIN32
	#include <pthread.h>
	typedef pthread_cond_t ConditionId;

#elif defined SYNCHRO_Solaris
	#include <synch.h>
	typedef cond_t ConditionId;

#elif defined SYNCHRO_VxWorks
	#include <semLib.h>
	typedef int ConditionId;			// dummy declaration

#else
 #error SYNCHRO_X not defined

#endif
" base_class="_QWlVgPRTEeCUGrV0Hl4JwQ"/> |
| <standard:Create xmi:id="_QWmjofRTEeCUGrV0Hl4JwQ" base_BehavioralFeature="_QWlVkfRTEeCUGrV0Hl4JwQ"/> |
| <C_Cpp:ConstInit xmi:id="_QWmjovRTEeCUGrV0Hl4JwQ" initialisation="	m_mutex (),
	m_isLocked (false)
" 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> |