21 #include "cafChildArrayFieldAccessor.h" 22 #include "cafFieldScriptingCapability.h" 23 #include "cafRpcClient.h" 38 size_t size()
const override 40 getRemoteObjectsIfNecessary();
41 return m_remoteObjects.size();
46 m_client->clearChildObjects( m_field->ownerObject(), m_field->keyword() );
48 std::vector<std::shared_ptr<ObjectHandle>> removedObjects;
49 removedObjects.swap( m_remoteObjects );
52 std::vector<std::shared_ptr<ObjectHandle>> objects()
override 54 getRemoteObjectsIfNecessary();
55 return m_remoteObjects;
58 std::vector<std::shared_ptr<const ObjectHandle>> objects()
const override 60 getRemoteObjectsIfNecessary();
62 std::vector<std::shared_ptr<const ObjectHandle>> constPtrs;
63 for (
auto objectPtr : m_remoteObjects )
65 constPtrs.push_back( objectPtr );
70 std::shared_ptr<ObjectHandle> at(
size_t index )
const override 72 getRemoteObjectsIfNecessary();
74 CAFFA_ASSERT( index < m_remoteObjects.size() );
76 return m_remoteObjects[index];
79 void insert(
size_t index, std::shared_ptr<ObjectHandle> pointer )
override 81 size_t oldSize = m_remoteObjects.size();
82 m_client->insertChildObject( m_field->ownerObject(), m_field->keyword(), index, pointer.get() );
83 m_remoteObjects.insert( m_remoteObjects.begin() + index, pointer );
84 CAFFA_ASSERT( m_remoteObjects.size() == ( oldSize + 1u ) );
87 void push_back( std::shared_ptr<ObjectHandle> pointer )
override { insert( size(), pointer ); }
89 size_t index( std::shared_ptr<const ObjectHandle> pointer )
const override 91 getRemoteObjectsIfNecessary();
92 for (
size_t i = 0; i < m_remoteObjects.size(); ++i )
94 if ( pointer.get() == m_remoteObjects[i].get() )
99 return std::numeric_limits<size_t>::max();
101 void remove(
size_t index )
override 103 CAFFA_ASSERT( index < size() );
104 m_remoteObjects.erase( m_remoteObjects.begin() + index );
105 m_client->removeChildObject( m_field->ownerObject(), m_field->keyword(), index );
111 return scriptability && scriptability->isReadable();
117 return scriptability && scriptability->isWritable();
122 void getRemoteObjectsIfNecessary()
const 124 m_remoteObjects = m_client->getChildObjects( m_field->ownerObject(), m_field->keyword() );
130 mutable std::vector<std::shared_ptr<ObjectHandle>> m_remoteObjects;
Definition: cafRpcChildArrayFieldAccessor.h:29
Definition: cafRpcClient.h:37
bool hasSetter() const override
Definition: cafRpcChildArrayFieldAccessor.h:114
Definition: cafFieldScriptingCapability.h:49
bool hasGetter() const override
Definition: cafRpcChildArrayFieldAccessor.h:108
Base class for all fields, making it possible to handle them generically.
Definition: cafFieldHandle.h:19
Definition: cafChildArrayFieldAccessor.h:29
Definition: cafRestAppService.h:28