WARPXM v1.10.0
Loading...
Searching...
No Matches
Lib

The set of classes in this file provide a mechanism for creating self registering classes. More...

Namespaces

namespace  wxm
 Base namespace for everything not included in the global namespace.
 

Classes

class  WmIndexer< TYPE >
 template<typename T> class WxArray; More...
 
class  WmNameTree< V >
 Provides hierarchical container for T values according to unique string keys. More...
 
class  WmOpaquePtr
 Opaque Pointer object that carries the referenced data type, but does not expose this payload type as part of the pointer type. More...
 
class  WmConstOpaquePtr
 Opaque Pointer object that carries the referenced data type, but does not expose this payload type as part of the pointer type. More...
 
class  WmTypeWrapper
 
class  WxAny
 Class WxAny is based on the "any" class described in "Valued Conversion", Kevlin Henney, C++ Report, July-August 2000, pages 37–40. More...
 
class  WxBox< TYPE >
 WxBox represents a n-dimensional box of elements specified by lower coordinates and upper coordinates. More...
 
class  WxCreatorBase< B >
 
class  WxCreatorForChildrenBase< B >
 
class  WxCreatorMapBase< B >
 Defines Common Interface for WxCreatorMap. More...
 
class  WxCreatorMap< B >
 
class  WxCreator< D, B >
 This creator is meant to be used for classes with default constructor. More...
 
class  WxCreatorForChildren< D, B >
 This creator is meant to be used for classes that require a parent argument to their constructor. More...
 
class  WxCrypt
 WxCrypt provides a container to store/retrive name-value pairs. More...
 
class  WxCryptSet
 WxCryptSet extends WxCrypt by providing, in addition to name-value pairs, an set of named WxCryptSets, thus providing a powerful way of representing hierarchical data. More...
 
class  WxCryptSetLexer
 Class that provides utility to read an input stream into a WxCryptSet. More...
 
class  wxm::lib::Except
 wxm::lib::Except is the class to use for creating and throwing exceptions. More...
 
class  WxHdf5Io
 WxHdf5Io is the interface for the HDF5 implementation of HDF5. More...
 
struct  WxHdf5NodeTypev
 HDF5 specific i/o node wrapper. More...
 
class  WxHdf5IoTmpl
 WxHdf5IoTmpl does the reading and writing to HDF5 files for a given data type. More...
 
struct  WxHdf5Traits
 Traits class for HDF5. More...
 
class  WxIoBase
 Provides an abstract interface for access to hierachical datasets. More...
 
struct  WxIoNodeTypev
 Provides a means for derived messengers to return implimentation specific message status flags and data. More...
 
class  WxIoTmpl
 WxIoTmpl is the base class for access to a hierarchical file system with groups, data sets, and attributes for those datasets. More...
 
class  WxLoggerBase< T >
 Establishes basic interface of loggers. More...
 
class  WxLogger
 
class  WxLogRecordHandler
 Class to handle log messages generated by WarpX logging system. More...
 
class  WxStreamHandler
 Class to log messages to an open stream. More...
 
class  WxFileHandler
 Class to log messages to a file. More...
 
class  WxLogStream
 Provides interface to streaming iostreams to logs. More...
 
class  WxLogStreamStrm
 Works with WxLogStream for providing streaming to logs. More...
 
class  WxMpiMsg
 MPI Messenger. More...
 
struct  WxMpiMsgStatus_v
 Mpi specific message status wrapper. More...
 
class  WxMpiMsgTmpl< T >
 
class  WxMpiTraits< T >
 Type traits for use in MPI messengers. More...
 
class  WxMpiTraits< bool >
 
class  WxMpiTraits< char >
 
class  WxMpiTraits< unsigned char >
 
class  WxMpiTraits< short >
 
class  WxMpiTraits< unsigned short >
 
class  WxMpiTraits< int >
 
class  WxMpiTraits< unsigned >
 
class  WxMpiTraits< long >
 
class  WxMpiTraits< unsigned long >
 
