Kactus2
Kactus2 reference guide
Loading...
Searching...
No Matches
RegisterInterface.h
Go to the documentation of this file.
1//-----------------------------------------------------------------------------
2// File: RegisterInterface.h
3//-----------------------------------------------------------------------------
4// Project: Kactus2
5// Author: Mikko Teuho
6// Date: 27.04.2020
7//
8// Description:
9// Interface for editing registers.
10//-----------------------------------------------------------------------------
11
12#ifndef REGISTERINTERFACE_H
13#define REGISTERINTERFACE_H
14
15#include <KactusAPI/KactusAPIGlobal.h>
17
18#include <IPXACTmodels/common/AccessTypes.h>
19
20#include <QVector>
21#include <QMap>
22
23class Register;
24class RegisterBase;
25class RegisterValidator;
26class FieldInterface;
28
29//-----------------------------------------------------------------------------
31//-----------------------------------------------------------------------------
33{
34
35public:
36
45 RegisterInterface(QSharedPointer<RegisterValidator> validator,
46 QSharedPointer<ExpressionParser> expressionParser,
47 QSharedPointer<ExpressionFormatter> expressionFormatter,
48 FieldInterface* subInterface,
49 AccessPolicyInterface* accessPolicyInterface);
50
54 virtual ~RegisterInterface() = default;
55
61 void setRegisters(QSharedPointer<QList<QSharedPointer<RegisterBase> > > newRegisterData);
62
70 virtual int getItemIndex(std::string const& itemName) const override final;
71
79 std::string getIndexedItemName(int itemIndex) const final;
80
86 virtual int itemCount() const override final;
87
93 int registerDataCount() const;
94
102 int indexInRegisterData(int const& index) const;
103
109 virtual std::vector<std::string> getItemNames() const override final;
110
119 virtual bool setName(std::string const& currentName, std::string const& newName) override final;
120
129 std::string getOffsetValue(std::string const& registerName, int const& baseNumber = 0) const;
130
138 std::string getOffsetFormattedExpression(std::string const& registerName) const;
139
147 std::string getOffsetExpression(std::string const& registerName) const;
148
157 bool setOffset(std::string const& registerName, std::string const& newOffset);
158
167 std::string getIsPresentValue(std::string const& registerName, int const& baseNumber = 0) const;
168
176 std::string getIsPresentFormattedExpression(std::string const& registerName) const;
177
185 std::string getIsPresentExpression(std::string const& registerName) const;
186
195 bool setIsPresent(std::string const& registerName, std::string const& newIsPresent);
196
205 std::string getSizeValue(std::string const& registerName, int const& baseNumber = 0) const;
206
214 std::string getSizeFormattedExpression(std::string const& registerName) const;
215
223 std::string getSizeExpression(std::string const& registerName) const;
224
233 bool setSize(std::string const& registerName, std::string const& newSize);
234
242 std::string getVolatile(std::string const& registerName) const;
243
252 bool setVolatile(std::string const& registerName, std::string const& newVolatile);
253
263 std::string getAccessString(std::string const& registerName, bool getAccessPolicyAccess = false) const;
264
273 AccessTypes::Access getAccess(std::string const& registerName) const;
274
285 bool setAccess(std::string const& registerName, std::string const& newAccess, bool setAccessPolicyAccess = false);
286
294 int getAccessPolicyCount(std::string const& registerName) const;
295
303 bool addAccessPolicy(std::string const& registerName);
304
313 virtual int getAllReferencesToIdInItem(const std::string& itemName, std::string const& valueID) const override
314 final;
315
321 virtual bool validateItems() const override final;
322
330 virtual bool itemHasValidName(std::string const& itemName) const override final;
331
339 bool hasValidDimension(std::string const& registerName) const;
340
348 bool hasValidOffset(std::string const& registerName) const;
349
357 bool hasValidIsPresent(std::string const& registerName) const;
358
366 bool hasValidSize(std::string const& registerName) const;
367
375 void addRegister(int const& row, int const& dataIndex, std::string const& newRegisterName = std::string(""));
376
383 void addRegister(std::string const& newRegisterName = std::string(""));
384
393 bool removeRegister(std::string const& registerName, int const& dataIndex);
394
400 void copyRows(std::vector<int> const& selectedRows);
401
407 std::vector<std::string> pasteRows();
408
414 int getPasteRowCount() const;
415
423 std::vector<std::string> getExpressionsInSelectedRegisters(std::vector<std::string> const& registerNames) const;
424
430 void setAddressUnitBits(int const& newAddressUnitbits);
431
438
445
446private:
447
455 QSharedPointer<Register> getRegister(std::string const& registerName) const;
456
464 QSharedPointer<NameGroup> getItem(std::string const& registerName) const;
465
471 QString getNextRegisterOffset() const;
472
473 //-----------------------------------------------------------------------------
474 // Data.
475 //-----------------------------------------------------------------------------
476
478 QSharedPointer<QList<QSharedPointer<RegisterBase> > > registerData_;
479
481 QList<QSharedPointer<Register> > registers_;
482
484 QSharedPointer<RegisterValidator> validator_;
485
487 FieldInterface* subInterface_;
488
490 AccessPolicyInterface* accessPolicyInterface_;
491
493 unsigned int addressUnitBits_;
494};
495
496#endif // REGISTERINTERFACE_H
Interface for editing access policies.
ArrayableMemoryInterface(QSharedPointer< ExpressionParser > expressionParser, QSharedPointer< ExpressionFormatter > formatter)
Interface for editing fields.
bool setAccess(std::string const &registerName, std::string const &newAccess, bool setAccessPolicyAccess=false)
bool hasValidOffset(std::string const &registerName) const
virtual int itemCount() const override final
std::string getIndexedItemName(int itemIndex) const final
int registerDataCount() const
std::string getSizeFormattedExpression(std::string const &registerName) const
std::string getIsPresentFormattedExpression(std::string const &registerName) const
std::string getVolatile(std::string const &registerName) const
bool removeRegister(std::string const &registerName, int const &dataIndex)
bool setSize(std::string const &registerName, std::string const &newSize)
virtual int getAllReferencesToIdInItem(const std::string &itemName, std::string const &valueID) const override final
virtual ~RegisterInterface()=default
std::string getIsPresentExpression(std::string const &registerName) const
std::string getAccessString(std::string const &registerName, bool getAccessPolicyAccess=false) const
std::vector< std::string > getExpressionsInSelectedRegisters(std::vector< std::string > const &registerNames) const
virtual int getItemIndex(std::string const &itemName) const override final
bool hasValidSize(std::string const &registerName) const
std::string getOffsetFormattedExpression(std::string const &registerName) const
RegisterInterface(QSharedPointer< RegisterValidator > validator, QSharedPointer< ExpressionParser > expressionParser, QSharedPointer< ExpressionFormatter > expressionFormatter, FieldInterface *subInterface, AccessPolicyInterface *accessPolicyInterface)
std::vector< std::string > pasteRows()
bool setVolatile(std::string const &registerName, std::string const &newVolatile)
virtual bool itemHasValidName(std::string const &itemName) const override final
void addRegister(int const &row, int const &dataIndex, std::string const &newRegisterName=std::string(""))
virtual std::vector< std::string > getItemNames() const override final
bool hasValidIsPresent(std::string const &registerName) const
bool addAccessPolicy(std::string const &registerName)
int getPasteRowCount() const
void copyRows(std::vector< int > const &selectedRows)
int indexInRegisterData(int const &index) const
std::string getOffsetValue(std::string const &registerName, int const &baseNumber=0) const
AccessTypes::Access getAccess(std::string const &registerName) const
bool hasValidDimension(std::string const &registerName) const
std::string getIsPresentValue(std::string const &registerName, int const &baseNumber=0) const
int getAccessPolicyCount(std::string const &registerName) const
void setRegisters(QSharedPointer< QList< QSharedPointer< RegisterBase > > > newRegisterData)
std::string getSizeExpression(std::string const &registerName) const
AccessPolicyInterface * getAccessPolicyInterface() const
virtual bool validateItems() const override final
virtual bool setName(std::string const &currentName, std::string const &newName) override final
FieldInterface * getSubInterface() const
bool setIsPresent(std::string const &registerName, std::string const &newIsPresent)
std::string getOffsetExpression(std::string const &registerName) const
bool setOffset(std::string const &registerName, std::string const &newOffset)
void setAddressUnitBits(int const &newAddressUnitbits)
std::string getSizeValue(std::string const &registerName, int const &baseNumber=0) const