Gyoto
Public Member Functions | Protected Attributes | List of all members
Gyoto::Python::Base Class Reference

Base class for classes in the Python plug-in. More...

#include <GyotoPython.h>

Inheritance diagram for Gyoto::Python::Base:
Gyoto::Astrobj::Python::Standard Gyoto::Astrobj::Python::ThinDisk Gyoto::Metric::Python Gyoto::Spectrum::Python

Public Member Functions

 Base (const Base &)
 
virtual std::string module () const
 Return module_.
 
virtual std::string inlineModule () const
 Return inline_module_.
 
virtual void module (const std::string &)
 Set module_ and import the Python module. More...
 
virtual void inlineModule (const std::string &)
 Set inline_module_ and import the Python module. More...
 
virtual std::string klass () const
 Retrieve class_.
 
virtual void klass (const std::string &c)
 Set class_ and instantiate the Python class. More...
 
virtual std::vector< double > parameters () const
 Retrieve parameters_.
 
virtual void parameters (const std::vector< double > &)
 Set parameters_ and send them to pInstance_. More...
 

Protected Attributes

std::string module_
 Name of the Python module that holds the class. More...
 
std::string inline_module_
 Python source code for module that holds the class.
 
std::string class_
 Name of the Python class that we want to expose. More...
 
std::vector< double > parameters_
 Parameters that this class needs. More...
 
PyObject * pModule_
 Reference to the python module once it has been loaded.
 
PyObject * pInstance_
 Reference to the python instance once it has been instantiated.
 

Detailed Description

Base class for classes in the Python plug-in.

All classes have those three Properties:

All the Gyoto instances of the classes descending from Gyoto::Python::Base expose themselves to the Python instance they wrap immediately after instantiation by setting the 'this' attribute. If the 'gyoto' Python extension can be loaded, then 'this' will be an instance of one of the classes gyoto.Metric, gyoto.Spectrum, gyoto.StandardAstrobj or gyoto.ThinDisk pointing to the underlying C++ instance. If the 'gyoto' extension is not available, 'this' will be None.

Member Function Documentation

◆ inlineModule()

virtual void Gyoto::Python::Base::inlineModule ( const std::string &  )
virtual

Set inline_module_ and import the Python module.

Side effects:

Reimplemented in Gyoto::Astrobj::Python::ThinDisk, Gyoto::Astrobj::Python::Standard, Gyoto::Metric::Python, and Gyoto::Spectrum::Python.

◆ klass()

virtual void Gyoto::Python::Base::klass ( const std::string &  c)
virtual

Set class_ and instantiate the Python class.

Sets pInstance_.

This generic implementation takes care of the common ground, but does not set 'this' or call parameters(parameters_). Therefore, all the derived classes should reimplement this method and at least call Python::Base::klass(c) and parameters(parameters_). Between the two is the right moment to check that the Python class implements the required API and to cache PyObject* pointers to class methods.

Reimplemented in Gyoto::Astrobj::Python::ThinDisk, Gyoto::Astrobj::Python::Standard, Gyoto::Metric::Python, and Gyoto::Spectrum::Python.

◆ module()

virtual void Gyoto::Python::Base::module ( const std::string &  )
virtual

Set module_ and import the Python module.

Side effects:

Reimplemented in Gyoto::Astrobj::Python::ThinDisk, Gyoto::Astrobj::Python::Standard, Gyoto::Metric::Python, and Gyoto::Spectrum::Python.

◆ parameters()

virtual void Gyoto::Python::Base::parameters ( const std::vector< double > &  )
virtual

Set parameters_ and send them to pInstance_.

The parameters are sent to the class instance using the setitem method with numerical keys.

Reimplemented in Gyoto::Astrobj::Python::ThinDisk, Gyoto::Astrobj::Python::Standard, Gyoto::Metric::Python, and Gyoto::Spectrum::Python.

Member Data Documentation

◆ class_

std::string Gyoto::Python::Base::class_
protected

Name of the Python class that we want to expose.

Property name: Class.

◆ module_

std::string Gyoto::Python::Base::module_
protected

Name of the Python module that holds the class.

For instance, if the class is implemented in toto.py, the module name is "toto". Property name: Module.

◆ parameters_

std::vector<double> Gyoto::Python::Base::parameters_
protected

Parameters that this class needs.

A list of parameters (doubles) can be passed in the Property Parameters. They will be sent to the Python instance using setitem.


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