class  WxMpiTraits< float >
 
class  WxMpiTraits< double >
 
class  WxMpiTraits< long double >
 
class  WxMpiTraits< long long int >
 
class  WxMsgBase
 Provides an abstract interface for message based communication between different processes. More...
 
struct  WxMsgStatus_v
 Provides a means for derived messengers to return implimentation specific message status flags and data. More...
 
class  WxMsgTmpl< T >
 Provides interface for messaging between processes. More...
 
class  WxObject
 WxObject is a base class for WarpX classes which need to go through a creation/destruction cycle within the simulation. More...
 
class  WxRange
 WxRange represents a hyper-rectangular domain of an n-dimensional space of integers. More...
 
class  WxTimer
 Timer class which keeps accurate wall time. More...
 
struct  WxTypeList< T, U >
 WxTypeList class provides a means of defining a list of types (hence the name "typelist"). More...
 
class  WxTypeMap< AtomicType, Unit >
 WxTypeMap can be used to generate a whole class hierachy at compile time. More...
 
class  WxTypeMap< WxTypeList< T1, T2 >, Unit >
 Specialization 1: Inherit from WxTypeMap generated from the elements of the typelist. More...
 
class  WxTypeMap< WxNullType, Unit >
 Specialization 3: For WxNullType do nothing. More...
 

Macros

#define _WX_COL_MAJOR_ORDER   1
 
#define _WX_ROW_MAJOR_ORDER   2
 
#define WX_TYPELIST_1(t1)   WxTypeList<t1, WxNullType>
 
#define WX_TYPELIST_2(t1, t2)   WxTypeList<t1, WX_TYPELIST_1(t2)>
 
#define WX_TYPELIST_3(t1, t2, t3)   WxTypeList<t1, WX_TYPELIST_2(t2, t3)>
 
#define WX_TYPELIST_4(t1, t2, t3, t4)   WxTypeList<t1, WX_TYPELIST_3(t2, t3, t4)>
 
#define WX_TYPELIST_5(t1, t2, t3, t4, t5)   WxTypeList<t1, WX_TYPELIST_4(t2, t3, t4, t5)>
 
#define WX_TYPELIST_6(t1, t2, t3, t4, t5, t6)    WxTypeList<t1, WX_TYPELIST_5(t2, t3, t4, t5, t6)>
 
#define WX_TYPELIST_7(t1, t2, t3, t4, t5, t6, t7)    WxTypeList<t1, WX_TYPELIST_6(t2, t3, t4, t5, t6, t7)>
 
#define WX_TYPELIST_8(t1, t2, t3, t4, t5, t6, t7, t8)    WxTypeList<t1, WX_TYPELIST_7(t2, t3, t4, t5, t6, t7, t8)>
 
#define WX_TYPELIST_9(t1, t2, t3, t4, t5, t6, t7, t8, t9)    WxTypeList<t1, WX_TYPELIST_8(t2, t3, t4, t5, t6, t7, t8, t9)>
 
#define WX_TYPELIST_10(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10)    WxTypeList<t1, WX_TYPELIST_9(t2, t3, t4, t5, t6, t7, t8, t9, t10)>
 
#define WX_TYPELIST_11(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11)    WxTypeList<t1, WX_TYPELIST_10(t2, t3, t4, t5, t6, t7, t8, t9, t10, t11)>
 
#define WX_TYPELIST_12(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12)    WxTypeList<t1, WX_TYPELIST_11(t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12)>
 
#define WX_TYPELIST_13(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13)    WxTypeList<t1, WX_TYPELIST_12(t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13)>
 
#define WX_TYPELIST_14(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14)
 
#define WX_TYPELIST_15(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15)
 
#define WX_TYPELIST_16( t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16)
 
#define WX_TYPELIST_17( t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17)
 
#define WX_TYPELIST_18( t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18)
 
#define WX_TYPELIST_19(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19)
 
#define WX_TYPELIST_20(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19, t20)
 

Typedefs

