PhoenixMock  1.8.7
Tools to split/merge/print mock used in Phoenix
ProgressBarr.cpp
Go to the documentation of this file.
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 
13 
19 ProgressBarr::ProgressBarr(size_t max, size_t size, char chPlein, char chMiddle, char chEnd){
20  init(max, size, chPlein, chMiddle, chEnd);
21 }
22 
23 
25 
28  p_buffer = NULL;
29  copy(progressBarr);
30 }
31 
34  if(p_buffer != NULL){
35  delete[] p_buffer;
36  }
37 }
38 
39 
41 
43 void ProgressBarr::progress(size_t avencement){
44  size_t taille = (avencement*p_size)/p_max;
45  if(p_old_taille != taille){
46  int pourcent = (avencement*100)/p_max;
47  //on efface la ligne de la console où il y a la barre de chargement
48  clear();
49  cerr << "\r" << p_buffer << "\r\r\r\r";
50  //on affiche la barre de chargement
51  feelbuffer(taille);
52  cerr << "[" << p_buffer << "|" << pourcent << "%]";
53  //on met old_taille à jour
54  p_old_taille = taille;
55  }
56 }
57 
59 
61 size_t ProgressBarr::getMax() const{
62  return p_max;
63 }
64 
66 
68 size_t ProgressBarr::getSize() const{
69  return p_size;
70 }
71 
73 
76  return p_chPlein;
77 }
78 
80 
83  return p_chMiddle;
84 }
85 
87 
90  return p_chEnd;
91 }
92 
94 
96 void ProgressBarr::setMax(size_t max){
97  p_max = max;
98 }
99 
101 
103 void ProgressBarr::setSize(size_t size){
104  p_size = size;
105 }
106 
108 
110 void ProgressBarr::setChPlein(char chPlein){
111  p_chPlein = chPlein;
112 }
113 
115 
117 void ProgressBarr::setChMiddle(char chMiddle){
118  p_chMiddle = chMiddle;
119 }
120 
122 
124 void ProgressBarr::setChEnd(char chEnd){
125  p_chEnd = chEnd;
126 }
127 
130  progress(p_max);
131  cout << endl;
132 }
133 
135 
138  copy(progressBarr);
139  return *this;
140 }
141 
143 
149 void ProgressBarr::init(size_t max,size_t size, char chPlein, char chMiddle, char chEnd){
150  p_buffer = new char[size + 1lu];
151  p_size = size;
152  p_max = max;
153  p_chPlein = chPlein;
154  p_chMiddle = chMiddle;
155  p_chEnd = chEnd;
156  p_old_taille = 0lu;
157 }
158 
160 
162 void ProgressBarr::copy(const ProgressBarr & progressBarr){
163  if(p_buffer != NULL){
164  delete [] p_buffer;
165  }
166  p_buffer = new char[progressBarr.p_size + 1]; //on pense au caractère \0
167  p_size = progressBarr.p_size;
168  p_max = progressBarr.p_max;
169  p_chPlein = progressBarr.p_chPlein;
170  p_chMiddle = progressBarr.p_chMiddle;
171  p_chEnd = progressBarr.p_chEnd;
172  p_old_taille = progressBarr.p_old_taille;
173 }
174 
176 
178 void ProgressBarr::feelbuffer(size_t taille){
179  if(taille <= p_size){
180  for(size_t i = 0; i < taille; ++i){
181  p_buffer[i] = p_chPlein;
182  }
183  p_buffer[taille] = p_chMiddle;
184  }
185  for(size_t i = taille + 1; i < p_size; ++i){
186  p_buffer[i] = p_chEnd;
187  }
188  p_buffer[p_size] = '\0';
189 }
190 
193  for(size_t i = 0; i < p_size; ++i){
194  p_buffer[i] = '\r';
195  }
196  p_buffer[p_size] = '\0';
197 }
198 
199 
ProgressBarr::init
void init(size_t max, size_t size, char chPlein, char chMiddle, char chEnd)
Initialisation de la barre de progression en console.
Definition: ProgressBarr.cpp:149
ProgressBarr::ProgressBarr
ProgressBarr(size_t max=100, size_t size=100, char chPlein='=', char chMiddle='>', char chEnd=' ')
constructeur de la barre de progression en console
Definition: ProgressBarr.cpp:19
ProgressBarr::setChEnd
void setChEnd(char chEnd)
init le charactère de remplissage de la barre vide
Definition: ProgressBarr.cpp:124
ProgressBarr::setSize
void setSize(size_t size)
init la taille de la barre
Definition: ProgressBarr.cpp:103
ProgressBarr::p_chMiddle
char p_chMiddle
charactère au bout de la ligne de remplissage
Definition: ProgressBarr.h:56
ProgressBarr::operator=
ProgressBarr & operator=(const ProgressBarr &progressBarr)
redéfinition de l'opérateur =
Definition: ProgressBarr.cpp:137
ProgressBarr::p_max
size_t p_max
valeur maximale atteinte par le chargement
Definition: ProgressBarr.h:50
ProgressBarr::p_size
size_t p_size
taille maximale de la barre de chargement
Definition: ProgressBarr.h:48
ProgressBarr::getChMiddle
char getChMiddle() const
retourne le charactère au bout de la ligne de remplissage
Definition: ProgressBarr.cpp:82
ProgressBarr::p_chPlein
char p_chPlein
caractère de remplissage
Definition: ProgressBarr.h:54
ProgressBarr::getChEnd
char getChEnd() const
retourne le charactère de remplissage de la barre vide
Definition: ProgressBarr.cpp:89
ProgressBarr::copy
void copy(const ProgressBarr &progressBarr)
fonction qui copie la barre de chargement
Definition: ProgressBarr.cpp:162
ProgressBarr::p_old_taille
size_t p_old_taille
ancienne taille de la barre de chargement
Definition: ProgressBarr.h:52
ProgressBarr::progress
void progress(size_t avencement)
fonction qui fait avancer (ou reculer) la barre de chargement
Definition: ProgressBarr.cpp:43
ProgressBarr::feelbuffer
void feelbuffer(size_t taille)
affiche la barre de chargement
Definition: ProgressBarr.cpp:178
ProgressBarr::setChMiddle
void setChMiddle(char chMiddle)
init le charactère au bout de la ligne de remplissage
Definition: ProgressBarr.cpp:117
ProgressBarr::~ProgressBarr
virtual ~ProgressBarr()
destructeur de la barre de progression
Definition: ProgressBarr.cpp:33
ProgressBarr
classe qui permet d'afficher une barre de chargement dans la console
Definition: ProgressBarr.h:14
ProgressBarr::clear
void clear()
fonction qui efface la barre de chargement
Definition: ProgressBarr.cpp:192
ProgressBarr::finish
void finish()
affiche la barre de chargement finie
Definition: ProgressBarr.cpp:129
ProgressBarr::getSize
size_t getSize() const
retourne la taille maximale de la barre
Definition: ProgressBarr.cpp:68
ProgressBarr::setMax
void setMax(size_t max)
init la valeur max atteinte par la barre
Definition: ProgressBarr.cpp:96
ProgressBarr::getChPlein
char getChPlein() const
retourne le caractère de remplissage
Definition: ProgressBarr.cpp:75
ProgressBarr::getMax
size_t getMax() const
retourne la valeur max atteinte par la barre
Definition: ProgressBarr.cpp:61
ProgressBarr.h
ProgressBarr::p_chEnd
char p_chEnd
charactère de remplissage de la barre vide
Definition: ProgressBarr.h:58
ProgressBarr::setChPlein
void setChPlein(char chPlein)
init le caractère de remplissage
Definition: ProgressBarr.cpp:110