-
Notifications
You must be signed in to change notification settings - Fork 0
/
GlobalVariablesArea.h
136 lines (110 loc) · 4.74 KB
/
GlobalVariablesArea.h
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
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
/*!
\file GlobalVariablesArea.h
\brief Interfaccia di GlobalVariablesArea
\author Andrea Zanelli
\date 19-11-2008
*/
#ifndef GLOBALVARIABLESAREA_H_INCLUSION_GUARD
#define GLOBALVARIABLESAREA_H_INCLUSION_GUARD
#include <stdint.h>
#include <string>
#include <map>
using std::string;
using std::map;
/*!
\class GlobalVariablesArea
\brief Memorizza le variabili globali con nome-valore
Permette di aggiungere variabili globali di tipo S (short), C (char), I (int),
J (long) e di impostare e leggere i valori associati al nome della variabile.
*/
class GlobalVariablesArea {
public:
/* METODI PUBBLICI */
/**
* Aggiunge la variabile di tipo S (short: intero con segno a 16 bit) con
* nome <tt>name</tt> e valore iniziale <tt>value</tt> (di default 0).
* Il valore di questa variabile va da -32.768 a +32.767. Se la variabile
* esiste gia` viene sovrascritta.
*/
void add_variable_S(const string& name, const int16_t& value = 0);
/**
* Aggiunge la variabile di tipo C (char: intero senza segno a 16 bit) con
* nome <tt>name</tt> e valore iniziale <tt>value</tt> (di default 0).
* Il valore di questa variabile va da 0 a +65.535. Se la variabile
* esiste gia` viene sovrascritta.
*/
void add_variable_C(const string& name, const uint16_t& value = 0);
/**
* Aggiunge la variabile di tipo I (int: intero con segno a 32 bit) con
* nome <tt>name</tt> e valore iniziale <tt>value</tt> (di default 0).
* Il valore di questa variabile va da -2.147.483.648 a +2.147.483.647.
* Se la variabile esiste gia` viene sovrascritta.
*/
void add_variable_I(const string& name, const int32_t& value = 0);
/**
* Aggiunge la variabile di tipo J (long: intero con segno a 64 bit) cons
* nome <tt>name</tt> e valore iniziale <tt>value</tt> (di default 0).
* Il valore di questa variabile va da -(2^63) a +(2^63 - 1).
* Se la variabile esiste gia` viene sovrascritta.
*/
void add_variable_J(const string& name, const int64_t& value = 0);
/**
* Cambia il valore della variabile di tipo S, con nome <tt>name</tt>,
* impostandolo a <tt>value</tt>. Se la variabile non esiste lancia
* un'eccezione di tipo std::string con la descrizione dell'errore.
*/
void set_variable_S(const string& name, const int16_t& value);
/**
* Cambia il valore della variabile di tipo C, con nome <tt>name</tt>,
* impostandolo a <tt>value</tt>. Se la variabile non esiste lancia
* un'eccezione di tipo std::string con la descrizione dell'errore.
*/
void set_variable_C(const string& name, const uint16_t& value);
/**
* Cambia il valore della variabile di tipo I, con nome <tt>name</tt>,
* impostandolo a <tt>value</tt>. Se la variabile non esiste lancia
* un'eccezione di tipo std::string con la descrizione dell'errore.
*/
void set_variable_I(const string& name, const int32_t& value);
/**
* Cambia il valore della variabile di tipo J, con nome <tt>name</tt>,
* impostandolo a <tt>value</tt>. Se la variabile non esiste lancia
* un'eccezione di tipo std::string con la descrizione dell'errore.
*/
void set_variable_J(const string& name, const int64_t& value);
/**
* Restituisce il valore della variabile di tipo S, con nome <tt>name</tt>.
* Se la variabile non esiste lancia un'eccezione di tipo std::string con
* la descrizione dell'errore.
*/
int16_t get_variable_S(const string& name) const;
/**
* Restituisce il valore della variabile di tipo C, con nome <tt>name</tt>.
* Se la variabile non esiste lancia un'eccezione di tipo std::string con
* la descrizione dell'errore.
*/
uint16_t get_variable_C(const string& name) const;
/**
* Restituisce il valore della variabile di tipo I, con nome <tt>name</tt>.
* Se la variabile non esiste lancia un'eccezione di tipo std::string con
* la descrizione dell'errore.
*/
int32_t get_variable_I(const string& name) const;
/**
* Restituisce il valore della variabile di tipo J, con nome <tt>name</tt>.
* Se la variabile non esiste lancia un'eccezione di tipo std::string con
* la descrizione dell'errore.
*/
int64_t get_variable_J(const string& name) const;
private:
/* VARIABILI PRIVATE */
//! usato per memorizzare le variabili di tipo S (short)
map<string,int16_t> variables_s;
//! usato per memorizzare le variabili di tipo C (char)
map<string,uint16_t> variables_c;
//! usato per memorizzare le variabili di tipo I (int)
map<string,int32_t> variables_i;
//! usato per memorizzare le variabili di tipo J (long)
map<string,int64_t> variables_j;
};
#endif // GLOBALVARIABLESAREA_H_INCLUSION_GUARD