OPAL (Object Oriented Parallel Accelerator Library) 2022.1
OPAL
Classes | Enumerations | Functions | Variables
PyOpal::PyOpalObjectNS Namespace Reference

Classes

struct  AttributeDef
 
class  PyOpalObject
 
struct  PyOpalObjectGetProperty
 
struct  PyOpalObjectSetProperty
 

Enumerations

enum  AttributeType {
  DOUBLE , STRING , BOOL , INT ,
  FLOATLIST , STRING , PREDEFINED_STRING , UPPER_CASE_STRING ,
  STRING_LIST , DOUBLE , BOOL , INT ,
  FLOAT_LIST
}
 
enum  AttributeType {
  DOUBLE , STRING , BOOL , INT ,
  FLOATLIST , STRING , PREDEFINED_STRING , UPPER_CASE_STRING ,
  STRING_LIST , DOUBLE , BOOL , INT ,
  FLOAT_LIST
}
 

Functions

template<class C >
boost::python::object getFieldValue (PyOpalObjectNS::PyOpalObject< C > &pyobject, double x, double y, double z, double t)
 

Variables

std::map< AttributeType, std::string > attributeName
 

Detailed Description

PyOpalObjectNS namespace contains PyOpalObject, a wrapper for Object objects, and various supporting objects.

PyOpalObject<C>: basic element wrapper for C, which should be a subclass of OpalElement. AttributeType: enumeration of Opal Attribute Types (real, string, etc) AttributeDef: struct containing all of the things PyOpalObject needs to know about each attribute that should be exposed to the python api. PyElementGetProperty: call policy to handle access of an Attribute for a python property PyElementSetProperty: call policy to handle setting of an Attribute for a python property

To wrap an OpalElement, say MyOpalObjectClass, you need to:

  1. Define static member data for the PyOpalObject<MyOpalObjectClass>. This includes defining the attributes and setting a few options for different methods to expose.
  2. In BOOST_PYTHON_MODULE(my_opal_element_module), call
     PyOpalObject<MyOpalObjectType>.make_class()
    
    Nb: apologies, this is heavy template stuff so almost everything has to go in the header file.

Enumeration Type Documentation

◆ AttributeType [1/2]

AttributeType is used to control conversion from python to OpalAttribute

  • Float will convert to RealAttribute
  • String will convert to StringAttribute
  • Bool will convert to BoolAttribute (tho in python Bool is alias to long)
  • Long will convert to RealAttribute
  • VectorDouble will convert list to RealArray
Enumerator
DOUBLE 
STRING 
BOOL 
INT 
FLOATLIST 
STRING 
PREDEFINED_STRING 
UPPER_CASE_STRING 
STRING_LIST 
DOUBLE 
BOOL 
INT 
FLOAT_LIST 

Definition at line 61 of file PyOpalObject.h.

◆ AttributeType [2/2]

AttributeType is used to control conversion from python to OpalAttribute

  • Float will convert to RealAttribute
  • String will convert to StringAttribute
  • Bool will convert to BoolAttribute (tho in python Bool is alias to long)
  • Long will convert to RealAttribute
  • VectorDouble will convert list to RealArray
Enumerator
DOUBLE 
STRING 
BOOL 
INT 
FLOATLIST 
STRING 
PREDEFINED_STRING 
UPPER_CASE_STRING 
STRING_LIST 
DOUBLE 
BOOL 
INT 
FLOAT_LIST 

Definition at line 61 of file PyOpalObject.h.

Function Documentation

◆ getFieldValue()

template<class C >
boost::python::object PyOpal::PyOpalObjectNS::getFieldValue ( PyOpalObjectNS::PyOpalObject< C > &  pyobject,
double  x,
double  y,
double  z,
double  t 
)

Variable Documentation

◆ attributeName

std::map< AttributeType, std::string > PyOpal::PyOpalObjectNS::attributeName
Initial value:
= std::map<AttributeType, std::string>({
{DOUBLE, "float"},
{STRING, "string"},
{BOOL, "bool"},
{INT, "int"},
{FLOATLIST, "list of floats"}
})

Maps the AttributeType to a string representation for docstrings/etc

Definition at line 7 of file PyOpalObject.cpp.

Referenced by PyOpal::PyOpalObjectNS::PyOpalObject< C >::getAttribute(), PyOpal::PyOpalObjectNS::PyOpalObject< C >::getDocString(), and PyOpal::PyOpalObjectNS::PyOpalObject< C >::setAttribute().