Caffa  1.1.0
C++ Application Framework for Embedded Systems with introspection
Public Types | Public Member Functions | Friends | List of all members
caffa::ChildArrayField< DataTypePtr > Class Template Reference

Field class to handle a collection of Object derived pointers The ChildArrayField will take over ownership of any object assigned to it. More...

#include <cafChildArrayField.h>

Inheritance diagram for caffa::ChildArrayField< DataTypePtr >:
Inheritance graph
[legend]
Collaboration diagram for caffa::ChildArrayField< DataTypePtr >:
Collaboration graph
[legend]

Public Types

using DataType = typename std::remove_pointer< DataTypePtr >::type
 
using Ptr = std::shared_ptr< DataType >
 
using ConstPtr = std::shared_ptr< const DataType >
 
using FieldDataType = DataTypePtr
 
using DataAccessor = ChildArrayFieldAccessor
 
using DirectStorageAccessor = ChildArrayFieldDirectStorageAccessor
 

Public Member Functions

 ~ChildArrayField () override
 Implementation of ChildArrayField<>
 
 operator std::vector< std::shared_ptr< DataType >> ()
 
 operator std::vector< std::shared_ptr< const DataType >> () const
 
size_t size () const override
 Get the number of child objects. More...
 
void clear () override
 Clears the container.
 
ObjectHandle::Ptr at (size_t index) override
 Get a raw pointer to the object at a particular index. More...
 
std::vector< std::shared_ptr< DataType > > objects ()
 
std::vector< std::shared_ptr< const DataType > > objects () const
 
void setObjects (std::vector< std::shared_ptr< DataType >> &objects)
 Assign objects to the field, replacing the current child objects.
 
std::shared_ptr< DataType > operator[] (size_t index) const
 
void push_back (std::shared_ptr< DataType > pointer)
 Assign a shared pointer.
 
void push_back_obj (ObjectHandle::Ptr obj) override
 Assign a shared pointer.
 
void insert (size_t index, std::shared_ptr< DataType > pointer)
 
void insertAt (size_t index, ObjectHandle::Ptr obj) override
 Insert an object at a particular index. Ownership will be taken. More...
 
void erase (size_t index) override
 Removes the pointer at index from the container and deletes the object pointed to.
 
std::vector< ObjectHandle::Ptr > childObjects () override
 
std::vector< ObjectHandle::ConstPtr > childObjects () const override
 
void removeChildObject (ObjectHandle::ConstPtr object)
 Removes all instances of object pointer from the container without deleting the object.
 
std::string dataType () const override
 
void setAccessor (std::unique_ptr< ChildArrayFieldAccessor > accessor) override
 Set a new accessor. More...
 
virtual std::string childClassKeyword () const override
 Get the class keyword of the contained child(ren)
 
- Public Member Functions inherited from caffa::ChildArrayFieldHandle
bool empty () const
 Check if the child array field is empty. More...
 
- Public Member Functions inherited from caffa::ChildFieldBaseHandle
void accept (Inspector *visitor) const override
 
void accept (Editor *visitor) override
 
- Public Member Functions inherited from caffa::FieldHandle
std::string keyword () const override
 
ObjectHandleownerObject ()
 
void addCapability (std::unique_ptr< FieldCapability > capability)
 
template<typename CapabilityType >
CapabilityType * capability ()
 
template<typename CapabilityType >
const CapabilityType * capability () const
 
- Public Member Functions inherited from caffa::SignalEmitter
void addEmittedSignal (AbstractSignal *signalToAdd) const
 
std::list< AbstractSignal * > emittedSignals () const
 

Friends

class FieldJsonCap< ChildArrayField< DataType * > >
 

Additional Inherited Members

- Protected Member Functions inherited from caffa::FieldHandle
bool isInitialized () const
 
std::list< FieldCapability * > capabilities ()
 

Detailed Description

template<typename DataTypePtr>
class caffa::ChildArrayField< DataTypePtr >

Field class to handle a collection of Object derived pointers The ChildArrayField will take over ownership of any object assigned to it.

Member Function Documentation

◆ at()

template<typename DataTypePtr >
requires is_pointer< DataTypePtr > ObjectHandle::Ptr caffa::ChildArrayField< DataTypePtr >::at ( size_t  index)
overridevirtual

Get a raw pointer to the object at a particular index.

Parameters
indexThe index to look up
Returns
A raw pointer to the Caffa object.

Implements caffa::ChildArrayFieldHandle.

◆ insert()

template<typename DataTypePtr >
requires is_pointer< DataTypePtr > void caffa::ChildArrayField< DataTypePtr >::insert ( size_t  index,
std::shared_ptr< DataType >  pointer 
)

Insert pointer at position index, pushing the value previously at that position and all the preceding values backwards

◆ insertAt()

template<typename DataTypePtr >
requires is_pointer< DataTypePtr > void caffa::ChildArrayField< DataTypePtr >::insertAt ( size_t  index,
ObjectHandle::Ptr  obj 
)
overridevirtual

Insert an object at a particular index. Ownership will be taken.

Parameters
indexthe index to insert at
objA unique pointer to the object.

Implements caffa::ChildArrayFieldHandle.

◆ setAccessor()

template<typename DataTypePtr >
void caffa::ChildArrayField< DataTypePtr >::setAccessor ( std::unique_ptr< ChildArrayFieldAccessor accessor)
inlineoverridevirtual

Set a new accessor.

Parameters
accessor

Implements caffa::ChildArrayFieldHandle.

◆ size()

template<typename DataTypePtr >
size_t caffa::ChildArrayField< DataTypePtr >::size ( ) const
inlineoverridevirtual

Get the number of child objects.

Returns
size_t

Implements caffa::ChildArrayFieldHandle.


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