VTK  9.7.1
vtkSession.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
3 
75 #ifndef vtkSession_h
76 #define vtkSession_h
77 
78 #include <stddef.h>
79 #include <stdint.h>
80 
81 #include "vtkABINamespace.h"
82 
83 #include "vtkSerializationManagerModule.h" // for export macro
84 
85 typedef uint32_t vtkObjectHandle;
86 typedef int vtkSessionResult;
87 
88 // Forward declarations
89 // Opaque type representing the session implementation. See vtkSession.cxx for
90 // details.
91 typedef struct vtkSessionImpl* vtkSession;
92 // Opaque type representing the JSON implementation. This must be
93 // implemented by callers of this API.
94 // Look in vtkWebAssemblySessionHelper.h for an example implementation
95 // that supports JavaScript JSON.
97 
98 // Registration function type for object manager extensions.
100  void* ser, void* deser, void* invoker, const char** error);
101 // JSON parsing function used to prepare a vtkSessionJson object from a JSON string.
102 typedef vtkSessionJson (*vtkSessionJsonParseFunc)(const char*);
103 // JSON stringification function used to convert a vtkSessionJson object to a JSON string.
104 // The caller is responsible for freeing the returned string using free() or delete[].
105 typedef char* (*vtkSessionJsonStringifyFunc)(vtkSessionJson);
106 // Callback function type for session observers.
107 typedef void (*vtkSessionObserverCallbackFunc)(vtkObjectHandle, const char*);
108 
109 // Session descriptor structure used to initialize a session.
110 // It contains function pointers for JSON parsing and stringification, as well as options for event
111 // loop management.
112 typedef struct vtkSessionDescriptor
113 {
118 
119 #define vtkSessionResultSuccess 1
120 #define vtkSessionResultFailure 0
121 
122 // clang-format off
123 #define vtkCreateSession VTK_ABI_NAMESPACE_MANGLE(vtkCreateSession)
124 #define vtkFreeSession VTK_ABI_NAMESPACE_MANGLE(vtkFreeSession)
125 #define vtkSessionInitializeObjectManager VTK_ABI_NAMESPACE_MANGLE(vtkSessionInitializeObjectManager)
126 #define vtkSessionInitializeObjectManagerExtensionHandlers VTK_ABI_NAMESPACE_MANGLE(vtkSessionInitializeObjectManagerExtensionHandlers)
127 #define vtkSessionGetManager VTK_ABI_NAMESPACE_MANGLE(vtkSessionGetManager)
128 #define vtkSessionCreateObject VTK_ABI_NAMESPACE_MANGLE(vtkSessionCreateObject)
129 #define vtkSessionDestroyObject VTK_ABI_NAMESPACE_MANGLE(vtkSessionDestroyObject)
130 #define vtkSessionRegisterState VTK_ABI_NAMESPACE_MANGLE(vtkSessionRegisterState)
131 #define vtkSessionUnRegisterState VTK_ABI_NAMESPACE_MANGLE(vtkSessionUnRegisterState)
132 #define vtkSessionGetState VTK_ABI_NAMESPACE_MANGLE(vtkSessionGetState)
133 #define vtkSessionSkipProperty VTK_ABI_NAMESPACE_MANGLE(vtkSessionSkipProperty)
134 #define vtkSessionUnSkipProperty VTK_ABI_NAMESPACE_MANGLE(vtkSessionUnSkipProperty)
135 #define vtkSessionRegisterBlob VTK_ABI_NAMESPACE_MANGLE(vtkSessionRegisterBlob)
136 #define vtkSessionUnRegisterBlob VTK_ABI_NAMESPACE_MANGLE(vtkSessionUnRegisterBlob)
137 #define vtkSessionGetBlob VTK_ABI_NAMESPACE_MANGLE(vtkSessionGetBlob)
138 #define vtkSessionPruneUnusedBlobs VTK_ABI_NAMESPACE_MANGLE(vtkSessionPruneUnusedBlobs)
139 #define vtkSessionPruneUnusedObjects VTK_ABI_NAMESPACE_MANGLE(vtkSessionPruneUnusedObjects)
140 #define vtkSessionPruneUnusedStates VTK_ABI_NAMESPACE_MANGLE(vtkSessionPruneUnusedStates)
141 #define vtkSessionClear VTK_ABI_NAMESPACE_MANGLE(vtkSessionClear)
142 #define vtkSessionInvoke VTK_ABI_NAMESPACE_MANGLE(vtkSessionInvoke)
143 #define vtkSessionGetAllDependencies VTK_ABI_NAMESPACE_MANGLE(vtkSessionGetAllDependencies)
144 #define vtkSessionFreeGetAllDependenciesResult VTK_ABI_NAMESPACE_MANGLE(vtkSessionFreeGetAllDependenciesResult)
145 #define vtkSessionGetTotalBlobMemoryUsage VTK_ABI_NAMESPACE_MANGLE(vtkSessionGetTotalBlobMemoryUsage)
146 #define vtkSessionGetTotalVTKDataObjectMemoryUsage VTK_ABI_NAMESPACE_MANGLE(vtkSessionGetTotalVTKDataObjectMemoryUsage)
147 #define vtkSessionUpdateObjectsFromStates VTK_ABI_NAMESPACE_MANGLE(vtkSessionUpdateObjectsFromStates)
148 #define vtkSessionUpdateStatesFromObjects VTK_ABI_NAMESPACE_MANGLE(vtkSessionUpdateStatesFromObjects)
149 #define vtkSessionUpdateObjectFromState VTK_ABI_NAMESPACE_MANGLE(vtkSessionUpdateObjectFromState)
150 #define vtkSessionUpdateStateFromObject VTK_ABI_NAMESPACE_MANGLE(vtkSessionUpdateStateFromObject)
151 #define vtkSessionSetSize VTK_ABI_NAMESPACE_MANGLE(vtkSessionSetSize)
152 #define vtkSessionRender VTK_ABI_NAMESPACE_MANGLE(vtkSessionRender)
153 #define vtkSessionResetCamera VTK_ABI_NAMESPACE_MANGLE(vtkSessionResetCamera)
154 #define vtkSessionStartWebXR VTK_ABI_NAMESPACE_MANGLE(vtkSessionStartWebXR)
155 #define vtkSessionStopWebXR VTK_ABI_NAMESPACE_MANGLE(vtkSessionStopWebXR)
156 #define vtkSessionStartEventLoop VTK_ABI_NAMESPACE_MANGLE(vtkSessionStartEventLoop)
157 #define vtkSessionStopEventLoop VTK_ABI_NAMESPACE_MANGLE(vtkSessionStopEventLoop)
158 #define vtkSessionAddObserver VTK_ABI_NAMESPACE_MANGLE(vtkSessionAddObserver)
159 #define vtkSessionRemoveObserver VTK_ABI_NAMESPACE_MANGLE(vtkSessionRemoveObserver)
160 #define vtkSessionRemoveAllObservers VTK_ABI_NAMESPACE_MANGLE(vtkSessionRemoveAllObservers)
161 #define vtkSessionRemoveAllObserversFromAllObjects VTK_ABI_NAMESPACE_MANGLE(vtkSessionRemoveAllObserversFromAllObjects)
162 #define vtkSessionImport VTK_ABI_NAMESPACE_MANGLE(vtkSessionImport)
163 #define vtkSessionExport VTK_ABI_NAMESPACE_MANGLE(vtkSessionExport)
164 #define vtkSessionPrintObjectToString VTK_ABI_NAMESPACE_MANGLE(vtkSessionPrintObjectToString)
165 #define vtkSessionPrintSceneManagerInformation VTK_ABI_NAMESPACE_MANGLE(vtkSessionPrintSceneManagerInformation)
166 #define vtkSessionSetDeserializerLogVerbosity VTK_ABI_NAMESPACE_MANGLE(vtkSessionSetDeserializerLogVerbosity)
167 #define vtkSessionSetInvokerLogVerbosity VTK_ABI_NAMESPACE_MANGLE(vtkSessionSetInvokerLogVerbosity)
168 #define vtkSessionSetObjectManagerLogVerbosity VTK_ABI_NAMESPACE_MANGLE(vtkSessionSetObjectManagerLogVerbosity)
169 #define vtkSessionSetSerializerLogVerbosity VTK_ABI_NAMESPACE_MANGLE(vtkSessionSetSerializerLogVerbosity)
170 // clang-format on
171 
172 #ifdef __cplusplus
173 extern "C"
174 #endif
175 {
183  VTKSERIALIZATIONMANAGER_EXPORT vtkSession vtkCreateSession(
184  const vtkSessionDescriptor* descriptor);
185 
192  VTKSERIALIZATIONMANAGER_EXPORT void vtkFreeSession(vtkSession session);
193 
199  VTKSERIALIZATIONMANAGER_EXPORT vtkSessionResult vtkSessionInitializeObjectManager(
200  vtkSession session);
201 
209  VTKSERIALIZATIONMANAGER_EXPORT vtkSessionResult
211  vtkSession session, const vtkSessionObjectManagerRegistrarFunc* registrars, size_t count);
212 
219  VTKSERIALIZATIONMANAGER_EXPORT void* vtkSessionGetManager(vtkSession session);
220 
230  VTKSERIALIZATIONMANAGER_EXPORT vtkObjectHandle vtkSessionCreateObject(
231  vtkSession session, const char* className);
232 
242  VTKSERIALIZATIONMANAGER_EXPORT vtkSessionResult vtkSessionDestroyObject(
243  vtkSession session, vtkObjectHandle object);
244 
262  VTKSERIALIZATIONMANAGER_EXPORT vtkSessionResult vtkSessionRegisterState(
263  vtkSession session, vtkSessionJson state);
264 
274  VTKSERIALIZATIONMANAGER_EXPORT vtkSessionResult vtkSessionUnRegisterState(
275  vtkSession session, vtkObjectHandle object);
276 
287  VTKSERIALIZATIONMANAGER_EXPORT vtkSessionJson vtkSessionGetState(
288  vtkSession session, vtkObjectHandle object);
289 
297  VTKSERIALIZATIONMANAGER_EXPORT void vtkSessionSkipProperty(
298  vtkSession session, const char* className, const char* propertyName);
299 
308  VTKSERIALIZATIONMANAGER_EXPORT void vtkSessionUnSkipProperty(
309  vtkSession session, const char* className, const char* propertyName);
310 
322  VTKSERIALIZATIONMANAGER_EXPORT vtkSessionResult vtkSessionRegisterBlob(
323  vtkSession session, const char* hash, uint8_t* blob, size_t length);
324 
332  VTKSERIALIZATIONMANAGER_EXPORT vtkSessionResult vtkSessionUnRegisterBlob(
333  vtkSession session, const char* hash);
334 
345  VTKSERIALIZATIONMANAGER_EXPORT uint8_t* vtkSessionGetBlob(
346  vtkSession session, const char* hash, size_t* length);
347 
361  VTKSERIALIZATIONMANAGER_EXPORT vtkSessionJson vtkSessionInvoke(
362  vtkSession session, vtkObjectHandle object, const char* methodName, vtkSessionJson args);
363 
375  VTKSERIALIZATIONMANAGER_EXPORT vtkObjectHandle* vtkSessionGetAllDependencies(
376  vtkSession session, vtkObjectHandle object, size_t* count);
377 
385  VTKSERIALIZATIONMANAGER_EXPORT void vtkSessionFreeGetAllDependenciesResult(
386  vtkSession session, vtkObjectHandle* ptr);
387 
399  VTKSERIALIZATIONMANAGER_EXPORT vtkSessionResult vtkSessionUpdateObjectFromState(
400  vtkSession session, vtkSessionJson state);
401 
410  VTKSERIALIZATIONMANAGER_EXPORT void vtkSessionUpdateStateFromObject(
411  vtkSession session, vtkObjectHandle object);
412 
426  VTKSERIALIZATIONMANAGER_EXPORT vtkSessionResult vtkSessionSetSize(
427  vtkSession session, vtkObjectHandle object, int width, int height);
428 
440  VTKSERIALIZATIONMANAGER_EXPORT vtkSessionResult vtkSessionRender(
441  vtkSession session, vtkObjectHandle object);
442 
454  VTKSERIALIZATIONMANAGER_EXPORT vtkSessionResult vtkSessionResetCamera(
455  vtkSession session, vtkObjectHandle object);
456 
469  VTKSERIALIZATIONMANAGER_EXPORT vtkSessionResult vtkSessionStartWebXR(
470  uint8_t mode, uint32_t requiredFeatures, uint32_t optionalFeatures);
471 
477  VTKSERIALIZATIONMANAGER_EXPORT vtkSessionResult vtkSessionStopWebXR();
478 
491  VTKSERIALIZATIONMANAGER_EXPORT vtkSessionResult vtkSessionStartEventLoop(
492  vtkSession session, vtkObjectHandle object);
493 
506  VTKSERIALIZATIONMANAGER_EXPORT vtkSessionResult vtkSessionStopEventLoop(
507  vtkSession session, vtkObjectHandle object);
508 
524  VTKSERIALIZATIONMANAGER_EXPORT unsigned long vtkSessionAddObserver(vtkSession session,
525  vtkObjectHandle object, const char* eventName, vtkSessionObserverCallbackFunc callback);
526 
538  VTKSERIALIZATIONMANAGER_EXPORT vtkSessionResult vtkSessionRemoveObserver(
539  vtkSession session, vtkObjectHandle object, unsigned long tag);
540 
551  VTKSERIALIZATIONMANAGER_EXPORT vtkSessionResult vtkSessionRemoveAllObservers(
552  vtkSession session, vtkObjectHandle object);
553 
560  VTKSERIALIZATIONMANAGER_EXPORT void vtkSessionRemoveAllObserversFromAllObjects(
561  vtkSession session);
562 
570  VTKSERIALIZATIONMANAGER_EXPORT void vtkSessionExport(vtkSession session, const char* fileName);
571 
579  VTKSERIALIZATIONMANAGER_EXPORT void vtkSessionImport(
580  vtkSession session, const char* stateFileName, const char* blobFileName);
581 
587  VTKSERIALIZATIONMANAGER_EXPORT void vtkSessionUpdateObjectsFromStates(vtkSession session);
588 
594  VTKSERIALIZATIONMANAGER_EXPORT void vtkSessionUpdateStatesFromObjects(vtkSession session);
595 
602  VTKSERIALIZATIONMANAGER_EXPORT void vtkSessionPruneUnusedBlobs(vtkSession session);
603 
610  VTKSERIALIZATIONMANAGER_EXPORT void vtkSessionPruneUnusedObjects(vtkSession session);
611 
618  VTKSERIALIZATIONMANAGER_EXPORT void vtkSessionPruneUnusedStates(vtkSession session);
619 
624  VTKSERIALIZATIONMANAGER_EXPORT void vtkSessionClear(vtkSession session);
625 
632  VTKSERIALIZATIONMANAGER_EXPORT size_t vtkSessionGetTotalBlobMemoryUsage(vtkSession session);
633 
640  VTKSERIALIZATIONMANAGER_EXPORT size_t vtkSessionGetTotalVTKDataObjectMemoryUsage(
641  vtkSession session);
642 
653  VTKSERIALIZATIONMANAGER_EXPORT char* vtkSessionPrintObjectToString(
654  vtkSession session, vtkObjectHandle object);
655 
661  VTKSERIALIZATIONMANAGER_EXPORT void vtkSessionPrintSceneManagerInformation(vtkSession session);
662 
670  VTKSERIALIZATIONMANAGER_EXPORT void vtkSessionSetDeserializerLogVerbosity(
671  vtkSession session, const char* verbosityStr);
672 
680  VTKSERIALIZATIONMANAGER_EXPORT void vtkSessionSetInvokerLogVerbosity(
681  vtkSession session, const char* verbosityStr);
682 
690  VTKSERIALIZATIONMANAGER_EXPORT void vtkSessionSetObjectManagerLogVerbosity(
691  vtkSession session, const char* verbosityStr);
692 
700  VTKSERIALIZATIONMANAGER_EXPORT void vtkSessionSetSerializerLogVerbosity(
701  vtkSession session, const char* verbosityStr);
702 #ifdef __cplusplus
703 } // extern "C"
704 #endif
705 
706 #endif
707 // VTK-HeaderTest-Exclude: vtkSession.h
#define vtkSessionStartWebXR
Definition: vtkSession.h:154
struct vtkSessionDescriptor vtkSessionDescriptor
#define vtkSessionPrintObjectToString
Definition: vtkSession.h:164
struct vtkSessionImpl * vtkSession
Definition: vtkSession.h:91
#define vtkSessionPruneUnusedObjects
Definition: vtkSession.h:139
#define vtkSessionUpdateStateFromObject
Definition: vtkSession.h:150
#define vtkSessionUpdateObjectsFromStates
Definition: vtkSession.h:147
#define vtkSessionPrintSceneManagerInformation
Definition: vtkSession.h:165
#define vtkSessionUpdateObjectFromState
Definition: vtkSession.h:149
#define vtkSessionCreateObject
Definition: vtkSession.h:128
#define vtkSessionSetObjectManagerLogVerbosity
Definition: vtkSession.h:168
#define vtkSessionGetState
Definition: vtkSession.h:132
#define vtkSessionSetInvokerLogVerbosity
Definition: vtkSession.h:167
#define vtkSessionUnRegisterState
Definition: vtkSession.h:131
#define vtkSessionRemoveObserver
Definition: vtkSession.h:159
#define vtkSessionSkipProperty
Definition: vtkSession.h:133
#define vtkSessionPruneUnusedStates
Definition: vtkSession.h:140
#define vtkCreateSession
Definition: vtkSession.h:123
int InteractorManagesTheEventLoop
Definition: vtkSession.h:116
#define vtkSessionInitializeObjectManagerExtensionHandlers
Definition: vtkSession.h:126
vtkSessionJson(* vtkSessionJsonParseFunc)(const char *)
Definition: vtkSession.h:102
#define vtkSessionFreeGetAllDependenciesResult
Definition: vtkSession.h:144
struct vtkSessionJsonImpl * vtkSessionJson
Definition: vtkSession.h:96
#define vtkSessionUnSkipProperty
Definition: vtkSession.h:134
#define vtkSessionGetBlob
Definition: vtkSession.h:137
#define vtkSessionGetTotalBlobMemoryUsage
Definition: vtkSession.h:145
#define vtkSessionResetCamera
Definition: vtkSession.h:153
void(* vtkSessionObserverCallbackFunc)(vtkObjectHandle, const char *)
Definition: vtkSession.h:107
#define vtkSessionRegisterState
Definition: vtkSession.h:130
#define vtkSessionRemoveAllObservers
Definition: vtkSession.h:160
#define vtkSessionRemoveAllObserversFromAllObjects
Definition: vtkSession.h:161
#define vtkSessionDestroyObject
Definition: vtkSession.h:129
int vtkSessionResult
Definition: vtkSession.h:86
#define vtkSessionStopWebXR
Definition: vtkSession.h:155
#define vtkSessionGetTotalVTKDataObjectMemoryUsage
Definition: vtkSession.h:146
#define vtkSessionInitializeObjectManager
Definition: vtkSession.h:125
#define vtkSessionSetDeserializerLogVerbosity
Definition: vtkSession.h:166
char *(* vtkSessionJsonStringifyFunc)(vtkSessionJson)
Definition: vtkSession.h:105
#define vtkSessionGetAllDependencies
Definition: vtkSession.h:143
#define vtkSessionExport
Definition: vtkSession.h:163
#define vtkSessionSetSize
Definition: vtkSession.h:151
#define vtkSessionUnRegisterBlob
Definition: vtkSession.h:136
#define vtkFreeSession
Definition: vtkSession.h:124
#define vtkSessionInvoke
Definition: vtkSession.h:142
int(* vtkSessionObjectManagerRegistrarFunc)(void *ser, void *deser, void *invoker, const char **error)
Definition: vtkSession.h:99
#define vtkSessionGetManager
Definition: vtkSession.h:127
#define vtkSessionPruneUnusedBlobs
Definition: vtkSession.h:138
#define vtkSessionClear
Definition: vtkSession.h:141
#define vtkSessionUpdateStatesFromObjects
Definition: vtkSession.h:148
#define vtkSessionImport
Definition: vtkSession.h:162
#define vtkSessionSetSerializerLogVerbosity
Definition: vtkSession.h:169
#define vtkSessionAddObserver
Definition: vtkSession.h:158
vtkSessionJsonStringifyFunc StringifyJson
Definition: vtkSession.h:115
vtkSessionJsonParseFunc ParseJson
Definition: vtkSession.h:114
uint32_t vtkObjectHandle
Definition: vtkSession.h:85
#define vtkSessionStopEventLoop
Definition: vtkSession.h:157
#define vtkSessionStartEventLoop
Definition: vtkSession.h:156
#define vtkSessionRender
Definition: vtkSession.h:152
#define vtkSessionRegisterBlob
Definition: vtkSession.h:135