typedef WxTypeList< bool, WxTypeList< char, WxTypeList< unsigned char, WxTypeList< short, WxTypeList< unsigned short, WxTypeList< int, WxTypeList< unsigned int, WxTypeList< long, WxTypeList< unsigned long, WxTypeList< float, WxTypeList< double, WxTypeList< long double, WxTypeList< long long int, WxTypeList< WxAny, WxTypeList< std::vector< WxAny >, WxTypeList< std::string, WxTypeList< float *, WxTypeList< double *, WxNullType > > > > > > > > > > > > > > > > > > WxDataTypes_t
 typelist for supported I/O and message-ing types.
 
typedef WxIoNodeTypevWxIoNodeType
 A simple typedef to easily refer to an WxIoNodeType pointer w/o having to know about it.
 
typedef WxMsgStatus_vWxMsgStatus
 

Enumerations

enum  {
  WX_ERROR = -2 , WX_DONE = -1 , WX_LEFT_BOX = 256 , WX_RIGHT_BOX ,
  WX_LEFT_ANGLE , WX_RIGHT_ANGLE , WX_ID , WX_KEY = WX_ID ,
  WX_VALUE = WX_ID , WX_EQUAL , WX_FRONT_SLASH , WX_COMMA ,
  WX_INT , WX_REAL , WX_STRING , WX_SEMI_COLON ,
  WX_LEFT_ANGLE_FRONT_SLASH , WX_LEFT_CURLY_BRACKET , WX_RIGHT_CURLY_BRACKET
}
 

Functions

 WmTypeWrapper::WmTypeWrapper (const std::type_info &info)
 
template<typename VALUETYPE >
static WmTypeWrapper WmTypeWrapper::create ()
 retreive a WmTypeWrapper object wrapping VALUETYPE
 
bool WmTypeWrapper::operator== (const WmTypeWrapper &other) const
 
bool WmTypeWrapper::operator< (const WmTypeWrapper &other) const
 
bool WmTypeWrapper::operator== (const std::type_info &other) const
 
template<typename VALUETYPE >
VALUETYPE wx_access_payload_with_type_check (const WxAny &operand)
 Extract the data from the WxAny object.
 
template<typename VALUETYPE >
VALUETYPE wx_access_payload_with_type_check (WxAny &operand)
 Extract the data from the WxAny object.
 
template<typename TYPE >
bool operator== (const WxBox< TYPE > &wa, const WxBox< TYPE > &wb)
 Returns true if boxes are same.
 
template<class T , class H >
H::template Rebind< T >::Result & wxTypeMapExtract (H &obj)
 Say one has created WxTypeMap from a typelist and class Unit.
 
template<class T , class H >
const H::template Rebind< T >::Result & wxTypeMapExtract (const H &obj)
 
 WmIndexer< TYPE >::WmIndexer ()
 The default constructor creates an empty WmIndexer object.
 
 WmIndexer< TYPE >::WmIndexer (const WmIndexer &idx)
 
 WmIndexer< TYPE >::WmIndexer (unsigned rank, int *ai, const WxRange &r)
 
 WmIndexer< TYPE >::~WmIndexer ()
 
WmIndexerWmIndexer< TYPE >::operator= (const WmIndexer &idx)
 
int WmIndexer< TYPE >::index (const int *k) const
 Index arbitrary dimensional array.
 

Variables

const unsigned __max_idx_size = WxRange::max_dims
 

Detailed Description

The set of classes in this file provide a mechanism for creating self registering classes.

If class D derived from class B then

REGISTER_CREATOR("mydclass",D,B);

registers a factory for objects of type D that implement a default constructor. After that, doing

B *p = WxCreatorMap<B>::getNew("mydclass");

returns a new object of type D. This way different classes derived from the same base B can be selected at run time based on the derived class registered name.

For classes that require a pointer to their parent as argument to their constructor, the following variant is provided:

REGISTER_CREATOR_FOR_CHILDREN("mydclass",D,B);

