frepple::utils::PythonExtensionBase Class Reference

This is a base class for all Python extension types. More...

#include <pythonutils.h>

Inheritance diagram for frepple::utils::PythonExtensionBase:
frepple::utils::PythonExtension< T > frepple::utils::PythonExtension< FreppleCategory< ME, PROXY > > frepple::utils::PythonExtension< FreppleCategory< PythonBuffer, Buffer > > frepple::utils::PythonExtension< FreppleCategory< PythonCalendar, Calendar > > frepple::utils::PythonExtension< FreppleCategory< PythonCustomer, Customer > > frepple::utils::PythonExtension< FreppleCategory< PythonDemand, Demand > > frepple::utils::PythonExtension< FreppleCategory< PythonItem, Item > > frepple::utils::PythonExtension< FreppleCategory< PythonLocation, Location > > frepple::utils::PythonExtension< FreppleCategory< PythonOperation, Operation > > frepple::utils::PythonExtension< FreppleCategory< PythonResource, Resource > > frepple::utils::PythonExtension< FreppleCategory< PythonSolver, Solver > > frepple::utils::PythonExtension< FreppleClass< ME, BASE, PROXY > > frepple::utils::PythonExtension< FreppleClass< PythonBufferDefault, PythonBuffer, BufferDefault > > frepple::utils::PythonExtension< FreppleClass< PythonBufferInfinite, PythonBuffer, BufferInfinite > > frepple::utils::PythonExtension< FreppleClass< PythonBufferProcure, PythonBuffer, BufferProcure > > frepple::utils::PythonExtension< FreppleClass< PythonCalendarBool, PythonCalendar, CalendarBool > > frepple::utils::PythonExtension< FreppleClass< PythonCalendarDouble, PythonCalendar, CalendarDouble > > frepple::utils::PythonExtension< FreppleClass< PythonCalendarInt, PythonCalendar, CalendarInt > > frepple::utils::PythonExtension< FreppleClass< PythonCalendarOperation, PythonCalendar, CalendarOperation > > frepple::utils::PythonExtension< FreppleClass< PythonCalendarString, PythonCalendar, CalendarString > > frepple::utils::PythonExtension< FreppleClass< PythonCalendarVoid, PythonCalendar, CalendarVoid > > frepple::utils::PythonExtension< FreppleClass< PythonCustomerDefault, PythonCustomer, CustomerDefault > > frepple::utils::PythonExtension< FreppleClass< PythonDemandDefault, PythonDemand, DemandDefault > > frepple::utils::PythonExtension< FreppleClass< PythonForecast, PythonDemand, Forecast > > frepple::utils::PythonExtension< FreppleClass< PythonForecastBucket, PythonDemand, ForecastBucket > > frepple::utils::PythonExtension< FreppleClass< PythonForecastSolver, PythonSolver, ForecastSolver > > frepple::utils::PythonExtension< FreppleClass< PythonItemDefault, PythonItem, ItemDefault > > frepple::utils::PythonExtension< FreppleClass< PythonLocationDefault, PythonLocation, LocationDefault > > frepple::utils::PythonExtension< FreppleClass< PythonLPSolver, PythonSolver, LPSolver > > frepple::utils::PythonExtension< FreppleClass< PythonOperationAlternate, PythonOperation, OperationAlternate > > frepple::utils::PythonExtension< FreppleClass< PythonOperationFixedTime, PythonOperation, OperationFixedTime > > frepple::utils::PythonExtension< FreppleClass< PythonOperationRouting, PythonOperation, OperationRouting > > frepple::utils::PythonExtension< FreppleClass< PythonOperationTimePer, PythonOperation, OperationTimePer > > frepple::utils::PythonExtension< FreppleClass< PythonResourceDefault, PythonResource, ResourceDefault > > frepple::utils::PythonExtension< FreppleClass< PythonResourceInfinite, PythonResource, ResourceInfinite > > frepple::utils::PythonExtension< FreppleClass< PythonSolverMRP, PythonSolver, SolverMRP > > frepple::utils::PythonExtension< ME > frepple::utils::PythonExtension< PythonBufferIterator > frepple::utils::PythonExtension< PythonCalendarBucket > frepple::utils::PythonExtension< PythonCalendarBucketIterator > frepple::utils::PythonExtension< PythonCalendarIterator > frepple::utils::PythonExtension< PythonCustomerIterator > frepple::utils::PythonExtension< PythonDemandIterator > frepple::utils::PythonExtension< PythonDemandPlanIterator > frepple::utils::PythonExtension< PythonFlow > frepple::utils::PythonExtension< PythonFlowIterator > frepple::utils::PythonExtension< PythonFlowPlan > frepple::utils::PythonExtension< PythonFlowPlanIterator > frepple::utils::PythonExtension< PythonItemIterator > frepple::utils::PythonExtension< PythonLoad > frepple::utils::PythonExtension< PythonLoadIterator > frepple::utils::PythonExtension< PythonLoadPlan > frepple::utils::PythonExtension< PythonLoadPlanIterator > frepple::utils::PythonExtension< PythonLocationIterator > frepple::utils::PythonExtension< PythonOperationIterator > frepple::utils::PythonExtension< PythonOperationPlan > frepple::utils::PythonExtension< PythonOperationPlanIterator > frepple::utils::PythonExtension< PythonPeggingIterator > frepple::utils::PythonExtension< PythonPlan > frepple::utils::PythonExtension< PythonProblem > frepple::utils::PythonExtension< PythonProblemIterator > frepple::utils::PythonExtension< PythonResourceIterator > frepple::utils::PythonExtension< PythonSolverIterator >

