Tableur C++  1.0
API de tableur + interprète bison en ligne de commande
RefRelative.h
1 /*
2  * RefRelative.h
3  *
4  * Created on: 2 avr. 2015
5  * Author: michel
6  */
7 
8 #ifndef REFRELATIVE_H_
9 #define REFRELATIVE_H_
10 
11 #include "Expression.h"
12 #include "Feuille.h"
13 #include "Cellule.h"
14 #include "ValVide.h"
15 #include "Ref.h"
16 
17 namespace modele {
18 
19 class RefRelative: public Ref {
20 private:
21  Reference *pref;
22  int deplLigne;
23  int deplCol;
24 public:
25  RefRelative(Reference * pr, int dl, int dc) :
26  pref(pr), deplLigne(dl), deplCol(dc) {
27  // TODO Auto-generated constructor stub
28 
29  }
30 
32  Feuille *f = pref->getFeuille(); // feuille courante
33  Reference *r = new Reference(pref->getLigne() + deplLigne,
34  pref->getColonne() + deplCol, f); // réf absolue
35  Cellule * c = f->getCellule(*r);
36  if (c == NULL)
37  return new ValVide(); // valeur nulle
38  else
39  return c->calculer();
40  }
41  Reference toAbsolue() {
42  int c = pref->getColonne() + deplCol;
43  int l = pref->getLigne() + deplLigne;
44  return Reference(l, c, pref->getFeuille());
45  }
46  std::string toString() {
47  return toAbsolue().toString();
48  }
49 
51  return new RefRelative(*this);
52  }
53 
55  pref=r;
56  }
57  ~RefRelative() {
58  // TODO Auto-generated destructor stub
59  }
60 };
61 
62 } /* namespace modele */
63 
64 #endif /* REFRELATIVE_H_ */
std::string toString()
Méthode virtuelle pure retournant une chaîne représentant l'expression (arbre)
Definition: RefRelative.h:46
La classe abstraite Valeur représente une valeur parmi : ValErreur, ValDouble, ValChaine, ValVide.
Definition: Valeur.h:19
Classe abstraite parent de Reference (absolue), RefRelative, RefRelativeLigne, RefRelativeCol.
Definition: Ref.h:18
Definition: RefRelative.h:19
Référence absolue de cellule définie par un numéro de ligne [1..16384], un numéro de colonne [1...
Definition: Reference.h:24
Cellule * getCellule(const Reference r)
Méthode getCellule.
Definition: Feuille.cpp:28
Expression * clone()
Clonage arborescent d'une expression.
Definition: RefRelative.h:50
Definition: Argument.cpp:10
Valeur * calculer()
Méthode virtuelle pure calculant la valeur de l'expression (arbre)
Definition: RefRelative.h:31
void majRefRelatives(Reference *r)
destructeur virtuel impur : seul le destructeur de l'hérité sera appelé
Definition: RefRelative.h:54
La classe Expression représente la classe ABSTRAITE racine de la hiérachie des noeuds calculables de ...
Definition: Expression.h:25
une Cellule ne peut exister en dehors de sa feuille : lors de sa construction, elle est automatiqueme...
Definition: Cellule.h:23
La classe Feuille permet de rassembler des cellules.
Definition: Feuille.h:31
std::string toString()
Méthode virtuelle pure retournant une chaîne représentant l'expression (arbre)
Definition: Reference.cpp:54
La classe ValVide représente une Valeur Vide.
Definition: ValVide.h:19