ACF $AcfVersion:0$
Namespaces | Classes | Macros | Functions
Component concept

This concept allows to divide application into smaller modules. More...

Namespaces

namespace  icomp
 Package with interfaces and class used for components concept.
 
namespace  ipackage
 Package contains implementation for the management of ACF environment.
 

Classes

class  ibase::IApplication
 Interface for the main entry point of a component-based application. More...
 
class  icomp::CComponentAddress
 Represents global address of component. More...
 
class  icomp::CComponentBase
 Base class for component implementation. More...
 
class  icomp::IComponent
 Main component interface. More...
 
class  icomp::IComponentContext
 Provide session context of component. More...
 
class  icomp::IComponentStaticInfo
 This interface provide static information about component meta info. More...
 
class  icomp::ICompositeComponent
 Composite component interface. More...
 
class  icomp::IElementStaticInfo
 This interface provide static information about element meta info. More...
 
class  icomp::IRegistry
 Interface representing information stored in component registry. More...
 
class  icomp::IRegistryElement
 Represents element of registry describing component parameters. More...
 
class  icomp::TMakeComponentWrap< Base, Interface1, Interface2, Interface3, Interface4, Interface5, Interface6, Interface7, Interface8, Interface9, Interface10 >
 Simple wrapper making component from non-component class. More...
 
class  icomp::TModelCompWrap< Base >
 Makes component and model from some class implementing interface istd::IChangeable. More...
 
class  icomp::TSimComponentsFactory< Base >
 Simulation wrapper of component. More...
 
class  icomp::TSimComponentWrap< Base >
 Simulation wrapper of component. More...
 

Macros

#define I_TEXTATTR(member)
 Declare translatable text attribute member.
 
#define I_MULTITEXTATTR(member)
 Declare translatable multiple text attribute member.
 
#define I_TFACT(interfaceType, member)
 Declare single generic factory of components.
 
#define I_ASSIGN_BASE(member, id, description, isObligatory)
 Used to assign value for single parameter (attribute, reference or factory).
 
#define I_TASSIGN_BASE(member, id, description, isObligatory)
 Used to assign value for single parameter with template type (attribute, reference or factory).
 
#define I_TASSIGN_MULTI_BASE(member, id, description, isObligatory, defaultValue)
 Used to assign value for multiply parameters with template type (attributes, references or factories).
 

Functions

template<class Dest >
Dest * CompCastPtr (istd::IPolymorphic *objectPtr)
 Cast to specified interface trying to use component interface query.
 
template<class Dest >
const Dest * CompCastPtr (const istd::IPolymorphic *objectPtr)
 Cast to specified interface trying to use component interface query.
 
template<class Dest >
Dest * QueryInterface (istd::IPolymorphic *objectPtr, const QByteArray &componentId=QByteArray())
 Queries an object for a specified interface.
 

Detailed Description

This concept allows to divide application into smaller modules.

At the implementation level you don't need to care about the application topology. The topology will be described separately using .acc files and can be started using runtime environment over ACF tool or compiled to C++ code using ARXC compiler. Additionally you can use component simulation to use components as "normal" classes.

Macro Definition Documentation

◆ I_ASSIGN_BASE

#define I_ASSIGN_BASE (   member,
  id,
  description,
  isObligatory 
)
Value:
static icomp::TAttributeStaticInfo<member##_AttrType> member##_Info(staticInfo, id, description, &member##_Default, isObligatory? member##_AttrType::DAF_OBLIGATORY: member##_AttrType::DAF_OPTIONAL, istd::CClassInfo::GetInfo<typename member##_Type::InterfaceType>());\
if (componentPtr != nullptr){\
componentPtr->member.Init(componentPtr, member##_Info);\
}
Standard library.
Definition IComponent.h:17

Used to assign value for single parameter (attribute, reference or factory).

Definition at line 337 of file CComponentBase.h.

◆ I_MULTITEXTATTR

#define I_MULTITEXTATTR (   member)
Value:

Declare translatable multiple text attribute member.

Please use I_MULTIATTR with QString parameter for non translatable list of text attributes

Definition at line 255 of file CComponentBase.h.

◆ I_TASSIGN_BASE

#define I_TASSIGN_BASE (   member,
  id,
  description,
  isObligatory 
)
Value:
static icomp::TAttributeStaticInfo<member##_AttrType> member##_Info(staticInfo, id, description, &member##_Default, isObligatory? member##_AttrType::DAF_OBLIGATORY: member##_AttrType::DAF_OPTIONAL, istd::CClassInfo::GetInfo<typename member##_Type::InterfaceType>());\
if (componentPtr != nullptr){\
componentPtr->member.Init(componentPtr, member##_Info);\
}

Used to assign value for single parameter with template type (attribute, reference or factory).

Definition at line 419 of file CComponentBase.h.

◆ I_TASSIGN_MULTI_BASE

#define I_TASSIGN_MULTI_BASE (   member,
  id,
  description,
  isObligatory,
  defaultValue 
)
Value:
static member##_AttrType member##_Default(int(sizeof(member##_DefaultElements) / sizeof(member##_AttrType::ValueType)), member##_DefaultElements);\
I_TASSIGN_BASE(member, id, description, isObligatory)

Used to assign value for multiply parameters with template type (attributes, references or factories).

Definition at line 439 of file CComponentBase.h.

◆ I_TEXTATTR

#define I_TEXTATTR (   member)
Value:

Declare translatable text attribute member.

Please use I_ATTR with QString parameter for non translatable text attributes

Definition at line 223 of file CComponentBase.h.

◆ I_TFACT

#define I_TFACT (   interfaceType,
  member 
)
Value:
typedef icomp::TFactoryMember<interfaceType> member##_Type;\
typedef typename icomp::TFactoryMember<interfaceType>::AttributeType member##_AttrType;\
Special attribute used to store referenced component ID.
Factory of components used as component member.

Declare single generic factory of components.

Definition at line 317 of file CComponentBase.h.

Function Documentation

◆ CompCastPtr() [1/2]

template<class Dest >
const Dest * CompCastPtr ( const istd::IPolymorphic objectPtr)

Cast to specified interface trying to use component interface query.

It extends standard dynamic_cast functinality when you use composed components. This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

Definition at line 537 of file CComponentBase.h.

References icomp::IComponent::GetInterface(), and icomp::IComponent::GetParentComponent().

◆ CompCastPtr() [2/2]

template<class Dest >
Dest * CompCastPtr ( istd::IPolymorphic objectPtr)

Cast to specified interface trying to use component interface query.

It extends standard dynamic_cast functinality when you use composed components.

Definition at line 511 of file CComponentBase.h.

References icomp::IComponent::GetInterface(), and icomp::IComponent::GetParentComponent().

◆ QueryInterface()

template<class Dest >
Dest * QueryInterface ( istd::IPolymorphic objectPtr,
const QByteArray &  componentId = QByteArray() 
)

Queries an object for a specified interface.

The method first attempts to extract the requested interface from objectPtr. If that fails, it traverses the component tree upwards until the requested interface is found.

Definition at line 561 of file CComponentBase.h.

References icomp::IComponent::GetInterface(), and icomp::IComponent::GetParentComponent().