ICF 3.1.1.10
Technical documentation of ICF Libraries
CCompositeComponentStaticInfo.h
Go to the documentation of this file.
1/********************************************************************************
2** This file is part of the ICF Framework. Copyright (C) Witold Gantzke & Kirill Lepskiy
3** ICF Framework may be used under the terms of the LGPL License v. 2.1 by the Free Software Foundation.
4********************************************************************************/
5
6#pragma once
7
8
9// Qt includes
10#include <QtCore/QMap>
11
12// ICF includes
14#include <icomp/IRegistry.h>
16
17
18namespace icomp
19{
20
21
22class IComponentEnvironmentManager;
23class IRegistriesManager;
24
25
27{
28public:
30 const IRegistry& registry,
31 const IComponentEnvironmentManager& manager,
32 const IComponentStaticInfo* parentPtr = nullptr);
33
34 const IRegistry& GetRegistry() const;
35
36 // reimplemented (icomp::IRealComponentStaticInfo)
37 std::unique_ptr<IComponent> CreateComponent() const override;
38
39 // reimplemented (icomp::IComponentStaticInfo)
41 const IComponentStaticInfo* GetEmbeddedComponentInfo(const QByteArray& embeddedId) const override;
42 const QString& GetDescription() const override;
43 const QString& GetKeywords() const override;
44
45protected:
50 const IRegistry& registry,
51 const QByteArray& elementId,
52 const IRegistriesManager& manager) const;
53
55 {
56 public:
58 const IAttributeStaticInfo* slavePtr,
59 const iser::IObject* defaultValuePtr);
60
61 // reimplemented (icomp::IAttributeStaticInfo)
62 IElementStaticInfo::Ids GetRelatedMetaIds(MetaGroupId metaGroupId, int flags, int flagsMask) const override;
63
64 // reimplemented (iattr::IAttributeMetaInfo)
65 QString GetAttributeDescription() const override;
66 const iser::IObject* GetAttributeDefaultValue() const override;
67 QByteArray GetAttributeTypeId() const override;
68 int GetAttributeFlags() const override;
69
70 private:
71 const IAttributeStaticInfo& m_slave;
72 const iser::IObject* m_defaultValuePtr;
73 };
74
75private:
76 typedef std::unique_ptr<IAttributeStaticInfo> AttrMetaInfoPtr;
77 typedef std::map<const IAttributeStaticInfo*, AttrMetaInfoPtr> AttrReplacers;
78 AttrReplacers m_attrReplacers;
79
80 typedef std::unique_ptr<CCompositeComponentStaticInfo> ComponentInfoPtr;
81 typedef std::map<QByteArray, ComponentInfoPtr> EmbeddedComponentInfos;
82 mutable EmbeddedComponentInfos m_embeddedComponentInfos;
83
84 QString m_description;
85 QString m_keywords;
86
87 const IRegistry& m_registry;
88};
89
90
91} // namespace icomp
92
93
Standard implementation of static info for base component classes.
const iser::IObject * GetAttributeDefaultValue() const override
Get default attribute value.
int GetAttributeFlags() const override
Get flags of this attribute.
QString GetAttributeDescription() const override
Get description of this attribute.
IElementStaticInfo::Ids GetRelatedMetaIds(MetaGroupId metaGroupId, int flags, int flagsMask) const override
Get related meta information.
AttrAsOptionalDelegator(const IAttributeStaticInfo *slavePtr, const iser::IObject *defaultValuePtr)
QByteArray GetAttributeTypeId() const override
Return attribute type ID.
CCompositeComponentStaticInfo(const IRegistry &registry, const IComponentEnvironmentManager &manager, const IComponentStaticInfo *parentPtr=nullptr)
const QString & GetKeywords() const override
Get keywords for this component.
std::unique_ptr< IComponent > CreateComponent() const override
Create component instance.
const IRegistry & GetRegistry() const
const IRegistry::ElementInfo * GetElementInfoFromRegistry(const IRegistry &registry, const QByteArray &elementId, const IRegistriesManager &manager) const
Get the element info for the given element ID.
ComponentType GetComponentType() const override
Get information about component type.
const QString & GetDescription() const override
Get human readable description of this component.
const IComponentStaticInfo * GetEmbeddedComponentInfo(const QByteArray &embeddedId) const override
Return number of interfaces for specific slot.
Describe component attribute static information.
This interface provide static information about component meta info.
ComponentType
Specify type of the component realization.
Allow access to registries defined by composed components.
Interface representing information stored in component registry.
Definition IRegistry.h:30
Common interface for factorisable model objects.
Definition IObject.h:25
Package with interfaces and class used for components concept.
Describe information stored with each element.
Definition IRegistry.h:51

© Witold Gantzke and Kirill Lepskiy