Kactus2
Kactus2 reference guide
Loading...
Searching...
No Matches
PortAbstractionInterface.h
Go to the documentation of this file.
1//-----------------------------------------------------------------------------
2// File: PortAbstractionInterface.h
3//-----------------------------------------------------------------------------
4// Project: Kactus2
5// Author: Mikko Teuho
6// Date: 10.12.2020
7//
8// Description:
9// Interface for editing abstraction definition port abstractions.
10//-----------------------------------------------------------------------------
11
12#ifndef PORTABSTRACTIONINTERFACE_H
13#define PORTABSTRACTIONINTERFACE_H
14
15#include <MasterPortInterface.h>
17
18#include "KactusAPI/KactusAPIGlobal.h"
19
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>
25
26#include <IPXACTmodels/generaldeclarations.h>
27
28class PortAbstraction;
29class TransactionalPort;
30class WirePort;
31class Protocol;
32class AbstractionDefinition;
33class PortAbstractionValidator;
36
37//-----------------------------------------------------------------------------
39//-----------------------------------------------------------------------------
41{
42public:
43
50 PortAbstractionInterface(QSharedPointer<ExpressionParser> expressionParser,
51 QSharedPointer<ExpressionFormatter> expressionFormatter);
52
56 virtual ~PortAbstractionInterface() = default;
57
63 void setAbsDef(QSharedPointer<AbstractionDefinition const> absDef);
64
70 void setPortAbstractionValidator(QSharedPointer<PortAbstractionValidator> validator);
71
79 virtual int getItemIndex(std::string const& itemName) const override final;
80
89 virtual int getItemIndex(std::string const& itemName, General::InterfaceMode mode,
90 std::string const& systemGroup = std::string()) const;
91
99 std::string getIndexedItemName(int itemIndex) const final;
100
106 virtual int itemCount() const override final;
107
115 int signalCount(std::string const& portName) const;
116
127 bool portHasMultiplesOfMasterOrSlave(std::string const& portName, std::string const& mode);
128
137 bool setName(std::string const& currentName, std::string const& newName) final;
138
144 bool validateItems() const final;
145
153 bool itemHasValidName(std::string const& itemName) const final;
154
162 bool wireHasValidWidth(int portIndex) const;
163
171 bool wireHasValidDefaultValue(int portIndex) const;
172
180 bool getMatch(int const& portIndex) const;
181
190 bool setMatch(int const& portIndex, bool match) const;
191
197 std::vector<std::string> getItemNames() const final;
198
207 std::vector<std::string> getItemNamesWithModeAndGroup(std::string const& busModeString,
208 std::string systemGroup) const;
209
217 General::InterfaceMode getMode(int const& portIndex) const;
218
226 std::string getModeString(int const& portIndex) const;
227
236 bool setMode(int const& portIndex, std::string const& newMode);
237
245 std::string getSystemGroup(int const& portIndex) const;
246
254 std::vector<std::string> getSystemGroupsForPort(std::string const& portName) const;
255
264 bool setSystemGroup(int const& portIndex, std::string const& newSystem);
265
273 std::vector<std::string> getQualifierStringList(int const& portIndex) const;
274
283 bool setQualifier(int const& portIndex, std::string const& newQualifier);
284
293 bool setQualifierStringList(int const& portIndex, std::vector<std::string> const& newQualifierList);
294
304 std::string getQualifierAttribute(int const& portIndex, std::string const& attributeName) const;
305
316 bool setQualifierAttribute(int const& portIndex, std::string const& attributeName,
317 std::string const& attributeValue) const;
318
327 bool setQualifierAttributes(int const& portIndex, std::vector<std::string> const& attributes) const;
328
336 std::vector<std::string> getQualifierAttributes(int const& portIndex) const;
337
345 std::string getDirectionString(int const& portIndex) const;
346
354 DirectionTypes::Direction getDirection(int const& portIndex) const;
355
365 DirectionTypes::Direction getDirection(std::string const& portName, General::InterfaceMode mode,
366 std::string const& systemGroup) const;
367
376 bool setDirection(int const& portIndex, std::string const& newDirection);
377
385 std::string getWidthExpression(int const& portIndex) const;
386
396 std::string getWidthExpression(std::string const& portName, std::string const& interfaceMode,
397 std::string const& systemGroup) const;
398
408 std::string getWidthExpression(std::string const& portName, General::InterfaceMode interfaceMode,
409 std::string const& systemGroup) const;
410
418 std::string getWidthFormattedExpression(int portIndex) const;
419
428 std::string getWidthValue(int portIndex, int const& baseNumber = 0) const;
429
440 std::string getWidthValue(std::string const& portName,
441 General::InterfaceMode interfaceMode,
442 std::string const& systemGroup,
443 int const& baseNumber = 0) const;
444
453 bool setWidth(int const& portIndex, std::string const& newWidth);
454
462 PresenceTypes::Presence getPresence(int const& portIndex) const;
463
473 PresenceTypes::Presence getPresence(std::string const& portName, std::string const& interfaceMode,
474 std::string const& systemGroup) const;
475
483 std::string getPresenceString(int const& portIndex) const;
484
494 std::string getPresenceString(std::string const& portName, std::string const& interfaceMode,
495 std::string const& systemGroup) const;
496
505 bool setPresence(int const& portIndex, std::string const& newPresence);
506
514 std::string getDefaultValueExpression(int const& portIndex) const;
515
523 std::string getDefaultValueFormattedExpression(int const& portIndex) const;
524
533 std::string getDefaultValueValue(int const& portIndex, int baseNumber = 0) const;
534
543 bool setDefaultValue(int const& portIndex, std::string const& newDefaultValue);
544
552 std::string getDriverString(int const& portIndex) const;
553
562 bool setDriverType(int const& portIndex, std::string const& newDriver);
563
571 std::string getBusWidthExpression(int const& portIndex) const;
572
582 std::string getBusWidthExpression(std::string const& portName, std::string const& interfaceMode,
583 std::string const& systemGroup) const;
584
592 std::string getBusWidthFormattedExpression(int signalIndex) const;
593
602 std::string getBusWidthValue(int portIndex, int baseNumber = 0) const;
603
612 bool setBusWidth(int const& portIndex, std::string const& newBusWidth);
613
614 bool transactionalHasValidBusWidth(int portIndex) const;
615
623 std::string getInitiative(int const& portIndex) const;
624
634 std::string getInitiative(std::string const& portName, std::string const& interfaceMode,
635 std::string const& systemGroup) const;
636
645 bool setInitiative(int const& portIndex, std::string const& newInitiative);
646
654 std::string getKind(int const& portIndex) const;
655
664 bool setKind(int const& portIndex, std::string const& newKind);
665
673 bool hasProtocol(int const& portIndex) const;
674
682 std::string getProtocolType(int const& portIndex) const;
683
692 bool setProtocolType(int const& portIndex, std::string const& newProtocolType);
693
701 std::string getPayloadName(int const& portIndex);
702
711 bool setPayloadName(int const& portIndex, std::string const& newPayloadName);
712
720 std::string getPayloadType(int const& portIndex);
721
730 bool setPayloadType(int const& portIndex, std::string const& newPayloadType);
731
739 std::string getPayloadExtension(int const& portIndex);
740
749 bool setPayloadExtension(int const& portIndex, std::string const& newPayloadExtension);
750
756 void addWirePort(std::string const& newPortName = std::string("")) final;
757
763 void addTransactionalPort(std::string const& newPortName = std::string("")) final;
764
771 void addModeSpecificWireSignal(std::string const& portName, General::InterfaceMode const& newMode);
772
779 void addWireSystemSignal(std::string const& portName, std::string const& systemGroup);
780
787 void addModeSpecificTransactionalSignal(std::string const& portName, General::InterfaceMode const& newMode);
788
795 void addTransactionalSystemSignal(std::string const& portName, std::string const& systemGroup);
796
804 bool removeSignal(int const& signalIndex);
805
813 bool portIsWire(std::string const& portName) const final;
814
822 bool portIsTransactional(std::string const& portName) const final;
823
831 std::string getIconPathForSignal(int const& signalIndex) const;
832
842 std::string getIconPathForSignal(std::string const& portName, std::string const& interfaceMode,
843 std::string const& systemGroup) const;
844
848 void save();
849
860 bool portHasMode(std::string const& portName, std::string const& interfaceMode, std::string const& systemGroup)
861 const;
862
870 QSharedPointer<PortAbstraction> getPort(std::string const& portName) const;
871
877 Document::Revision getRevision() const;
878
879
888 int getAllReferencesToIdInRow(int signalIndex, std::string const& itemID) const;
889
892 PortAbstractionInterface& operator=(const PortAbstractionInterface& other) = delete;
893
894private:
895
903 QSharedPointer<NameGroup> getItem(std::string const& portName) const override;
904
906 struct SignalRow
907 {
909 QSharedPointer<PortAbstraction> abstraction_{ QSharedPointer<PortAbstraction>(new PortAbstraction()) };
910
912 General::InterfaceMode mode_{ General::INTERFACE_MODE_COUNT };
913
915 QSharedPointer<WirePort> wire_{ nullptr };
916
918 QSharedPointer<TransactionalPort> transactional_{ nullptr };
919
926 SignalRow(bool isWirePort, bool isTransactionalPort);
927
931 SignalRow(SignalRow const& other) = default;
932
940 bool operator==(SignalRow const& other) const;
941
949 bool operator!=(SignalRow const& other) const;
950
958 bool operator<(SignalRow const& other) const;
959 };
960
968 QSharedPointer<SignalRow> getSignal(int const& signalIndex) const;
969
977 QSharedPointer<Protocol> getOrCreateProtocol(int const& signalIndex) const;
978
985 void removeEmptyProtocol(int const& signalIndex, QSharedPointer<Protocol> signalProtocol);
986
994 bool portProcotolTypeIsEmpty(QSharedPointer<Protocol> portProtocol) const;
995
1003 QString getProtocolTypeText(QSharedPointer<Protocol> portProtocol) const;
1004
1012 void createWireSignal(QSharedPointer<PortAbstraction> portAbs, QSharedPointer<WirePort> modeSpesific,
1013 General::InterfaceMode mode);
1014
1022 void createTransactionalSignal(QSharedPointer<PortAbstraction> portAbs,
1023 QSharedPointer<TransactionalPort> modeSpesific, General::InterfaceMode mode);
1024
1031 void savePort(QSharedPointer<PortAbstraction> portAbs, int i);
1032
1042 bool modeExistsForPort(General::InterfaceMode const& mode, QString const& portName,
1043 QString const& systemGroup = "") const;
1044
1052 QSharedPointer<PortAbstractionInterface::SignalRow> constructCopySignal(QSharedPointer<PortAbstraction> port,
1053 bool isWire, bool isTransactional) const;
1054
1063 DirectionTypes::Direction getMirroredDirectionForSignal(QString const& portName,
1064 General::InterfaceMode const& opposingMode) const;
1065
1073 Qualifier::Attribute getQualifierAttributeType(std::string const& attributeName) const;
1074
1084 int getAllReferencesToIdInItem(const std::string& itemName, std::string const& valueID) const final;
1085
1086 //-----------------------------------------------------------------------------
1087 // Data.
1088 //-----------------------------------------------------------------------------
1089
1091 QSharedPointer<QList<QSharedPointer<PortAbstraction> > > ports_;
1092
1094 QList<QSharedPointer<SignalRow> > signals_;
1095
1097 Document::Revision abstractionStandardRevision_ = Document::Revision::Unknown;
1098
1100 QSharedPointer<PortAbstractionValidator> portValidator_ = nullptr;
1101};
1102
1103#endif // PORTABSTRACTIONINTERFACE_H
Expression formatter.
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 &currentName, std::string const &newName) final
std::string getWidthValue(int portIndex, int const &baseNumber=0) const
std::string getSystemGroup(int const &portIndex) const