WxAny parent( const ParentClass * ); B *p = WxCreatorMap<B>::getNew("mydclass", parent);

Macro Definition Documentation

◆ _WX_COL_MAJOR_ORDER

#define _WX_COL_MAJOR_ORDER   1

◆ _WX_ROW_MAJOR_ORDER

#define _WX_ROW_MAJOR_ORDER   2

◆ WX_TYPELIST_1

#define WX_TYPELIST_1 (   t1)    WxTypeList<t1, WxNullType>

◆ WX_TYPELIST_10

#define WX_TYPELIST_10 (   t1,
  t2,
  t3,
  t4,
  t5,
  t6,
  t7,
  t8,
  t9,
  t10 
)     WxTypeList<t1, WX_TYPELIST_9(t2, t3, t4, t5, t6, t7, t8, t9, t10)>

◆ WX_TYPELIST_11

#define WX_TYPELIST_11 (   t1,
  t2,
  t3,
  t4,
  t5,
  t6,
  t7,
  t8,
  t9,
  t10,
  t11 
)     WxTypeList<t1, WX_TYPELIST_10(t2, t3, t4, t5, t6, t7, t8, t9, t10, t11)>

◆ WX_TYPELIST_12

#define WX_TYPELIST_12 (   t1,
  t2,
  t3,
  t4,
  t5,
  t6,
  t7,
  t8,
  t9,
  t10,
  t11,
  t12 
)     WxTypeList<t1, WX_TYPELIST_11(t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12)>

◆ WX_TYPELIST_13

#define WX_TYPELIST_13 (   t1,
  t2,
  t3,
  t4,
  t5,
  t6,
  t7,
  t8,
  t9,
  t10,
  t11,
  t12,
  t13 
)     WxTypeList<t1, WX_TYPELIST_12(t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13)>

◆ WX_TYPELIST_14

#define WX_TYPELIST_14 (   t1,
  t2,
  t3,
  t4,
  t5,
  t6,
  t7,
  t8,
  t9,
  t10,
  t11,
  t12,
  t13,
  t14 
)
Value:
WxTypeList<t1, \
WX_TYPELIST_13(t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14)>
WxTypeList class provides a means of defining a list of types (hence the name "typelist").
Definition: wxtypelist.h:22

◆ WX_TYPELIST_15

#define WX_TYPELIST_15 (   t1,
  t2,
  t3,
  t4,
  t5,
  t6,
  t7,
  t8,
  t9,
  t10,
  t11,
  t12,
  t13,
  t14,
  t15 
)
Value:
WxTypeList<t1, \
WX_TYPELIST_14( \
t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15)>

◆ WX_TYPELIST_16

#define WX_TYPELIST_16 (   t1,
  t2,
  t3,
  t4,
  t5,
  t6,
  t7,
  t8,
  t9,
  t10,
  t11,
  t12,
  t13,
  t14,
  t15,
  t16 
)
Value:
WxTypeList<t1, \
WX_TYPELIST_15( \
t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16)>

◆ WX_TYPELIST_17

#define WX_TYPELIST_17 (   t1,
  t2,
  t3,
  t4,
  t5,
  t6,
  t7,
  t8,
  t9,
  t10,
  t11,
  t12,
  t13,
  t14,
  t15,
  t16,
  t17 
)
Value:
t1, \
WX_TYPELIST_16( \
t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17)>

◆ WX_TYPELIST_18

#define WX_TYPELIST_18 (   t1,
  t2,
  t3,
  t4,
  t5,
  t6,
  t7,
  t8,
  t9,
  t10,
  t11,
  t12,
  t13,
  t14,
  t15,
  t16,
  t17,
  t18 
)
Value:
WxTypeList<t1, \
WX_TYPELIST_17(t2, \
t3, \
t4, \
t5, \
t6, \
t7, \
t8, \
t9, \
t10, \
t11, \
t12, \
t13, \
t14, \
t15, \
t16, \
t17, \
t18)>

◆ WX_TYPELIST_19

