21 #include "cafChildFieldHandle.h"
22 #include "cafVisitor.h"
33 template <
typename ObjectType = ObjectHandle>
37 using Selector = std::function<bool(
const ObjectType* )>;
40 : m_selector( selector )
46 CAFFA_ASSERT(
object );
47 CAFFA_TRACE(
"Visiting OBJECT " << object->uuid() );
48 auto typedObject =
dynamic_cast<const ObjectType*
>( object );
49 if ( typedObject && ( !m_selector || m_selector( typedObject ) ) )
51 m_objects.push_back( typedObject );
54 for (
auto field : object->
fields() )
56 CAFFA_TRACE(
"Testing field: " << field->keyword() );
57 field->accept(
this );
61 void visitField(
const FieldHandle* field )
override {}
65 for (
auto object : childField->childObjects() )
67 object->accept(
this );
71 const std::list<const ObjectType*>& objects()
const {
return m_objects; }
75 std::list<const ObjectType*> m_objects;
81 template <
typename ObjectType = ObjectHandle>
85 using Selector = std::function<bool(
const ObjectType* )>;
88 : m_selector( selector )
94 auto typedObject =
dynamic_cast<ObjectType*
>( object );
95 if ( typedObject && ( !m_selector || m_selector( typedObject ) ) )
97 m_objects.push_back( typedObject );
100 for (
auto field : object->
fields() )
102 field->accept(
this );
110 for (
auto object : childField->childObjects() )
112 object->accept(
this );
116 const std::list<ObjectType*>& objects() {
return m_objects; }
120 std::list<ObjectType*> m_objects;
Definition: cafChildFieldHandle.h:35
Definition: cafObjectCollector.h:35
Definition: cafVisitor.h:43
Base class for all fields, making it possible to handle them generically.
Definition: cafFieldHandle.h:23
Definition: cafVisitor.h:32
Definition: cafObjectCollector.h:83
Definition: cafObjectHandle.h:55
std::list< FieldHandle * > fields() const
Definition: cafObjectHandle.cpp:51
Main Caffa namespace.
Definition: __init__.py:1