This is a base class for all Python extension types. More...
#include <pythonutils.h>
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 |
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.
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.
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] |
Default getattro method.
Subclasses are expected to implement an override if the type supports gettattro.
Reimplemented in frepple::PythonBuffer, frepple::PythonBufferDefault, frepple::PythonBufferInfinite, frepple::PythonBufferProcure, frepple::PythonLocation, frepple::PythonLocationDefault, frepple::PythonCustomer, frepple::PythonCustomerDefault, frepple::PythonItem, frepple::PythonItemDefault, frepple::PythonCalendar, frepple::PythonCalendarVoid, frepple::PythonCalendarBool, frepple::PythonCalendarDouble, frepple::PythonCalendarString, frepple::PythonCalendarInt, frepple::PythonCalendarOperation, frepple::PythonDemand, frepple::PythonDemandDefault, frepple::PythonResource, frepple::PythonResourceDefault, frepple::PythonResourceInfinite, frepple::PythonOperation, frepple::PythonOperationAlternate, frepple::PythonOperationFixedTime, frepple::PythonOperationTimePer, frepple::PythonOperationRouting, frepple::PythonSolver, frepple::PythonSolverMRP, module_forecast::PythonForecastSolver, and module_lp_solver::PythonLPSolver.
Definition at line 559 of file pythonutils.h.
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] |
Default setattro method.
Subclasses are expected to implement an override if the type supports settattro.
Reimplemented in frepple::PythonBuffer, frepple::PythonBufferDefault, frepple::PythonBufferInfinite, frepple::PythonBufferProcure, frepple::PythonLocation, frepple::PythonLocationDefault, frepple::PythonCustomer, frepple::PythonCustomerDefault, frepple::PythonItem, frepple::PythonItemDefault, frepple::PythonCalendar, frepple::PythonCalendarVoid, frepple::PythonCalendarBool, frepple::PythonCalendarDouble, frepple::PythonCalendarString, frepple::PythonCalendarInt, frepple::PythonCalendarOperation, frepple::PythonDemand, frepple::PythonDemandDefault, frepple::PythonResource, frepple::PythonResourceDefault, frepple::PythonResourceInfinite, frepple::PythonOperation, frepple::PythonOperationAlternate, frepple::PythonOperationFixedTime, frepple::PythonOperationTimePer, frepple::PythonOperationRouting, frepple::PythonSolver, frepple::PythonSolverMRP, module_forecast::PythonForecastSolver, and module_lp_solver::PythonLPSolver.
Definition at line 569 of file pythonutils.h.
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.
vector< PythonType * > frepple::utils::PythonExtensionBase::table [static, protected] |
Definition at line 616 of file pythonutils.h.