The Vish Visualization Shell 0.3
Vish
Public Types | Public Member Functions | Static Public Member Functions | Protected Member Functions | List of all members
MemCore::DynPtr< Object, ObjectBase > Class Template Reference

Encapsuled pointer class for pointers pointing to derived classes. More...

#include <elementary/memcore/DynPtr.hpp>

Inheritance diagram for MemCore::DynPtr< Object, ObjectBase >:
MemCore::WeakPtr< Data, Data > MemCore::WeakPtr< A, A > MemCore::WeakPtr< Base, Base > MemCore::WeakPtr< RemoteVish::Communicator > MemCore::WeakPtr< DependentObject, DependentObject > MemCore::WeakPtr< KDTree< N, T >, KDTree< N, T > > MemCore::WeakPtr< MultiRange< T >, MultiRange< T > > MemCore::WeakPtr< Node, Node > MemCore::WeakPtr< OcTree< T >, OcTree< T > > MemCore::WeakPtr< QuadTree< T >, QuadTree< T > > MemCore::WeakPtr< Int, Int > MemCore::WeakPtr< CacheBase, CacheBase > MemCore::WeakPtr< CacheMap, CacheMap > MemCore::WeakPtr< Cacheable, Cacheable > MemCore::WeakPtr< ChunkBase, ChunkBase > MemCore::WeakPtr< CrashHandler, CrashHandler > MemCore::WeakPtr< Creature, Creature > MemCore::WeakPtr< InterfaceBase, InterfaceBase > MemCore::WeakPtr< InterfaceIterationParameter, InterfaceIterationParameter > MemCore::WeakPtr< ReferenceCounted, ReferenceCounted > MemCore::WeakPtr< Lexicon, Lexicon > MemCore::WeakPtr< LoaderBase, LoaderBase > MemCore::WeakPtr< LoaderParameters, LoaderParameters > MemCore::WeakPtr< LoaderRequest, LoaderRequest > MemCore::WeakPtr< Notifier, Notifier > MemCore::WeakPtr< Creature > MemCore::WeakPtr< Object, StrongPtr< Object >::ObjectBase_t > MemCore::WeakPtr< RefCountable, StrongPtr< RefCountable >::ObjectBase_t > MemCore::WeakPtr< Provenance, Provenance > MemCore::WeakPtr< Value, ObjectBase > MemCore::WeakPtr< Result, Result > MemCore::WeakPtr< Cluster, Cluster > MemCore::WeakPtr< SaveInterfaceCreatorBase, SaveInterfaceCreatorBase > MemCore::WeakPtr< ObjectBase, ObjectBase > MemCore::WeakPtr< StringList, StringList > MemCore::WeakPtr< VerboseCatcher, VerboseCatcher > MemCore::WeakPtr< Value > MemCore::WeakPtr< ::Data, ObjectBase > MemCore::WeakPtr< Tentacle, Tentacle > MemCore::WeakPtr< Anemone, ObjectBase > MemCore::WeakPtr< ApplicationQuitter, ApplicationQuitter > MemCore::WeakPtr< Colormap, Colormap > MemCore::WeakPtr< DeferredRenderer, DeferredRenderer > MemCore::WeakPtr< Expectation, Expectation > MemCore::WeakPtr< Framebuffer, Framebuffer > MemCore::WeakPtr< GLContextChecker, GLContextChecker > MemCore::WeakPtr< GLFontManager, GLFontManager > MemCore::WeakPtr< ImageTileProcessor, ImageTileProcessor > MemCore::WeakPtr< Interactor, Interactor > MemCore::WeakPtr< MultipleStringSelection, MultipleStringSelection > MemCore::WeakPtr< NamedRenderExceptions, NamedRenderExceptions > MemCore::WeakPtr< VObject > MemCore::WeakPtr< PickList, PickList > MemCore::WeakPtr< PixelBuffer, PixelBuffer > MemCore::WeakPtr< Updater, Updater > MemCore::WeakPtr< LightSource, LightSource > MemCore::WeakPtr< LightSource > MemCore::WeakPtr< MaxRequestExecutor, MaxRequestExecutor > MemCore::WeakPtr< Seagrass, Seagrass > MemCore::WeakPtr< Shader, Shader > MemCore::WeakPtr< ShaderInjectorBase, ShaderInjectorBase > MemCore::WeakPtr< Task, Task > MemCore::WeakPtr< Functor, Functor > MemCore::WeakPtr< TypeSpecificGLCacheFactory, TypeSpecificGLCacheFactory > MemCore::WeakPtr< Wizt::VCreationPreferences, ObjectBase > MemCore::WeakPtr< TypedSlotCreator, TypedSlotCreator > MemCore::WeakPtr< VAcceptInfo, VAcceptInfo > MemCore::WeakPtr< VAcceptList, VAcceptList > MemCore::WeakPtr< VAction, VAction > MemCore::WeakPtr< VActionNotifier, VActionNotifier > MemCore::WeakPtr< Renderer, Renderer > MemCore::WeakPtr< VCameraSet, VCameraSet > MemCore::WeakPtr< VConnectionValidator, VConnectionValidator > MemCore::WeakPtr< Addendum, Addendum > MemCore::WeakPtr< VCreatorMap, VCreatorMap > MemCore::WeakPtr< Grab, Grab > MemCore::WeakPtr< MovieManager, MovieManager > MemCore::WeakPtr< OutputFormat, OutputFormat > MemCore::WeakPtr< InteractionGrabber, InteractionGrabber > MemCore::WeakPtr< VLogger, VLogger > MemCore::WeakPtr< VManagedObjectBase, VManagedObjectBase > MemCore::WeakPtr< VModule, VModule > MemCore::WeakPtr< VOperatorCache< OperatorData >, VOperatorCache< OperatorData > > MemCore::WeakPtr< VParameterConnectionConstraint, VParameterConnectionConstraint > MemCore::WeakPtr< ClassDerivedFromVManagedObjectBase, VManagedObjectBase > MemCore::WeakPtr< Font, Font > MemCore::WeakPtr< ModelViewMatrixState, ModelViewMatrixState > MemCore::WeakPtr< VRenderInterruptor, VRenderInterruptor > MemCore::WeakPtr< VRenderPrecision, VRenderPrecision > MemCore::WeakPtr< ID, ID > MemCore::WeakPtr< VScriptFunctor, VScriptFunctor > MemCore::WeakPtr< VScriptParameters, VScriptParameters > MemCore::WeakPtr< VScriptTypedValue, VScriptTypedValue > MemCore::WeakPtr< VScriptValue, VScriptValue > MemCore::WeakPtr< VSlot, VSlot > MemCore::WeakPtr< Connector, Connector > MemCore::WeakPtr< Receiver, Receiver > MemCore::WeakPtr< State, State > MemCore::WeakPtr< ValuePool > MemCore::WeakPtr< VTaskMessage, VTaskMessage > MemCore::WeakPtr< VUndoAction, VUndoAction > MemCore::WeakPtr< VUrlSystemHandler, VUrlSystemHandler > MemCore::WeakPtr< SocketReceivers_t, SocketReceivers_t > MemCore::WeakPtr< VValueBase, VValueBase > MemCore::WeakPtr< VValueCreator, VValueCreator > MemCore::WeakPtr< VSlot > MemCore::WeakPtr< VValueBase, ObjectBase > MemCore::WeakPtr< ValueNotifier, ValueNotifier > MemCore::WeakPtr< ValueNotifierList, ValueNotifierList > MemCore::WeakPtr< ValueNotifier > MemCore::WeakPtr< ValuePool, ValuePool > MemCore::WeakPtr< ValuePoolCreator, ValuePoolCreator > MemCore::WeakPtr< ValuePoolProvider, ValuePoolProvider > MemCore::WeakPtr< ValueSet, ValueSet > MemCore::WeakPtr< FrameCompletion, FrameCompletion > MemCore::WeakPtr< FrameGrabber, FrameGrabber > MemCore::WeakPtr< VishSaver, VishSaver > MemCore::WeakPtr< CreatorBase, CreatorBase > MemCore::WeakPtr< XBase, XBase > MemCore::WeakPtr< Eagle::CameraPath > MemCore::WeakPtr< StatusNotifier, ObjectBase > MemCore::WeakPtr< LeftNode_t, ObjectBase > MemCore::WeakPtr< RightNode_t, ObjectBase > MemCore::WeakPtr< Eagle::TypedNode, ObjectBase > MemCore::WeakPtr< Eagle::KDTree< N, T >, ObjectBase > MemCore::WeakPtr< Eagle::Node, ObjectBase > MemCore::WeakPtr< Node, ObjectBase > MemCore::WeakPtr< Left_t, ObjectBase > MemCore::WeakPtr< Middle_t, ObjectBase > MemCore::WeakPtr< Right_t, ObjectBase > MemCore::WeakPtr< Source_t, ObjectBase > MemCore::WeakPtr< MemCore::Chunk< uint32_t >, ObjectBase > MemCore::WeakPtr< MemCore::Chunk< uint64_t >, ObjectBase > MemCore::WeakPtr< MemCore::Chunk< Eagle::Vec3Packed >, ObjectBase > MemCore::WeakPtr< Eagle::BoundingBall, ObjectBase > MemCore::WeakPtr< GetInput::GetData, ObjectBase > MemCore::WeakPtr< MemCore::ChunkBase, ObjectBase > MemCore::WeakPtr< MemCore::Cacheable, ObjectBase > MemCore::WeakPtr< MemCore::Creature > MemCore::WeakPtr< MemCore::Cache, MemCore::CacheBase > MemCore::WeakPtr< MemCore::CacheQueue, ObjectBase > MemCore::WeakPtr< RefType, ObjectBase > MemCore::WeakPtr< Cache, CacheBase > MemCore::WeakPtr< MemCore::Provenance, ObjectBase > MemCore::WeakPtr< MemCore::Cache, ObjectBase > MemCore::WeakPtr< MemCore::Lexicon, MemCore::Lexicon > MemCore::WeakPtr< X, ObjectBase > MemCore::WeakPtr< Notifier > MemCore::WeakPtr< MemCore::Provenance, MemCore::Provenance > MemCore::WeakPtr< Object, Object > MemCore::WeakPtr< MemCore::Result::Cluster > MemCore::WeakPtr< ReferenceCounted > MemCore::WeakPtr< MemCore::VerboseCatcher, MemCore::VerboseCatcher > MemCore::WeakPtr< MyPreciousDataClass, ObjectBase > MemCore::WeakPtr< Wizt::VObject, ObjectBase > MemCore::WeakPtr< Wizt::VAcceptList, ObjectBase > MemCore::WeakPtr< Tentacle, ObjectBase > MemCore::WeakPtr< Wizt::Seagrass > MemCore::WeakPtr< Wizt::AnemoneCreatorBase, ObjectBase > MemCore::WeakPtr< Wizt::AnemoneCreator<>, ObjectBase > MemCore::WeakPtr< Wizt::Interactor, ObjectBase > MemCore::WeakPtr< Wizt::AnemoneBasicCreator, ObjectBase > MemCore::WeakPtr< MemCore::TypedChunk< Eagle::PhysicalSpace::point >, ObjectBase > MemCore::WeakPtr< Wizt::Colormap > MemCore::WeakPtr< Wizt::ScriptletCreator, ObjectBase > MemCore::WeakPtr< Wizt::Framebuffer, ObjectBase > MemCore::WeakPtr< Wizt::DisplayList, ObjectBase > MemCore::WeakPtr< Wizt::VRenderPrecision, ObjectBase > MemCore::WeakPtr< Wizt::DisplayListCreator, ObjectBase > MemCore::WeakPtr< MemCore::Cache > MemCore::WeakPtr< Wizt::VertexShader, ObjectBase > MemCore::WeakPtr< Wizt::GeometryShader, ObjectBase > MemCore::WeakPtr< Wizt::FragmentShader, ObjectBase > MemCore::WeakPtr< Wizt::ComputeShader, ObjectBase > MemCore::WeakPtr< Wizt::Viewer > MemCore::WeakPtr< Wizt::MessageRetriever > MemCore::WeakPtr< GetBody, ObjectBase > MemCore::WeakPtr< Wizt::GlossyTexture, ObjectBase > MemCore::WeakPtr< Wizt::HTTPServer::AcceptConnections, ObjectBase > MemCore::WeakPtr< Wizt::HTTPServer > MemCore::WeakPtr< Wizt::IndexBuffer > MemCore::WeakPtr< Wizt::VRenderContext::Font, ObjectBase > MemCore::WeakPtr< Wizt::GLMultisampleTexture2D, ObjectBase > MemCore::WeakPtr< Wizt::ValuePoolProvider, ObjectBase > MemCore::WeakPtr< Wizt::GLTextureTentacle, ObjectBase > MemCore::WeakPtr< Wizt::AnemoneBasicCreator > MemCore::WeakPtr< Wizt::RenderAble > MemCore::WeakPtr< MemCore::Chunk< Eagle::DomainVector >, ObjectBase > MemCore::WeakPtr< Wizt::RenderBasin::Painter, ObjectBase > MemCore::WeakPtr< Wizt::VRenderObject > MemCore::WeakPtr< Wizt::RemoteViewer::AcceptConnections, ObjectBase > MemCore::WeakPtr< Wizt::RemoteViewer > MemCore::WeakPtr< RemoteLens, ObjectBase > MemCore::WeakPtr< MemCore::Chunk< float >, ObjectBase > MemCore::WeakPtr< Wizt::RemoteVish::MyActionNotifier, ObjectBase > MemCore::WeakPtr< Wizt::RemoteVish::AcceptConnections, ObjectBase > MemCore::WeakPtr< Wizt::RemoteVish > MemCore::WeakPtr< Wizt::RenderBasin::Program > MemCore::WeakPtr< Anemone::Tentacle > MemCore::WeakPtr< Wizt::RenderBasin::RenderParameter::Updater > MemCore::WeakPtr< Object > MemCore::WeakPtr< Wizt::RequestExecutor::MaxRequestExecutor, ObjectBase > MemCore::WeakPtr< Wizt::Anemone > MemCore::WeakPtr< Wizt::PixelBuffer, ObjectBase > MemCore::WeakPtr< Wizt::Interactor > MemCore::WeakPtr< Wizt::VSlot > MemCore::WeakPtr< Wizt::ShaderLightSource, Wizt::VManagedObjectBase > MemCore::WeakPtr< Wizt::SSBOManager, ObjectBase > MemCore::WeakPtr< Wizt::TextureBase, ObjectBase > MemCore::WeakPtr< Wizt::TransformOperator::Functor, ObjectBase > MemCore::WeakPtr< Wizt::UniformBuffer > MemCore::WeakPtr< MemCore::InterfaceBase, ObjectBase > MemCore::WeakPtr< Wizt::VAcceptInfo, ObjectBase > MemCore::WeakPtr< Wizt::VCreatorBase > MemCore::WeakPtr< Wizt::VBO::Renderer, ObjectBase > MemCore::WeakPtr< Wizt::VBO, ObjectBase > MemCore::WeakPtr< Wizt::VTypedValueBase > MemCore::WeakPtr< VConnectionValidator > MemCore::WeakPtr< Wizt::ValuePool, ObjectBase > MemCore::WeakPtr< Wizt::VContext::Addendum, ObjectBase > MemCore::WeakPtr< Wizt::VValueParameter< Wizt::VThreadManager >, ObjectBase > MemCore::WeakPtr< Wizt::VSlot, ObjectBase > MemCore::WeakPtr< Wizt::VCreatorBase, Wizt::VManagedObjectBase > MemCore::WeakPtr< Wizt::VObject > MemCore::WeakPtr< Wizt::VFrameBuffer::Renderer, ObjectBase > MemCore::WeakPtr< Wizt::ImageTileProcessor, ObjectBase > MemCore::WeakPtr< Wizt::VRenderInterruptor > MemCore::WeakPtr< Wizt::GLCache, ObjectBase > MemCore::WeakPtr< Framebuffer, ObjectBase > MemCore::WeakPtr< GLCache > MemCore::WeakPtr< MemCore::StringList, ObjectBase > MemCore::WeakPtr< ApplicationQuitter > MemCore::WeakPtr< VNutrition > MemCore::WeakPtr< Wizt::VModule, ObjectBase > MemCore::WeakPtr< Wizt::VParameter > MemCore::WeakPtr< Wizt::VInteractionEvent::InteractionGrabber, ObjectBase > MemCore::WeakPtr< VCreatorBase, VManagedObjectBase > MemCore::WeakPtr< VSlotContainer > MemCore::WeakPtr< Wizt::ValueSet, ObjectBase > MemCore::WeakPtr< VSlotContainer, VManagedObjectBase > MemCore::WeakPtr< Wizt::VValueBase, ObjectBase > MemCore::WeakPtr< Wizt::ValueActionBase, ObjectBase > MemCore::WeakPtr< VManagedObject > MemCore::WeakPtr< Wizt::VSocketAction::Receiver > MemCore::WeakPtr< Wizt::Task, ObjectBase > MemCore::WeakPtr< Wizt::VRequest::ID, ObjectBase > MemCore::WeakPtr< Wizt::VScalarFunctor::Functor, ObjectBase > MemCore::WeakPtr< FunctorObject > MemCore::WeakPtr< Wizt::VScriptParameters, ObjectBase > MemCore::WeakPtr< VScriptValue, ObjectBase > MemCore::WeakPtr< Wizt::VParameter, ObjectBase > MemCore::WeakPtr< Wizt::ValueNotifier, ObjectBase > MemCore::WeakPtr< Wizt::Expectation, ObjectBase > MemCore::WeakPtr< Wizt::VStreamLogger::Logger, ObjectBase > MemCore::WeakPtr< Wizt::VStreamLogger > MemCore::WeakPtr< Wizt::VRequest::ID > MemCore::WeakPtr< Wizt::VUrlSystemHandler, Wizt::VUrlSystemHandler > MemCore::WeakPtr< SocketReceivers_t, ObjectBase > MemCore::WeakPtr< ActionReceiver > MemCore::WeakPtr< Wizt::VUndoStack, ObjectBase > MemCore::WeakPtr< VValueBase > MemCore::WeakPtr< Wizt::ValuePool > MemCore::WeakPtr< Wizt::NamedRenderExceptions, ObjectBase > MemCore::WeakPtr< FrameCompletion > MemCore::WeakPtr< Wizt::VRenderInterruptor, ObjectBase > MemCore::WeakPtr< Wizt::VInputCreatorBase, ObjectBase > MemCore::WeakPtr< Wizt::VCreatorBase, ObjectBase > MemCore::WeakPtr< Wizt::VScriptValue, ObjectBase > MemCore::WeakPtr< Y::B > MemCore::WeakPtr< Eagle::TypedNode< Eagle::PhysicalSpace::bivector >, ObjectBase > MemCore::WeakPtr< Eagle::TypedNode< Eagle::PhysicalSpace::rotor >, ObjectBase > MemCore::WeakPtr< Object, ObjectBase >

