15#ifndef vtkMarshalContext_h
16#define vtkMarshalContext_h
20#include "vtkCommonCoreModule.h"
22#include "vtkTypeUInt8Array.h"
26#include "vtk_nlohmannjson.h"
27#include VTK_NLOHMANN_JSON(json.hpp)
33VTK_ABI_NAMESPACE_BEGIN
47 const nlohmann::json&
Blobs()
const;
52 const nlohmann::json&
States()
const;
101 nlohmann::json&
GetState(vtkTypeUInt32 identifier)
const;
274 std::unique_ptr<vtkInternals> Internals;
Deserialize VTK objects from JSON.
a simple class to control print indentation
Convenient to push a parent as the 'active' identifier and add children to that parent when (de)seria...
void operator=(const ScopedParentTracker &)=delete
ScopedParentTracker(vtkMarshalContext *context, vtkTypeUInt32 identifier)
ScopedParentTracker(const ScopedParentTracker &)=delete
ScopedParentTracker(ScopedParentTracker &&)=delete
void operator=(ScopedParentTracker &&)=delete
Shared context used by vtkSerializer and vtkDeserializer
bool RegisterBlob(vtkSmartPointer< vtkTypeUInt8Array > blob, std::string &hash)
Add a blob into the blob store associated with hash.
void AddChild(vtkTypeUInt32 identifier)
Records identifier in the list of children of the 'active' identifier.
static vtkMarshalContext * New()
bool RegisterState(nlohmann::json state)
Add a state.
bool IsProcessed(vtkTypeUInt32 identifier)
Returnstrue if identifier exists in the genealogy of object(s)/state(s), false otherwise.
~vtkMarshalContext() override
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
const WeakObjectStore & WeakObjects() const
Get map of weak objects.
const StrongObjectStore & StrongObjects() const
Get map of strong objects.
void PopParent()
Adds the 'active' identifier into the genealogy.
bool UnRegisterObject(vtkTypeUInt32 identifier)
Removes an objectBase registered at identifier from the weak object store.
vtkSmartPointer< vtkTypeUInt8Array > GetBlob(const std::string &hash)
Find and get the blob registered at hash.
nlohmann::json & GetState(vtkTypeUInt32 identifier) const
Find and get the state registered at identifier.
bool HasId(vtkObjectBase *objectBase, vtkTypeUInt32 &identifier)
Return true if objectBase exists in the weak object store, false otherwise If the objectBase exists,...
void ResetDirectDependenciesForNode(vtkTypeUInt32 identifier)
Reset the dependency cache for the given identifier
std::map< vtkTypeUInt32, vtkWeakPointer< vtkObjectBase > > WeakObjectStore
vtkTypeUInt32 GetId(vtkObjectBase *objectBase) const
Get the identifier associated with objectBase.
void Retire(const std::string &owner, vtkObjectBase *objectBase)
Release the strong reference kept by owner to the given objectBase.
vtkTypeUInt32 MakeId()
Make a new identifier.
void PushParent(vtkTypeUInt32 identifier)
Make identifier the active identifier.
void ResetDirectDependencies()
Reset the dependency cache.
bool UnRegisterState(vtkTypeUInt32 identifier)
Removes a state.
bool IsProcessing(vtkTypeUInt32 identfier)
Return true if identifier has been through PushParent, but not yet been through PopParent,...
const nlohmann::json & Blobs() const
Get blobs.
std::map< std::string, std::set< vtkSmartPointer< vtkObjectBase > > > StrongObjectStore
bool RegisterObject(vtkObjectBase *objectBase, vtkTypeUInt32 &identifier)
Add an objectBase into the weak object store associated with identifier.
bool UnRegisterBlob(const std::string &hash)
Removes a blob registered at hash from the blob store.
const nlohmann::json & States() const
Get states.
std::vector< vtkTypeUInt32 > GetDirectDependencies(vtkTypeUInt32 identifier) const
Return all direct dependencies of the object/state registered at identifier.
void KeepAlive(const std::string &owner, vtkObjectBase *objectBase)
This method creates a record of ownership between owner and objectBase.
vtkSmartPointer< vtkObjectBase > GetObjectAtId(vtkTypeUInt32 identifier) const
Find and get the objectBase registered at identifier.
abstract base class for most VTK objects
abstract base class for most VTK objects
Serialize VTK objects to JSON.
Hold a reference to a vtkObjectBase instance.