SST  14.0.0
StructuralSimulationToolkit
SST::Shared::SharedArray< T >::Data Class Reference
Inheritance diagram for SST::Shared::SharedArray< T >::Data:
SST::Shared::SharedObjectData SST::Core::Serialization::serializable

Public Member Functions

 Data (const std::string &name)
 
void setSize (size_t size, const T &init_data, verify_type v_type)
 Set the size of the array. More...
 
size_t getSize ()
 
void update_write (int index, const T &data)
 
void write (int index, const T &data)
 
const T & read (int index) const
 
const T & mutex_read (int index) const
 
virtual SharedObjectChangeSetgetChangeSet () override
 Gets the changeset for this data on this rank. More...
 
virtual void resetChangeSet () override
 Resets the changeset for this data on this rank. More...
 
void serialize_order (SST::Core::Serialization::serializer &ser) override
 
 ImplementSerializable (SST::Shared::SharedArray< T >::Data)
 
- Public Member Functions inherited from SST::Shared::SharedObjectData
const std::string & getName ()
 Get the name of the SharedObject for this data. More...
 
bool isFullyPublished ()
 Checks to see if all instances of this SharedObject have called publish(). More...
 
virtual int getShareCount ()
 Get the number of sharers for this data. More...
 
virtual int getPublishCount ()
 Get the number of instances that have called publish() on their instance of the shared object. More...
 
- Public Member Functions inherited from SST::Core::Serialization::serializable
virtual const char * cls_name () const =0
 
virtual uint32_t cls_id () const =0
 
virtual std::string serialization_name () const =0
 

Data Fields

std::vector< T > array
 
std::vector< bool > written
 
ChangeSet * change_set
 
init
 
verify_type verify
 

Additional Inherited Members

- Static Public Attributes inherited from SST::Core::Serialization::serializable
static constexpr uint32_t NullClsId = std::numeric_limits<uint32_t>::max()
 
- Protected Types inherited from SST::Core::Serialization::serializable
enum  cxn_flag_t { ConstructorFlag }
 
- Protected Member Functions inherited from SST::Shared::SharedObjectData
void check_lock_for_write (const std::string &obj)
 
virtual int incShareCount ()
 Increment the count of sharers. More...
 
virtual void incPublishCount ()
 Increment the count of instances that have called publish. More...
 
void lock ()
 Called by the core when writing to shared regions is no longer allowed.
 
 SharedObjectData (const std::string &name)
 Constructor for SharedObjectData. More...
 
virtual ~SharedObjectData ()
 Destructor for SharedObjectData.
 
void serialize_order (SST::Core::Serialization::serializer &ser) override
 
 ImplementVirtualSerializable (SharedObjectData)
 
- Static Protected Member Functions inherited from SST::Core::Serialization::serializable
static void serializable_abort (uint32_t line, const char *file, const char *func, const char *obj)
 
- Protected Attributes inherited from SST::Shared::SharedObjectData
std::string name
 
int share_count
 
int publish_count
 
bool fully_published
 
bool locked
 
std::mutex mtx
 

Member Function Documentation

◆ getChangeSet()

template<typename T>
virtual SharedObjectChangeSet* SST::Shared::SharedArray< T >::Data::getChangeSet ( )
inlineoverridevirtual

Gets the changeset for this data on this rank.

This is called by the core when exchanging and merging data

Implements SST::Shared::SharedObjectData.

◆ resetChangeSet()

template<typename T>
virtual void SST::Shared::SharedArray< T >::Data::resetChangeSet ( )
inlineoverridevirtual

Resets the changeset for this data on this rank.

This is called by the core when exchanging and merging data

Implements SST::Shared::SharedObjectData.

◆ setSize()

template<typename T>
void SST::Shared::SharedArray< T >::Data::setSize ( size_t  size,
const T &  init_data,
verify_type  v_type 
)
inline

Set the size of the array.

An element can only write up to the current size (reading or writing beyond the size will create undefined behavior). However, an element can put in the size it needs for it's writes and it will end up being the largest size requested. We use a vector underneatch the covers to manage the memory/copying of data.

References SST::Shared::SharedObjectData::lock(), and SST::Shared::SharedArray< T >::size().

Referenced by SST::Shared::SharedArray< int >::initialize().


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