forked from playbill/Comfortably-Numb-0.2
-
Notifications
You must be signed in to change notification settings - Fork 0
/
pile.cpp
executable file
·102 lines (66 loc) · 1.49 KB
/
pile.cpp
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
/**
* \file pile.cpp
* \brief Contient l'implementation des fonctions de Pile.h
* \author Charrier Lucas et Rossier Titouan
* \version 0.1
* \date 31 Mai 2012
*
*/
#include "pile.h"
Pile* Pile::instanceUnique = 0; /*! Mise à 0 de l'element instanceUnique */
Pile::Pile(): pile(new QStack<Element*>()){}
Pile::~Pile(){
pile->clear();
delete pile;}
Pile* Pile::donneInstance(){
if(instanceUnique == 0)
instanceUnique = new Pile;
return instanceUnique;
}
void Pile::libereInstance(){
if(instanceUnique != 0)
delete instanceUnique;
instanceUnique = 0;
}
QStack<Element*> Pile::getPile()const{return *pile;}
void Pile::empilerElement(Element * e){
pile->push(e);
}
Element* Pile::depilerElement(){
if(!pile->isEmpty())
return pile->pop();
return 0;
}
void Pile::swap(const unsigned int x,const unsigned int y){
if(!pile->isEmpty()){
//\todo gestion erreur
qDebug()<<pile->at(4)->toQString();
if( (x <pile->size()) && (y<pile->size())){
Element * e = pile->at(x);
pile->replace(x, pile->at(y));
pile->replace(y,e);
}
}
}
void Pile::clear(){
pile->clear();
}
void Pile::drop(){
delete pile->pop(); /*! on enleve l'element du haut de la pile et on le delete */
}
Element* Pile::pop()
{
return pile->pop();
}
void Pile::push(Element* e)
{
pile->push(e);
}
int Pile::size()
{
return pile->size();
}
Element* Pile::top()
{
return pile->top();
}