@startuml class PdmObjectHandle { name() fields(); referencingFields(); parentField(); template capability() void addCapability() --- std::vector m_fields; std::vector m_capabilities; } PdmObjectHandle --* "n" PdmObjectCapability class PdmUiItem{ } PdmObjectCapability <|- PdmUiObjectHandle PdmUiItem <|- PdmUiObjectHandle class PdmUiObjectHandle { uiOrdering() = ?; uiTreeOrdering() = ? ; editorAttribute() = ?; objectEditorAttribute() = ? ; userDescriptionField(); objectToggleField() calculateValueOptions() = ?; fieldChangedByUi() = 0; --- m_descriptionField; m_objectToggleField; } PdmUiObjectHandle <|-- PdmObject PdmObjectHandle <|-- PdmObject PdmXmlObjectHandle <|-- PdmObject class PdmXmlObjectHandle { classKeyword() = 0; readFields (); writeFields(); } PdmObjectCapability <|- PdmXmlObjectHandle package FieldHandle{ PdmObjectHandle --> "n" PdmFieldHandle class PdmFieldHandle{ name() setOwnerObject(); ownerObject(); hasChildObjects() = 0; childObjects( ) = 0; --- std::vector m_attributes; } PdmFieldHandle --* "n" PdmFieldCapability class PdmUiFieldHandle{ uiValue() setValueFromUi() valueOptions( ) = 0; } PdmFieldCapability <|- PdmUiFieldHandle PdmUiItem <|- PdmUiFieldHandle class PdmXmlFieldHandle { setKeyword(); keyword(); readFieldData() = 0; writeFieldData() = 0; isIOReadable() isIOWritable() setIOWritable() setIOReadable() --- bool m_isReadable; bool m_isWritable; } PdmFieldCapability <|- PdmXmlFieldHandle } package ToDoFields{ class "InternalPdmXmlFieldCapability>"{ } } package SplittedFields{ PdmFieldHandle <|--- "PdmField" "PdmField" --> "InternalPdmUiFieldCapability" "PdmField" --> "InternalPdmXmlFieldCapability" PdmFieldHandle <|--- "PdmProxyField" "PdmProxyField" --> "InternalPdmUiFieldCapability" "PdmProxyField" --> "InternalPdmXmlFieldCapability" PdmUiFieldHandle <|--- "InternalPdmUiFieldCapability" PdmXmlFieldHandle <|--- "InternalPdmXmlFieldCapability" PdmFieldHandle <|--- "PdmPtrField" "PdmPtrField" --> "InternalPdmUiFieldCapability" "PdmPtrField" --> "InternalPdmXmlFieldCapability" "PdmPtrField" ..> "Todo" "InternalPdmXmlFieldCapability>" PdmFieldHandle <|--- "PdmChildField" "PdmChildField"--> "InternalPdmUiFieldCapability>" "PdmChildField"--> "InternalPdmXmlFieldCapability>" PdmFieldHandle <|--- "PdmChildArrayField" "PdmChildArrayField"--> "InternalPdmUiFieldCapability>" "PdmChildArrayField"--> "InternalPdmXmlFieldCapability>" } package ToDoFields{ PdmFieldHandle <|-- "PdmProxyPtrField" "PdmProxyPtrField" --> "InternalPdmUiFieldCapability" "PdmProxyPtrField" ..> "Todo" "InternalPdmXmlFieldCapability>" PdmFieldHandle <|-- "PdmProxyChildField" "PdmProxyChildField"--> "InternalPdmUiFieldCapability>" "PdmProxyChildField"--> "InternalPdmXmlFieldCapability>" PdmFieldHandle <|-- "PdmProxyChildArrayField" "PdmProxyChildArrayField"--> "InternalPdmUiFieldCapability>" "PdmProxyChildArrayField"--> "InternalPdmXmlFieldCapability>" } @enduml