This is the (logical) top class of the complete model. More...

#include <model.h>

Inheritance diagram for frepple::Plan:

List of all members.

Public Member Functions

void beginElement (XMLInput &, const Attribute &)
void endElement (XMLInput &, const Attribute &, const DataElement &)
PyObject * getattro (const Attribute &)
const DategetCurrent () const
const string & getDescription () const
const string & getName () const
virtual size_t getSize () const
const MetaClassgetType () const
int setattro (const Attribute &, const PythonObject &)
void setCurrent (Date)
void setDescription (const string &str)
void setName (const string &s)
virtual void solve (Solver &s, void *v=NULL) const
virtual void updateProblems ()
virtual void writeElement (XMLOutput *, const Keyword &, mode=DEFAULT) const
 ~Plan ()

Static Public Member Functions

static int initialize ()
static Planinstance ()

Static Public Attributes

static const MetaCategorymetadata

Detailed Description

This is the (logical) top class of the complete model.

This is a singleton class: only a single instance can be created. The data model has other limitations that make it not obvious to support building multiple models/plans in memory of the same application: e.g. the operations, resources, problems, operationplans... etc are all implemented in static, global lists. An entity can't be simply linked with a particular plan if multiple ones would exist.

Definition at line 4354 of file model.h.


Constructor & Destructor Documentation

frepple::Plan::~Plan ( )

Destructor.

Warning:
In multi threaded applications, the destructor is never called and the plan object leaks when we exit the application. In single-threaded applications this function is called properly, when the static plan variable is deleted.

Definition at line 65 of file plan.cpp.


Member Function Documentation

void frepple::Plan::beginElement ( XMLInput ,
const Attribute  
) [virtual]

Called while restoring the model from an XML-file.
This is called for each element within the "this" element, for which the "this" element is immediate parent.
It is called when the open element tag is encountered.

Reimplemented from frepple::utils::Object.

Definition at line 123 of file plan.cpp.

void frepple::Plan::endElement ( XMLInput pIn,
const Attribute pAttr,
const DataElement pElement 
) [virtual]

Reimplemented from frepple::Plannable.

Definition at line 108 of file plan.cpp.

PyObject * frepple::Plan::getattro ( const Attribute attr) [virtual]

Default getattro method.
Subclasses are expected to implement an override if the type supports gettattro.

Reimplemented from frepple::utils::PythonExtensionBase.

Definition at line 140 of file plan.cpp.

const Date& frepple::Plan::getCurrent ( ) const [inline]

Returns the current Date of the plan.

Definition at line 4396 of file model.h.

const string& frepple::Plan::getDescription ( ) const [inline]

Returns the description of the plan.

Definition at line 4405 of file model.h.

const string& frepple::Plan::getName ( ) const [inline]

Returns the plan name.

Definition at line 4390 of file model.h.

virtual size_t frepple::Plan::getSize ( ) const [inline, virtual]

Return the memory size of the object in bytes.

Implements frepple::utils::Object.

Definition at line 4431 of file model.h.

const MetaClass& frepple::Plan::getType ( ) const [inline, virtual]

This returns the type information on the object, a bit similar to the standard type_info information.

Implements frepple::utils::Object.

Definition at line 4429 of file model.h.

int frepple::Plan::initialize ( ) [static]

Initialize the class.

Definition at line 39 of file plan.cpp.

static Plan& frepple::Plan::instance ( ) [inline, static]

Return a pointer to the singleton plan object. The singleton object is created during the initialization of the library.

Definition at line 4379 of file model.h.

int frepple::Plan::setattro ( const Attribute attr,
const PythonObject field 
) [virtual]

Default setattro method.
Subclasses are expected to implement an override if the type supports settattro.

Reimplemented from frepple::utils::PythonExtensionBase.

Definition at line 154 of file plan.cpp.

void frepple::Plan::setCurrent ( Date  l)

Updates the current date of the plan. This method can be relatively heavy in a plan where operationplans already exist, since the detection for BeforeCurrent problems needs to be rerun.

Definition at line 75 of file plan.cpp.

void frepple::Plan::setDescription ( const string &  str) [inline]

Updates the description of the plan.

Definition at line 4408 of file model.h.

void frepple::Plan::setName ( const string &  s) [inline]

Updates the plan name.

Definition at line 4393 of file model.h.

virtual void frepple::Plan::solve ( Solver s,
void *  v = NULL 
) const [inline, virtual]

This method basically solves the whole planning problem.

Reimplemented from frepple::Solvable.

Definition at line 4427 of file model.h.

virtual void frepple::Plan::updateProblems ( ) [inline, virtual]

Called to update the list of problems. The function will only be called when:

  • the list of problems is being recomputed
  • AND, problem detection is enabled for this object
  • AND, the object has changed since the last problem computation

Implements frepple::HasProblems.

Definition at line 4424 of file model.h.

void frepple::Plan::writeElement ( XMLOutput o,
const Keyword tag,
mode  m = DEFAULT 
) const [virtual]

This method writes out the model information. Depending on a flag in the XMLOutput object a complete model is written, or only the dynamic plan information.

See also:
CommandSave, CommandSavePlan

Reimplemented from frepple::Plannable.

Definition at line 87 of file plan.cpp.


Member Data Documentation

Definition at line 4430 of file model.h.


The documentation for this class was generated from the following files:

Documentation generated for frePPLe by  doxygen