VTK  9.6.20260321
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
74
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
85typedef uint32_t vtkObjectHandle;
86typedef int vtkSessionResult;
87
88// Forward declarations
89// Opaque type representing the session implementation. See vtkSession.cxx for
90// details.
91typedef 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.
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[].
105typedef char* (*vtkSessionJsonStringifyFunc)(vtkSessionJson);
106// Callback function type for session observers.
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.
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 vtkSessionStartEventLoop VTK_ABI_NAMESPACE_MANGLE(vtkSessionStartEventLoop)
155#define vtkSessionStopEventLoop VTK_ABI_NAMESPACE_MANGLE(vtkSessionStopEventLoop)
156#define vtkSessionAddObserver VTK_ABI_NAMESPACE_MANGLE(vtkSessionAddObserver)
157#define vtkSessionRemoveObserver VTK_ABI_NAMESPACE_MANGLE(vtkSessionRemoveObserver)
158#define vtkSessionRemoveAllObservers VTK_ABI_NAMESPACE_MANGLE(vtkSessionRemoveAllObservers)
159#define vtkSessionRemoveAllObserversFromAllObjects VTK_ABI_NAMESPACE_MANGLE(vtkSessionRemoveAllObserversFromAllObjects)
160#define vtkSessionImport VTK_ABI_NAMESPACE_MANGLE(vtkSessionImport)
161#define vtkSessionExport VTK_ABI_NAMESPACE_MANGLE(vtkSessionExport)
162#define vtkSessionPrintObjectToString VTK_ABI_NAMESPACE_MANGLE(vtkSessionPrintObjectToString)
163#define vtkSessionPrintSceneManagerInformation VTK_ABI_NAMESPACE_MANGLE(vtkSessionPrintSceneManagerInformation)
164#define vtkSessionSetDeserializerLogVerbosity VTK_ABI_NAMESPACE_MANGLE(vtkSessionSetDeserializerLogVerbosity)
165#define vtkSessionSetInvokerLogVerbosity VTK_ABI_NAMESPACE_MANGLE(vtkSessionSetInvokerLogVerbosity)
166#define vtkSessionSetObjectManagerLogVerbosity VTK_ABI_NAMESPACE_MANGLE(vtkSessionSetObjectManagerLogVerbosity)
167#define vtkSessionSetSerializerLogVerbosity VTK_ABI_NAMESPACE_MANGLE(vtkSessionSetSerializerLogVerbosity)
168// clang-format on
169
170#ifdef __cplusplus
171extern "C"
172#endif
173{
181 VTKSERIALIZATIONMANAGER_EXPORT vtkSession vtkCreateSession(
182 const vtkSessionDescriptor* descriptor);
183
190 VTKSERIALIZATIONMANAGER_EXPORT void vtkFreeSession(vtkSession session);
191
198 vtkSession session);
199
207 VTKSERIALIZATIONMANAGER_EXPORT vtkSessionResult
209 vtkSession session, const vtkSessionObjectManagerRegistrarFunc* registrars, size_t count);
210
217 VTKSERIALIZATIONMANAGER_EXPORT void* vtkSessionGetManager(vtkSession session);
218
228 VTKSERIALIZATIONMANAGER_EXPORT vtkObjectHandle vtkSessionCreateObject(
229 vtkSession session, const char* className);
230
240 VTKSERIALIZATIONMANAGER_EXPORT vtkSessionResult vtkSessionDestroyObject(
241 vtkSession session, vtkObjectHandle object);
242
260 VTKSERIALIZATIONMANAGER_EXPORT vtkSessionResult vtkSessionRegisterState(
261 vtkSession session, vtkSessionJson state);
262
272 VTKSERIALIZATIONMANAGER_EXPORT vtkSessionResult vtkSessionUnRegisterState(
273 vtkSession session, vtkObjectHandle object);
274
285 VTKSERIALIZATIONMANAGER_EXPORT vtkSessionJson vtkSessionGetState(
286 vtkSession session, vtkObjectHandle object);
287
295 VTKSERIALIZATIONMANAGER_EXPORT void vtkSessionSkipProperty(
296 vtkSession session, const char* className, const char* propertyName);
297
306 VTKSERIALIZATIONMANAGER_EXPORT void vtkSessionUnSkipProperty(
307 vtkSession session, const char* className, const char* propertyName);
308
320 VTKSERIALIZATIONMANAGER_EXPORT vtkSessionResult vtkSessionRegisterBlob(
321 vtkSession session, const char* hash, uint8_t* blob, size_t length);
322
330 VTKSERIALIZATIONMANAGER_EXPORT vtkSessionResult vtkSessionUnRegisterBlob(
331 vtkSession session, const char* hash);
332
343 VTKSERIALIZATIONMANAGER_EXPORT uint8_t* vtkSessionGetBlob(
344 vtkSession session, const char* hash, size_t* length);
345
359 VTKSERIALIZATIONMANAGER_EXPORT vtkSessionJson vtkSessionInvoke(
360 vtkSession session, vtkObjectHandle object, const char* methodName, vtkSessionJson args);
361
373 VTKSERIALIZATIONMANAGER_EXPORT vtkObjectHandle* vtkSessionGetAllDependencies(
374 vtkSession session, vtkObjectHandle object, size_t* count);
375
383 VTKSERIALIZATIONMANAGER_EXPORT void vtkSessionFreeGetAllDependenciesResult(
384 vtkSession session, vtkObjectHandle* ptr);
385
397 VTKSERIALIZATIONMANAGER_EXPORT vtkSessionResult vtkSessionUpdateObjectFromState(
398 vtkSession session, vtkSessionJson state);
399
408 VTKSERIALIZATIONMANAGER_EXPORT void vtkSessionUpdateStateFromObject(
409 vtkSession session, vtkObjectHandle object);
410
424 VTKSERIALIZATIONMANAGER_EXPORT vtkSessionResult vtkSessionSetSize(
425 vtkSession session, vtkObjectHandle object, int width, int height);
426
438 VTKSERIALIZATIONMANAGER_EXPORT vtkSessionResult vtkSessionRender(
439 vtkSession session, vtkObjectHandle object);
440
452 VTKSERIALIZATIONMANAGER_EXPORT vtkSessionResult vtkSessionResetCamera(
453 vtkSession session, vtkObjectHandle object);
454
467 VTKSERIALIZATIONMANAGER_EXPORT vtkSessionResult vtkSessionStartEventLoop(
468 vtkSession session, vtkObjectHandle object);
469
482 VTKSERIALIZATIONMANAGER_EXPORT vtkSessionResult vtkSessionStopEventLoop(
483 vtkSession session, vtkObjectHandle object);
484
500 VTKSERIALIZATIONMANAGER_EXPORT unsigned long vtkSessionAddObserver(vtkSession session,
501 vtkObjectHandle object, const char* eventName, vtkSessionObserverCallbackFunc callback);
502
514 VTKSERIALIZATIONMANAGER_EXPORT vtkSessionResult vtkSessionRemoveObserver(
515 vtkSession session, vtkObjectHandle object, unsigned long tag);
516
526 VTKSERIALIZATIONMANAGER_EXPORT vtkSessionResult vtkSessionRemoveAllObservers(
527 vtkSession session, vtkObjectHandle object);
528
534 VTKSERIALIZATIONMANAGER_EXPORT void vtkSessionRemoveAllObserversFromAllObjects(
535 vtkSession session);
536
544 VTKSERIALIZATIONMANAGER_EXPORT void vtkSessionExport(vtkSession session, const char* fileName);
545
553 VTKSERIALIZATIONMANAGER_EXPORT void vtkSessionImport(
554 vtkSession session, const char* stateFileName, const char* blobFileName);
555
561 VTKSERIALIZATIONMANAGER_EXPORT void vtkSessionUpdateObjectsFromStates(vtkSession session);
562
568 VTKSERIALIZATIONMANAGER_EXPORT void vtkSessionUpdateStatesFromObjects(vtkSession session);
569
576 VTKSERIALIZATIONMANAGER_EXPORT void vtkSessionPruneUnusedBlobs(vtkSession session);
577
584 VTKSERIALIZATIONMANAGER_EXPORT void vtkSessionPruneUnusedObjects(vtkSession session);
585
592 VTKSERIALIZATIONMANAGER_EXPORT void vtkSessionPruneUnusedStates(vtkSession session);
593
598 VTKSERIALIZATIONMANAGER_EXPORT void vtkSessionClear(vtkSession session);
599
606 VTKSERIALIZATIONMANAGER_EXPORT size_t vtkSessionGetTotalBlobMemoryUsage(vtkSession session);
607
614 VTKSERIALIZATIONMANAGER_EXPORT size_t vtkSessionGetTotalVTKDataObjectMemoryUsage(
615 vtkSession session);
616
627 VTKSERIALIZATIONMANAGER_EXPORT char* vtkSessionPrintObjectToString(
628 vtkSession session, vtkObjectHandle object);
629
635 VTKSERIALIZATIONMANAGER_EXPORT void vtkSessionPrintSceneManagerInformation(vtkSession session);
636
644 VTKSERIALIZATIONMANAGER_EXPORT void vtkSessionSetDeserializerLogVerbosity(
645 vtkSession session, const char* verbosityStr);
646
654 VTKSERIALIZATIONMANAGER_EXPORT void vtkSessionSetInvokerLogVerbosity(
655 vtkSession session, const char* verbosityStr);
656
664 VTKSERIALIZATIONMANAGER_EXPORT void vtkSessionSetObjectManagerLogVerbosity(
665 vtkSession session, const char* verbosityStr);
666
674 VTKSERIALIZATIONMANAGER_EXPORT void vtkSessionSetSerializerLogVerbosity(
675 vtkSession session, const char* verbosityStr);
676#ifdef __cplusplus
677} // extern "C"
678#endif
679
680#endif
681// VTK-HeaderTest-Exclude: vtkSession.h
vtkSessionJsonParseFunc ParseJson
Definition vtkSession.h:114
vtkSessionJsonStringifyFunc StringifyJson
Definition vtkSession.h:115
#define vtkSessionUnRegisterState
Definition vtkSession.h:131
#define vtkSessionSetSize
Definition vtkSession.h:151
#define vtkSessionUpdateObjectsFromStates
Definition vtkSession.h:147
#define vtkSessionPruneUnusedObjects
Definition vtkSession.h:139
vtkSessionJson(* vtkSessionJsonParseFunc)(const char *)
Definition vtkSession.h:102
#define vtkSessionInvoke
Definition vtkSession.h:142
#define vtkSessionAddObserver
Definition vtkSession.h:156
uint32_t vtkObjectHandle
Definition vtkSession.h:85
#define vtkSessionStartEventLoop
Definition vtkSession.h:154
#define vtkSessionGetTotalVTKDataObjectMemoryUsage
Definition vtkSession.h:146
struct vtkSessionImpl * vtkSession
Definition vtkSession.h:91
#define vtkSessionRemoveAllObserversFromAllObjects
Definition vtkSession.h:159
int(* vtkSessionObjectManagerRegistrarFunc)(void *ser, void *deser, void *invoker, const char **error)
Definition vtkSession.h:99
int vtkSessionResult
Definition vtkSession.h:86
#define vtkFreeSession
Definition vtkSession.h:124
#define vtkSessionCreateObject
Definition vtkSession.h:128
#define vtkSessionSkipProperty
Definition vtkSession.h:133
#define vtkSessionPrintObjectToString
Definition vtkSession.h:162
#define vtkSessionResetCamera
Definition vtkSession.h:153
#define vtkSessionSetObjectManagerLogVerbosity
Definition vtkSession.h:166
#define vtkCreateSession
Definition vtkSession.h:123
#define vtkSessionPrintSceneManagerInformation
Definition vtkSession.h:163
#define vtkSessionSetSerializerLogVerbosity
Definition vtkSession.h:167
#define vtkSessionImport
Definition vtkSession.h:160
#define vtkSessionStopEventLoop
Definition vtkSession.h:155
#define vtkSessionUpdateStatesFromObjects
Definition vtkSession.h:148
#define vtkSessionSetDeserializerLogVerbosity
Definition vtkSession.h:164
struct vtkSessionJsonImpl * vtkSessionJson
Definition vtkSession.h:96
#define vtkSessionGetBlob
Definition vtkSession.h:137
#define vtkSessionRegisterState
Definition vtkSession.h:130
#define vtkSessionPruneUnusedStates
Definition vtkSession.h:140
#define vtkSessionUpdateObjectFromState
Definition vtkSession.h:149
#define vtkSessionExport
Definition vtkSession.h:161
#define vtkSessionPruneUnusedBlobs
Definition vtkSession.h:138
#define vtkSessionRegisterBlob
Definition vtkSession.h:135
#define vtkSessionInitializeObjectManager
Definition vtkSession.h:125
#define vtkSessionGetManager
Definition vtkSession.h:127
#define vtkSessionInitializeObjectManagerExtensionHandlers
Definition vtkSession.h:126
#define vtkSessionClear
Definition vtkSession.h:141
#define vtkSessionGetState
Definition vtkSession.h:132
#define vtkSessionUnRegisterBlob
Definition vtkSession.h:136
#define vtkSessionSetInvokerLogVerbosity
Definition vtkSession.h:165
char *(* vtkSessionJsonStringifyFunc)(vtkSessionJson)
Definition vtkSession.h:105
#define vtkSessionRender
Definition vtkSession.h:152
#define vtkSessionDestroyObject
Definition vtkSession.h:129
void(* vtkSessionObserverCallbackFunc)(vtkObjectHandle, const char *)
Definition vtkSession.h:107
#define vtkSessionUnSkipProperty
Definition vtkSession.h:134
#define vtkSessionGetTotalBlobMemoryUsage
Definition vtkSession.h:145
#define vtkSessionGetAllDependencies
Definition vtkSession.h:143
#define vtkSessionUpdateStateFromObject
Definition vtkSession.h:150
#define vtkSessionFreeGetAllDependenciesResult
Definition vtkSession.h:144
#define vtkSessionRemoveAllObservers
Definition vtkSession.h:158
#define vtkSessionRemoveObserver
Definition vtkSession.h:157