GCC Code Coverage Report


Directory: ./
File: src/ProgressBarr.cpp
Date: 2024-11-14 16:05:39
Exec Total Coverage
Lines: 86 86 100.0%
Branches: 15 18 83.3%

Line Branch Exec Source
1 /***************************************
2 Auteur : Pierre Aubert
3 Mail : pierre.aubert@lapp.in2p3.fr
4 Licence : CeCILL-C
5 ****************************************/
6
7 #include "ProgressBarr.h"
8
9 using namespace std;
10
11
12 ///constructeur de la barre de progression en console
13 /** @param max : valeur maximale atteinte par barre de progression pleine
14 @param size : taille de la barre de chargement
15 @param chPlein : charactère de remplissage de la barre plein
16 @param chMiddle : charactère au bout de la ligne de remplissage
17 @param chEnd : charactère de remplissage de la barre vide
18 */
19 4 ProgressBarr::ProgressBarr(size_t max, size_t size, char chPlein, char chMiddle, char chEnd){
20 4 init(max, size, chPlein, chMiddle, chEnd);
21 4 }
22
23
24 ///constreucteur de copie de la barre de progression
25 /** @param progressBarr : barre de progression à copier
26 */
27 1 ProgressBarr::ProgressBarr(const ProgressBarr & progressBarr){
28 1 p_buffer = NULL;
29 1 copy(progressBarr);
30 1 }
31
32 ///destructeur de la barre de progression
33 10 ProgressBarr::~ProgressBarr(){
34
1/2
✓ Branch 0 taken 5 times.
✗ Branch 1 not taken.
10 if(p_buffer != NULL){
35
1/2
✓ Branch 0 taken 5 times.
✗ Branch 1 not taken.
10 delete[] p_buffer;
36 }
37 }
38
39
40 ///fonction qui fait avancer (ou reculer) la barre de chargement
41 /** @param avencement : avencement de la barre (plus petit ou égal à max)
42 */
43 1003 void ProgressBarr::progress(size_t avencement){
44 1003 size_t taille = (avencement*p_size)/p_max;
45
2/2
✓ Branch 0 taken 102 times.
✓ Branch 1 taken 901 times.
1003 if(p_old_taille != taille){
46 102 int pourcent = (avencement*100)/p_max;
47 //on efface la ligne de la console où il y a la barre de chargement
48 102 clear();
49 102 cerr << "\r" << p_buffer << "\r\r\r\r";
50 //on affiche la barre de chargement
51 102 feelbuffer(taille);
52 102 cerr << "[" << p_buffer << "|" << pourcent << "%]";
53 //on met old_taille à jour
54 102 p_old_taille = taille;
55 }
56 1003 }
57
58 ///retourne la valeur max atteinte par la barre
59 /** @return valeur max atteinte par la barre
60 */
61 2 size_t ProgressBarr::getMax() const{
62 2 return p_max;
63 }
64
65 ///retourne la taille maximale de la barre
66 /** @return taille maximale de la barre
67 */
68 1 size_t ProgressBarr::getSize() const{
69 1 return p_size;
70 }
71
72 ///retourne le caractère de remplissage
73 /** @return caractère de remplissage
74 */
75 1 char ProgressBarr::getChPlein() const{
76 1 return p_chPlein;
77 }
78
79 ///retourne le charactère au bout de la ligne de remplissage
80 /** @return charactère au bout de la ligne de remplissage
81 */
82 1 char ProgressBarr::getChMiddle() const{
83 1 return p_chMiddle;
84 }
85
86 ///retourne le charactère de remplissage de la barre vide
87 /** @return charactère de remplissage de la barre vide
88 */
89 1 char ProgressBarr::getChEnd() const{
90 1 return p_chEnd;
91 }
92
93 ///init la valeur max atteinte par la barre
94 /** @param max : valeur max atteinte par la barre
95 */
96 1 void ProgressBarr::setMax(size_t max){
97 1 p_max = max;
98 1 }
99
100 ///init la taille de la barre
101 /** @param size : taille de la barre de chargement pleine
102 */
103 1 void ProgressBarr::setSize(size_t size){
104 1 p_size = size;
105 1 }
106
107 ///init le caractère de remplissage
108 /** @param chPlein : caractère de remplissage
109 */
110 1 void ProgressBarr::setChPlein(char chPlein){
111 1 p_chPlein = chPlein;
112 1 }
113
114 ///init le charactère au bout de la ligne de remplissage
115 /** @param chMiddle : charactère au bout de la ligne de remplissage
116 */
117 1 void ProgressBarr::setChMiddle(char chMiddle){
118 1 p_chMiddle = chMiddle;
119 1 }
120
121 ///init le charactère de remplissage de la barre vide
122 /** @param chEnd : charactère de remplissage de la barre vide
123 */
124 1 void ProgressBarr::setChEnd(char chEnd){
125 1 p_chEnd = chEnd;
126 1 }
127
128 ///affiche la barre de chargement finie
129 1 void ProgressBarr::finish(){
130 1 progress(p_max);
131 1 cout << endl;
132 1 }
133
134 ///redéfinition de l'opérateur =
135 /** @param progressBarr : barre de chargement à copier
136 */
137 2 ProgressBarr & ProgressBarr::operator = (const ProgressBarr & progressBarr){
138 2 copy(progressBarr);
139 2 return *this;
140 }
141
142 ///Initialisation de la barre de progression en console
143 /** @param max : valeur maximale atteinte par barre de progression pleine
144 @param size : taille de la barre de chargement
145 @param chPlein : charactère de remplissage de la barre plein
146 @param chMiddle : charactère au bout de la ligne de remplissage
147 @param chEnd : charactère de remplissage de la barre vide
148 */
149 4 void ProgressBarr::init(size_t max,size_t size, char chPlein, char chMiddle, char chEnd){
150 4 p_buffer = new char[size + 1lu];
151 4 p_size = size;
152 4 p_max = max;
153 4 p_chPlein = chPlein;
154 4 p_chMiddle = chMiddle;
155 4 p_chEnd = chEnd;
156 4 p_old_taille = 0lu;
157 4 }
158
159 ///fonction qui copie la barre de chargement
160 /** @param progressBarr : barre de chargement à copier
161 */
162 3 void ProgressBarr::copy(const ProgressBarr & progressBarr){
163
2/2
✓ Branch 0 taken 2 times.
✓ Branch 1 taken 1 times.
3 if(p_buffer != NULL){
164
1/2
✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
2 delete [] p_buffer;
165 }
166 3 p_buffer = new char[progressBarr.p_size + 1]; //on pense au caractère \0
167 3 p_size = progressBarr.p_size;
168 3 p_max = progressBarr.p_max;
169 3 p_chPlein = progressBarr.p_chPlein;
170 3 p_chMiddle = progressBarr.p_chMiddle;
171 3 p_chEnd = progressBarr.p_chEnd;
172 3 p_old_taille = progressBarr.p_old_taille;
173 3 }
174
175 ///affiche la barre de chargement
176 /** @param taille : taille de la barre à afficher
177 */
178 102 void ProgressBarr::feelbuffer(size_t taille){
179
2/2
✓ Branch 0 taken 100 times.
✓ Branch 1 taken 2 times.
102 if(taille <= p_size){
180
2/2
✓ Branch 0 taken 5050 times.
✓ Branch 1 taken 100 times.
5150 for(size_t i = 0; i < taille; ++i){
181 5050 p_buffer[i] = p_chPlein;
182 }
183 100 p_buffer[taille] = p_chMiddle;
184 }
185
2/2
✓ Branch 0 taken 4851 times.
✓ Branch 1 taken 102 times.
4953 for(size_t i = taille + 1; i < p_size; ++i){
186 4851 p_buffer[i] = p_chEnd;
187 }
188 102 p_buffer[p_size] = '\0';
189 102 }
190
191 ///fonction qui efface la barre de chargement
192 102 void ProgressBarr::clear(){
193
2/2
✓ Branch 0 taken 10200 times.
✓ Branch 1 taken 102 times.
10302 for(size_t i = 0; i < p_size; ++i){
194 10200 p_buffer[i] = '\r';
195 }
196 102 p_buffer[p_size] = '\0';
197 102 }
198
199
200