OPAL (Object Oriented Parallel Accelerator Library) 2024.2
OPAL
PyOpal::PyOpalObjectNS Namespace Reference

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

Classes

struct  AttributeDef
 AttributeDef defines an attribute opalName_m: the name of the opal Attribute pyName_m: the name that will be visible to the user in python. More...
 
class  PyOpalObject
 PyOpalObject<C> is the basic wrapper class for Opal Objects. More...
 
struct  PyOpalObjectGetProperty
 Helper class to handle getting Attributes from python. More...
 
struct  PyOpalObjectSetProperty
 Helper class to handle setting Attributes from python. More...
 

Enumerations

enum  AttributeType {
  STRING , PREDEFINED_STRING , UPPER_CASE_STRING , STRING_LIST ,
  DOUBLE , BOOL , INT , FLOAT_LIST
}
 AttributeType is used to control conversion from python to OpalAttribute. More...
 

Functions

template<class C >
void update (PyOpalObjectNS::PyOpalObject< C > pyelement)
 Call update on a pyelement. More...
 

Variables

std::map< AttributeType, std::string > attributeName
 Maps the AttributeType to a string representation for docstrings/etc. More...
 

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.

Class Documentation

◆ PyOpal::PyOpalObjectNS::AttributeDef

struct PyOpal::PyOpalObjectNS::AttributeDef

AttributeDef defines an attribute opalName_m: the name of the opal Attribute pyName_m: the name that will be visible to the user in python.

Properties should be_lower_case_with_underscores to comply with python API docString_m: docstring. If left empty (""), PyElement will generate a docstring like "py_name (type): Attribute help string" type_m: python type.

Definition at line 94 of file PyOpalObject.h.

Collaboration diagram for PyOpal::PyOpalObjectNS::AttributeDef:
Collaboration graph
Class Members
string docString_m
string opalName_m
string pyName_m
AttributeType type_m

Enumeration Type Documentation

◆ AttributeType

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
STRING 
PREDEFINED_STRING 
UPPER_CASE_STRING 
STRING_LIST 
DOUBLE 
BOOL 
INT 
FLOAT_LIST 

Definition at line 80 of file PyOpalObject.h.

Function Documentation

◆ update()

template<class C >
void PyOpal::PyOpalObjectNS::update ( PyOpalObjectNS::PyOpalObject< C >  pyelement)

Call update on a pyelement.

Note that C must be a subtype of OpalElement or some other class that has an C::update() method (i.e. not OpalObject).

Definition at line 340 of file PyOpalObject.h.

References PyOpal::PyOpalObjectNS::PyOpalObject< C >::getOpalShared().

Referenced by ParallelTTracker::applyFractionalStep(), PartBunchBase< T, Dim >::boundp_destroyCycl(), PartBunchBase< T, Dim >::push_back(), AmrParticleBase< PLayout >::update(), ParallelTTracker::updateRefToLabCSTrafo(), and ParallelTTracker::writePhaseSpace().

Here is the call graph for this function:

Variable Documentation

◆ attributeName

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