aboutsummaryrefslogtreecommitdiff
path: root/daemon/Counter.h
blob: 041020b4e285931f581c5355bcfaa40f92a8fc35 (plain)
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
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
/**
 * Copyright (C) ARM Limited 2013. All rights reserved.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License version 2 as
 * published by the Free Software Foundation.
 */

#ifndef COUNTER_H
#define COUNTER_H

#include <string.h>

class Driver;

class Counter {
public:
	static const size_t MAX_STRING_LEN = 80;
	static const size_t MAX_DESCRIPTION_LEN = 400;

	Counter () {
		clear();
	}

	void clear () {
		mType[0] = '\0';
		mTitle[0] = '\0';
		mName[0] = '\0';
		mDescription[0] = '\0';
		mDisplay[0] = '\0';
		mUnits[0] = '\0';
		mModifier = 1;
		mEnabled = false;
		mEvent = 0;
		mCount = 0;
		mKey = 0;
		mPerCPU = false;
		mEBSCapable = false;
		mAverageSelection = false;
		mDriver = NULL;
	}

	void setType(const char *const type) { strncpy(mType, type, sizeof(mType)); mType[sizeof(mType) - 1] = '\0'; }
	void setTitle(const char *const title) { strncpy(mTitle, title, sizeof(mTitle)); mTitle[sizeof(mTitle) - 1] = '\0'; }
	void setName(const char *const name) { strncpy(mName, name, sizeof(mName)); mName[sizeof(mName) - 1] = '\0'; }
	void setDescription(const char *const description) { strncpy(mDescription, description, sizeof(mDescription)); mDescription[sizeof(mDescription) - 1] = '\0'; }
	void setDisplay(const char *const display) { strncpy(mDisplay, display, sizeof(mDisplay)); mDisplay[sizeof(mDisplay) - 1] = '\0'; }
	void setUnits(const char *const units) { strncpy(mUnits, units, sizeof(mUnits)); mUnits[sizeof(mUnits) - 1] = '\0'; }
	void setModifier(const int modifier) { mModifier = modifier; }
	void setEnabled(const bool enabled) { mEnabled = enabled; }
	void setEvent(const int event) { mEvent = event; }
	void setCount(const int count) { mCount = count; }
	void setKey(const int key) { mKey = key; }
	void setPerCPU(const bool perCPU) { mPerCPU = perCPU; }
	void setEBSCapable(const bool ebsCapable) { mEBSCapable = ebsCapable; }
	void setAverageSelection(const bool averageSelection) { mAverageSelection = averageSelection; }
	void setDriver(Driver *const driver) { mDriver = driver; }

	const char *getType() const { return mType;}
	const char *getTitle() const { return mTitle; }
	const char *getName() const { return mName; }
	const char *getDescription() const { return mDescription; }
	const char *getDisplay() const { return mDisplay; }
	const char *getUnits() const { return mUnits; }
	int getModifier() const { return mModifier; }
	bool isEnabled() const { return mEnabled; }
	int getEvent() const { return mEvent; }
	int getCount() const { return mCount; }
	int getKey() const { return mKey; }
	bool isPerCPU() const { return mPerCPU; }
	bool isEBSCapable() const { return mEBSCapable; }
	bool isAverageSelection() const { return mAverageSelection; }
	Driver *getDriver() const { return mDriver; }

private:
	// Intentionally unimplemented
	Counter(const Counter &);
	Counter & operator=(const Counter &);

	char mType[MAX_STRING_LEN];
	char mTitle[MAX_STRING_LEN];
	char mName[MAX_STRING_LEN];
	char mDescription[MAX_DESCRIPTION_LEN];
	char mDisplay[MAX_STRING_LEN];
	char mUnits[MAX_STRING_LEN];
	int mModifier;
	bool mEnabled;
	int mEvent;
	int mCount;
	int mKey;
	bool mPerCPU;
	bool mEBSCapable;
	bool mAverageSelection;
	Driver *mDriver;
};

#endif // COUNTER_H