- Pretty-indenting code
git-svn-id: svn://svn.gna.org/svn/sgpemv2/trunk@674 3ecf2c5c-341e-0410-92b4-d18e462d057c
This commit is contained in:
parent
7aecc910ba
commit
6b27a8461b
|
@ -0,0 +1,11 @@
|
|||
#!/bin/sh
|
||||
|
||||
#find . -name "*.cc" -or -name "*.hh" -or -name "*.tcc" | \
|
||||
# xargs indent -v -sc -psl -bls -bad -bap -bbb -nsob \
|
||||
# -bli0 -cli0 -cbi0 -npcs -cs -nsaf -nsai -nsaw \
|
||||
# -nprs -i2 -lp -ppi2 -l80 -nbbo -hnl -ss -di8 -nbc
|
||||
|
||||
|
||||
find . -name "*.cc" -or -name "*.hh" -or -name "*.tcc" | \
|
||||
xargs astyle --style=ansi -s2 -b -N -L -p -O -V \
|
||||
--mode=c
|
|
@ -33,24 +33,25 @@
|
|||
#include "config.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
extern "C"
|
||||
{
|
||||
#endif
|
||||
|
||||
#define SG_CONSTRUCTOR __attribute__ ((constructor))
|
||||
#define SG_DESTRUCTOR __attribute__ ((destructor))
|
||||
#define _libpyloader_LTX__global_pm (_global_pm);
|
||||
|
||||
PolicyManager* _global_pm = NULL;
|
||||
PolicyManager* _global_pm = NULL;
|
||||
|
||||
void SG_DLLEXPORT SG_CONSTRUCTOR hook_ctor(void)
|
||||
{
|
||||
void SG_DLLEXPORT SG_CONSTRUCTOR hook_ctor(void)
|
||||
{
|
||||
_global_pm = PythonPolicyManager::get_instance();
|
||||
}
|
||||
}
|
||||
|
||||
void SG_DLLEXPORT SG_DESTRUCTOR hook_dtor(void)
|
||||
{
|
||||
void SG_DLLEXPORT SG_DESTRUCTOR hook_dtor(void)
|
||||
{
|
||||
delete _global_pm;
|
||||
}
|
||||
}
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
|
|
|
@ -39,28 +39,33 @@
|
|||
// FIXME: Eeeeh? Why does this work without explicit namespace resolving?
|
||||
// Is there some using declaration in included HEADERS?? Aaaaagh!
|
||||
|
||||
class TestPythonPolicyManager : public PythonPolicyManager {
|
||||
class TestPythonPolicyManager : public PythonPolicyManager
|
||||
{
|
||||
public:
|
||||
void test_init(const char* policy_name) {
|
||||
void test_init(const char* policy_name)
|
||||
{
|
||||
init();
|
||||
_python_policy = new PythonPolicy(policy_name);
|
||||
|
||||
}
|
||||
|
||||
Policy& get_policy() {
|
||||
Policy& get_policy()
|
||||
{
|
||||
return *_python_policy;
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
int
|
||||
main(int argc, char** argv) {
|
||||
main(int argc, char** argv)
|
||||
{
|
||||
using namespace sgpem;
|
||||
using namespace std;
|
||||
|
||||
int successes = 0;
|
||||
|
||||
if(argc != 2) {
|
||||
if(argc != 2)
|
||||
{
|
||||
std::cout << "[EE] Usage:\n\t" << argv[0] <<
|
||||
" path/to/uninstalled/policies" << std::endl;
|
||||
exit(-1);
|
||||
|
|
|
@ -29,7 +29,8 @@
|
|||
therein. See "info libtool": "dlopened modules"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
extern "C"
|
||||
{
|
||||
#endif
|
||||
|
||||
#include "config.h"
|
||||
|
@ -37,13 +38,11 @@ extern "C" {
|
|||
#define SG_CONSTRUCTOR __attribute__ ((constructor))
|
||||
#define SG_DESTRUCTOR __attribute__ ((destructor))
|
||||
|
||||
void SG_DLLEXPORT SG_CONSTRUCTOR hook_ctor(void)
|
||||
{
|
||||
}
|
||||
void SG_DLLEXPORT SG_CONSTRUCTOR hook_ctor(void)
|
||||
{}
|
||||
|
||||
void SG_DLLEXPORT SG_DESTRUCTOR hook_dtor(void)
|
||||
{
|
||||
}
|
||||
void SG_DLLEXPORT SG_DESTRUCTOR hook_dtor(void)
|
||||
{}
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
|
|
|
@ -30,8 +30,7 @@ using std::vector;
|
|||
|
||||
DynamicProcess::DynamicProcess(StaticProcess* core) :
|
||||
DynamicSchedulable(*core)
|
||||
{
|
||||
}
|
||||
{}
|
||||
|
||||
DynamicProcess::DynamicProcess(const DynamicProcess &other) :
|
||||
Schedulable(), DynamicSchedulable(other), Process()
|
||||
|
@ -85,7 +84,8 @@ DynamicProcess::get_state() const
|
|||
|
||||
// TODO Is this OK? Must be tested...
|
||||
|
||||
switch(thread_state) {
|
||||
switch(thread_state)
|
||||
{
|
||||
case state_running: // (a)
|
||||
return state_running;
|
||||
case state_ready: // (b)
|
||||
|
|
|
@ -27,8 +27,7 @@ using namespace sgpem;
|
|||
|
||||
DynamicResource::DynamicResource(StaticResource *core) :
|
||||
_static_resource(core)
|
||||
{
|
||||
}
|
||||
{}
|
||||
|
||||
Glib::ustring
|
||||
DynamicResource::get_name() const
|
||||
|
|
|
@ -29,8 +29,7 @@ DynamicSchedulable::DynamicSchedulable(StaticSchedulable& obj) :
|
|||
_time_left(obj.get_total_cpu_time()), _ref(&obj), _last_acquisition(-1),
|
||||
_last_release(-1), _priority_push(0), _last(-1),
|
||||
_my_state(state_future)
|
||||
{
|
||||
}
|
||||
{}
|
||||
|
||||
bool
|
||||
DynamicSchedulable::operator==(const DynamicSchedulable& dx) const
|
||||
|
|
|
@ -112,8 +112,7 @@ namespace sgpem
|
|||
void set_state(state s);
|
||||
|
||||
void serialize(SerializeVisitor& translator) const
|
||||
{
|
||||
}
|
||||
{}
|
||||
|
||||
/** \brief Returns a pointer to the schedulable object
|
||||
*
|
||||
|
|
|
@ -31,8 +31,7 @@ using std::vector;
|
|||
|
||||
DynamicThread::DynamicThread(StaticThread* core, DynamicProcess* parent) :
|
||||
DynamicSchedulable(*core), _state(state_future), _parent(parent)
|
||||
{
|
||||
}
|
||||
{}
|
||||
|
||||
DynamicThread::DynamicThread(const DynamicThread &other) :
|
||||
Schedulable(), DynamicSchedulable(other), Thread()
|
||||
|
|
|
@ -29,13 +29,15 @@
|
|||
// Do not include complete template definition here:
|
||||
#include "singleton.hh"
|
||||
|
||||
namespace sgpem {
|
||||
namespace sgpem
|
||||
{
|
||||
class GlobalPreferences;
|
||||
}
|
||||
|
||||
#include "config.h"
|
||||
|
||||
namespace sgpem {
|
||||
namespace sgpem
|
||||
{
|
||||
class SG_DLLEXPORT GlobalPreferences : public Singleton<GlobalPreferences>
|
||||
{
|
||||
friend class Singleton<GlobalPreferences>;
|
||||
|
|
|
@ -42,7 +42,8 @@ template class SG_DLLEXPORT smart_ptr<DynamicSchedulable>;
|
|||
of the simulation which must begin at instant -1 and live for 1 instant.
|
||||
*/
|
||||
History::History() //private constructor.
|
||||
:_total_time_elapsed(-1)
|
||||
:
|
||||
_total_time_elapsed(-1)
|
||||
{}
|
||||
|
||||
|
||||
|
@ -78,7 +79,7 @@ History::get_simulation_status_at(int time) const
|
|||
return smart_ptr<SchedulableQueue>(NULL);
|
||||
|
||||
int trascorso = -1;
|
||||
for(vector<Slice>::const_iterator i=_slices.begin(); i < _slices.end(); i++)
|
||||
for(vector<Slice>::const_iterator i = _slices.begin(); i < _slices.end(); i++)
|
||||
if (time <= trascorso + i->get_duration()) //FOUND!!
|
||||
return smart_ptr<SchedulableQueue>(new SchedulableQueue(*i->get_simulation_status()));
|
||||
else //Go on...
|
||||
|
@ -113,7 +114,7 @@ History::enqueue_slice(const SchedulableQueue& status)
|
|||
Slice& last = _slices[_slices.size()-1];
|
||||
if (last.get_simulation_status()->has_same_objects(status)) //increments the duration by ONE unit
|
||||
{
|
||||
last.set_duration(last.get_duration()+1);
|
||||
last.set_duration(last.get_duration() + 1);
|
||||
}
|
||||
else //insert a new slice CONTIGUOUS to the last one
|
||||
{
|
||||
|
@ -140,7 +141,7 @@ History::truncate_at(int instant)
|
|||
else
|
||||
{
|
||||
//replaces the current vector with the "trimmed" one.
|
||||
_slices = vector<Slice>(_slices.begin(),i);
|
||||
_slices = vector<Slice>(_slices.begin(), i);
|
||||
_total_time_elapsed = instant;
|
||||
break;
|
||||
}
|
||||
|
|
|
@ -24,8 +24,7 @@ using namespace sgpem;
|
|||
|
||||
|
||||
ObservedSubject::~ObservedSubject()
|
||||
{
|
||||
}
|
||||
{}
|
||||
|
||||
/**
|
||||
Calls update() in each Observer
|
||||
|
|
|
@ -57,7 +57,8 @@ namespace sgpem
|
|||
|
||||
private:
|
||||
SG_DLLLOCAL Plugin();
|
||||
}; //~ class Plugin
|
||||
}
|
||||
; //~ class Plugin
|
||||
|
||||
} //~ namespace sgpem
|
||||
|
||||
|
|
|
@ -107,8 +107,7 @@ PoliciesGatekeeper::activate_policy(History *history, Policy* policy)
|
|||
}
|
||||
|
||||
PoliciesGatekeeper::PoliciesGatekeeper()
|
||||
{
|
||||
}
|
||||
{}
|
||||
|
||||
void
|
||||
PoliciesGatekeeper::deactivate_policies(PolicyManager* manager)
|
||||
|
|
|
@ -24,8 +24,7 @@ using namespace sgpem;
|
|||
using namespace memory;
|
||||
|
||||
Policy::~Policy()
|
||||
{
|
||||
}
|
||||
{}
|
||||
|
||||
int
|
||||
Policy::get_id() const
|
||||
|
|
|
@ -28,7 +28,7 @@ using Glib::ustring;
|
|||
If there is a parameter with the same name and type it will be overwritten.
|
||||
*/
|
||||
void
|
||||
PolicyParameters::register_int(Glib::ustring name,const int& lower_bound, const int& upper_bound, const bool& required, const int& default_value)
|
||||
PolicyParameters::register_int(Glib::ustring name, const int& lower_bound, const int& upper_bound, const bool& required, const int& default_value)
|
||||
{
|
||||
//there is a parameter with the same name!!
|
||||
map<ustring, Parameter<int> >::iterator i = int_map.find(name);
|
||||
|
@ -45,7 +45,7 @@ PolicyParameters::register_int(Glib::ustring name,const int& lower_bound, const
|
|||
If there is a parameter with the same name and type it will be overwritten.
|
||||
*/
|
||||
void
|
||||
PolicyParameters::register_float(Glib::ustring name,const float& lower_bound, const float& upper_bound, const bool& required, const float& default_value)
|
||||
PolicyParameters::register_float(Glib::ustring name, const float& lower_bound, const float& upper_bound, const bool& required, const float& default_value)
|
||||
{
|
||||
//there is a parameter with the same name!!
|
||||
map<ustring, Parameter<float> >::iterator i = float_map.find(name);
|
||||
|
@ -97,7 +97,7 @@ PolicyParameters::get_registered_int_parameters() const
|
|||
Retruns a copy of the map containing all registered float parameters.
|
||||
*/
|
||||
map<ustring, PolicyParameters::Parameter<float> >
|
||||
PolicyParameters::get_registered_float_parameters() const
|
||||
PolicyParameters::get_registered_float_parameters() const
|
||||
{
|
||||
return float_map;
|
||||
}
|
||||
|
|
|
@ -33,8 +33,7 @@ namespace sgpem
|
|||
class PolicyParametersException : public std::runtime_error
|
||||
{
|
||||
public:
|
||||
PolicyParametersException(char* msg): std::runtime_error(msg) {}
|
||||
};
|
||||
PolicyParametersException(char* msg): std::runtime_error(msg) {}};
|
||||
class PolicyParameters;
|
||||
|
||||
|
||||
|
@ -66,7 +65,7 @@ namespace sgpem
|
|||
\param required Denotes if this parameter is required by the policy.
|
||||
\param default_value The initial value of this parameter. (If not specified it's set to 0).
|
||||
*/
|
||||
void register_int(Glib::ustring name,const int& lower_bound, const int& upper_bound, const bool& required, const int& default_value = 0);
|
||||
void register_int(Glib::ustring name, const int& lower_bound, const int& upper_bound, const bool& required, const int& default_value = 0);
|
||||
|
||||
/**\brief Registers a FLOAT parameter.
|
||||
|
||||
|
@ -80,7 +79,7 @@ namespace sgpem
|
|||
\param required Denotes if this parameter is required by the policy.
|
||||
\param default_value The initial value of this parameter. (If not specified it's set to 0.0f).
|
||||
*/
|
||||
void register_float(Glib::ustring name,const float& lower_bound, const float& upper_bound, const bool& required, const float& default_value = 0.0f);
|
||||
void register_float(Glib::ustring name, const float& lower_bound, const float& upper_bound, const bool& required, const float& default_value = 0.0f);
|
||||
|
||||
/**\brief Registers a STRING parameter.
|
||||
|
||||
|
|
|
@ -23,6 +23,5 @@
|
|||
using namespace sgpem;
|
||||
|
||||
Process::~Process()
|
||||
{
|
||||
}
|
||||
{}
|
||||
|
||||
|
|
|
@ -23,6 +23,5 @@
|
|||
using namespace sgpem;
|
||||
|
||||
Request::~Request()
|
||||
{
|
||||
}
|
||||
{}
|
||||
|
||||
|
|
|
@ -23,6 +23,5 @@
|
|||
using namespace sgpem;
|
||||
|
||||
Resource::~Resource()
|
||||
{
|
||||
}
|
||||
{}
|
||||
|
||||
|
|
|
@ -23,6 +23,5 @@
|
|||
using namespace sgpem;
|
||||
|
||||
Schedulable::~Schedulable()
|
||||
{
|
||||
}
|
||||
{}
|
||||
|
||||
|
|
|
@ -41,11 +41,11 @@ namespace sgpem
|
|||
*/
|
||||
enum state
|
||||
{
|
||||
state_running = 1<<0,
|
||||
state_ready = 1<<1,
|
||||
state_blocked = 1<<2,
|
||||
state_future = 1<<3,
|
||||
state_terminated = 1<<4
|
||||
state_running = 1 << 0,
|
||||
state_ready = 1 << 1,
|
||||
state_blocked = 1 << 2,
|
||||
state_future = 1 << 3,
|
||||
state_terminated = 1 << 4
|
||||
};
|
||||
|
||||
virtual ~Schedulable() = 0;
|
||||
|
|
|
@ -27,8 +27,7 @@ using namespace std;
|
|||
using namespace memory;
|
||||
|
||||
SchedulableQueue::SchedulableQueue()
|
||||
{
|
||||
}
|
||||
{}
|
||||
|
||||
DynamicSchedulable*
|
||||
SchedulableQueue::top()
|
||||
|
@ -59,7 +58,7 @@ SchedulableQueue::get_item_at(const uint& where)
|
|||
return NULL;
|
||||
|
||||
list<DynamicSchedulable>::iterator i = _list.begin();
|
||||
for (uint f=0; f < where; f++)
|
||||
for (uint f = 0; f < where; f++)
|
||||
i++;
|
||||
return &(*i);
|
||||
}
|
||||
|
@ -71,7 +70,7 @@ SchedulableQueue::get_item_at(const uint& where) const
|
|||
return NULL;
|
||||
|
||||
list<DynamicSchedulable>::const_iterator i = _list.begin();
|
||||
for (uint f=0; f < where; f++)
|
||||
for (uint f = 0; f < where; f++)
|
||||
i++;
|
||||
return &(*i);
|
||||
}
|
||||
|
@ -127,9 +126,9 @@ SchedulableQueue::insert_at(const uint& which, const uint& where)
|
|||
|
||||
list<DynamicSchedulable>::iterator i_where = _list.begin();
|
||||
list<DynamicSchedulable>::iterator i_which = _list.begin();
|
||||
for (uint f=0; f < where; f++)
|
||||
for (uint f = 0; f < where; f++)
|
||||
i_where++;
|
||||
for (uint f=0; f < which; f++)
|
||||
for (uint f = 0; f < which; f++)
|
||||
i_which++;
|
||||
|
||||
//save and pop WHICH
|
||||
|
@ -172,7 +171,7 @@ SchedulableQueue::has_same_objects(const SchedulableQueue& dx) const
|
|||
return false;
|
||||
|
||||
//check if dx has ALL and ONLY the elements holded by _list with no order importance
|
||||
for(list<DynamicSchedulable>::const_iterator f=_list.begin(); f != _list.end(); f++)
|
||||
for(list<DynamicSchedulable>::const_iterator f = _list.begin(); f != _list.end(); f++)
|
||||
if (find(dx._list.begin(), dx._list.end(), *f) == dx._list.end()) //element NOT found!!
|
||||
return false;
|
||||
|
||||
|
@ -202,13 +201,13 @@ SchedulableQueue::swap(unsigned int positionA, unsigned int positionB) throw()
|
|||
list<DynamicSchedulable>::iterator i2 = _list.begin();
|
||||
|
||||
//reach the first element;
|
||||
for (uint f=0; f < min; f++)
|
||||
for (uint f = 0; f < min; f++)
|
||||
i1++;
|
||||
DynamicSchedulable temp = *i1;
|
||||
|
||||
//reach the second element;
|
||||
i2 = i1;
|
||||
for (uint f=min; f < max; f++)
|
||||
for (uint f = min; f < max; f++)
|
||||
i2++;
|
||||
|
||||
*i1 = *i2;
|
||||
|
|
|
@ -63,13 +63,13 @@ namespace sgpem
|
|||
void add_at_bottom(const DynamicSchedulable&);
|
||||
|
||||
/** \brief Removes */
|
||||
/**
|
||||
/**
|
||||
Removes an element from the list. Returns a smart pointer a copy of it or to NULL if
|
||||
"position" is out of range.
|
||||
|
||||
Ex. remove(0); removes the top of the list
|
||||
Ex. remove(size()-1) removes the bottom of the list
|
||||
*/
|
||||
*/
|
||||
|
||||
memory::smart_ptr<sgpem::DynamicSchedulable> remove(const unsigned int& position);
|
||||
bool insert_at(const unsigned int&, const unsigned int&);
|
||||
|
|
|
@ -103,12 +103,12 @@ Scheduler::step_forward() throw(UserInterruptException)
|
|||
_ready_queue.add_at_top(*running_ptr);
|
||||
|
||||
//adds the READY ones
|
||||
for(uint rea=0; rea < initial->size(); rea++)
|
||||
for(uint rea = 0; rea < initial->size(); rea++)
|
||||
if (initial->get_item_at(rea)->get_state() == DynamicSchedulable::state_ready)
|
||||
_ready_queue.add_at_bottom(*initial->get_item_at(rea));
|
||||
|
||||
//adds each new ready schedulable and sorts the queue
|
||||
for(uint i=0; i < initial->size(); i++)
|
||||
for(uint i = 0; i < initial->size(); i++)
|
||||
if (initial->get_item_at(i)->get_state() == DynamicSchedulable::state_future
|
||||
&& (int)initial->get_item_at(i)->get_schedulable()->get_arrival_time() == h.get_current_time())
|
||||
{
|
||||
|
@ -120,7 +120,7 @@ Scheduler::step_forward() throw(UserInterruptException)
|
|||
|
||||
//adds the NEW one
|
||||
_ready_queue.add_at_bottom(*initial->get_item_at(i));
|
||||
_ready_queue.get_item_at(_ready_queue.size()-1)->set_state(DynamicSchedulable::state_ready);
|
||||
_ready_queue.get_item_at(_ready_queue.size() - 1)->set_state(DynamicSchedulable::state_ready);
|
||||
initial->get_item_at(i)->set_state(DynamicSchedulable::state_ready);
|
||||
|
||||
// Sort the queue
|
||||
|
@ -139,12 +139,12 @@ Scheduler::step_forward() throw(UserInterruptException)
|
|||
if (running_ptr && running_ptr->get_cpu_time_left() == 0)
|
||||
{
|
||||
//there is a running schedulable and it's terminated. Append at the bottom with the state TERMINATED
|
||||
for(uint i=0; i < _ready_queue.size(); i++)
|
||||
for(uint i = 0; i < _ready_queue.size(); i++)
|
||||
if (*_ready_queue.get_item_at(i) == *running_ptr)
|
||||
{
|
||||
_ready_queue.add_at_bottom(*_ready_queue.get_item_at(i));
|
||||
_ready_queue.remove(i);
|
||||
_ready_queue.get_item_at(_ready_queue.size()-1)->set_state(DynamicSchedulable::state_terminated);
|
||||
_ready_queue.get_item_at(_ready_queue.size() - 1)->set_state(DynamicSchedulable::state_terminated);
|
||||
break;
|
||||
}
|
||||
//cout << "\nTERMINATO!!";
|
||||
|
|
|
@ -25,8 +25,7 @@ using namespace std;
|
|||
|
||||
Slice::Slice(const int& start, const int& duration, const SchedulableQueue& status)
|
||||
: _ref(status), _started_at(start), _duration(duration)
|
||||
{
|
||||
}
|
||||
{}
|
||||
|
||||
const SchedulableQueue*
|
||||
Slice::get_simulation_status() const
|
||||
|
|
|
@ -24,12 +24,10 @@ using namespace sgpem;
|
|||
|
||||
StaticProcess::StaticProcess(const Glib::ustring& name, const unsigned int& arrival, const unsigned int& total, const int& priority)
|
||||
: StaticSchedulable(name, arrival, total, priority)
|
||||
{
|
||||
}
|
||||
{}
|
||||
|
||||
StaticProcess::~StaticProcess()
|
||||
{
|
||||
}
|
||||
{}
|
||||
|
||||
Glib::ustring
|
||||
StaticProcess::get_type() const
|
||||
|
|
|
@ -25,8 +25,7 @@ using namespace sgpem;
|
|||
StaticResource::StaticResource(const Glib::ustring& name,
|
||||
unsigned int places) :
|
||||
_name(name), _places(places)
|
||||
{
|
||||
}
|
||||
{}
|
||||
|
||||
Glib::ustring
|
||||
StaticResource::get_name() const
|
||||
|
|
|
@ -27,12 +27,10 @@ StaticSchedulable::StaticSchedulable(const Glib::ustring& name,
|
|||
const unsigned int& total,
|
||||
const int& priority) :
|
||||
_name(name), _arrival_time(arrival), _total_time(total), _priority(priority)
|
||||
{
|
||||
}
|
||||
{}
|
||||
|
||||
StaticSchedulable::~StaticSchedulable()
|
||||
{
|
||||
}
|
||||
{}
|
||||
|
||||
unsigned int
|
||||
StaticSchedulable::get_arrival_time() const
|
||||
|
|
|
@ -33,8 +33,7 @@ StaticThread::StaticThread(const Glib::ustring& name,
|
|||
StaticSchedulable(name, arrival_time, 0, base_priority),
|
||||
_start_time_delta(arrival_time), _required_cpu_time(0),
|
||||
_process(&process)
|
||||
{
|
||||
}
|
||||
{}
|
||||
|
||||
unsigned int
|
||||
StaticThread::get_total_cpu_time() const
|
||||
|
|
|
@ -44,10 +44,10 @@ string_to_int(const ustring& str, int& num)
|
|||
//checks if the string contains only digits
|
||||
if (str.find_first_not_of(allvalid) < str.length())
|
||||
return false;
|
||||
if (str.substr(1).find_first_not_of(digits) < str.length()-1)
|
||||
if (str.substr(1).find_first_not_of(digits) < str.length() - 1)
|
||||
return false;
|
||||
|
||||
num=0;
|
||||
num = 0;
|
||||
int multiplier = 1, val;
|
||||
int start; //the position of the biggest digit
|
||||
if (str[0] == '-')
|
||||
|
@ -57,7 +57,7 @@ string_to_int(const ustring& str, int& num)
|
|||
for (int pos = str.length() - 1; pos >= start ; pos--)
|
||||
{
|
||||
val = str[pos] - 48; //the INTEGER value of the digit
|
||||
num += val*multiplier;
|
||||
num += val * multiplier;
|
||||
multiplier *= 10;
|
||||
}
|
||||
//if there is the minus then multiply for -1
|
||||
|
@ -80,7 +80,7 @@ int_to_string(const int& num, ustring& str)
|
|||
|
||||
str = "";
|
||||
int val = num;
|
||||
bool negative = (val < 0)? true : false;
|
||||
bool negative = (val < 0) ? true : false;
|
||||
if (negative) val *= -1;
|
||||
|
||||
while (true)
|
||||
|
@ -101,7 +101,7 @@ float_to_string(const float& f, Glib::ustring& str)
|
|||
stringstream ss;
|
||||
ss << f;
|
||||
char p[20];
|
||||
ss.getline(p,20);
|
||||
ss.getline(p, 20);
|
||||
str = p;
|
||||
}
|
||||
|
||||
|
|
|
@ -26,38 +26,38 @@
|
|||
#include <iostream>
|
||||
#include "glibmm/ustring.h"
|
||||
|
||||
/**\brief This function tries to convert a string into an integer value.
|
||||
/**\brief This function tries to convert a string into an integer value.
|
||||
|
||||
The string can contain only digits and the minus character (for negative numbers).
|
||||
|
||||
\returns TRUE if ths string represent a valid integer number
|
||||
\returns FALSE otherwise
|
||||
*/
|
||||
bool SG_DLLEXPORT string_to_int(const Glib::ustring&, int&);
|
||||
*/
|
||||
bool SG_DLLEXPORT string_to_int(const Glib::ustring&, int&);
|
||||
|
||||
|
||||
/**\brief This function converts an integer value into a string.
|
||||
/**\brief This function converts an integer value into a string.
|
||||
|
||||
There is no return value because this function always succeeds.
|
||||
*/
|
||||
void SG_DLLEXPORT int_to_string(const int&, Glib::ustring&);
|
||||
*/
|
||||
void SG_DLLEXPORT int_to_string(const int&, Glib::ustring&);
|
||||
|
||||
|
||||
/**\brief This function converts a float value into a string.
|
||||
/**\brief This function converts a float value into a string.
|
||||
|
||||
There is no return value because this function always succeeds.
|
||||
*/
|
||||
void SG_DLLEXPORT float_to_string(const float&, Glib::ustring&);
|
||||
*/
|
||||
void SG_DLLEXPORT float_to_string(const float&, Glib::ustring&);
|
||||
|
||||
|
||||
/**\brief This function tries to convert a string into a float value.
|
||||
/**\brief This function tries to convert a string into a float value.
|
||||
|
||||
The string can contain only digits, the minus, plus and dot (-+.) characters. If not,
|
||||
the value 0 is assigned.
|
||||
|
||||
There is no return value because this function always succeeds, even if the string is badly formed.
|
||||
*/
|
||||
void SG_DLLEXPORT string_to_float(const Glib::ustring&, float&);
|
||||
*/
|
||||
void SG_DLLEXPORT string_to_float(const Glib::ustring&, float&);
|
||||
|
||||
|
||||
#endif
|
||||
|
|
|
@ -23,6 +23,5 @@
|
|||
using namespace sgpem;
|
||||
|
||||
SubRequest::~SubRequest()
|
||||
{
|
||||
}
|
||||
{}
|
||||
|
||||
|
|
|
@ -23,6 +23,5 @@
|
|||
using namespace sgpem;
|
||||
|
||||
Thread::~Thread()
|
||||
{
|
||||
}
|
||||
{}
|
||||
|
||||
|
|
|
@ -40,7 +40,7 @@ namespace sgpem
|
|||
|
||||
virtual Process& get_process() = 0;
|
||||
virtual std::vector<Request*> get_requests() = 0;
|
||||
virtual void serialize(SerializeVisitor& translator) const= 0;
|
||||
virtual void serialize(SerializeVisitor& translator) const = 0;
|
||||
};
|
||||
|
||||
}
|
||||
|
|
|
@ -29,7 +29,8 @@
|
|||
|
||||
#include <stdexcept>
|
||||
|
||||
namespace sgpem {
|
||||
namespace sgpem
|
||||
{
|
||||
class UserInterruptException;
|
||||
|
||||
class SG_DLLEXPORT UserInterruptException : public std::runtime_error
|
||||
|
|
|
@ -33,7 +33,8 @@
|
|||
#include "io_manager.hh"
|
||||
#include "graphical_terminal_io.hh"
|
||||
|
||||
namespace sgpem {
|
||||
namespace sgpem
|
||||
{
|
||||
|
||||
|
||||
class GraphicalSimulation;
|
||||
|
|
|
@ -44,7 +44,7 @@ GraphicalTerminalIO::GraphicalTerminalIO(TextSimulation* sim)
|
|||
using namespace Gtk;
|
||||
|
||||
set_title(_("Textual Simulation Log"));
|
||||
set_default_size(500,300);
|
||||
set_default_size(500, 300);
|
||||
|
||||
Box& mainbox = *manage(new VBox());
|
||||
add(mainbox);
|
||||
|
@ -130,7 +130,7 @@ GraphicalTerminalIO::read_command()
|
|||
_text_input.set_text("");
|
||||
_text_input.grab_focus();
|
||||
|
||||
return command.substr(f,l-f+1);
|
||||
return command.substr(f, l - f + 1);
|
||||
}
|
||||
|
||||
bool
|
||||
|
|
|
@ -36,7 +36,8 @@
|
|||
|
||||
#include <memory>
|
||||
|
||||
namespace sgpem {
|
||||
namespace sgpem
|
||||
{
|
||||
|
||||
// ---------------------------------------------
|
||||
|
||||
|
|
|
@ -26,7 +26,8 @@
|
|||
|
||||
#include <glibmm/ustring.h>
|
||||
|
||||
namespace sgpem {
|
||||
namespace sgpem
|
||||
{
|
||||
|
||||
class IOManager;
|
||||
|
||||
|
|
20
src/main.cc
20
src/main.cc
|
@ -55,7 +55,8 @@ using namespace memory;
|
|||
using Glib::ustring;
|
||||
|
||||
|
||||
static void load_pyloader_plugin() {
|
||||
static void load_pyloader_plugin()
|
||||
{
|
||||
// FIXME: this will need to be moved to an
|
||||
// appropriate PluginManager class in the backend,
|
||||
// and the Makefile fixed accordingly (partly done).
|
||||
|
@ -66,7 +67,8 @@ static void load_pyloader_plugin() {
|
|||
|
||||
GlobalPreferences& prefs = GlobalPreferences::get_instance();
|
||||
GlobalPreferences::dir_iterator it = prefs.modules_dir_begin();
|
||||
while(it != prefs.modules_dir_end()) {
|
||||
while(it != prefs.modules_dir_end())
|
||||
{
|
||||
std::string pyloader_path = Module::build_path(*it, "pyloader");
|
||||
pyloader = new Module(pyloader_path);
|
||||
if(*pyloader) break;
|
||||
|
@ -101,18 +103,18 @@ main(int argc, char* argv[])
|
|||
int a_count = argc;
|
||||
char** a_ptr = argv;
|
||||
parse_options(a_count, a_ptr);
|
||||
filenames.insert(filenames.begin(), a_ptr, a_ptr+a_count);
|
||||
filenames.insert(filenames.begin(), a_ptr, a_ptr + a_count);
|
||||
}
|
||||
|
||||
load_pyloader_plugin();
|
||||
|
||||
// Create an INITIAL STATE
|
||||
StaticProcess p1("P1", 0,5,1);
|
||||
StaticProcess p2("P2", 0,5,2);
|
||||
StaticProcess p3("P3", 5,3,3);
|
||||
StaticProcess p4("P4", 6,2,3);
|
||||
StaticProcess p5("P5", 1,2,3);
|
||||
StaticProcess p6("P6", 10,2,1);
|
||||
StaticProcess p1("P1", 0, 5, 1);
|
||||
StaticProcess p2("P2", 0, 5, 2);
|
||||
StaticProcess p3("P3", 5, 3, 3);
|
||||
StaticProcess p4("P4", 6, 2, 3);
|
||||
StaticProcess p5("P5", 1, 2, 3);
|
||||
StaticProcess p6("P6", 10, 2, 1);
|
||||
|
||||
DynamicSchedulable ss1(p1);
|
||||
DynamicSchedulable ss2(p2);
|
||||
|
|
|
@ -26,7 +26,8 @@
|
|||
|
||||
#include <gtkmm/window.h>
|
||||
|
||||
namespace sgpem {
|
||||
namespace sgpem
|
||||
{
|
||||
|
||||
// ---------------------------------------------
|
||||
|
||||
|
|
|
@ -23,10 +23,8 @@
|
|||
using namespace sgpem;
|
||||
|
||||
Observer::Observer()
|
||||
{
|
||||
}
|
||||
{}
|
||||
|
||||
Observer::~Observer()
|
||||
{
|
||||
}
|
||||
{}
|
||||
|
||||
|
|
|
@ -47,7 +47,7 @@ namespace sgpem
|
|||
interest to this observer happens.
|
||||
\see ObservedSubject
|
||||
*/
|
||||
virtual void update() =0;
|
||||
virtual void update() = 0;
|
||||
|
||||
private:
|
||||
};
|
||||
|
|
|
@ -69,7 +69,7 @@ parse_options(int& argc, char**& argv)
|
|||
|
||||
switch(opt)
|
||||
{
|
||||
case -1:
|
||||
case - 1:
|
||||
// We have finished normally
|
||||
break;
|
||||
case 'N' :
|
||||
|
|
|
@ -28,8 +28,7 @@ using namespace memory;
|
|||
using Glib::usleep;
|
||||
|
||||
Simulation::Simulation(): _state(state_paused), _mode(true), _timer_interval(1000)
|
||||
{
|
||||
}
|
||||
{}
|
||||
|
||||
void
|
||||
Simulation::set_timer(const int& t)
|
||||
|
@ -97,7 +96,8 @@ Simulation::run() throw(UserInterruptException)
|
|||
|
||||
if (_mode)
|
||||
{
|
||||
do {
|
||||
do
|
||||
{
|
||||
// chech for termination
|
||||
bool all_term = true;
|
||||
smart_ptr<SchedulableQueue> left = h.get_simulation_status_at(h.get_current_time());
|
||||
|
@ -135,7 +135,8 @@ Simulation::run() throw(UserInterruptException)
|
|||
if (_state == state_stopped || _state == state_paused)
|
||||
return;
|
||||
|
||||
} while(true);
|
||||
}
|
||||
while(true);
|
||||
}
|
||||
|
||||
//******* STEP by STEP
|
||||
|
@ -185,7 +186,7 @@ Simulation::jump_to(const uint& where) throw(UserInterruptException)
|
|||
try
|
||||
{
|
||||
// executes "where" steps
|
||||
for (uint i=0; i < where; i++)
|
||||
for (uint i = 0; i < where; i++)
|
||||
run();
|
||||
}
|
||||
catch(UserInterruptException e)
|
||||
|
|
|
@ -41,7 +41,7 @@ StandardIO::read_command()
|
|||
using namespace std;
|
||||
|
||||
char p[2000];
|
||||
cin.getline(p,2000);
|
||||
cin.getline(p, 2000);
|
||||
|
||||
ustring command(p);
|
||||
|
||||
|
@ -53,7 +53,7 @@ StandardIO::read_command()
|
|||
if(f == ustring::npos)
|
||||
return "";
|
||||
|
||||
return command.substr(f,l-f+1);
|
||||
return command.substr(f, l - f + 1);
|
||||
}
|
||||
|
||||
bool
|
||||
|
|
|
@ -29,7 +29,8 @@
|
|||
|
||||
#include "io_manager.hh"
|
||||
|
||||
namespace sgpem {
|
||||
namespace sgpem
|
||||
{
|
||||
|
||||
|
||||
class StandardIO;
|
||||
|
|
|
@ -30,7 +30,7 @@
|
|||
void
|
||||
start_gui(int argc, char** argv, TextSimulation& txt)
|
||||
{
|
||||
Gtk::Main gtk_main(argc,argv);
|
||||
Gtk::Main gtk_main(argc, argv);
|
||||
|
||||
GraphicalTerminalIO* gt = new sgpem::GraphicalTerminalIO(&txt);
|
||||
memory::smart_ptr<sgpem::IOManager> main_window(gt);
|
||||
|
|
|
@ -29,9 +29,8 @@ using namespace sgpem;
|
|||
|
||||
template<typename T>
|
||||
PolicyParameters::Parameter<T>::Parameter(Glib::ustring name, const T& value, const T& lower_bound, const T& upper_bound, const bool& required, const T& default_value)
|
||||
:_name(name), _value(value), _lower_bound(lower_bound), _upper_bound(upper_bound), _is_required(required), _default(default_value)
|
||||
{
|
||||
}
|
||||
: _name(name), _value(value), _lower_bound(lower_bound), _upper_bound(upper_bound), _is_required(required), _default(default_value)
|
||||
{}
|
||||
|
||||
template<typename T>
|
||||
Glib::ustring
|
||||
|
|
|
@ -48,7 +48,8 @@ namespace sgpem
|
|||
private:
|
||||
static Instantiated_class* _instance;
|
||||
static Glib::StaticMutex SG_DLLLOCAL _mutex;
|
||||
}; //~ class Singleton
|
||||
}
|
||||
; //~ class Singleton
|
||||
|
||||
} //~ namespace sgpem
|
||||
|
||||
|
|
|
@ -20,7 +20,8 @@
|
|||
#include <new>
|
||||
#include <typeinfo>
|
||||
|
||||
namespace memory {
|
||||
namespace memory
|
||||
{
|
||||
|
||||
/** \brief A simple reference counted smart pointer
|
||||
*
|
||||
|
@ -43,7 +44,8 @@ namespace memory {
|
|||
* from it: its destructor isn't virtual, either.
|
||||
*/
|
||||
template<typename T, bool isArray = false>
|
||||
class smart_ptr {
|
||||
class smart_ptr
|
||||
{
|
||||
|
||||
template<typename T2, bool isArray2>
|
||||
friend class smart_ptr;
|
||||
|
@ -133,7 +135,7 @@ namespace memory {
|
|||
* the cast isn't successful or doable
|
||||
*/
|
||||
template<typename U>
|
||||
smart_ptr<U,isArray> cast_to() throw(std::bad_cast);
|
||||
smart_ptr<U, isArray> cast_to() throw(std::bad_cast);
|
||||
|
||||
/** \brief Dynamic cast the stored pointer
|
||||
* to another type, returning a smart_ptr
|
||||
|
@ -147,16 +149,18 @@ namespace memory {
|
|||
* the cast isn't successful or doable
|
||||
*/
|
||||
template<typename U>
|
||||
const smart_ptr<U,isArray> cast_to() const throw(std::bad_cast);
|
||||
const smart_ptr<U, isArray> cast_to() const throw(std::bad_cast);
|
||||
|
||||
private:
|
||||
template<typename U>
|
||||
smart_ptr(const smart_ptr<U,isArray>& sptr) throw(std::bad_cast);
|
||||
smart_ptr(const smart_ptr<U, isArray>& sptr) throw(std::bad_cast);
|
||||
|
||||
struct contents_type {
|
||||
struct contents_type
|
||||
{
|
||||
T* ptr;
|
||||
unsigned int rc;
|
||||
}* _contents;
|
||||
}
|
||||
* _contents;
|
||||
};
|
||||
}
|
||||
|
||||
|
|
|
@ -19,7 +19,8 @@
|
|||
|
||||
#include "smartp.hh"
|
||||
|
||||
namespace memory {
|
||||
namespace memory
|
||||
{
|
||||
|
||||
template<typename T, bool isArray>
|
||||
const smart_ptr<T, isArray> smart_ptr<T, isArray>::null = 0;
|
||||
|
@ -161,14 +162,14 @@ namespace memory {
|
|||
|
||||
template<typename T, bool isArray>
|
||||
template<typename U>
|
||||
smart_ptr<T,isArray>::smart_ptr(const smart_ptr<U,isArray>& sptr)
|
||||
smart_ptr<T, isArray>::smart_ptr(const smart_ptr<U, isArray>& sptr)
|
||||
throw(std::bad_cast)
|
||||
{
|
||||
if(!sptr._contents->ptr || dynamic_cast<T*>(sptr._contents->ptr) == 0)
|
||||
throw std::bad_cast();
|
||||
|
||||
// I know, I know... this is Evil(TM):
|
||||
_contents = reinterpret_cast<typename smart_ptr<T,isArray>::contents_type*>(sptr._contents);
|
||||
_contents = reinterpret_cast<typename smart_ptr<T, isArray>::contents_type*>(sptr._contents);
|
||||
(_contents->rc)++;
|
||||
}
|
||||
|
||||
|
|
|
@ -51,7 +51,7 @@ using namespace std;
|
|||
*/
|
||||
class HistoryTester
|
||||
{
|
||||
public:
|
||||
public:
|
||||
|
||||
|
||||
HistoryTester(SchedulableQueue sl)
|
||||
|
@ -89,7 +89,7 @@ class HistoryTester
|
|||
return;
|
||||
}
|
||||
|
||||
private:
|
||||
private:
|
||||
|
||||
int _history_length; // mirrors the correct length of the history
|
||||
SchedulableQueue* _get_simulation_status_at[400]; // mirrors the correct content of the history
|
||||
|
@ -105,12 +105,12 @@ class HistoryTester
|
|||
if (&History::get_instance() != &History::get_instance()) std::cout << "\nget_instance";
|
||||
|
||||
// checks if the History is long how it should be
|
||||
if (History::get_instance().get_current_time() != _history_length) std::cout << "\nget_current_time: real: " << History::get_instance().get_current_time() <<", expected " << _history_length<<endl;
|
||||
if (History::get_instance().get_current_time() != _history_length) std::cout << "\nget_current_time: real: " << History::get_instance().get_current_time() << ", expected " << _history_length << endl;
|
||||
|
||||
// checks if the History contains the right stuff
|
||||
int min = History::get_instance().get_current_time();
|
||||
min = min < _history_length ? min : _history_length;
|
||||
for (int i = 0; i < min+1; i++)
|
||||
for (int i = 0; i < min + 1; i++)
|
||||
{
|
||||
// watch out here, it's if (NOT ...) operator != was not available.
|
||||
if
|
||||
|
@ -165,9 +165,9 @@ class HistoryTester
|
|||
status.swap(7, 1);
|
||||
for (unsigned int i = 0; i < status.size(); i++)
|
||||
{
|
||||
status.get_item_at(i)->give_cpu_time(i%2);
|
||||
status.get_item_at(i)->set_last_scheduled(_history_length%30);
|
||||
status.get_item_at(i)->set_state(i%2 ? DynamicSchedulable::state_running : DynamicSchedulable::state_ready);
|
||||
status.get_item_at(i)->give_cpu_time(i % 2);
|
||||
status.get_item_at(i)->set_last_scheduled(_history_length % 30);
|
||||
status.get_item_at(i)->set_state(i % 2 ? DynamicSchedulable::state_running : DynamicSchedulable::state_ready);
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
@ -191,7 +191,7 @@ class HistoryTester
|
|||
}
|
||||
|
||||
_history_length = _history_length - 1;
|
||||
History::get_instance().truncate_at(_history_length-1);
|
||||
History::get_instance().truncate_at(_history_length - 1);
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
@ -210,26 +210,26 @@ main(int argc, char** argv)
|
|||
command = argv[1];
|
||||
|
||||
// sets up the test data
|
||||
StaticProcess p1("P1", 1,5,1);
|
||||
StaticProcess p2("P2", 5,55,2);
|
||||
StaticProcess p3("P3", 36,30,3);
|
||||
StaticProcess p4("P4", 4,26,3);
|
||||
StaticProcess p5("P5", 15,200,3);
|
||||
StaticProcess p6("P6", 6,250,1);
|
||||
StaticProcess p7("P7", 8,42,15);
|
||||
StaticProcess p8("P8", 8,56,1);
|
||||
StaticProcess p9("P9", 9,42,1);
|
||||
StaticProcess p10("PA", 12,42,1);
|
||||
StaticProcess p11("PB", 106,42,1);
|
||||
StaticProcess p12("PC", 100,42,1);
|
||||
StaticProcess p13("PD", 29,42,18);
|
||||
StaticProcess p14("PE", 0,42,1);
|
||||
StaticProcess p15("PF", 2,88,1);
|
||||
StaticProcess p16("PG", 3666,9,1);
|
||||
StaticProcess p17("PH", 5,72,10);
|
||||
StaticProcess p18("PJ", 6,26,1);
|
||||
StaticProcess p19("PK", 10,24,17);
|
||||
StaticProcess p20("PK2", 11,34,67); // not used!
|
||||
StaticProcess p1("P1", 1, 5, 1);
|
||||
StaticProcess p2("P2", 5, 55, 2);
|
||||
StaticProcess p3("P3", 36, 30, 3);
|
||||
StaticProcess p4("P4", 4, 26, 3);
|
||||
StaticProcess p5("P5", 15, 200, 3);
|
||||
StaticProcess p6("P6", 6, 250, 1);
|
||||
StaticProcess p7("P7", 8, 42, 15);
|
||||
StaticProcess p8("P8", 8, 56, 1);
|
||||
StaticProcess p9("P9", 9, 42, 1);
|
||||
StaticProcess p10("PA", 12, 42, 1);
|
||||
StaticProcess p11("PB", 106, 42, 1);
|
||||
StaticProcess p12("PC", 100, 42, 1);
|
||||
StaticProcess p13("PD", 29, 42, 18);
|
||||
StaticProcess p14("PE", 0, 42, 1);
|
||||
StaticProcess p15("PF", 2, 88, 1);
|
||||
StaticProcess p16("PG", 3666, 9, 1);
|
||||
StaticProcess p17("PH", 5, 72, 10);
|
||||
StaticProcess p18("PJ", 6, 26, 1);
|
||||
StaticProcess p19("PK", 10, 24, 17);
|
||||
StaticProcess p20("PK2", 11, 34, 67); // not used!
|
||||
|
||||
DynamicSchedulable ss1(p1);
|
||||
DynamicSchedulable ss2(p2);
|
||||
|
|
|
@ -98,7 +98,8 @@ namespace sgpem
|
|||
|
||||
|
||||
int
|
||||
main(int, char**) {
|
||||
main(int, char**)
|
||||
{
|
||||
using namespace sgpem;
|
||||
|
||||
Scheduler::get_instance(); // Forces initialization of scheduler.
|
||||
|
|
|
@ -74,23 +74,21 @@ namespace sgpem
|
|||
}
|
||||
|
||||
virtual ~Policy()
|
||||
{
|
||||
}
|
||||
{}
|
||||
|
||||
virtual void configure()
|
||||
{
|
||||
}
|
||||
{}
|
||||
|
||||
virtual void sort_queue() const throw(UserInterruptException)
|
||||
{ // here a lot of fun, exactly O(n^2) fun!
|
||||
SchedulableQueue sl = History.get_instance().get_simulation_status_at(get_current_time());
|
||||
for (int i = 0; i < sl.size(); i++)
|
||||
{
|
||||
for (int j = 0; j < sl.size()-1; j++)
|
||||
for (int j = 0; j < sl.size() - 1; j++)
|
||||
{
|
||||
if (sl.get_item_at(j).get_schedulable().get_priority() < sl.get_item_at(j+1).get_schedulable().get_priority())
|
||||
if (sl.get_item_at(j).get_schedulable().get_priority() < sl.get_item_at(j + 1).get_schedulable().get_priority())
|
||||
{
|
||||
sl.swap(j, j+1);
|
||||
sl.swap(j, j + 1);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -150,8 +148,7 @@ namespace sgpem
|
|||
return PRRPolicy.get_instance();
|
||||
}
|
||||
virtual void init()
|
||||
{
|
||||
}
|
||||
{}
|
||||
static PolicyManager& get_registered_manager();
|
||||
|
||||
private:
|
||||
|
@ -217,13 +214,13 @@ namespace sgpem
|
|||
class StepForwardTester
|
||||
{
|
||||
|
||||
|
||||
}
|
||||
|
||||
// from here and further until the bottom, all to throw away I suppose
|
||||
|
||||
int
|
||||
main(int argc, char** argv) {
|
||||
main(int argc, char** argv)
|
||||
{
|
||||
|
||||
using namespace sgpem;
|
||||
using Glib::Module;
|
||||
|
@ -232,26 +229,26 @@ main(int argc, char** argv) {
|
|||
std::string command(ERERERT); // the sequence of commands to test
|
||||
|
||||
// sets up the test data
|
||||
StaticProcess p1("P1", 1,5,1);
|
||||
StaticProcess p2("P2", 5,55,2);
|
||||
StaticProcess p3("P3", 36,30,3);
|
||||
StaticProcess p4("P4", 4,26,3);
|
||||
StaticProcess p5("P5", 15,200,3);
|
||||
StaticProcess p6("P6", 6,250,1);
|
||||
StaticProcess p7("P7", 8,42,15);
|
||||
StaticProcess p8("P8", 8,56,1);
|
||||
StaticProcess p9("P9", 9,42,1);
|
||||
StaticProcess p10("PA", 12,42,1);
|
||||
StaticProcess p11("PB", 106,42,1);
|
||||
StaticProcess p12("PC", 100,42,1);
|
||||
StaticProcess p13("PD", 29,42,18);
|
||||
StaticProcess p14("PE", 0,42,1);
|
||||
StaticProcess p15("PF", 2,88,1);
|
||||
StaticProcess p16("PG", 3666,9,1);
|
||||
StaticProcess p17("PH", 5,72,10);
|
||||
StaticProcess p18("PJ", 6,26,1);
|
||||
StaticProcess p19("PK", 10,24,17);
|
||||
StaticProcess p20("PK2", 11,34,67); // not used!
|
||||
StaticProcess p1("P1", 1, 5, 1);
|
||||
StaticProcess p2("P2", 5, 55, 2);
|
||||
StaticProcess p3("P3", 36, 30, 3);
|
||||
StaticProcess p4("P4", 4, 26, 3);
|
||||
StaticProcess p5("P5", 15, 200, 3);
|
||||
StaticProcess p6("P6", 6, 250, 1);
|
||||
StaticProcess p7("P7", 8, 42, 15);
|
||||
StaticProcess p8("P8", 8, 56, 1);
|
||||
StaticProcess p9("P9", 9, 42, 1);
|
||||
StaticProcess p10("PA", 12, 42, 1);
|
||||
StaticProcess p11("PB", 106, 42, 1);
|
||||
StaticProcess p12("PC", 100, 42, 1);
|
||||
StaticProcess p13("PD", 29, 42, 18);
|
||||
StaticProcess p14("PE", 0, 42, 1);
|
||||
StaticProcess p15("PF", 2, 88, 1);
|
||||
StaticProcess p16("PG", 3666, 9, 1);
|
||||
StaticProcess p17("PH", 5, 72, 10);
|
||||
StaticProcess p18("PJ", 6, 26, 1);
|
||||
StaticProcess p19("PK", 10, 24, 17);
|
||||
StaticProcess p20("PK2", 11, 34, 67); // not used!
|
||||
|
||||
DynamicSchedulable ss1(p1);
|
||||
DynamicSchedulable ss2(p2);
|
||||
|
|
|
@ -34,8 +34,7 @@ using Glib::ustring;
|
|||
#include "smartp.tcc"
|
||||
|
||||
TextSimulation::~TextSimulation()
|
||||
{
|
||||
}
|
||||
{}
|
||||
|
||||
/**
|
||||
Adds an IO_device and creates a thread which loops the read-parse-execute process
|
||||
|
@ -70,7 +69,7 @@ TextSimulation::parse_command(pair< pair<TextSimulation*, IOManager*>, const us
|
|||
str = str.uppercase();
|
||||
|
||||
vector<ustring> arguments;
|
||||
uint f=0;
|
||||
uint f = 0;
|
||||
static const ustring whitespaces = " \r\b\n\t\a";
|
||||
//fills the vector with parameters
|
||||
while (true)
|
||||
|
@ -87,7 +86,7 @@ TextSimulation::parse_command(pair< pair<TextSimulation*, IOManager*>, const us
|
|||
//add the token
|
||||
arguments.push_back(str.substr(0, f));
|
||||
//trim the initial whitespaces
|
||||
str = str.substr(f+1);
|
||||
str = str.substr(f + 1);
|
||||
f = str.find_first_not_of(whitespaces);
|
||||
str = str.substr(f);
|
||||
}
|
||||
|
@ -445,10 +444,10 @@ TextSimulation::update()
|
|||
when = h.get_current_time();
|
||||
smart_ptr<SchedulableQueue> ll = h.get_simulation_status_at(when);
|
||||
|
||||
for (uint dev=0; dev < _devices.size(); dev++)
|
||||
for (uint dev = 0; dev < _devices.size(); dev++)
|
||||
{
|
||||
int_to_string(when, temp);
|
||||
if (when<10)
|
||||
if (when < 10)
|
||||
_devices[dev]->write_buffer("\n ");
|
||||
else
|
||||
_devices[dev]->write_buffer("\n");
|
||||
|
|
Loading…
Reference in New Issue