Kactus2
Kactus2 reference guide
Loading...
Searching...
No Matches
AddressBlockInterface.h
Go to the documentation of this file.
1//-----------------------------------------------------------------------------
2// File: AddressBlockInterface.h
3//-----------------------------------------------------------------------------
4// Project: Kactus2
5// Author: Mikko Teuho
6// Date: 05.05.2020
7//
8// Description:
9// Interface for editing address blocks.
10//-----------------------------------------------------------------------------
11
12#ifndef ADDRESSBLOCKINTERFACE_H
13#define ADDRESSBLOCKINTERFACE_H
14
15#include <KactusAPI/KactusAPIGlobal.h>
16
18
19#include <IPXACTmodels/generaldeclarations.h>
20#include <IPXACTmodels/common/AccessTypes.h>
21
22class AddressBlock;
23class MemoryBlockBase;
24class AddressBlockValidator;
27
28#include <QVector>
29#include <QMap>
30
31//-----------------------------------------------------------------------------
33//-----------------------------------------------------------------------------
35{
36
37public:
38
49 AddressBlockInterface(QSharedPointer<AddressBlockValidator> blockValidator,
50 QSharedPointer<ExpressionParser> expressionParser,
51 QSharedPointer<ExpressionFormatter> expressionFormatter,
52 BusInterfaceInterface* busInterface,
53 RegisterInterface* subInterface,
54 ParametersInterface* parameterInterface);
55
59 virtual ~AddressBlockInterface() = default;
60
68 virtual bool acceptBlock(std::string const& blockName) const final;
69
77 std::string getRangeFormattedExpression(std::string const& blockName) const;
78
86 std::string getRangeExpression(std::string const& blockName) const;
87
96 bool setRange(std::string const& blockName, std::string const& newRange) const;
97
106 std::string getWidthValue(std::string const& blockName, int const& baseNumber = 0) const;
107
115 std::string getWidthFormattedExpression(std::string const& blockName) const;
116
124 std::string getWidthExpression(std::string const& blockName) const;
125
134 bool setWidth(std::string const& blockName, std::string const& newWidth) const;
135
143 std::string getUsageString(std::string const& blockName) const;
144
152 General::Usage getUsage(std::string const& blockName) const;
153
162 bool setUsage(std::string const& blockName, std::string const& newUsage) const;
163
175 std::string getAccessString(std::string const& blockName, bool getAccessPolicyAccess = false) const;
176
184 AccessTypes::Access getAccess(std::string const& blockName) const;
185
196 bool setAccess(std::string const& blockName, std::string const& newAccess, bool setAccessPolicyAccess = false) const;
197
205 std::string getVolatile(std::string const& blockName) const;
206
215 bool setVolatile(std::string const& blockName, bool newVolatile) const;
216
225 bool setVolatile(std::string const& blockName, std::string const& newVolatileValue);
226
235 virtual int getAllReferencesToIdInItem(const std::string& itemName, std::string const& valueID) const final;
236
242 virtual bool validateItems() const override final;
243
251 bool hasValidRange(std::string const& itemName) const;
252
260 bool hasValidWidth(std::string const& itemName) const;
261
269 bool hasValidUsage(std::string const& itemName) const;
270
277 virtual void addBlock(int const& row, std::string const& newBlockName = std::string("")) final;
278
286 virtual std::vector<std::string> getExpressionsInSelectedItems(std::vector<std::string> const& itemNames) const final;
287
294
302 bool hasRegisters(std::string const& blockName) const;
303
311 int getAccessPolicyCount(std::string const& blockName) const;
312
320 bool addAccessPolicy(std::string const& blockName) const;
321
322
323private:
324
332 QSharedPointer<AddressBlock> getAddressBlock(std::string const& itemName) const;
333
339 virtual std::string getDefaultName() const final;
340
348 virtual QList<QSharedPointer<MemoryBlockBase> > getCopiedBlocks(std::vector<int> const& selectedRows) const final;
349
355 virtual QString getMimeType() const override final;
356
364 virtual QSharedPointer<MemoryBlockBase> createCopyBlock(QSharedPointer<MemoryBlockBase> copiedItem) const final;
365
373 virtual int countItems(QList<QSharedPointer<MemoryBlockBase> > itemList) const final;
374
380 virtual QSharedPointer<MemoryBlockValidator> getValidator() const final;
381
389 QSharedPointer<NameGroup> getItem(std::string const& itemName) const override;
390
391 //-----------------------------------------------------------------------------
392 // Data.
393 //-----------------------------------------------------------------------------
394
396 QSharedPointer<AddressBlockValidator> validator_;
397
399 RegisterInterface* subInterface_;
400};
401
402#endif // ADDRESSBLOCKINTERFACE_H
bool setAccess(std::string const &blockName, std::string const &newAccess, bool setAccessPolicyAccess=false) const
RegisterInterface * getSubInterface() const
std::string getAccessString(std::string const &blockName, bool getAccessPolicyAccess=false) const
virtual bool validateItems() const override final
virtual std::vector< std::string > getExpressionsInSelectedItems(std::vector< std::string > const &itemNames) const final
virtual ~AddressBlockInterface()=default
std::string getWidthFormattedExpression(std::string const &blockName) const
General::Usage getUsage(std::string const &blockName) const
bool setRange(std::string const &blockName, std::string const &newRange) const
std::string getUsageString(std::string const &blockName) const
std::string getVolatile(std::string const &blockName) const
bool setVolatile(std::string const &blockName, std::string const &newVolatileValue)
std::string getRangeFormattedExpression(std::string const &blockName) const
virtual int getAllReferencesToIdInItem(const std::string &itemName, std::string const &valueID) const final
bool hasValidUsage(std::string const &itemName) const
int getAccessPolicyCount(std::string const &blockName) const
std::string getWidthExpression(std::string const &blockName) const
bool hasRegisters(std::string const &blockName) const
bool addAccessPolicy(std::string const &blockName) const
bool hasValidRange(std::string const &itemName) const
AddressBlockInterface(QSharedPointer< AddressBlockValidator > blockValidator, QSharedPointer< ExpressionParser > expressionParser, QSharedPointer< ExpressionFormatter > expressionFormatter, BusInterfaceInterface *busInterface, RegisterInterface *subInterface, ParametersInterface *parameterInterface)
virtual void addBlock(int const &row, std::string const &newBlockName=std::string("")) final
bool hasValidWidth(std::string const &itemName) const
bool setUsage(std::string const &blockName, std::string const &newUsage) const
std::string getRangeExpression(std::string const &blockName) const
AccessTypes::Access getAccess(std::string const &blockName) const
virtual bool acceptBlock(std::string const &blockName) const final
bool setWidth(std::string const &blockName, std::string const &newWidth) const
bool setVolatile(std::string const &blockName, bool newVolatile) const
std::string getWidthValue(std::string const &blockName, int const &baseNumber=0) const
Interface for accessing bus interfaces.
MemoryBlockInterface(QSharedPointer< ExpressionParser > expressionParser, QSharedPointer< ExpressionFormatter > expressionFormatter, BusInterfaceInterface *busInterface, ParametersInterface *parameterInterface)
Interface for editing parameters.
Interface for editing registers.