List of all members.

Public Member Functions

virtual PyObject * call (const PythonObject &args, const PythonObject &kwds)
virtual int compare (const PythonObject &other)
virtual PyObject * getattro (const Attribute &attr)
virtual PyObject * iternext ()
 PythonExtensionBase ()
virtual int setattro (const Attribute &attr, const PythonObject &field)
virtual PyObject * str ()
virtual ~PythonExtensionBase ()

Static Protected Attributes

static vector< PythonType * > table

Detailed Description

This is a base class for all Python extension types.

When creating you own extensions, inherit from the PythonExtension template class instead of this one.

It inherits from the PyObject C struct, defined in the Python C API.
These functions aren't called directly from Python. Python first calls a handler C-function and the handler function will use a virtual call to run the correct C++-method.

Our extensions don't use the usual Python heap allocator. They are created and initialized with the regular C++ new and delete. A special deallocator is called from Python to delete objects when their reference count reaches zero.

Definition at line 546 of file pythonutils.h.


Constructor & Destructor Documentation

frepple::utils::PythonExtensionBase::PythonExtensionBase (  )  [inline]

Constructor

Definition at line 550 of file pythonutils.h.

virtual frepple::utils::PythonExtensionBase::~PythonExtensionBase (  )  [inline, virtual]

Destructor.

Definition at line 553 of file pythonutils.h.


Member Function Documentation

virtual PyObject* frepple::utils::PythonExtensionBase::call ( const PythonObject args,
const PythonObject kwds 
) [inline, virtual]

Default call method.
Subclasses are expected to implement an override if the type supports calls.

Definition at line 599 of file pythonutils.h.

virtual int frepple::utils::PythonExtensionBase::compare ( const PythonObject other  )  [inline, virtual]

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

Reimplemented in frepple::utils::FreppleClass< ME, BASE, PROXY >, frepple::utils::FreppleClass< PythonResourceInfinite, PythonResource, ResourceInfinite >, frepple::utils::FreppleClass< PythonLPSolver, PythonSolver, LPSolver >, frepple::utils::FreppleClass< PythonBufferDefault, PythonBuffer, BufferDefault >, frepple::utils::FreppleClass< PythonItemDefault, PythonItem, ItemDefault >, frepple::utils::FreppleClass< PythonBufferProcure, PythonBuffer, BufferProcure >, frepple::utils::FreppleClass< PythonBufferInfinite, PythonBuffer, BufferInfinite >, frepple::utils::FreppleClass< PythonCalendarOperation, PythonCalendar, CalendarOperation >, frepple::utils::FreppleClass< PythonOperationTimePer, PythonOperation, OperationTimePer >, frepple::utils::FreppleClass< PythonCalendarString, PythonCalendar, CalendarString >, frepple::utils::FreppleClass< PythonOperationRouting, PythonOperation, OperationRouting >, frepple::utils::FreppleClass< PythonLocationDefault, PythonLocation, LocationDefault >, frepple::utils::FreppleClass< PythonDemandDefault, PythonDemand, DemandDefault >, frepple::utils::FreppleClass< PythonOperationAlternate, PythonOperation, OperationAlternate >, frepple::utils::FreppleClass< PythonCalendarBool, PythonCalendar, CalendarBool >, frepple::utils::FreppleClass< PythonCalendarDouble, PythonCalendar, CalendarDouble >, frepple::utils::FreppleClass< PythonCustomerDefault, PythonCustomer, CustomerDefault >, frepple::utils::FreppleClass< PythonForecastSolver, PythonSolver, ForecastSolver >, frepple::utils::FreppleClass< PythonCalendarVoid, PythonCalendar, CalendarVoid >, frepple::utils::FreppleClass< PythonSolverMRP, PythonSolver, SolverMRP >, frepple::utils::FreppleClass< PythonForecast, PythonDemand, Forecast >, frepple::utils::FreppleClass< PythonForecastBucket, PythonDemand, ForecastBucket >, frepple::utils::FreppleClass< PythonCalendarInt, PythonCalendar, CalendarInt >, frepple::utils::FreppleClass< PythonOperationFixedTime, PythonOperation, OperationFixedTime >, and frepple::utils::FreppleClass< PythonResourceDefault, PythonResource, ResourceDefault >.