#define WX_TYPELIST_19 (   t1,
  t2,
  t3,
  t4,
  t5,
  t6,
  t7,
  t8,
  t9,
  t10,
  t11,
  t12,
  t13,
  t14,
  t15,
  t16,
  t17,
  t18,
  t19 
)
Value:
WxTypeList<t1, \
WX_TYPELIST_18(t2, \
t3, \
t4, \
t5, \
t6, \
t7, \
t8, \
t9, \
t10, \
t11, \
t12, \
t13, \
t14, \
t15, \
t16, \
t17, \
t18, \
t19)>

◆ WX_TYPELIST_2

#define WX_TYPELIST_2 (   t1,
  t2 
)    WxTypeList<t1, WX_TYPELIST_1(t2)>

◆ WX_TYPELIST_20

#define WX_TYPELIST_20 (   t1,
  t2,
  t3,
  t4,
  t5,
  t6,
  t7,
  t8,
  t9,
  t10,
  t11,
  t12,
  t13,
  t14,
  t15,
  t16,
  t17,
  t18,
  t19,
  t20 
)
Value:
WxTypeList<t1, \
WX_TYPELIST_19(t2, \
t3, \
t4, \
t5, \
t6, \
t7, \
t8, \
t9, \
t10, \
t11, \
t12, \
t13, \
t14, \
t15, \
t16, \
t17, \
t18, \
t19, \
t20)>

◆ WX_TYPELIST_3

#define WX_TYPELIST_3 (   t1,
  t2,
  t3 
)    WxTypeList<t1, WX_TYPELIST_2(t2, t3)>

◆ WX_TYPELIST_4

#define WX_TYPELIST_4 (   t1,
  t2,
  t3,
  t4 
)    WxTypeList<t1, WX_TYPELIST_3(t2, t3, t4)>

◆ WX_TYPELIST_5

#define WX_TYPELIST_5 (   t1,
  t2,
  t3,
  t4,
  t5 
)    WxTypeList<t1, WX_TYPELIST_4(t2, t3, t4, t5)>

◆ WX_TYPELIST_6

#define WX_TYPELIST_6 (   t1,
  t2,
  t3,
  t4,
  t5,
  t6 
)     WxTypeList<t1, WX_TYPELIST_5(t2, t3, t4, t5, t6)>

◆ WX_TYPELIST_7

#define WX_TYPELIST_7 (   t1,
  t2,
  t3,
  t4,
  t5,
  t6,
  t7 
)     WxTypeList<t1, WX_TYPELIST_6(t2, t3, t4, t5, t6, t7)>

◆ WX_TYPELIST_8

#define WX_TYPELIST_8 (   t1,
  t2,
  t3,
  t4,
  t5,
  t6,
  t7,
  t8 
)     WxTypeList<t1, WX_TYPELIST_7(t2, t3, t4, t5, t6, t7, t8)>

◆ WX_TYPELIST_9

#define WX_TYPELIST_9 (   t1,
  t2,
  t3,
  t4,
  t5,
  t6,
  t7,
  t8,
  t9 
)     WxTypeList<t1, WX_TYPELIST_8(t2, t3, t4, t5, t6, t7, t8, t9)>

Typedef Documentation

◆ WxDataTypes_t

typedef WxTypeList< bool , WxTypeList< char , WxTypeList< unsigned char , WxTypeList< short , WxTypeList< unsigned short , WxTypeList< int , WxTypeList< unsigned int , WxTypeList< long , WxTypeList< unsigned long , WxTypeList< float , WxTypeList< double , WxTypeList< long double , WxTypeList< long long int , WxTypeList< WxAny , WxTypeList< std::vector<WxAny> , WxTypeList< std::string , WxTypeList< float* , WxTypeList< double* , WxNullType> > > > > > > > > > > > > > > > > > WxDataTypes_t

typelist for supported I/O and message-ing types.

These can be augment if needed.

NOTE: If adding more types change typelist length. Also ensure no duplicates exist in the list.

◆ WxIoNodeType

