SMTK  @SMTK_VERSION@
Simulation Modeling Tool Kit
Public Types | Public Member Functions | Static Public Member Functions | Protected Attributes | List of all members
smtk::task::json::Helper Class Reference

A helper for serializing task configurations. More...

#include <Helper.h>

Public Types

using SwizzleId = Configurator< Task >::SwizzleId
 Swizzle IDs are serializable substitutes for pointers.
 
using json = nlohmann::json
 JSON data type.
 

Public Member Functions

 ~Helper ()
 Destructor is public, but you shouldn't use it.
 
Configurator< Task > & tasks ()
 Return an object for registering task classes and serialization helpers.
 
Configurator< Adaptor > & adaptors ()
 Return an object for registering adaptor classes and serialization helpers.
 
void setManagers (const smtk::common::Managers::Ptr &managers)
 Set/get the managers to use when serializing/deserializing. More...
 
smtk::common::Managers::Ptr managers ()
 
void clearGroupTaskIds ()
 Reset only negative task IDs. More...
 
void clear ()
 Reset the helper's state. More...
 
json swizzleDependencies (const Task::PassedDependencies &deps)
 Return a serialization of task-references that is consistent within the scope of serializing a set of tasks.
 
Task::PassedDependencies unswizzleDependencies (const json &ids) const
 Return a deserialization of de-swizzled task-references.
 
bool topLevel () const
 Returns true if the helper is for deserializing top-level or child tasks.
 
void setAdaptorTaskIds (SwizzleId fromId, SwizzleId toId)
 Set/clear a pair of task IDs used when deserializing a single adaptor. More...
 
void clearAdaptorTaskIds ()
 
std::pair< Task *, Task * > getAdaptorTasks ()
 Get task-pointers based on the IDs set earlier.
 

Static Public Member Functions

static Helperinstance ()
 Return the helper "singleton". More...
 
static HelperpushInstance (smtk::task::Task *parent)
 Push a new helper instance on the local thread's stack. More...
 
static void popInstance ()
 Pop a helper instance off the local thread's stack.
 
static std::size_t nestingDepth ()
 Return the nesting level (i.e., the number of helper instances in the stack). More...
 

Protected Attributes

Configurator< Taskm_tasks
 
Configurator< Adaptorm_adaptors
 
smtk::common::Managers::Ptr m_managers
 
SwizzleId m_adaptorFromId = ~static_cast<SwizzleId>(0)
 
SwizzleId m_adaptorToId = ~static_cast<SwizzleId>(0)
 
bool m_topLevel = true
 m_topLevel indicates whether pushInstance() (false) or instance() (true) was used to create this helper. More...
 

Detailed Description

A helper for serializing task configurations.

This is needed in order to serialize dependencies among tasks which are stored as pointers that could, in theory, form a cycle.

Member Function Documentation

◆ clear()

void smtk::task::json::Helper::clear ( )

Reset the helper's state.

This should be called before beginning serialization or deserialization. Additionally, calling it after each of these tasks is recommended since it will free memory.

◆ clearGroupTaskIds()

void smtk::task::json::Helper::clearGroupTaskIds ( )

Reset only negative task IDs.

Negative task IDs are used to when deserializing a Group task's children. Because only a single Group is deserialized at a time (per thread), there are no namespace collisions.

◆ instance()

Helper & smtk::task::json::Helper::instance ( )
static

Return the helper "singleton".

The object returned is a per-thread instance at the top of a stack that may be altered using the pushInstance() and popInstance() methods. This allows nested deserializers to each have their own context that appears to be globally available.

◆ nestingDepth()

std::size_t smtk::task::json::Helper::nestingDepth ( )
static

Return the nesting level (i.e., the number of helper instances in the stack).

The outermost helper will return 1 (assuming you have called instance() first).

◆ pushInstance()

Helper & smtk::task::json::Helper::pushInstance ( smtk::task::Task parent)
static

Push a new helper instance on the local thread's stack.

The returned Helper will have:

  • The same managers as the previous (if any) helper.
  • The parent task is assigned the ID 0.

◆ setAdaptorTaskIds()

void smtk::task::json::Helper::setAdaptorTaskIds ( SwizzleId  fromId,
SwizzleId  toId 
)

Set/clear a pair of task IDs used when deserializing a single adaptor.

Storing these IDs as state in the helper allows from_json() to be "stateless" (i.e., taking no additional parameters and using the Helper as a side effect).

◆ setManagers()

void smtk::task::json::Helper::setManagers ( const smtk::common::Managers::Ptr &  managers)

Set/get the managers to use when serializing/deserializing.

Call setManagers() with an instance of all your application's managers before attempting to serialize/deserialize as helpers are allowed to use managers as needed.

Member Data Documentation

◆ m_topLevel

bool smtk::task::json::Helper::m_topLevel = true
protected

m_topLevel indicates whether pushInstance() (false) or instance() (true) was used to create this helper.

If m_topLevel is false, the parent task is assigned swizzle ID 1.


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