Public Types

typedef Object object_t
 Type of the associated object.
 

Public Member Functions

const DynPtrgetDynPtr () const noexcept
 Convenience type cast to dynamic pointer class.
 
const type_info & getType () const noexcept
 Return type info of associated object, typeid(NullPtr) or typeid(void) if none.
 
bool isAssignable (const DynPtr< ObjectBase, ObjectBase > &Other) const noexcept
 Check whether a given pointer to a base class may be assigned to a pointer of the derived class.
 

Static Public Member Functions

static const DynPtrgetNullPtr () noexcept
 Associated static NullPtr - avoids creation of a temporary object when a reference is needed.
 

Protected Member Functions

template<class AnyObject >
 DynPtr (const DynPtr< AnyObject, ObjectBase > &Other) noexcept
 Implicit type conversion within the same class hierarchy Any pointer.
 
 DynPtr (const std::nullptr_t &) noexcept
 Assign from nullptr.
 

Validity Operators

 operator void * () const noexcept
 Check if the pointer is valid.
 
bool operator! () const noexcept
 Check if the pointer is invalid.
 
void speak (const char *s, const char *prefix="") const noexcept
 Print some debug messages to the console.
 
void Speak (const char *s, const char *prefix="") const
 Verbose information printing for this pointer.
 

Detailed Description

template<class Object, class ObjectBase>
class MemCore::DynPtr< Object, ObjectBase >

Encapsuled pointer class for pointers pointing to derived classes.

It performs a native dynamic_cast<> on assignment and construction and caches the result.

Member Function Documentation

◆ isAssignable()

template<class Object , class ObjectBase >
bool MemCore::DynPtr< Object, ObjectBase >::isAssignable ( const DynPtr< ObjectBase, ObjectBase > &  Other) const
inlinenoexcept

Check whether a given pointer to a base class may be assigned to a pointer of the derived class.

This function doesn't need to create a new pointer and is thus little lighter than pointer assignment, it basically just involves a dynamic_cast.

◆ operator void *()

template<class Object , class ObjectBase >
MemCore::DynPtr< Object, ObjectBase >::operator void * ( ) const
inlinenoexcept

Check if the pointer is valid.

Note that the referred object might still exist, but not be of the appropriate type.

◆ operator!()

template<class Object , class ObjectBase >
bool MemCore::DynPtr< Object, ObjectBase >::operator! ( ) const
inlinenoexcept

Check if the pointer is invalid.

Note that the referred object might still exist, but not be of the appropriate type.