VTK  9.6.20260204
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 vtkSessionImport VTK_ABI_NAMESPACE_MANGLE(vtkSessionImport)
159#define vtkSessionExport VTK_ABI_NAMESPACE_MANGLE(vtkSessionExport)
160#define vtkSessionPrintObjectToString VTK_ABI_NAMESPACE_MANGLE(vtkSessionPrintObjectToString)
161#define vtkSessionPrintSceneManagerInformation VTK_ABI_NAMESPACE_MANGLE(vtkSessionPrintSceneManagerInformation)
162#define vtkSessionSetDeserializerLogVerbosity VTK_ABI_NAMESPACE_MANGLE(vtkSessionSetDeserializerLogVerbosity)
163#define vtkSessionSetInvokerLogVerbosity VTK_ABI_NAMESPACE_MANGLE(vtkSessionSetInvokerLogVerbosity)
164#define vtkSessionSetObjectManagerLogVerbosity VTK_ABI_NAMESPACE_MANGLE(vtkSessionSetObjectManagerLogVerbosity)
165#define vtkSessionSetSerializerLogVerbosity VTK_ABI_NAMESPACE_MANGLE(vtkSessionSetSerializerLogVerbosity)
166// clang-format on
167
168#ifdef __cplusplus
169extern "C"
170#endif
171{
179 VTKSERIALIZATIONMANAGER_EXPORT vtkSession vtkCreateSession(
180 const vtkSessionDescriptor* descriptor);
181
188 VTKSERIALIZATIONMANAGER_EXPORT void vtkFreeSession(vtkSession session);
189
196 vtkSession session);
197
205 VTKSERIALIZATIONMANAGER_EXPORT vtkSessionResult
207 vtkSession session, const vtkSessionObjectManagerRegistrarFunc* registrars, size_t count);
208
215 VTKSERIALIZATIONMANAGER_EXPORT void* vtkSessionGetManager(vtkSession session);
216
226 VTKSERIALIZATIONMANAGER_EXPORT vtkObjectHandle vtkSessionCreateObject(
227 vtkSession session, const char* className);
228
238 VTKSERIALIZATIONMANAGER_EXPORT vtkSessionResult vtkSessionDestroyObject(
239 vtkSession session, vtkObjectHandle object);
240
258 VTKSERIALIZATIONMANAGER_EXPORT vtkSessionResult vtkSessionRegisterState(
259 vtkSession session, vtkSessionJson state);
260
270 VTKSERIALIZATIONMANAGER_EXPORT vtkSessionResult vtkSessionUnRegisterState(
271 vtkSession session, vtkObjectHandle object);
272
283 VTKSERIALIZATIONMANAGER_EXPORT vtkSessionJson vtkSessionGetState(
284 vtkSession session, vtkObjectHandle object);
285
293 VTKSERIALIZATIONMANAGER_EXPORT void vtkSessionSkipProperty(
294 vtkSession session, const char* className, const char* propertyName);
295
304 VTKSERIALIZATIONMANAGER_EXPORT void vtkSessionUnSkipProperty(
305 vtkSession session, const char* className, const char* propertyName);
306
318 VTKSERIALIZATIONMANAGER_EXPORT vtkSessionResult vtkSessionRegisterBlob(
319 vtkSession session, const char* hash, uint8_t* blob, size_t length);
320
328 VTKSERIALIZATIONMANAGER_EXPORT vtkSessionResult vtkSessionUnRegisterBlob(
329 vtkSession session, const char* hash);
330
341 VTKSERIALIZATIONMANAGER_EXPORT uint8_t* vtkSessionGetBlob(
342 vtkSession session, const char* hash, size_t* length);
343
357 VTKSERIALIZATIONMANAGER_EXPORT vtkSessionJson vtkSessionInvoke(
358 vtkSession session, vtkObjectHandle object, const char* methodName, vtkSessionJson args);
359
371 VTKSERIALIZATIONMANAGER_EXPORT vtkObjectHandle* vtkSessionGetAllDependencies(
372 vtkSession session, vtkObjectHandle object, size_t* count);
373
381 VTKSERIALIZATIONMANAGER_EXPORT void vtkSessionFreeGetAllDependenciesResult(
382 vtkSession session, vtkObjectHandle* ptr);
383
395 VTKSERIALIZATIONMANAGER_EXPORT vtkSessionResult vtkSessionUpdateObjectFromState(
396 vtkSession session, vtkSessionJson state);
397
406 VTKSERIALIZATIONMANAGER_EXPORT void vtkSessionUpdateStateFromObject(
407 vtkSession session, vtkObjectHandle object);
408
422 VTKSERIALIZATIONMANAGER_EXPORT vtkSessionResult vtkSessionSetSize(
423 vtkSession session, vtkObjectHandle object, int width, int height);
424
436 VTKSERIALIZATIONMANAGER_EXPORT vtkSessionResult vtkSessionRender(
437 vtkSession session, vtkObjectHandle object);
438
450 VTKSERIALIZATIONMANAGER_EXPORT vtkSessionResult vtkSessionResetCamera(
451 vtkSession session, vtkObjectHandle object);
452
465 VTKSERIALIZATIONMANAGER_EXPORT vtkSessionResult vtkSessionStartEventLoop(
466 vtkSession session, vtkObjectHandle object);
467
480 VTKSERIALIZATIONMANAGER_EXPORT vtkSessionResult vtkSessionStopEventLoop(
481 vtkSession session, vtkObjectHandle object);
482
498 VTKSERIALIZATIONMANAGER_EXPORT unsigned long vtkSessionAddObserver(vtkSession session,
499 vtkObjectHandle object, const char* eventName, vtkSessionObserverCallbackFunc callback);
500
512 VTKSERIALIZATIONMANAGER_EXPORT vtkSessionResult vtkSessionRemoveObserver(
513 vtkSession session, vtkObjectHandle object, unsigned long tag);
514
522 VTKSERIALIZATIONMANAGER_EXPORT void vtkSessionExport(vtkSession session, const char* fileName);
523
531 VTKSERIALIZATIONMANAGER_EXPORT void vtkSessionImport(
532 vtkSession session, const char* stateFileName, const char* blobFileName);
533
539 VTKSERIALIZATIONMANAGER_EXPORT void vtkSessionUpdateObjectsFromStates(vtkSession session);
540
546 VTKSERIALIZATIONMANAGER_EXPORT void vtkSessionUpdateStatesFromObjects(vtkSession session);
547
554 VTKSERIALIZATIONMANAGER_EXPORT void vtkSessionPruneUnusedBlobs(vtkSession session);
555
562 VTKSERIALIZATIONMANAGER_EXPORT void vtkSessionPruneUnusedObjects(vtkSession session);
563
570 VTKSERIALIZATIONMANAGER_EXPORT void vtkSessionPruneUnusedStates(vtkSession session);
571
576 VTKSERIALIZATIONMANAGER_EXPORT void vtkSessionClear(vtkSession session);
577
584 VTKSERIALIZATIONMANAGER_EXPORT size_t vtkSessionGetTotalBlobMemoryUsage(vtkSession session);
585
592 VTKSERIALIZATIONMANAGER_EXPORT size_t vtkSessionGetTotalVTKDataObjectMemoryUsage(
593 vtkSession session);
594
605 VTKSERIALIZATIONMANAGER_EXPORT char* vtkSessionPrintObjectToString(
606 vtkSession session, vtkObjectHandle object);
607
613 VTKSERIALIZATIONMANAGER_EXPORT void vtkSessionPrintSceneManagerInformation(vtkSession session);
614
622 VTKSERIALIZATIONMANAGER_EXPORT void vtkSessionSetDeserializerLogVerbosity(
623 vtkSession session, const char* verbosityStr);
624
632 VTKSERIALIZATIONMANAGER_EXPORT void vtkSessionSetInvokerLogVerbosity(
633 vtkSession session, const char* verbosityStr);
634
642 VTKSERIALIZATIONMANAGER_EXPORT void vtkSessionSetObjectManagerLogVerbosity(
643 vtkSession session, const char* verbosityStr);
644
652 VTKSERIALIZATIONMANAGER_EXPORT void vtkSessionSetSerializerLogVerbosity(
653 vtkSession session, const char* verbosityStr);
654#ifdef __cplusplus
655} // extern "C"
656#endif
657
658#endif
659// 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
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:160
#define vtkSessionResetCamera
Definition vtkSession.h:153
#define vtkSessionSetObjectManagerLogVerbosity
Definition vtkSession.h:164
#define vtkCreateSession
Definition vtkSession.h:123
#define vtkSessionPrintSceneManagerInformation
Definition vtkSession.h:161
#define vtkSessionSetSerializerLogVerbosity
Definition vtkSession.h:165
#define vtkSessionImport
Definition vtkSession.h:158
#define vtkSessionStopEventLoop
Definition vtkSession.h:155
#define vtkSessionUpdateStatesFromObjects
Definition vtkSession.h:148
#define vtkSessionSetDeserializerLogVerbosity
Definition vtkSession.h:162
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:159
#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:163
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 vtkSessionRemoveObserver
Definition vtkSession.h:157