File: SimdValueManager.h

package info (click to toggle)
edb-debugger 1.3.0-2.2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 5,124 kB
  • sloc: cpp: 46,241; xml: 4,998; ansic: 3,088; sh: 52; asm: 33; makefile: 5
file content (63 lines) | stat: -rw-r--r-- 1,263 bytes parent folder | download | duplicates (4)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63

#ifndef SIMD_VALUE_MANAGER_H_20191119_
#define SIMD_VALUE_MANAGER_H_20191119_

#include "RegisterGroup.h"
#include "RegisterViewModelBase.h"
#include "Util.h"

#include <QAction>
#include <QModelIndex>
#include <QObject>

namespace ODbgRegisterView {

class SimdValueManager : public QObject {
	Q_OBJECT
private:
	QPersistentModelIndex regIndex_;
	int lineInGroup_;
	QList<ValueField *> elements_;
	QList<QAction *> menuItems_;
	NumberDisplayMode intMode_ = NumberDisplayMode::Hex;

	enum MenuItemNumbers {
		VIEW_AS_BYTES,
		VIEW_AS_WORDS,
		VIEW_AS_DWORDS,
		VIEW_AS_QWORDS,

		VIEW_AS_FLOAT32,
		VIEW_AS_FLOAT64,

		VIEW_INT_AS_HEX,
		VIEW_INT_AS_SIGNED,
		VIEW_INT_AS_UNSIGNED,

		MENU_ITEMS_COUNT
	};

	using Model = RegisterViewModelBase::Model;
	Model *model() const;
	RegisterGroup *group() const;
	Model::ElementSize currentSize() const;
	NumberDisplayMode currentFormat() const;
	void setupMenu();
	void updateMenu();
	void fillGroupMenu();

public:
	SimdValueManager(int lineInGroup, const QModelIndex &nameIndex, RegisterGroup *parent = nullptr);

public Q_SLOTS:
	void displayFormatChanged();

private:
	void showAsInt(Model::ElementSize size);
	void showAsFloat(Model::ElementSize size);
	void setIntFormat(NumberDisplayMode format);
};

}

#endif