vsg: vsg::SuitableForSharing Class Reference

vsg 1.1.3 VulkanSceneGraph library

Loading...
Searching...
No Matches
Public Member Functions | Public Attributes | List of all members
vsg::SuitableForSharing Class Reference

`#include <SharedObjects.h>`

Inheritance diagram for vsg::SuitableForSharing:
[legend]
Collaboration diagram for vsg::SuitableForSharing:
[legend]

## Public Member Functions
void | apply (const Object &object) override
void | apply (const PagedLOD &plod) override
bool | suitable (const Object *object)
Public Member Functions inherited from vsg::Inherit< ConstVisitor, SuitableForSharing >
| Inherit (Args &&... args)
std::size_t | sizeofObject () const noexcept override
const char * | className () const noexcept override
const std::type_info & | type_info () const noexcept override
bool | is_compatible (const std::type_info &type) const noexcept override
int | compare (const Object &rhs) const override
void | accept (Visitor &visitor) override
void | accept (ConstVisitor &visitor) const override
void | accept (RecordTraversal &visitor) const override
Public Member Functions inherited from vsg::ConstVisitor
| ConstVisitor (const ConstVisitor &rhs, const CopyOp &copyop={})
virtual Instrumentation * | getInstrumentation ()
virtual void | apply (const Objects &)
virtual void | apply (const External &)
virtual void | apply (const Data &)
virtual void | apply (const stringValue &)
virtual void | apply (const wstringValue &)
virtual void | apply (const boolValue &)
virtual void | apply (const intValue &)
virtual void | apply (const uintValue &)
virtual void | apply (const floatValue &)
virtual void | apply (const doubleValue &)
virtual void | apply (const vec2Value &)
virtual void | apply (const vec3Value &)
virtual void | apply (const vec4Value &)
virtual void | apply (const dvec2Value &)
virtual void | apply (const dvec3Value &)
virtual void | apply (const dvec4Value &)
virtual void | apply (const bvec2Value &)
virtual void | apply (const bvec3Value &)
virtual void | apply (const bvec4Value &)
virtual void | apply (const ubvec2Value &)
virtual void | apply (const ubvec3Value &)
virtual void | apply (const ubvec4Value &)
virtual void | apply (const svec2Value &)
virtual void | apply (const svec3Value &)
virtual void | apply (const svec4Value &)
virtual void | apply (const usvec2Value &)
virtual void | apply (const usvec3Value &)
virtual void | apply (const usvec4Value &)
virtual void | apply (const ivec2Value &)
virtual void | apply (const ivec3Value &)
virtual void | apply (const ivec4Value &)
virtual void | apply (const uivec2Value &)
virtual void | apply (const uivec3Value &)
virtual void | apply (const uivec4Value &)
virtual void | apply (const mat4Value &)
virtual void | apply (const dmat4Value &)
virtual void | apply (const byteArray &)
virtual void | apply (const ubyteArray &)
virtual void | apply (const shortArray &)
virtual void | apply (const ushortArray &)
virtual void | apply (const intArray &)
virtual void | apply (const uintArray &)
virtual void | apply (const floatArray &)
virtual void | apply (const doubleArray &)
virtual void | apply (const vec2Array &)
virtual void | apply (const vec3Array &)
virtual void | apply (const vec4Array &)
virtual void | apply (const dvec2Array &)
virtual void | apply (const dvec3Array &)
virtual void | apply (const dvec4Array &)
virtual void | apply (const bvec2Array &)
virtual void | apply (const bvec3Array &)
virtual void | apply (const bvec4Array &)
virtual void | apply (const svec2Array &)
virtual void | apply (const svec3Array &)
virtual void | apply (const svec4Array &)
virtual void | apply (const ivec2Array &)
virtual void | apply (const ivec3Array &)
virtual void | apply (const ivec4Array &)
virtual void | apply (const ubvec2Array &)
virtual void | apply (const ubvec3Array &)
virtual void | apply (const ubvec4Array &)
virtual void | apply (const usvec2Array &)
virtual void | apply (const usvec3Array &)
virtual void | apply (const usvec4Array &)
virtual void | apply (const uivec2Array &)
virtual void | apply (const uivec3Array &)
virtual void | apply (const uivec4Array &)
virtual void | apply (const mat4Array &)
virtual void | apply (const dmat4Array &)
virtual void | apply (const block64Array &)
virtual void | apply (const block128Array &)
virtual void | apply (const ubyteArray2D &)
virtual void | apply (const ushortArray2D &)
virtual void | apply (const uintArray2D &)
virtual void | apply (const floatArray2D &)
virtual void | apply (const doubleArray2D &)
virtual void | apply (const vec2Array2D &)
virtual void | apply (const vec3Array2D &)
virtual void | apply (const vec4Array2D &)
virtual void | apply (const dvec2Array2D &)
virtual void | apply (const dvec3Array2D &)
virtual void | apply (const dvec4Array2D &)
virtual void | apply (const bvec2Array2D &)
virtual void | apply (const bvec3Array2D &)
virtual void | apply (const bvec4Array2D &)
virtual void | apply (const svec2Array2D &)
virtual void | apply (const svec3Array2D &)
virtual void | apply (const svec4Array2D &)
virtual void | apply (const ivec2Array2D &)
virtual void | apply (const ivec3Array2D &)
virtual void | apply (const ivec4Array2D &)
virtual void | apply (const ubvec2Array2D &)
virtual void | apply (const ubvec3Array2D &)
virtual void | apply (const ubvec4Array2D &)
virtual void | apply (const usvec2Array2D &)
virtual void | apply (const usvec3Array2D &)
virtual void | apply (const usvec4Array2D &)
virtual void | apply (const uivec2Array2D &)
virtual void | apply (const uivec3Array2D &)
virtual void | apply (const uivec4Array2D &)
virtual void | apply (const block64Array2D &)
virtual void | apply (const block128Array2D &)
virtual void | apply (const ubyteArray3D &)
virtual void | apply (const ushortArray3D &)
virtual void | apply (const uintArray3D &)
virtual void | apply (const floatArray3D &)
virtual void | apply (const doubleArray3D &)
virtual void | apply (const vec2Array3D &)
virtual void | apply (const vec3Array3D &)
virtual void | apply (const vec4Array3D &)
virtual void | apply (const dvec2Array3D &)
virtual void | apply (const dvec3Array3D &)
virtual void | apply (const dvec4Array3D &)
virtual void | apply (const ubvec2Array3D &)
virtual void | apply (const ubvec3Array3D &)
virtual void | apply (const ubvec4Array3D &)
virtual void | apply (const block64Array3D &)
virtual void | apply (const block128Array3D &)
virtual void | apply (const Node &)
virtual void | apply (const Compilable &)
virtual void | apply (const Commands &)
virtual void | apply (const Group &)
virtual void | apply (const QuadGroup &)
virtual void | apply (const LOD &)
virtual void | apply (const StateGroup &)
virtual void | apply (const CullGroup &)
virtual void | apply (const CullNode &)
virtual void | apply (const MatrixTransform &)
virtual void | apply (const Transform &)
virtual void | apply (const Geometry &)
virtual void | apply (const VertexDraw &)
virtual void | apply (const VertexIndexDraw &)
virtual void | apply (const DepthSorted &)
virtual void | apply (const Layer &)
virtual void | apply (const Bin &)
virtual void | apply (const Switch &)
virtual void | apply (const Light &)
virtual void | apply (const AmbientLight &)
virtual void | apply (const DirectionalLight &)
virtual void | apply (const PointLight &)
virtual void | apply (const SpotLight &)
virtual void | apply (const InstrumentationNode &)
virtual void | apply (const RegionOfInterest &)
virtual void | apply (const Text &)
virtual void | apply (const TextGroup &)
virtual void | apply (const TextTechnique &)
virtual void | apply (const TextLayout &)
virtual void | apply (const Animation &)
virtual void | apply (const AnimationGroup &)
virtual void | apply (const AnimationSampler &)
virtual void | apply (const JointSampler &)
virtual void | apply (const MorphSampler &)
virtual void | apply (const TransformSampler &)
virtual void | apply (const Joint &)
virtual void | apply (const BufferInfo &)
virtual void | apply (const ImageInfo &)
virtual void | apply (const ImageView &)
virtual void | apply (const Image &)
virtual void | apply (const Command &)
virtual void | apply (const StateCommand &)
virtual void | apply (const StateSwitch &)
virtual void | apply (const CommandBuffer &)
virtual void | apply (const RenderPass &)
virtual void | apply (const BindDescriptorSet &)
virtual void | apply (const BindDescriptorSets &)
virtual void | apply (const BindViewDescriptorSets &)
virtual void | apply (const Descriptor &)
virtual void | apply (const DescriptorBuffer &)
virtual void | apply (const DescriptorImage &)
virtual void | apply (const DescriptorSet &)
virtual void | apply (const BindVertexBuffers &)
virtual void | apply (const BindIndexBuffer &)
virtual void | apply (const BindComputePipeline &)
virtual void | apply (const BindGraphicsPipeline &)
virtual void | apply (const BindRayTracingPipeline &)
virtual void | apply (const GraphicsPipeline &)
virtual void | apply (const ComputePipeline &)
virtual void | apply (const RayTracingPipeline &)
virtual void | apply (const GraphicsPipelineState &)
virtual void | apply (const ShaderStage &)
virtual void | apply (const VertexInputState &)
virtual void | apply (const InputAssemblyState &)
virtual void | apply (const TessellationState &)
virtual void | apply (const ViewportState &)
virtual void | apply (const RasterizationState &)
virtual void | apply (const MultisampleState &)
virtual void | apply (const DepthStencilState &)
virtual void | apply (const ColorBlendState &)
virtual void | apply (const DynamicState &)
virtual void | apply (const ResourceHints &)
virtual void | apply (const Draw &)
virtual void | apply (const DrawIndexed &)
virtual void | apply (const ClearAttachments &)
virtual void | apply (const ClearColorImage &)
virtual void | apply (const ClearDepthStencilImage &)
virtual void | apply (const QueryPool &)
virtual void | apply (const ResetQueryPool &)
virtual void | apply (const BeginQuery &)
virtual void | apply (const EndQuery &)
virtual void | apply (const WriteTimestamp &)
virtual void | apply (const CopyQueryPoolResults &)
virtual void | apply (const DrawMeshTasks &)
virtual void | apply (const DrawMeshTasksIndirect &)
virtual void | apply (const DrawMeshTasksIndirectCount &)
virtual void | apply (const UIEvent &)
virtual void | apply (const WindowEvent &)
virtual void | apply (const ExposeWindowEvent &)
virtual void | apply (const ConfigureWindowEvent &)
virtual void | apply (const CloseWindowEvent &)
virtual void | apply (const FocusInEvent &)
virtual void | apply (const FocusOutEvent &)
virtual void | apply (const KeyEvent &)
virtual void | apply (const KeyPressEvent &)
virtual void | apply (const KeyReleaseEvent &)
virtual void | apply (const PointerEvent &)
virtual void | apply (const ButtonPressEvent &)
virtual void | apply (const ButtonReleaseEvent &)
virtual void | apply (const MoveEvent &)
virtual void | apply (const TouchEvent &)
virtual void | apply (const TouchDownEvent &)
virtual void | apply (const TouchUpEvent &)
virtual void | apply (const TouchMoveEvent &)
virtual void | apply (const ScrollWheelEvent &)
virtual void | apply (const TerminateEvent &)
virtual void | apply (const FrameEvent &)
virtual void | apply (const ShaderCompileSettings &)
virtual void | apply (const Camera &)
virtual void | apply (const CommandGraph &)
virtual void | apply (const SecondaryCommandGraph &)
virtual void | apply (const RenderGraph &)
virtual void | apply (const View &)
virtual void | apply (const Viewer &)
virtual void | apply (const ViewMatrix &)
virtual void | apply (const LookAt &)
virtual void | apply (const RelativeViewMatrix &)
virtual void | apply (const TrackingViewMatrix &)
virtual void | apply (const ProjectionMatrix &)
virtual void | apply (const Perspective &)
virtual void | apply (const Orthographic &)
virtual void | apply (const RelativeProjection &)
virtual void | apply (const EllipsoidPerspective &)
virtual void | apply (const FrameStamp &)
Public Member Functions inherited from vsg::Object
| Object (const Object &object, const CopyOp &copyop={})
Object & | operator= (const Object &)
template<class T >
T * | cast ()
template<class T >
const T * | cast () const
virtual ref_ptr< Object > | clone (const CopyOp &copyop={}) const
virtual void | traverse (Visitor &)
virtual void | traverse (ConstVisitor &) const
virtual void | traverse (RecordTraversal &) const
virtual void | read (Input &input)
virtual void | write (Output &output) const
void | ref () const noexcept
void | unref () const noexcept
void | unref_nodelete () const noexcept
unsigned int | referenceCount () const noexcept
template<typename T >
void | setValue (const std::string &key, const T &value)
void | setValue (const std::string &key, const char *value)
| specialization of setValue to handle passing C strings
template<typename T >
bool | getValue (const std::string &key, T &value) const
| get specified value type, return false if value associated with key is not assigned or is not the correct type
void | setObject (const std::string &key, ref_ptr< Object > object)
| assign an Object associated with key
Object * | getObject (const std::string &key)
| get Object pointer associated with key, return nullptr if no object associated with key has been assigned
const Object * | getObject (const std::string &key) const
| get const Object pointer associated with key, return nullptr if no object associated with key has been assigned
template<class T >
T * | getObject (const std::string &key)
| get object pointer of specified type associated with key, return nullptr if no object associated with key has been assigned
template<class T >
const T * | getObject (const std::string &key) const
| get const object pointer of specified type associated with key, return nullptr if no object associated with key has been assigned
ref_ptr< Object > | getRefObject (const std::string &key)
| get ref_ptr<Object> associated with key, return nullptr if no object associated with key has been assigned
ref_ptr< const Object > | getRefObject (const std::string &key) const
| get ref_ptr<const Object> pointer associated with key, return nullptr if no object associated with key has been assigned
template<class T >
ref_ptr< T > | getRefObject (const std::string &key)
| get ref_ptr<T> of specified type associated with key, return nullptr if no object associated with key has been assigned
template<class T >
const ref_ptr< const T > | getRefObject (const std::string &key) const
| get ref_ptr<const T> of specified type associated with key, return nullptr if no object associated with key has been assigned
void | removeObject (const std::string &key)
| remove meta object or value associated with key
Auxiliary * | getOrCreateAuxiliary ()
Auxiliary * | getAuxiliary ()
const Auxiliary * | getAuxiliary () const