A simple typedef to easily refer to an WxIoNodeType pointer w/o having to know about it.

◆ WxMsgStatus

Enumeration Type Documentation

◆ anonymous enum

anonymous enum
Enumerator
WX_ERROR 
WX_DONE 
WX_LEFT_BOX 
WX_RIGHT_BOX 
WX_LEFT_ANGLE 
WX_RIGHT_ANGLE 
WX_ID 
WX_KEY 
WX_VALUE 
WX_EQUAL 
WX_FRONT_SLASH 
WX_COMMA 
WX_INT 
WX_REAL 
WX_STRING 
WX_SEMI_COLON 
WX_LEFT_ANGLE_FRONT_SLASH 
WX_LEFT_CURLY_BRACKET 
WX_RIGHT_CURLY_BRACKET 

Function Documentation

◆ create()

template<typename VALUETYPE >
static WmTypeWrapper WmTypeWrapper::create ( )
inlinestatic

retreive a WmTypeWrapper object wrapping VALUETYPE

◆ index()

template<int TYPE>
int WmIndexer< TYPE >::index ( const int *  k) const
inline

Index arbitrary dimensional array.

◆ operator<()

bool WmTypeWrapper::operator< ( const WmTypeWrapper other) const
inline

◆ operator=()

template<int TYPE>
WmIndexer< TYPE > & WmIndexer< TYPE >::operator= ( const WmIndexer< TYPE > &  idx)

◆ operator==() [1/3]

bool WmTypeWrapper::operator== ( const std::type_info &  other) const
inline

◆ operator==() [2/3]

bool WmTypeWrapper::operator== ( const WmTypeWrapper other) const
inline

◆ operator==() [3/3]

template<typename TYPE >
bool operator== ( const WxBox< TYPE > &  wa,
const WxBox< TYPE > &  wb 
)

Returns true if boxes are same.

◆ WmIndexer() [1/3]

template<int TYPE>
WmIndexer< TYPE >::WmIndexer

The default constructor creates an empty WmIndexer object.

This should be used only as a place holder.

◆ WmIndexer() [2/3]

template<int TYPE>
WmIndexer< TYPE >::WmIndexer ( const WmIndexer< TYPE > &  idx)

◆ WmIndexer() [3/3]

template<int TYPE>
WmIndexer< TYPE >::WmIndexer ( unsigned  rank,
int *  ai,
const WxRange r 
)

◆ WmTypeWrapper()

WmTypeWrapper::WmTypeWrapper ( const std::type_info &  info)
inline

◆ wx_access_payload_with_type_check() [1/2]

template<typename VALUETYPE >
VALUETYPE wx_access_payload_with_type_check ( const WxAny operand)

Extract the data from the WxAny object.

Parameters
operandWxAny object from which to extract value. If the type specified by the template 'VALUETYPE' is not the correct type of the object stored a std::bad_cast exception is thrown.

◆ wx_access_payload_with_type_check() [2/2]

template<typename VALUETYPE >
VALUETYPE wx_access_payload_with_type_check ( WxAny operand)

Extract the data from the WxAny object.

Parameters
operandWxAny object from which to extract value. If the type specified by the template 'VALUETYPE' is not the correct type of the object stored a std::bad_cast exception is thrown.

◆ wxTypeMapExtract() [1/2]

template<class T , class H >
const H::template Rebind< T >::Result & wxTypeMapExtract ( const H &  obj)

◆ wxTypeMapExtract() [2/2]

template<class T , class H >
H::template Rebind< T >::Result & wxTypeMapExtract ( H &  obj)

Say one has created WxTypeMap from a typelist and class Unit.

Now, given a type T, the WxScatterHierField function returns a reference to the class Unit<T> portion of the obj. Obj is of type WxTypeMap.

◆ ~WmIndexer()

template<int TYPE>
WmIndexer< TYPE >::~WmIndexer

Variable Documentation

◆ __max_idx_size

const unsigned __max_idx_size = WxRange::max_dims