/******************************************************************************** * Copyright (c) 2025-2026 ZF Friedrichshafen AG * * This program and the accompanying materials are made available under the * terms of the Apache License Version 2.0 which is available at * https://www.apache.org/licenses/LICENSE-2.0 * * SPDX-License-Identifier: Apache-2.0 * * Contributors: * Erik Verhoeven - initial API and implementation ********************************************************************************/ #ifndef ATTRIBUTE_ENTITY_H #define ATTRIBUTE_ENTITY_H #include "declaration_entity.h" /** * @brief The attribute definition of an IDL file. * @details The attribute section of the IDL file defines attribute values. */ class CAttributeEntity : public CDeclarationEntity, public sdv::idl::IAttributeEntity { public: /** * @brief Default constructor * @param[in] rptrContext Reference to the smart pointer holding the parse context. Must not be NULL. * @param[in] ptrParent Pointer to the parent class holding this entity. This must not be NULL. * @param[in] bReadOnly When set, the attribute is defined as readonly. */ CAttributeEntity(const CContextPtr& rptrContext, CEntityPtr ptrParent, bool bReadOnly); /** * @brief Destructor */ virtual ~CAttributeEntity() override = default; /** * @brief Get access to another interface. Overload of sdv::IInterfaceAccess::GetInterface. * @param[in] idInterface The interface id to get access to. * @return Returns a pointer to the interface or NULL when the interface is not supported. */ virtual sdv::interface_t GetInterface(sdv::interface_id idInterface) override; /** * @brief Get the list of possible exceptions that might be fired during a read operation. Overload of * sdv::idl::IAttributeEntity::GetReadExceptions. * @return Returns a pointer to the exceptions iterator or NULL when no exceptions were defined. */ virtual sdv::idl::IEntityIterator* GetReadExceptions() override; /** * @brief Get the list of possible exceptions that might be fired during a write operation. Overload of * sdv::idl::IAttributeEntity::GetWriteExceptions. * @return Returns a pointer to the exceptions iterator or NULL when no exceptions were defined. */ virtual sdv::idl::IEntityIterator* GetWriteExceptions() override; /** * @brief Get the type of the entity. Overload of CEntity::GetType. * @return Returns the attribute entity type. */ virtual sdv::idl::EEntityType GetType() const override { return sdv::idl::EEntityType::type_attribute; } /** * @brief Process the code. Overload of CEntity::Process. */ virtual void Process() override; protected: /** * @brief Does the entity support arrays? Overload of CDeclarationEntity::SupportArrays. * @return Returns 'true' when the entity supports assignments; 'false' otherwise. */ virtual bool SupportArrays() const override; /** * @brief Is the entity readonly? Overload of IEntityInfo::IsReadOnly. * @return Returns 'true' when the entity defined as readonly; 'false' otherwise. */ virtual bool IsReadOnly() const override; /** * @brief Does the entity support multiple declarations on one line of code? Overload of * CDeclarationEntity::SupportMultipleDeclarations. * @return Returns 'true' when the entity supports multiple declarations; 'false' otherwise. */ virtual bool SupportMultipleDeclarations() const override; /** * @brief Does the entity support raising exceptions? Overload of CDeclarationEntity::SupportRaiseExceptions. * @return Returns 'true' when the entity supports exceptions; 'false' otherwise. */ virtual bool SupportRaiseExceptions() const override; /** * @brief Does the entity support separate set/get raising exceptions? Overload of * CDeclarationEntity::SupportSeparateSetGetRaiseExceptions. * @return Returns 'true' when the entity supports separate set/get raise exceptions; 'false' otherwise. */ virtual bool SupportSeparateSetGetRaiseExceptions() const override; private: bool m_bReadOnly = false; ///< When set, the attribute is readonly. CEntityIterator m_iteratorReadExceptions; ///< Exceptions iterator for read exceptions CEntityIterator m_iteratorWriteExceptions; ///< Exceptions iterator for write exceptions }; #endif // !defined(ATTRIBUTE_ENTITY_H)