3 #include "cafObjectAttribute.h"
13 class FieldCapability;
28 std::string keyword()
const override {
return m_keyword; }
31 virtual std::string dataType()
const = 0;
34 void addCapability( std::unique_ptr<FieldCapability> capability );
36 template <
typename CapabilityType>
37 CapabilityType* capability();
38 template <
typename CapabilityType>
39 const CapabilityType* capability()
const;
54 bool isInitialized()
const {
return m_ownerObject !=
nullptr; }
56 std::list<FieldCapability*> capabilities();
63 void setKeyword(
const std::string& keyword );
66 std::string m_keyword;
68 std::list<std::unique_ptr<FieldCapability>> m_capabilities;
74 template <
typename CapabilityType>
75 CapabilityType* FieldHandle::capability()
77 for (
auto& capabilityPtr : m_capabilities )
79 CapabilityType* capability =
dynamic_cast<CapabilityType*
>( capabilityPtr.get() );
80 if ( capability )
return capability;
88 template <
typename CapabilityType>
89 const CapabilityType* FieldHandle::capability()
const
91 for (
const auto& capabilityPtr : m_capabilities )
93 const CapabilityType* capability =
dynamic_cast<const CapabilityType*
>( capabilityPtr.get() );
94 if ( capability )
return capability;
Definition: cafVisitor.h:43
Base class for all fields, making it possible to handle them generically.
Definition: cafFieldHandle.h:23
virtual void accept(Inspector *visitor) const
Definition: cafFieldHandle.cpp:67
Definition: cafVisitor.h:32
Definition: cafObjectAttribute.h:27
Definition: cafObjectHandle.h:55
Definition: cafSignal.h:63
Main Caffa namespace.
Definition: __init__.py:1