12#ifndef PORTABSTRACTIONINTERFACE_H
13#define PORTABSTRACTIONINTERFACE_H
18#include "KactusAPI/KactusAPIGlobal.h"
20#include <IPXACTmodels/common/DirectionTypes.h>
21#include <IPXACTmodels/common/PresenceTypes.h>
22#include <IPXACTmodels/common/Qualifier.h>
23#include <IPXACTmodels/common/Document.h>
24#include <IPXACTmodels/AbstractionDefinition/PortAbstraction.h>
26#include <IPXACTmodels/generaldeclarations.h>
29class TransactionalPort;
32class AbstractionDefinition;
33class PortAbstractionValidator;
51 QSharedPointer<ExpressionFormatter> expressionFormatter);
63 void setAbsDef(QSharedPointer<AbstractionDefinition const> absDef);
79 virtual int getItemIndex(std::string
const& itemName)
const override final;
89 virtual int getItemIndex(std::string
const& itemName, General::InterfaceMode mode,
90 std::string
const& systemGroup = std::string())
const;
137 bool setName(std::
string const& currentName, std::
string const& newName) final;
190 bool setMatch(
int const& portIndex,
bool match) const;
208 std::
string systemGroup) const;
217 General::InterfaceMode
getMode(
int const& portIndex) const;
236 bool setMode(
int const& portIndex, std::
string const& newMode);
283 bool setQualifier(
int const& portIndex, std::
string const& newQualifier);
317 std::
string const& attributeValue) const;
365 DirectionTypes::Direction
getDirection(std::
string const& portName, General::InterfaceMode mode,
366 std::
string const& systemGroup) const;
376 bool setDirection(
int const& portIndex, std::
string const& newDirection);
397 std::
string const& systemGroup) const;
409 std::
string const& systemGroup) const;
441 General::InterfaceMode interfaceMode,
442 std::
string const& systemGroup,
443 int const& baseNumber = 0) const;
453 bool setWidth(
int const& portIndex, std::
string const& newWidth);
473 PresenceTypes::Presence
getPresence(std::
string const& portName, std::
string const& interfaceMode,
474 std::
string const& systemGroup) const;
495 std::
string const& systemGroup) const;
505 bool setPresence(
int const& portIndex, std::
string const& newPresence);
583 std::
string const& systemGroup) const;
612 bool setBusWidth(
int const& portIndex, std::
string const& newBusWidth);
634 std::
string getInitiative(std::
string const& portName, std::
string const& interfaceMode,
635 std::
string const& systemGroup) const;
654 std::
string getKind(
int const& portIndex) const;
664 bool setKind(
int const& portIndex, std::
string const& newKind);
756 void addWirePort(std::
string const& newPortName = std::
string(
"")) final;
843 std::
string const& systemGroup) const;
860 bool portHasMode(std::
string const& portName, std::
string const& interfaceMode, std::
string const& systemGroup)
870 QSharedPointer<PortAbstraction>
getPort(std::
string const& portName) const;
903 QSharedPointer<NameGroup> getItem(std::
string const& portName) const override;
909 QSharedPointer<PortAbstraction> abstraction_{ QSharedPointer<PortAbstraction>(
new PortAbstraction()) };
912 General::InterfaceMode mode_{ General::INTERFACE_MODE_COUNT };
915 QSharedPointer<WirePort> wire_{
nullptr };
918 QSharedPointer<TransactionalPort> transactional_{
nullptr };
926 SignalRow(
bool isWirePort,
bool isTransactionalPort);
931 SignalRow(SignalRow
const& other) =
default;
940 bool operator==(SignalRow
const& other)
const;
949 bool operator!=(SignalRow
const& other)
const;
958 bool operator<(SignalRow
const& other)
const;
968 QSharedPointer<SignalRow> getSignal(
int const& signalIndex)
const;
977 QSharedPointer<Protocol> getOrCreateProtocol(
int const& signalIndex)
const;
985 void removeEmptyProtocol(
int const& signalIndex, QSharedPointer<Protocol> signalProtocol);
994 bool portProcotolTypeIsEmpty(QSharedPointer<Protocol> portProtocol)
const;
1003 QString getProtocolTypeText(QSharedPointer<Protocol> portProtocol)
const;
1012 void createWireSignal(QSharedPointer<PortAbstraction> portAbs, QSharedPointer<WirePort> modeSpesific,
1013 General::InterfaceMode mode);
1022 void createTransactionalSignal(QSharedPointer<PortAbstraction> portAbs,
1023 QSharedPointer<TransactionalPort> modeSpesific, General::InterfaceMode mode);
1031 void savePort(QSharedPointer<PortAbstraction> portAbs,
int i);
1042 bool modeExistsForPort(General::InterfaceMode
const& mode, QString
const& portName,
1043 QString
const& systemGroup =
"")
const;
1052 QSharedPointer<PortAbstractionInterface::SignalRow> constructCopySignal(QSharedPointer<PortAbstraction> port,
1053 bool isWire,
bool isTransactional)
const;
1063 DirectionTypes::Direction getMirroredDirectionForSignal(QString
const& portName,
1064 General::InterfaceMode
const& opposingMode)
const;
1073 Qualifier::Attribute getQualifierAttributeType(std::string
const& attributeName)
const;
1091 QSharedPointer<QList<QSharedPointer<PortAbstraction> > > ports_;
1094 QList<QSharedPointer<SignalRow> > signals_;
1097 Document::Revision abstractionStandardRevision_ = Document::Revision::Unknown;
1100 QSharedPointer<PortAbstractionValidator> portValidator_ =
nullptr;
Interface for expression parsers.
ParameterizableInterface(QSharedPointer< ExpressionParser > expressionParser, QSharedPointer< ExpressionFormatter > expressionFormatter)
virtual int getAllReferencesToIdInItem(const std::string &itemName, std::string const &valueID) const =0
bool portHasMultiplesOfMasterOrSlave(std::string const &portName, std::string const &mode)
std::vector< std::string > getSystemGroupsForPort(std::string const &portName) const
bool setPayloadName(int const &portIndex, std::string const &newPayloadName)
bool setPresence(int const &portIndex, std::string const &newPresence)
General::InterfaceMode getMode(int const &portIndex) const
int getAllReferencesToIdInRow(int signalIndex, std::string const &itemID) const
void setPortAbstractionValidator(QSharedPointer< PortAbstractionValidator > validator)
std::string getBusWidthExpression(int const &portIndex) const
std::string getDriverString(int const &portIndex) const
bool setQualifierAttribute(int const &portIndex, std::string const &attributeName, std::string const &attributeValue) const
bool setKind(int const &portIndex, std::string const &newKind)
bool setDirection(int const &portIndex, std::string const &newDirection)
bool setPayloadType(int const &portIndex, std::string const &newPayloadType)
std::string getWidthExpression(int const &portIndex) const
bool setMode(int const &portIndex, std::string const &newMode)
bool hasProtocol(int const &portIndex) const
std::string getIconPathForSignal(int const &signalIndex) const
bool setSystemGroup(int const &portIndex, std::string const &newSystem)
bool portIsWire(std::string const &portName) const final
void addWireSystemSignal(std::string const &portName, std::string const &systemGroup)
std::string getKind(int const &portIndex) const
bool removeSignal(int const &signalIndex)
std::string getPayloadExtension(int const &portIndex)
std::string getBusWidthValue(int portIndex, int baseNumber=0) const
Document::Revision getRevision() const
void addTransactionalSystemSignal(std::string const &portName, std::string const &systemGroup)
QSharedPointer< PortAbstraction > getPort(std::string const &portName) const
PresenceTypes::Presence getPresence(int const &portIndex) const
std::string getModeString(int const &portIndex) const
void addModeSpecificWireSignal(std::string const &portName, General::InterfaceMode const &newMode)
std::string getDefaultValueValue(int const &portIndex, int baseNumber=0) const
bool setProtocolType(int const &portIndex, std::string const &newProtocolType)
bool itemHasValidName(std::string const &itemName) const final
void addWirePort(std::string const &newPortName=std::string("")) final
DirectionTypes::Direction getDirection(int const &portIndex) const
std::string getDefaultValueExpression(int const &portIndex) const
bool getMatch(int const &portIndex) const
bool wireHasValidDefaultValue(int portIndex) const
std::string getIndexedItemName(int itemIndex) const final
bool setBusWidth(int const &portIndex, std::string const &newBusWidth)
std::string getBusWidthFormattedExpression(int signalIndex) const
bool portIsTransactional(std::string const &portName) const final
std::string getWidthFormattedExpression(int portIndex) const
void setAbsDef(QSharedPointer< AbstractionDefinition const > absDef)
std::vector< std::string > getQualifierStringList(int const &portIndex) const
void addTransactionalPort(std::string const &newPortName=std::string("")) final
void addModeSpecificTransactionalSignal(std::string const &portName, General::InterfaceMode const &newMode)
bool wireHasValidWidth(int portIndex) const
bool setInitiative(int const &portIndex, std::string const &newInitiative)
virtual int getItemIndex(std::string const &itemName, General::InterfaceMode mode, std::string const &systemGroup=std::string()) const
bool setQualifier(int const &portIndex, std::string const &newQualifier)
std::string getQualifierAttribute(int const &portIndex, std::string const &attributeName) const
bool transactionalHasValidBusWidth(int portIndex) const
std::string getPayloadType(int const &portIndex)
bool setQualifierAttributes(int const &portIndex, std::vector< std::string > const &attributes) const
virtual ~PortAbstractionInterface()=default
std::string getPresenceString(int const &portIndex) const
bool setPayloadExtension(int const &portIndex, std::string const &newPayloadExtension)
std::string getInitiative(int const &portIndex) const
bool setDefaultValue(int const &portIndex, std::string const &newDefaultValue)
std::vector< std::string > getQualifierAttributes(int const &portIndex) const
bool portHasMode(std::string const &portName, std::string const &interfaceMode, std::string const &systemGroup) const
bool setDriverType(int const &portIndex, std::string const &newDriver)
bool setQualifierStringList(int const &portIndex, std::vector< std::string > const &newQualifierList)
std::string getProtocolType(int const &portIndex) const
bool setMatch(int const &portIndex, bool match) const
virtual int getItemIndex(std::string const &itemName) const override final
std::string getDefaultValueFormattedExpression(int const &portIndex) const
std::string getDirectionString(int const &portIndex) const
std::vector< std::string > getItemNamesWithModeAndGroup(std::string const &busModeString, std::string systemGroup) const
bool setWidth(int const &portIndex, std::string const &newWidth)
virtual int itemCount() const override final
int signalCount(std::string const &portName) const
PortAbstractionInterface(QSharedPointer< ExpressionParser > expressionParser, QSharedPointer< ExpressionFormatter > expressionFormatter)
std::string getPayloadName(int const &portIndex)
bool validateItems() const final
std::vector< std::string > getItemNames() const final
bool setName(std::string const ¤tName, std::string const &newName) final
std::string getWidthValue(int portIndex, int const &baseNumber=0) const
std::string getSystemGroup(int const &portIndex) const