Definition at line 579 of file pythonutils.h.

virtual PyObject* frepple::utils::PythonExtensionBase::getattro ( const Attribute attr  )  [inline, virtual]
virtual PyObject* frepple::utils::PythonExtensionBase::iternext (  )  [inline, virtual]

Default iternext method.
Subclasses are expected to implement an override if the type supports iteration.

Definition at line 589 of file pythonutils.h.

virtual int frepple::utils::PythonExtensionBase::setattro ( const Attribute attr,
const PythonObject field 
) [inline, virtual]
virtual PyObject* frepple::utils::PythonExtensionBase::str (  )  [inline, virtual]

Default str method.
Subclasses are expected to implement an override if the type supports conversion to a string.

Reimplemented in frepple::PythonProblem, frepple::utils::FreppleClass< ME, BASE, PROXY >, frepple::utils::FreppleClass< PythonResourceInfinite, PythonResource, ResourceInfinite >, frepple::utils::FreppleClass< PythonLPSolver, PythonSolver, LPSolver >, frepple::utils::FreppleClass< PythonBufferDefault, PythonBuffer, BufferDefault >, frepple::utils::FreppleClass< PythonItemDefault, PythonItem, ItemDefault >, frepple::utils::FreppleClass< PythonBufferProcure, PythonBuffer, BufferProcure >, frepple::utils::FreppleClass< PythonBufferInfinite, PythonBuffer, BufferInfinite >, frepple::utils::FreppleClass< PythonCalendarOperation, PythonCalendar, CalendarOperation >, frepple::utils::FreppleClass< PythonOperationTimePer, PythonOperation, OperationTimePer >, frepple::utils::FreppleClass< PythonCalendarString, PythonCalendar, CalendarString >, frepple::utils::FreppleClass< PythonOperationRouting, PythonOperation, OperationRouting >, frepple::utils::FreppleClass< PythonLocationDefault, PythonLocation, LocationDefault >, frepple::utils::FreppleClass< PythonDemandDefault, PythonDemand, DemandDefault >, frepple::utils::FreppleClass< PythonOperationAlternate, PythonOperation, OperationAlternate >, frepple::utils::FreppleClass< PythonCalendarBool, PythonCalendar, CalendarBool >, frepple::utils::FreppleClass< PythonCalendarDouble, PythonCalendar, CalendarDouble >, frepple::utils::FreppleClass< PythonCustomerDefault, PythonCustomer, CustomerDefault >, frepple::utils::FreppleClass< PythonForecastSolver, PythonSolver, ForecastSolver >, frepple::utils::FreppleClass< PythonCalendarVoid, PythonCalendar, CalendarVoid >, frepple::utils::FreppleClass< PythonSolverMRP, PythonSolver, SolverMRP >, frepple::utils::FreppleClass< PythonForecast, PythonDemand, Forecast >, frepple::utils::FreppleClass< PythonForecastBucket, PythonDemand, ForecastBucket >, frepple::utils::FreppleClass< PythonCalendarInt, PythonCalendar, CalendarInt >, frepple::utils::FreppleClass< PythonOperationFixedTime, PythonOperation, OperationFixedTime >, and frepple::utils::FreppleClass< PythonResourceDefault, PythonResource, ResourceDefault >.

Definition at line 609 of file pythonutils.h.


Member Data Documentation

vector< PythonType * > frepple::utils::PythonExtensionBase::table [static, protected]

Definition at line 616 of file pythonutils.h.


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

Generated on 25 Feb 2010 for frePPLe by  doxygen 1.6.1