VTK  9.4.20250413
vtkObjectManager.h
Go to the documentation of this file.
1// SPDX-FileCopyrightText: Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
2// SPDX-License-Identifier: BSD-3-Clause
19#ifndef vtkObjectManager_h
20#define vtkObjectManager_h
21
22#include "vtkObject.h"
23
24#include "vtkDeserializer.h" // for vtkDeserializer
25#include "vtkInvoker.h" // for vtkInvoker
26#include "vtkLogger.h" // for vtkLogger::Verbosity enum
27#include "vtkNew.h" // for vtkNew
28#include "vtkSerializationManagerModule.h" // for export macro
29#include "vtkSerializer.h" // for vtkSerializer
30#include "vtkSmartPointer.h" // for vtkSmartPointer
31
32#include <string> // for string
33#include <vector> // for vector
34
35VTK_ABI_NAMESPACE_BEGIN
37class vtkTypeUInt8Array;
38
39class VTKSERIALIZATIONMANAGER_EXPORT vtkObjectManager : public vtkObject
40{
41public:
44 void PrintSelf(ostream& os, vtkIndent indent) override;
45
47
50 virtual bool Initialize();
53
58 std::function<int(void* ser, void* deser, void* invoker, const char** error)>;
59 bool InitializeExtensionModuleHandlers(const std::vector<RegistrarType>& registrars);
60
66
71 bool UnRegisterObject(vtkTypeUInt32 identifier);
72
74
80 bool RegisterState(const std::string& state);
81 bool RegisterState(const nlohmann::json& state);
83
87 bool UnRegisterState(vtkTypeUInt32 identifier);
88
94 vtkTypeUInt32 GetId(vtkSmartPointer<vtkObjectBase> objectBase);
95
101 std::string GetState(vtkTypeUInt32 id);
102
108
115 std::vector<vtkTypeUInt32> GetAllDependencies(vtkTypeUInt32 identifier);
116
121 std::vector<std::string> GetBlobHashes(const std::vector<vtkTypeUInt32>& ids);
122
126 vtkSmartPointer<vtkTypeUInt8Array> GetBlob(const std::string& hash) const;
127
132 bool RegisterBlob(const std::string& hash, vtkSmartPointer<vtkTypeUInt8Array> blob);
133
137 bool UnRegisterBlob(const std::string& hash);
138
144
149
154
156
159 void UpdateObjectFromState(const std::string& state);
160 void UpdateObjectFromState(const nlohmann::json& state);
162
166 void UpdateStateFromObject(vtkTypeUInt32 identifier);
167
174 void Clear();
175
176 std::string Invoke(
177 vtkTypeUInt32 identifier, const std::string& methodName, const std::string& args);
178 nlohmann::json Invoke(
179 vtkTypeUInt32 identifier, const std::string& methodName, const nlohmann::json& args);
180
183
188 void Export(const std::string& filename, int indentLevel = -1, char indentChar = ' ');
189
195 void Import(const std::string& stateFileName, const std::string& blobFileName);
196
197 static vtkTypeUInt32 ROOT() { return 0; }
198
199 vtkGetSmartPointerMacro(Serializer, vtkSerializer);
200 vtkGetSmartPointerMacro(Deserializer, vtkDeserializer);
201 vtkGetSmartPointerMacro(Invoker, vtkInvoker);
202
204
219
220protected:
223
229
230 static const char* OWNERSHIP_KEY() { return "manager"; }
231
236
241
242private:
243 vtkObjectManager(const vtkObjectManager&) = delete;
244 void operator=(const vtkObjectManager&) = delete;
245};
246VTK_ABI_NAMESPACE_END
247#endif
Deserialize VTK objects from JSON.
a simple class to control print indentation
Definition vtkIndent.h:108
Deserialize VTK objects from JSON.
Definition vtkInvoker.h:31
@ VERBOSITY_INVALID
Definition vtkLogger.h:214
Shared context used by vtkSerializer and vtkDeserializer
Allocate and hold a VTK object.
Definition vtkNew.h:167
vtkObjectManager maintains internal instances of vtkSerializer and a vtkDeserializer to serialize and...
void Import(const std::string &stateFileName, const std::string &blobFileName)
Reads state from state file and blobs from blob file.
bool InitializeDefaultHandlers()
Loads the default (de)serialization handlers and constructors for VTK classes.
void UpdateObjectFromState(const nlohmann::json &state)
Deserialize the state into vtk object.
void UpdateObjectFromState(const std::string &state)
Deserialize the state into vtk object.
std::function< int(void *ser, void *deser, void *invoker, const char **error)> RegistrarType
Loads user provided handlers.
bool RegisterState(const std::string &state)
Adds state into an internal container and returns a unique identifier.
bool UnRegisterObject(vtkTypeUInt32 identifier)
Removes an object and it's state.
vtkNew< vtkInvoker > Invoker
vtkNew< vtkDeserializer > Deserializer
vtkSmartPointer< vtkTypeUInt8Array > GetBlob(const std::string &hash) const
Returns a blob stored at hash.
void UpdateStatesFromObjects()
Serialize registered objects into vtk states.
bool UnRegisterBlob(const std::string &hash)
Removes a blob stored at hash.
vtkSmartPointer< vtkObjectBase > GetObjectAtId(vtkTypeUInt32 id)
Get object at id.
void Export(const std::string &filename, int indentLevel=-1, char indentChar=' ')
Writes state of all registered objects to filename.json The blobs are written into filename....
bool RegisterState(const nlohmann::json &state)
Adds state into an internal container and returns a unique identifier.
nlohmann::json Invoke(vtkTypeUInt32 identifier, const std::string &methodName, const nlohmann::json &args)
void SetObjectManagerLogVerbosity(vtkLogger::Verbosity verbosity)
Set/Get the log verbosity of messages that are emitted when data is uploaded to GPU memory.
vtkSmartPointer< vtkMarshalContext > Context
bool InitializeExtensionModuleHandlers(const std::vector< RegistrarType > &registrars)
std::size_t GetTotalBlobMemoryUsage()
vtkLogger::Verbosity GetObjectManagerLogVerbosity()
Set/Get the log verbosity of messages that are emitted when data is uploaded to GPU memory.
void PruneUnusedObjects()
Removes all objects that are neither referenced by this manager or any other object.
std::string Invoke(vtkTypeUInt32 identifier, const std::string &methodName, const std::string &args)
~vtkObjectManager() override
bool UnRegisterState(vtkTypeUInt32 identifier)
Removes a state at id.
void UpdateObjectsFromStates()
Deserialize registered states into vtk objects.
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
vtkNew< vtkSerializer > Serializer
void PruneUnusedStates()
Removes all objects that are neither referenced by this manager or any other object.
static vtkTypeUInt32 ROOT()
void UpdateStateFromObject(vtkTypeUInt32 identifier)
Serialize object at identifier into the state.
vtkTypeUInt32 RegisterObject(vtkSmartPointer< vtkObjectBase > objectBase)
Adds object into an internal container and returns a unique identifier.
vtkTypeUInt32 GetId(vtkSmartPointer< vtkObjectBase > objectBase)
Get the identifier for object.
bool RegisterBlob(const std::string &hash, vtkSmartPointer< vtkTypeUInt8Array > blob)
Specifies a blob for hash.
virtual bool Initialize()
Loads the default (de)serialization handlers and constructors for VTK classes.
void PruneUnusedBlobs()
Removes all blob(s) whose hash is not found in the state of any object registered directly or indirec...
std::vector< std::string > GetBlobHashes(const std::vector< vtkTypeUInt32 > &ids)
Returns a non-empty vector of hash strings that correspond to blobs used by the registered objects at...
std::size_t GetTotalVTKDataObjectMemoryUsage()
std::vector< vtkTypeUInt32 > GetAllDependencies(vtkTypeUInt32 identifier)
Returns a non-empty vector of identifiers of all objects that depend on an object with the given iden...
std::string GetState(vtkTypeUInt32 id)
Get state of the object at id.
static vtkObjectManager * New()
static const char * OWNERSHIP_KEY()
void Clear()
Reset to initial state.
abstract base class for most VTK objects
Definition vtkObject.h:162
Serialize VTK objects to JSON.
Hold a reference to a vtkObjectBase instance.