RadioSvegliaGBE
StopWatch.cpp
Go to the documentation of this file.
1 
11 // Inclusione <automatica> dell'header che si sta implementando
12 #include "StopWatch.h"
13 
14 // Implementazione del metodo 'Init' della categoria 'Init'
16 {
17  // Se esiste, dealloco istanza corrente per 'm_StopWatch'
18  if (m_StopWatch)
19  {
20  // Deallocazione
21  delete m_StopWatch;
22 
23  // Sanificazione manuale
24  m_StopWatch = nullptr;
25  }
26 
27  // Costruzione dell'oggetto di classe "StopWatchData" attraverso il corrispettivo costruttore di default
28  // Allocazione dinamica [heap]
29  m_StopWatch = new StopWatchData();
30 
31  // Dopo l'allocazione, controllo che effettivamente � andata a buon fine. Un puntatore nullo (i.e. 'nullptr') sarebbe indice di errori durante l'allocazione.
32  if (m_StopWatch)
33  return true;
34 
35  return false;
36 }
37 
38 // Implementazione del metodo 'Start' della categoria 'Service Management'
40 {
41  // Avvio il cronometro con il rispettivo metodo 'Start' della classe "StopWatchData"
42  // Ritorno, inoltre, il valore booleano 'true' o 'false' indicante il risultato dell'operazione appena eseguita
43 
44  // Prima di effettuare una qualsiasi chiamata, verifico che l'oggetto 'm_StopWatch' sia stato effettivamente allocato
45  if (m_StopWatch)
46  return m_StopWatch->Start();
47  else
48  return false;
49 }
50 
51 // Implementazione del metodo 'Stop' della categoria 'Service Management'
53 {
54  // Arresto il cronometro con il rispettivo metodo 'Stop' della classe "StopWatchData"
55  // Ritorno, inoltre, il valore booleano 'true' o 'false' indicante il risultato dell'operazione appena eseguita
56 
57  // Prima di effettuare una qualsiasi chiamata, verifico che l'oggetto 'm_StopWatch' sia stato effettivamente allocato
58  if (m_StopWatch)
59  return m_StopWatch->Stop();
60  else
61  return false;
62 }
63 
64 // Implementazione del metodo 'Reset' della categoria 'Service Management'
66 {
67  // Resetto il cronometro allocando un nuovo oggetto cronometro di classe "StopWatchData".
68  // L'allocazione provocher� come risultato un nuovo oggetto, con nuovi valori (quelli di default).
69  // Il vecchio oggetto con tutte le sue informazioni verr� deallocato.
70  // Ritorno, inoltre, il valore booleano 'true' o 'false' indicante il risultato dell'operazione appena eseguita
71  return Init();
72 }
73 
74 // Implementazione del metodo 'get_StopWatch' della categoria 'LowLevel getters'
76 {
77  // Ritorno l'attributo 'm_StopWatch' perch� rappresenta gi� un puntatore
78  return m_StopWatch;
79 }
80 
81 // Implementazione del metodo 'get_CurrentFormattedStopWatch' della categoria 'Metodi'
83 {
84  // Ottengo i valori del cronometro formattati in un tipo 'String' [stringa] --> 'hh:mm:ss'
85  // Per fare ci�, utilizzo il metodo 'get_CurrentFormattedStopWatch' della classe "StopWatchData"
86  // In caso di errore, ottengo come stringa il valore della 'constexpr' '_invalidvalue'
87 
88  // Prima di effettuare una qualsiasi chiamata, verifico che l'oggetto 'm_StopWatch' sia stato effettivamente allocato
89  if (m_StopWatch)
90  {
91  // Creo una variabile locale allo STACK FRAME di questo metodo <-- [reference '&'] non disponibile in ritorno
92  // La variabile verr� utilizzata per evitare le 'recall' ridondanti durante l'analisi del valore in ritorno con l'invalidatore della classe "StopWatchData"
93  auto l_Supporter = m_StopWatch->get_CurrentFormattedStopWatch();
94 
95  if (l_Supporter == String(StopWatchData::get_CoreInvalidator()))
96  return String(m_Invalidator);
97  else
98  return l_Supporter;
99  }
100 
101  else
102  return String(m_Invalidator);
103 }
104 
105 // Implementazione del metodo 'get_WorkingState' della categoria 'Metodi'
107 {
108  // Ottengo lo stato attuale del cronometro
109  // Per fare ci�, utilizzo il metodo 'get_WorkingState' della classe "StopWatchData"
110  // In caso di errore, restituisce lo stato 'WorkingState::INVALID'
111 
112  // Prima di effettuare una qualsiasi chiamata, verifico che l'oggetto 'm_StopWatch' sia stato effettivamente allocato
113  if (m_StopWatch)
114  return m_StopWatch->get_WorkingState();
115  else
116  // Questa eventualità impedisce la presenza di una 'reference [&]' nel tipo di ritorno
118 }
119 
120 // Implementazione del metodo 'Trigger_to_Check' della categoria 'Metodi'
122 {
123  // Effettuo l'operazione richiamando il metodo 'Trigger_to_Check' della classe "StopWatchData"
124 
125  // Prima di effettuare una qualsiasi chiamata, verifico che l'oggetto 'm_StopWatch' sia stato effettivamente allocato
126  if (m_StopWatch)
128 }
129 
130 // Implementazione del metodo 'get_Invalidator' della categoria 'getter -> Invalidator'
131 /*La specificazione 'inline' rappresenta una grossa ottimizzazione!!*/
132 inline const int& StopWatch::get_Invalidator()
133 {
134  // Ritorno il valore dell'attributo 'm_Invalidator'. Per evitare la copia durante la fase di ritorno, ritorno l'attributo
135  // originale [referenza --> reference '&']. L'attributo � gi� costante, questo evita modifiche non autorizzate.
136  return m_Invalidator;
137 }
138 
StopWatch::Stop
static bool Stop()
Arresta l'esecuzione del cronometro.
Definition: StopWatch.cpp:52
StopWatch::Reset
static bool Reset()
Resetta il cronometro, resettandone i valori e lo stato ai valori di default.
Definition: StopWatch.cpp:65
StopWatch::m_StopWatch
static StopWatchData * m_StopWatch
Definition: StopWatch.h:127
StopWatch::Start
static bool Start()
Avvia l'esecuzione del cronometro.
Definition: StopWatch.cpp:39
StopWatch::Trigger_to_Check
static void Trigger_to_Check()
Controlla la presenza di una connessione Internet valida. In caso negativo, effettua il reset di sicu...
Definition: StopWatch.cpp:121
StopWatchData::WorkingState::INVALID
StopWatch::get_StopWatch
static StopWatchData *const get_StopWatch()
LowLevel getter per l'attributo m_StopWatch.
Definition: StopWatch.cpp:75
StopWatch::get_WorkingState
static const StopWatchData::WorkingState get_WorkingState()
Permette di ottenere il valore dello stato del cronometro.
Definition: StopWatch.cpp:106
StopWatchData::get_CoreInvalidator
static const int & get_CoreInvalidator()
Permette di ottenere l'invalidatore del nucleo della classe.
Definition: StopWatchData.cpp:246
StopWatchData
Classe di definizione dell'oggetto per la funzione 'cronometro'.
Definition: StopWatchData.h:73
StopWatchData::get_CurrentFormattedStopWatch
String get_CurrentFormattedStopWatch()
Permette di ottenere il valore del cronometro formattato nel seguente formato: 'hh:mm:ss'.
Definition: StopWatchData.cpp:168
StopWatchData::WorkingState
WorkingState
Enumerazione per la gestione dello stato del cronometro.
Definition: StopWatchData.h:91
StopWatchData::Start
bool Start()
Avvia l'esecuzione del cronometro.
Definition: StopWatchData.cpp:36
StopWatch.h
StopWatchData::get_WorkingState
const WorkingState & get_WorkingState()
Permette di ottenere il valore dello stato del cronometro.
Definition: StopWatchData.cpp:230
StopWatch::get_CurrentFormattedStopWatch
static String get_CurrentFormattedStopWatch()
Permette di ottenere il valore del cronometro formattato nel seguente formato: 'hh:mm:ss'.
Definition: StopWatch.cpp:82
StopWatch::get_Invalidator
static const int & get_Invalidator()
Permette di ottenere l'invalidatore della classe.
Definition: StopWatch.cpp:132
StopWatch::Init
static bool Init()
Metodo di inizializzazione dei componenti della classe.
Definition: StopWatch.cpp:15
StopWatchData::Trigger_to_Check
void Trigger_to_Check()
Controlla la presenza di una connessione Internet valida. In caso negativo, effettua il reset di sicu...
Definition: StopWatchData.cpp:237
StopWatchData::Stop
bool Stop()
Arresta l'esecuzione del cronometro.
Definition: StopWatchData.cpp:72
StopWatch::m_Invalidator
static const int m_Invalidator
Definition: StopWatch.h:335