PhoenixLecture  2.0.0
Set of tools to make lectures
platexobj_updateNumber.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 
9 
11 
15 PVecNumber copyAddVecNumber(PVecNumber & vecNumber, long unsigned int numberIndex){
16  long unsigned int nbNumber(vecNumber.size()), nbExpectedNumber(numberIndex + 1lu);
17  if(nbExpectedNumber > nbNumber){
18  for(long unsigned int i(nbNumber); i < nbExpectedNumber; ++i){
19  vecNumber.push_back(1lu);
20  }
21  }else if(nbExpectedNumber < nbNumber){
22  for(long unsigned int i(nbExpectedNumber); i < nbNumber; ++i){
23  vecNumber.pop_back();
24  }
25  vecNumber[numberIndex] += 1lu;
26  }else{
27  vecNumber[numberIndex] += 1lu;
28  }
29  PVecNumber copy(vecNumber);
30  return copy;
31 }
32 
34 
37 void platexobj_updateNumber(PLatexObj & obj, PVecNumber & vecNumber){
38  PVecLatexObj & vecContent = obj.getVecContent();
39  for(PVecLatexObj::iterator it(vecContent.begin()); it != vecContent.end(); ++it){
40  if(!isSection(*it)){continue;}
41  PLatexType::PLatexType type(it->getType());
42  if(type == PLatexType::PART){it->getVecSecNumber() = copyAddVecNumber(vecNumber, 0lu);}
43  else if(type == PLatexType::CHAPTER){it->getVecSecNumber() = copyAddVecNumber(vecNumber, 1lu);}
44  else if(type == PLatexType::SECTION){it->getVecSecNumber() = copyAddVecNumber(vecNumber, 2lu);}
45  else if(type == PLatexType::SUBSECTION){it->getVecSecNumber() = copyAddVecNumber(vecNumber, 3lu);}
46  else if(type == PLatexType::SUBSUBSECTION){it->getVecSecNumber() = copyAddVecNumber(vecNumber, 4lu);}
47  platexobj_updateNumber(*it, vecNumber);
48  }
49 }
50 
52 
55  PVecNumber vecNumber;
56  vecNumber.push_back(0lu);
57  platexobj_updateNumber(obj, vecNumber);
58 }
59 
60 
Describe a latex object.
Definition: PLatexObj.h:40
const std::vector< PLatexObj > & getVecContent() const
Gets the vecContent of the PLatexObj.
Definition: PLatexObj.cpp:410
PLatexType
Type of the PLatexObj.
Definition: PLatexType.h:12
@ SUBSUBSECTION
Definition: PLatexType.h:54
PVecNumber copyAddVecNumber(PVecNumber &vecNumber, long unsigned int numberIndex)
Update the vecNumber and return the proper vector.
void platexobj_updateNumber(PLatexObj &obj, PVecNumber &vecNumber)
Update the vector number of the PLatexObj.
bool isSection(const PLatexObj &obj)
Say if the PLatexObj is a part, charpter, section, subsection or subsubsection.
std::vector< long unsigned int > PVecNumber
Vector of section number.
std::vector< PLatexObj > PVecLatexObj
Vector of obj.