Kactus2
Kactus2 reference guide
Loading...
Searching...
No Matches
MemoryMapInterface.h
Go to the documentation of this file.
1//-----------------------------------------------------------------------------
2// File: MemoryMapInterface.h
3//-----------------------------------------------------------------------------
4// Project: Kactus2
5// Author: Mikko Teuho
6// Date: 15.05.2020
7//
8// Description:
9// Interface for editing memory maps and remaps.
10//-----------------------------------------------------------------------------
11
12#ifndef MEMORYMAPINTERFACE_H
13#define MEMORYMAPINTERFACE_H
14
15#include <KactusAPI/KactusAPIGlobal.h>
16
18#include <NameGroupInterface.h>
19
20class Component;
21class MemoryMap;
22class MemoryRemap;
23
24class MemoryMapValidator;
28class ModeReference;
29
30//-----------------------------------------------------------------------------
32//-----------------------------------------------------------------------------
34{
35
36public:
37
45 MemoryMapInterface(QSharedPointer<MemoryMapValidator> mapValidator,
46 QSharedPointer<ExpressionParser> expressionParser,
47 QSharedPointer<ExpressionFormatter> expressionFormatter);
48
52 virtual ~MemoryMapInterface() = default;
53
60
67
73 void setMemoryMaps(QSharedPointer<Component> component);
74
82 virtual int getItemIndex(std::string const& itemName) const override final;
83
92 int getMemoryRemapIndex(std::string const& mapName, std::string const& remapName) const;
93
101 std::string getIndexedItemName(int itemIndex) const final;
102
103 /*
104 * Get name of the indexed memory remap.
105 *
106 * @param [in] mapName Name of the memory map containing the selected memory remap.
107 * @param [in] itemIndex Index of the selected memory remap.
108 *
109 * @return Name of the selected memory remap.
110 */
111 std::string getIndexedRemapName(std::string mapName, int const& itemIndex) const;
112
118 virtual int itemCount() const override final;
119
127 int remapCount(std::string const& mapName) const;
128
134 virtual std::vector<std::string> getItemNames() const override final;
135
143 std::vector<std::string> getRemapNames(std::string const& mapName) const;
144
153 virtual bool setName(std::string const& currentName, std::string const& newName) override final;
154
164 bool setRemapName(std::string const& mapName, std::string const& currentName, std::string const& newName);
165
174 std::string getRemapDescription(std::string const& mapName, std::string const& remapName) const;
175
185 bool setRemapDescription(std::string const& mapName, std::string const& itemName,
186 std::string const& newDescription);
187
197 std::string getIsPresentValue(std::string const& mapName, std::string const& remapName = "",
198 int const& baseNumber = 0) const;
199
208 std::string getIsPresentFormattedExpression(std::string const& mapName, std::string const& remapName = "") const;
209
218 std::string getIsPresentExpression(std::string const& mapName, std::string const& remapName = "") const;
219
229 bool setIsPresent(std::string const& mapName, std::string const& newIsPresent,
230 std::string const& remapName = "");
231
240 std::string getRemapState(std::string const& mapName, std::string const& remapName = "") const;
241
251 bool setRemapState(std::string const& mapName, std::string const& remapName, std::string const& newRemapState);
252
260 std::string getAddressUnitBitsExpression(std::string const& mapName) const;
261
269 std::string getAddressUnitBitsValue(std::string const& mapName, int const& baseNumber = 0) const;
270
278 std::string getAddressUnitBitsFormattedExpression(std::string const& mapName) const;
279
288 bool setAddressUnitBits(std::string const& mapName, std::string const& newAddressUnitBits) const;
289
297 std::string getInterfaceBinding(std::string const& mapName) const;
298
306 std::vector<std::string> getAssociatedSlaveInterfaces(std::string const& mapName) const;
307
316 virtual int getAllReferencesToIdInItem(const std::string& itemName, std::string const& valueID) const override
317 final;
318
327 std::vector<std::string> getMapExpressions(std::string const& mapName, std::string const& remapName) const;
328
338 int getAllReferencesToIdInRemapItem(std::string const& mapName, std::string const& remapName,
339 std::string const& valueID) const;
340
346 virtual bool validateItems() const override final;
347
355 virtual bool itemHasValidName(std::string const& itemName) const override final;
356
365 bool remapHasValidName(std::string const& mapName, std::string const& itemName) const;
366
375 bool remapHasValidRemapState(std::string const& mapName, std::string const& itemName) const;
376
385 bool itemHasValidIsPresent(std::string const& mapName, std::string const& remapName = "") const;
386
394 bool memoryMapHasValidAddressUnitBits(std::string const& mapName) const;
395
402 void addMemoryMap(int const& row, std::string const& newMapName = std::string(""));
403
410 void addMemoryMap(std::string const& newMapName = std::string(""));
411
418 void addMemoryRemap(std::string const& mapName, std::string const& newRemapName = std::string(""));
419
427 bool removeMap(std::string const& mapName);
428
437 bool removeRemap(std::string const& mapName, std::string remapName);
438
444 void copyRows(std::vector<std::string> const& selectedRows);
445
451 std::vector<std::string> pasteMemoryMaps();
452
460 std::vector<std::string> pasteMemoryRemaps(std::string const& memoryMapName);
461
468
475
483 MemoryMap* getMapPointer(std::string const& mapName) const;
484
493 MemoryRemap* getRemapPointer(std::string const& mapName, std::string const& remapName) const;
494
503 int getRemapModeReferenceCount(std::string const& mapName, std::string const& remapName) const;
504
513 std::vector<std::pair<unsigned int, std::string> > getRemapModeReferences(std::string const& mapName, std::string const& remapName) const;
514
525 std::string getRemapModeReferenceString(std::string const& mapName, std::string const& remapName) const;
526
536 bool setRemapModeReferences(std::string const& mapName, std::string const& remapName, std::vector<std::pair<unsigned int, std::string> > const& newModeRefs);
537
546 bool addRemapModeReference(std::string const& mapName, std::string const& remapName);
547
557 bool removeRemapModeReference(std::string const& mapName, std::string const& remapName, int modeReferenceIndex);
558
565
572
582 std::vector<std::pair<unsigned int, std::string> > getRemapModeReferencesExcludingRemap(
583 std::string const& mapName, std::string const& remapName) const;
584
585private:
586
594 QSharedPointer<MemoryMap> getMemoryMap(std::string const& itemName) const;
595
603 QSharedPointer<NameGroup> getItem(std::string const& itemName) const override;
604
613 QSharedPointer<MemoryRemap> getMemoryRemap(std::string const& mapName, std::string const& itemName) const;
614
622 QString pasteMemoryMap(QSharedPointer<MemoryMap> mapCopy);
623
632 QString pasteMemoryRemap(QSharedPointer<MemoryRemap> remapCopy, std::string const& parentMapName);
633
643 QString getUniqueRemapName(std::string const& mapName, std::string const& newName,
644 std::string const& itemTypeName) const;
645
654 bool remapNameIsUnique(std::string const& mapName, QString const& remapName) const;
655
656 //-----------------------------------------------------------------------------
657 // Data.
658 //-----------------------------------------------------------------------------
659
661 QSharedPointer<Component> component_;
662
664 QSharedPointer<QList<QSharedPointer<MemoryMap> > > mapData_;
665
667 QSharedPointer<MemoryMapValidator> validator_;
668
670 AddressBlockInterface* addressBlockInterface_;
671
673 SubspaceMapInterface* subspaceInterface_;
674
676 ModeReferenceInterface* modeReferenceInterface_;
677};
678
679#endif // MEMORYMAPINTERFACE_H
Interface for editing address blocks.
void setSubspaceMapInterface(SubspaceMapInterface *submapInterface)
MemoryMapInterface(QSharedPointer< MemoryMapValidator > mapValidator, QSharedPointer< ExpressionParser > expressionParser, QSharedPointer< ExpressionFormatter > expressionFormatter)
std::string getRemapDescription(std::string const &mapName, std::string const &remapName) const
std::vector< std::pair< unsigned int, std::string > > getRemapModeReferences(std::string const &mapName, std::string const &remapName) const
bool removeRemap(std::string const &mapName, std::string remapName)
void setMemoryMaps(QSharedPointer< Component > component)
std::string getIndexedRemapName(std::string mapName, int const &itemIndex) const
virtual std::vector< std::string > getItemNames() const override final
virtual bool validateItems() const override final
bool remapHasValidRemapState(std::string const &mapName, std::string const &itemName) const
std::string getIsPresentFormattedExpression(std::string const &mapName, std::string const &remapName="") const
bool setAddressUnitBits(std::string const &mapName, std::string const &newAddressUnitBits) const
std::string getAddressUnitBitsValue(std::string const &mapName, int const &baseNumber=0) const
std::string getIsPresentValue(std::string const &mapName, std::string const &remapName="", int const &baseNumber=0) const
AddressBlockInterface * getAddressBlockInterface() const
std::vector< std::string > pasteMemoryMaps()
bool memoryMapHasValidAddressUnitBits(std::string const &mapName) const
SubspaceMapInterface * getSubspaceMapInterface() const
std::string getIsPresentExpression(std::string const &mapName, std::string const &remapName="") const
bool setRemapName(std::string const &mapName, std::string const &currentName, std::string const &newName)
virtual bool itemHasValidName(std::string const &itemName) const override final
ModeReferenceInterface * getModeReferenceInterface() const
std::string getInterfaceBinding(std::string const &mapName) const
bool setRemapDescription(std::string const &mapName, std::string const &itemName, std::string const &newDescription)
void addMemoryMap(int const &row, std::string const &newMapName=std::string(""))
virtual int getAllReferencesToIdInItem(const std::string &itemName, std::string const &valueID) const override final
bool setRemapModeReferences(std::string const &mapName, std::string const &remapName, std::vector< std::pair< unsigned int, std::string > > const &newModeRefs)
std::vector< std::string > getMapExpressions(std::string const &mapName, std::string const &remapName) const
void setModeReferenceInterface(ModeReferenceInterface *modeRefInterface)
std::string getIndexedItemName(int itemIndex) const final
std::string getAddressUnitBitsFormattedExpression(std::string const &mapName) const
bool removeMap(std::string const &mapName)
bool removeRemapModeReference(std::string const &mapName, std::string const &remapName, int modeReferenceIndex)
bool setIsPresent(std::string const &mapName, std::string const &newIsPresent, std::string const &remapName="")
void copyRows(std::vector< std::string > const &selectedRows)
void setAddressBlockInterface(AddressBlockInterface *blockInterface)
std::vector< std::pair< unsigned int, std::string > > getRemapModeReferencesExcludingRemap(std::string const &mapName, std::string const &remapName) const
std::string getRemapState(std::string const &mapName, std::string const &remapName="") const
virtual ~MemoryMapInterface()=default
void addMemoryRemap(std::string const &mapName, std::string const &newRemapName=std::string(""))
bool addRemapModeReference(std::string const &mapName, std::string const &remapName)
bool setRemapState(std::string const &mapName, std::string const &remapName, std::string const &newRemapState)
bool itemHasValidIsPresent(std::string const &mapName, std::string const &remapName="") const
int getMemoryRemapIndex(std::string const &mapName, std::string const &remapName) const
int remapCount(std::string const &mapName) const
virtual bool setName(std::string const &currentName, std::string const &newName) override final
int getRemapModeReferenceCount(std::string const &mapName, std::string const &remapName) const
std::vector< std::string > getRemapNames(std::string const &mapName) const
MemoryMap * getMapPointer(std::string const &mapName) const
std::string getRemapModeReferenceString(std::string const &mapName, std::string const &remapName) const
MemoryRemap * getRemapPointer(std::string const &mapName, std::string const &remapName) const
int getAllReferencesToIdInRemapItem(std::string const &mapName, std::string const &remapName, std::string const &valueID) const
std::vector< std::string > getAssociatedSlaveInterfaces(std::string const &mapName) const
std::vector< std::string > pasteMemoryRemaps(std::string const &memoryMapName)
std::string getAddressUnitBitsExpression(std::string const &mapName) const
virtual int getItemIndex(std::string const &itemName) const override final
bool remapHasValidName(std::string const &mapName, std::string const &itemName) const
virtual int itemCount() const override final
ParameterizableInterface(QSharedPointer< ExpressionParser > expressionParser, QSharedPointer< ExpressionFormatter > expressionFormatter)
Interface for editing subspace maps.