## Public Attributes
bool | suitableForSharing = true
Public Attributes inherited from vsg::ConstVisitor
Mask | traversalMask = MASK_ALL
Mask | overrideMask = MASK_OFF

## Additional Inherited Members
Static Public Member Functions inherited from vsg::Inherit< ConstVisitor, SuitableForSharing >
static ref_ptr< SuitableForSharing > | create (Args &&... args)
static ref_ptr< SuitableForSharing > | create_if (bool flag, Args &&... args)
Static Public Member Functions inherited from vsg::Object
static ref_ptr< Object > | create ()
static ref_ptr< Object > | create_if (bool flag)
static void * | operator new (std::size_t count)
| provide new and delete to enable custom memory management via the vsg::Allocator singleton, using the MEMORY_AFFINTY_OBJECTS
static void | operator delete (void *ptr)
Protected Member Functions inherited from vsg::Object
virtual void | _attemptDelete () const
void | setAuxiliary (Auxiliary *auxiliary)

## Detailed Description

Helper class for deciding whether sharing is permitted for this type - required to avoid circular references If an object is put forward to be shared via the SharedObjects container then it can't contain any references to vsg::Options & associated SharedObjects otherwise a circular reference can be created that prevents all the objects in the circular reference chain from being deleted. Such objects must be prevented from inclusion in the SharedObejcts. An example of a class not suitable is vsg::PagedLOD as it has an options member. If your subclasses are like PagedLOD and might create a circular reference when using with SharedObjects then you should subclass from SuitableForSharing and add support for your class and when instances are found set the suitableForSharing flag to false, and then assign this to the SharedObjects container so that it can make sure it's not treated as suitable for inclusions.

## Member Function Documentation

## ◆ apply() [1/2]

void vsg::SuitableForSharing::apply | ( | const Object & | object | ) |
| overridevirtual

Reimplemented from vsg::ConstVisitor.

## ◆ apply() [2/2]

void vsg::SuitableForSharing::apply | ( | const PagedLOD & | plod | ) |
| overridevirtual

Reimplemented from vsg::ConstVisitor.

The documentation for this class was generated from the following file:

- include/vsg/utils/SharedObjects.h