ACF $AcfVersion:0$
CBaseComponentStaticInfo.h
Go to the documentation of this file.
1// SPDX-License-Identifier: LGPL-2.1-or-later OR GPL-2.0-or-later OR GPL-3.0-or-later OR LicenseRef-ACF-Commercial
2#pragma once
3
4
5// ACF includes
8
9
10namespace icomp
11{
12
13
20 virtual public IRealComponentStaticInfo
21{
22public:
24 typedef void* (*InterfaceExtractorPtr)(IComponent& component);
25
27
28 explicit CBaseComponentStaticInfo(const IRealComponentStaticInfo* baseComponentPtr = NULL);
29
35 virtual void RegisterInterfaceExtractor(const QByteArray& interfaceName, InterfaceExtractorPtr extractorPtr);
42 virtual void RegisterAttributeInfo(const QByteArray& attributeId, const IAttributeStaticInfo* attributeInfoPtr);
49 virtual void RegisterSubelementInfo(const QByteArray& subcomponentId, const IElementStaticInfo* staticInfoPtr);
50
51 // reimplemented (icomp::IRealComponentStaticInfo)
52 virtual IComponentUniquePtr CreateComponent() const override;
53
54 // reimplemented (icomp::IComponentInterfaceExtractor)
55 virtual void* GetComponentInterface(
56 const istd::CClassInfo& interfaceType,
57 IComponent& component,
58 const QByteArray& subId) const override;
59
60 // reimplemented (icomp::IComponentStaticInfo)
61 virtual const IAttributeStaticInfo* GetAttributeInfo(const QByteArray& attributeId) const override;
62
63 // reimplemented (icomp::IElementStaticInfo)
64 virtual Ids GetMetaIds(int metaGroupId) const override;
65 virtual const IElementStaticInfo* GetSubelementInfo(const QByteArray& subcomponentId) const override;
66
67 // reimplemented (iattr::IAttributesMetaInfoProvider)
69 virtual const iattr::IAttributeMetaInfo* GetAttributeMetaInfo(const QByteArray& attributeId) const override;
70
71private:
72 const IRealComponentStaticInfo* m_baseComponentPtr;
73
74 typedef QMap<QByteArray, InterfaceExtractorPtr> InterfaceExtractors;
75 InterfaceExtractors m_interfaceExtractors;
76
77 typedef QMap<QByteArray, const IElementStaticInfo*> SubelementInfos;
78 SubelementInfos m_subelementInfos;
79
80 typedef QMap<QByteArray, const IAttributeStaticInfo*> AttributeInfos;
81 AttributeInfos m_attributeInfos;
82};
83
84
85} // namespace icomp
86
87
Meta information describing single attribute.
Standard implementation of static info for base component classes.
virtual const IAttributeStaticInfo * GetAttributeInfo(const QByteArray &attributeId) const override
Get set of attributes.
virtual iattr::IAttributesProvider::AttributeIds GetAttributeMetaIds() const override
Get all IDs of known attribute meta informations.
virtual void * GetComponentInterface(const istd::CClassInfo &interfaceType, IComponent &component, const QByteArray &subId) const override
Extract instance implemented specified interface from some component.
void *(* InterfaceExtractorPtr)(IComponent &component)
virtual Ids GetMetaIds(int metaGroupId) const override
Get list of meta IDs associated with some meta key.
virtual void RegisterSubelementInfo(const QByteArray &subcomponentId, const IElementStaticInfo *staticInfoPtr)
Register static subcomponent info.
static istd::CClassInfo s_compInterfaceType
virtual const iattr::IAttributeMetaInfo * GetAttributeMetaInfo(const QByteArray &attributeId) const override
Get property with the given index.
CBaseComponentStaticInfo(const IRealComponentStaticInfo *baseComponentPtr=NULL)
virtual const IElementStaticInfo * GetSubelementInfo(const QByteArray &subcomponentId) const override
Return number of interfaces for specific slot.
virtual void RegisterAttributeInfo(const QByteArray &attributeId, const IAttributeStaticInfo *attributeInfoPtr)
Register static attribute info.
virtual IComponentUniquePtr CreateComponent() const override
Create component instance.
virtual void RegisterInterfaceExtractor(const QByteArray &interfaceName, InterfaceExtractorPtr extractorPtr)
Register interface ID for this static component info.
Describe component attribute static information.
Main component interface.
Definition IComponent.h:32
This interface provide static information about element meta info.
Interface adding to component static info functionality existing only for real components.
Represents platform independent type info and provide set of static class manipulation functions.
Definition CClassInfo.h:23
#define NULL
Definition istd.h:74
Package with interfaces and class used for components concept.
std::unique_ptr< IComponent > IComponentUniquePtr
Definition IComponent.h:72