diff --git a/simulators/c++2/src_simulator/app/TMLActionCommand.cpp b/simulators/c++2/src_simulator/app/TMLActionCommand.cpp old mode 100755 new mode 100644 diff --git a/simulators/c++2/src_simulator/app/TMLActionCommand.h b/simulators/c++2/src_simulator/app/TMLActionCommand.h old mode 100755 new mode 100644 diff --git a/simulators/c++2/src_simulator/app/TMLChannel.cpp b/simulators/c++2/src_simulator/app/TMLChannel.cpp old mode 100755 new mode 100644 diff --git a/simulators/c++2/src_simulator/app/TMLChannel.h b/simulators/c++2/src_simulator/app/TMLChannel.h old mode 100755 new mode 100644 diff --git a/simulators/c++2/src_simulator/app/TMLChoiceCommand.cpp b/simulators/c++2/src_simulator/app/TMLChoiceCommand.cpp old mode 100755 new mode 100644 diff --git a/simulators/c++2/src_simulator/app/TMLChoiceCommand.h b/simulators/c++2/src_simulator/app/TMLChoiceCommand.h old mode 100755 new mode 100644 diff --git a/simulators/c++2/src_simulator/app/TMLCommand.cpp b/simulators/c++2/src_simulator/app/TMLCommand.cpp old mode 100755 new mode 100644 diff --git a/simulators/c++2/src_simulator/app/TMLCommand.h b/simulators/c++2/src_simulator/app/TMLCommand.h old mode 100755 new mode 100644 diff --git a/simulators/c++2/src_simulator/app/TMLDelayCommand.cpp b/simulators/c++2/src_simulator/app/TMLDelayCommand.cpp old mode 100755 new mode 100644 diff --git a/simulators/c++2/src_simulator/app/TMLDelayCommand.h b/simulators/c++2/src_simulator/app/TMLDelayCommand.h old mode 100755 new mode 100644 diff --git a/simulators/c++2/src_simulator/app/TMLExeccCommand.cpp b/simulators/c++2/src_simulator/app/TMLExeccCommand.cpp new file mode 100644 index 0000000000000000000000000000000000000000..a76faedc97037ed73bb87b049d5c5b582dd1cad8 --- /dev/null +++ b/simulators/c++2/src_simulator/app/TMLExeccCommand.cpp @@ -0,0 +1,96 @@ +/*Copyright or (C) or Copr. GET / ENST, Telecom-Paris, Daniel Knorreck, +Ludovic Apvrille, Renaud Pacalet + * + * ludovic.apvrille AT telecom-paristech.fr + * + * This software is a computer program whose purpose is to allow the + * edition of TURTLE analysis, design and deployment diagrams, to + * allow the generation of RT-LOTOS or Java code from this diagram, + * and at last to allow the analysis of formal validation traces + * obtained from external tools, e.g. RTL from LAAS-CNRS and CADP + * from INRIA Rhone-Alpes. + * + * This software is governed by the CeCILL license under French law and + * abiding by the rules of distribution of free software. You can use, + * modify and/ or redistribute the software under the terms of the CeCILL + * license as circulated by CEA, CNRS and INRIA at the following URL + * "http://www.cecill.info". + * + * As a counterpart to the access to the source code and rights to copy, + * modify and redistribute granted by the license, users are provided only + * with a limited warranty and the software's author, the holder of the + * economic rights, and the successive licensors have only limited + * liability. + * + * In this respect, the user's attention is drawn to the risks associated + * with loading, using, modifying and/or developing or reproducing the + * software by the user in light of its specific status of free software, + * that may mean that it is complicated to manipulate, and that also + * therefore means that it is reserved for developers and experienced + * professionals having in-depth computer knowledge. Users are therefore + * encouraged to load and test the software's suitability as regards their + * requirements in conditions enabling the security of their systems and/or + * data to be ensured and, more generally, to use and operate it in the + * same conditions as regards security. + * + * The fact that you are presently reading this means that you have had + * knowledge of the CeCILL license and that you accept its terms. + * + */ + +#include <TMLExeciCommand.h> +#include <TMLTask.h> +#include <TMLTransaction.h> + + +TMLExeciCommand::TMLExeciCommand(ID iID, TMLTask* iTask, LengthFuncPointer iLengthFunc, unsigned int iExecType, TMLLength iStatLength, const char* iLiveVarList, bool iCheckpoint): TMLCommand(iID, iTask, 1, 1, iLiveVarList, iCheckpoint), _lengthFunc(iLengthFunc), _execType(iExecType){ + _length=iStatLength; + _type=EXE; +} + +void TMLExeciCommand::execute(){ + //std::cout << "execi: " << _currTransaction->toShortString() << std::endl; + _progress+=_currTransaction->getVirtualLength(); + _task->addTransaction(_currTransaction); + //std::cout << "Execi execute prepare" << std::endl; + prepare(false); +} + +TMLCommand* TMLExeciCommand::prepareNextTransaction(){ + //std::cout << _ID << " prepare execi: " << _length << std::endl; + if (_progress==0){ + if (_lengthFunc!=0) _length = (_task->*_lengthFunc)(); + if (_length==0){ + //std::cout << "ExeciCommand len==0 " << std::endl; + TMLCommand* aNextCommand=getNextCommand(); + _task->setCurrCommand(aNextCommand); + if (aNextCommand!=0) return aNextCommand->prepare(false); + } + } + + //_currTransaction = ::new (&transBuffer) TMLTransaction(this, _length-_progress,_task->getEndLastTransaction()); + _currTransaction = new TMLTransaction(this, _length-_progress,_task->getEndLastTransaction()); + //std::cout << "new fails? " << _currTransaction->toString() << std::endl; + return this; +} + +std::string TMLExeciCommand::toString() const{ + std::ostringstream outp; + if (_execType == 0) { + outp << "Execi in " << TMLCommand::toString(); + } else { + outp << "Execc in " << TMLCommand::toString(); + } + return outp.str(); +} + +std::string TMLExeciCommand::toShortString() const{ + std::ostringstream outp; + if (_execType == 0) { + outp << _task->toString() << ": Execi " << _length; + } else { + outp << _task->toString() << ": Execc " << _length; + } + return outp.str(); +} + diff --git a/simulators/c++2/src_simulator/app/TMLExeccCommand.h b/simulators/c++2/src_simulator/app/TMLExeccCommand.h new file mode 100644 index 0000000000000000000000000000000000000000..0b748822e8035298b4fcb2036976f59acafd8258 --- /dev/null +++ b/simulators/c++2/src_simulator/app/TMLExeccCommand.h @@ -0,0 +1,75 @@ +/*Copyright or (C) or Copr. GET / ENST, Telecom-Paris, Daniel Knorreck, +Ludovic Apvrille, Renaud Pacalet + * + * ludovic.apvrille AT telecom-paristech.fr + * + * This software is a computer program whose purpose is to allow the + * edition of TURTLE analysis, design and deployment diagrams, to + * allow the generation of RT-LOTOS or Java code from this diagram, + * and at last to allow the analysis of formal validation traces + * obtained from external tools, e.g. RTL from LAAS-CNRS and CADP + * from INRIA Rhone-Alpes. + * + * This software is governed by the CeCILL license under French law and + * abiding by the rules of distribution of free software. You can use, + * modify and/ or redistribute the software under the terms of the CeCILL + * license as circulated by CEA, CNRS and INRIA at the following URL + * "http://www.cecill.info". + * + * As a counterpart to the access to the source code and rights to copy, + * modify and redistribute granted by the license, users are provided only + * with a limited warranty and the software's author, the holder of the + * economic rights, and the successive licensors have only limited + * liability. + * + * In this respect, the user's attention is drawn to the risks associated + * with loading, using, modifying and/or developing or reproducing the + * software by the user in light of its specific status of free software, + * that may mean that it is complicated to manipulate, and that also + * therefore means that it is reserved for developers and experienced + * professionals having in-depth computer knowledge. Users are therefore + * encouraged to load and test the software's suitability as regards their + * requirements in conditions enabling the security of their systems and/or + * data to be ensured and, more generally, to use and operate it in the + * same conditions as regards security. + * + * The fact that you are presently reading this means that you have had + * knowledge of the CeCILL license and that you accept its terms. + * + */ + +#ifndef TMLExeciCommandH +#define TMLExeciCommandH + +#include <definitions.h> +#include <TMLCommand.h> + + +///This class models the computational complexity of an algorithm +class TMLExeciCommand:public TMLCommand{ +public: + ///Constructor + /** + \param iID ID of the command + \param iTask Pointer to the task the command belongs to + \param iLengthFunc Pointer to the function returning the length of the command + \param iType Exec Type (ExecI, ExecC,...) + \param iStatLength Static length of command if applicable + \param iLiveVarList Bitmap of live variables + \param iCheckpoint Checkpoint Flag + */ + TMLExeciCommand(ID iID, TMLTask* iTask, LengthFuncPointer iLengthFunc, unsigned int iType, TMLLength iStatLength, const char* iLiveVarList, bool iCheckpoint); + void execute(); + //TMLTask* getDependentTask() const; + std::string toString() const; + std::string toShortString() const; + inline std::string getCommandStr() const {return "exe";} +protected: + TMLCommand* prepareNextTransaction(); + ///Pointer to the function returning the length of the command + LengthFuncPointer _lengthFunc; + ///Type of command: EXECI, EXECC + unsigned int _execType; +}; + +#endif diff --git a/simulators/c++2/src_simulator/app/TMLExeciCommand.cpp b/simulators/c++2/src_simulator/app/TMLExeciCommand.cpp old mode 100755 new mode 100644 diff --git a/simulators/c++2/src_simulator/app/TMLExeciCommand.h b/simulators/c++2/src_simulator/app/TMLExeciCommand.h old mode 100755 new mode 100644 diff --git a/simulators/c++2/src_simulator/app/TMLReadCommand.cpp b/simulators/c++2/src_simulator/app/TMLReadCommand.cpp old mode 100755 new mode 100644 diff --git a/simulators/c++2/src_simulator/app/TMLReadCommand.h b/simulators/c++2/src_simulator/app/TMLReadCommand.h old mode 100755 new mode 100644 diff --git a/simulators/c++2/src_simulator/app/TMLTask.cpp b/simulators/c++2/src_simulator/app/TMLTask.cpp old mode 100755 new mode 100644 diff --git a/simulators/c++2/src_simulator/app/TMLTask.h b/simulators/c++2/src_simulator/app/TMLTask.h old mode 100755 new mode 100644 diff --git a/simulators/c++2/src_simulator/app/TMLWriteCommand.cpp b/simulators/c++2/src_simulator/app/TMLWriteCommand.cpp old mode 100755 new mode 100644 diff --git a/simulators/c++2/src_simulator/app/TMLWriteCommand.h b/simulators/c++2/src_simulator/app/TMLWriteCommand.h old mode 100755 new mode 100644 diff --git a/simulators/c++2/src_simulator/app/TMLbrbwChannel.cpp b/simulators/c++2/src_simulator/app/TMLbrbwChannel.cpp old mode 100755 new mode 100644 diff --git a/simulators/c++2/src_simulator/app/TMLbrbwChannel.h b/simulators/c++2/src_simulator/app/TMLbrbwChannel.h old mode 100755 new mode 100644