VTK  9.5.20250803
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
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.
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 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 vtkSessionPrintSceneManagerInformation VTK_ABI_NAMESPACE_MANGLE(vtkSessionPrintSceneManagerInformation)
161#define vtkSessionSetDeserializerLogVerbosity VTK_ABI_NAMESPACE_MANGLE(vtkSessionSetDeserializerLogVerbosity)
162#define vtkSessionSetInvokerLogVerbosity VTK_ABI_NAMESPACE_MANGLE(vtkSessionSetInvokerLogVerbosity)
163#define vtkSessionSetObjectManagerLogVerbosity VTK_ABI_NAMESPACE_MANGLE(vtkSessionSetObjectManagerLogVerbosity)
164#define vtkSessionSetSerializerLogVerbosity VTK_ABI_NAMESPACE_MANGLE(vtkSessionSetSerializerLogVerbosity)
165// clang-format on
166
167#ifdef __cplusplus
168extern "C"
169#endif
170{
178 VTKSERIALIZATIONMANAGER_EXPORT vtkSession vtkCreateSession(
179 const vtkSessionDescriptor* descriptor);
180
187 VTKSERIALIZATIONMANAGER_EXPORT void vtkFreeSession(vtkSession session);
188
195 vtkSession session);
196
204 VTKSERIALIZATIONMANAGER_EXPORT vtkSessionResult
206 vtkSession session, const vtkSessionObjectManagerRegistrarFunc* registrars, size_t count);
207
214 VTKSERIALIZATIONMANAGER_EXPORT void* vtkSessionGetManager(vtkSession session);
215
225 VTKSERIALIZATIONMANAGER_EXPORT vtkObjectHandle vtkSessionCreateObject(
226 vtkSession session, const char* className);
227
237 VTKSERIALIZATIONMANAGER_EXPORT vtkSessionResult vtkSessionDestroyObject(
238 vtkSession session, vtkObjectHandle object);
239
257 VTKSERIALIZATIONMANAGER_EXPORT vtkSessionResult vtkSessionRegisterState(
258 vtkSession session, vtkSessionJson state);
259
269 VTKSERIALIZATIONMANAGER_EXPORT vtkSessionResult vtkSessionUnRegisterState(
270 vtkSession session, vtkObjectHandle object);
271
282 VTKSERIALIZATIONMANAGER_EXPORT vtkSessionJson vtkSessionGetState(
283 vtkSession session, vtkObjectHandle object);
284
292 VTKSERIALIZATIONMANAGER_EXPORT void vtkSessionSkipProperty(
293 vtkSession session, const char* className, const char* propertyName);
294
303 VTKSERIALIZATIONMANAGER_EXPORT void vtkSessionUnSkipProperty(
304 vtkSession session, const char* className, const char* propertyName);
305
317 VTKSERIALIZATIONMANAGER_EXPORT vtkSessionResult vtkSessionRegisterBlob(
318 vtkSession session, const char* hash, uint8_t* blob, size_t length);
319
327 VTKSERIALIZATIONMANAGER_EXPORT vtkSessionResult vtkSessionUnRegisterBlob(
328 vtkSession session, const char* hash);
329
340 VTKSERIALIZATIONMANAGER_EXPORT uint8_t* vtkSessionGetBlob(
341 vtkSession session, const char* hash, size_t* length);
342
356 VTKSERIALIZATIONMANAGER_EXPORT vtkSessionJson vtkSessionInvoke(
357 vtkSession session, vtkObjectHandle object, const char* methodName, vtkSessionJson args);
358
370 VTKSERIALIZATIONMANAGER_EXPORT vtkObjectHandle* vtkSessionGetAllDependencies(
371 vtkSession session, vtkObjectHandle object, size_t* count);
372
380 VTKSERIALIZATIONMANAGER_EXPORT void vtkSessionFreeGetAllDependenciesResult(
381 vtkSession session, vtkObjectHandle* ptr);
382
393 VTKSERIALIZATIONMANAGER_EXPORT void vtkSessionUpdateObjectFromState(
394 vtkSession session, vtkSessionJson state);
395
404 VTKSERIALIZATIONMANAGER_EXPORT void vtkSessionUpdateStateFromObject(
405 vtkSession session, vtkObjectHandle object);
406
420 VTKSERIALIZATIONMANAGER_EXPORT vtkSessionResult vtkSessionSetSize(
421 vtkSession session, vtkObjectHandle object, int width, int height);
422
434 VTKSERIALIZATIONMANAGER_EXPORT vtkSessionResult vtkSessionRender(
435 vtkSession session, vtkObjectHandle object);
436
448 VTKSERIALIZATIONMANAGER_EXPORT vtkSessionResult vtkSessionResetCamera(
449 vtkSession session, vtkObjectHandle object);
450
463 VTKSERIALIZATIONMANAGER_EXPORT vtkSessionResult vtkSessionStartEventLoop(
464 vtkSession session, vtkObjectHandle object);
465
478 VTKSERIALIZATIONMANAGER_EXPORT vtkSessionResult vtkSessionStopEventLoop(
479 vtkSession session, vtkObjectHandle object);
480
496 VTKSERIALIZATIONMANAGER_EXPORT unsigned long vtkSessionAddObserver(vtkSession session,
497 vtkObjectHandle object, const char* eventName, vtkSessionObserverCallbackFunc callback);
498
510 VTKSERIALIZATIONMANAGER_EXPORT vtkSessionResult vtkSessionRemoveObserver(
511 vtkSession session, vtkObjectHandle object, unsigned long tag);
512
520 VTKSERIALIZATIONMANAGER_EXPORT void vtkSessionExport(vtkSession session, const char* fileName);
521
529 VTKSERIALIZATIONMANAGER_EXPORT void vtkSessionImport(
530 vtkSession session, const char* stateFileName, const char* blobFileName);
531
537 VTKSERIALIZATIONMANAGER_EXPORT void vtkSessionUpdateObjectsFromStates(vtkSession session);
538
544 VTKSERIALIZATIONMANAGER_EXPORT void vtkSessionUpdateStatesFromObjects(vtkSession session);
545
552 VTKSERIALIZATIONMANAGER_EXPORT void vtkSessionPruneUnusedBlobs(vtkSession session);
553
560 VTKSERIALIZATIONMANAGER_EXPORT void vtkSessionPruneUnusedObjects(vtkSession session);
561
568 VTKSERIALIZATIONMANAGER_EXPORT void vtkSessionPruneUnusedStates(vtkSession session);
569
574 VTKSERIALIZATIONMANAGER_EXPORT void vtkSessionClear(vtkSession session);
575
582 VTKSERIALIZATIONMANAGER_EXPORT size_t vtkSessionGetTotalBlobMemoryUsage(vtkSession session);
583
590 VTKSERIALIZATIONMANAGER_EXPORT size_t vtkSessionGetTotalVTKDataObjectMemoryUsage(
591 vtkSession session);
592
598 VTKSERIALIZATIONMANAGER_EXPORT void vtkSessionPrintSceneManagerInformation(vtkSession session);
599
607 VTKSERIALIZATIONMANAGER_EXPORT void vtkSessionSetDeserializerLogVerbosity(
608 vtkSession session, const char* verbosityStr);
609
617 VTKSERIALIZATIONMANAGER_EXPORT void vtkSessionSetInvokerLogVerbosity(
618 vtkSession session, const char* verbosityStr);
619
627 VTKSERIALIZATIONMANAGER_EXPORT void vtkSessionSetObjectManagerLogVerbosity(
628 vtkSession session, const char* verbosityStr);
629
637 VTKSERIALIZATIONMANAGER_EXPORT void vtkSessionSetSerializerLogVerbosity(
638 vtkSession session, const char* verbosityStr);
639#ifdef __cplusplus
640} // extern "C"
641#endif
642
643#endif
644// 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 vtkSessionResetCamera
Definition vtkSession.h:153
#define vtkSessionSetObjectManagerLogVerbosity
Definition vtkSession.h:163
#define vtkCreateSession
Definition vtkSession.h:123
#define vtkSessionPrintSceneManagerInformation
Definition vtkSession.h:160
#define vtkSessionSetSerializerLogVerbosity
Definition vtkSession.h:164
#define vtkSessionImport
Definition vtkSession.h:158
#define vtkSessionStopEventLoop
Definition vtkSession.h:155
#define vtkSessionUpdateStatesFromObjects
Definition vtkSession.h:148
#define vtkSessionSetDeserializerLogVerbosity
Definition vtkSession.h:161
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:162
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