- Pretty-indenting code

git-svn-id: svn://svn.gna.org/svn/sgpemv2/trunk@674 3ecf2c5c-341e-0410-92b4-d18e462d057c
This commit is contained in:
tchernobog 2006-06-29 08:44:30 +00:00
parent 7aecc910ba
commit 6b27a8461b
94 changed files with 3073 additions and 3066 deletions

11
config/indenter Executable file
View File

@ -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

View File

@ -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
}

View File

@ -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);

View File

@ -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
}

View File

@ -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)

View File

@ -27,8 +27,7 @@ using namespace sgpem;
DynamicResource::DynamicResource(StaticResource *core) :
_static_resource(core)
{
}
{}
Glib::ustring
DynamicResource::get_name() const

View File

@ -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

View File

@ -112,8 +112,7 @@ namespace sgpem
void set_state(state s);
void serialize(SerializeVisitor& translator) const
{
}
{}
/** \brief Returns a pointer to the schedulable object
*

View File

@ -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()

View File

@ -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>;

View File

@ -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;
}

View File

@ -24,8 +24,7 @@ using namespace sgpem;
ObservedSubject::~ObservedSubject()
{
}
{}
/**
Calls update() in each Observer

View File

@ -57,7 +57,8 @@ namespace sgpem
private:
SG_DLLLOCAL Plugin();
}; //~ class Plugin
}
; //~ class Plugin
} //~ namespace sgpem

View File

@ -107,8 +107,7 @@ PoliciesGatekeeper::activate_policy(History *history, Policy* policy)
}
PoliciesGatekeeper::PoliciesGatekeeper()
{
}
{}
void
PoliciesGatekeeper::deactivate_policies(PolicyManager* manager)

View File

@ -24,8 +24,7 @@ using namespace sgpem;
using namespace memory;
Policy::~Policy()
{
}
{}
int
Policy::get_id() const

View File

@ -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;
}

View File

@ -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.

View File

@ -23,6 +23,5 @@
using namespace sgpem;
Process::~Process()
{
}
{}

View File

@ -23,6 +23,5 @@
using namespace sgpem;
Request::~Request()
{
}
{}

View File

@ -23,6 +23,5 @@
using namespace sgpem;
Resource::~Resource()
{
}
{}

View File

@ -23,6 +23,5 @@
using namespace sgpem;
Schedulable::~Schedulable()
{
}
{}

View File

@ -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;

View File

@ -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;

View File

@ -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&);

View File

@ -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!!";

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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;
}

View File

@ -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

View File

@ -23,6 +23,5 @@
using namespace sgpem;
SubRequest::~SubRequest()
{
}
{}

View File

@ -23,6 +23,5 @@
using namespace sgpem;
Thread::~Thread()
{
}
{}

View File

@ -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;
};
}

View File

@ -29,7 +29,8 @@
#include <stdexcept>
namespace sgpem {
namespace sgpem
{
class UserInterruptException;
class SG_DLLEXPORT UserInterruptException : public std::runtime_error

View File

@ -33,7 +33,8 @@
#include "io_manager.hh"
#include "graphical_terminal_io.hh"
namespace sgpem {
namespace sgpem
{
class GraphicalSimulation;

View File

@ -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

View File

@ -36,7 +36,8 @@
#include <memory>
namespace sgpem {
namespace sgpem
{
// ---------------------------------------------

View File

@ -26,7 +26,8 @@
#include <glibmm/ustring.h>
namespace sgpem {
namespace sgpem
{
class IOManager;

View File

@ -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);

View File

@ -26,7 +26,8 @@
#include <gtkmm/window.h>
namespace sgpem {
namespace sgpem
{
// ---------------------------------------------

View File

@ -23,10 +23,8 @@
using namespace sgpem;
Observer::Observer()
{
}
{}
Observer::~Observer()
{
}
{}

View File

@ -47,7 +47,7 @@ namespace sgpem
interest to this observer happens.
\see ObservedSubject
*/
virtual void update() =0;
virtual void update() = 0;
private:
};

View File

@ -69,7 +69,7 @@ parse_options(int& argc, char**& argv)
switch(opt)
{
case -1:
case - 1:
// We have finished normally
break;
case 'N' :

View File

@ -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)

View File

@ -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

View File

@ -29,7 +29,8 @@
#include "io_manager.hh"
namespace sgpem {
namespace sgpem
{
class StandardIO;

View File

@ -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);

View File

@ -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

View File

@ -48,7 +48,8 @@ namespace sgpem
private:
static Instantiated_class* _instance;
static Glib::StaticMutex SG_DLLLOCAL _mutex;
}; //~ class Singleton
}
; //~ class Singleton
} //~ namespace sgpem

View File

@ -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;
};
}

View File

@ -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)++;
}

View File

@ -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);

View File

@ -98,7 +98,8 @@ namespace sgpem
int
main(int, char**) {
main(int, char**)
{
using namespace sgpem;
Scheduler::get_instance(); // Forces initialization of scheduler.

View File

@ -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);

View File

@ -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");