LibMusicXML  3.18
partlistvisitor.h
1 //
2 // partlistvisitor.hpp
3 // libmusicxml2
4 //
5 // Created by Arshia Cont on 05/01/17.
6 //
7 //
8 
9 #ifndef partlistvisitor_h
10 #define partlistvisitor_h
11 
12 #include <map>
13 #include <vector>
14 #include <iostream>
15 #include <sstream>
16 #include <string>
17 
18 #include "exports.h"
19 #include "guido.h"
20 #include "typedefs.h"
21 #include "visitor.h"
22 #include "xml.h"
23 
24 #include "smartlist.h"
25 
26 namespace MusicXML2
27 {
28 
29  class EXP partGroup {
30  public:
31  partGroup(): bracket(false), barlineGrouping(false), visited(false) {};
32  virtual ~partGroup() {};
33 
34  std::vector<std::string> partIDs;
35  std::string guidoRange;
36  int guidoRangeStart, guidoRangeStop;
37  bool bracket;
38  bool barlineGrouping;
39  std::string fGroupName; // optional name of the group
40  std::string fGroupNameDisplay; // overrides the previous
41  bool visited;
42  int xmlGroupNumber;
43  };
44 
45  class EXP partHeader {
46  public:
47  partHeader(): visited(false) {};
48  partHeader(std::string name, std::string nameabbr):
49  fPartName(name), fPartNameAbbr(nameabbr), visited(false)
50  {};
51  virtual ~partHeader()
52  {
53  fPartNameAbbr.clear(); fPartName.clear();
54  };
55 
56  std::string fPartName;
57  std::string fPartNameAbbr;
58  bool visited;
59  };
60 
69  class EXP partlistvisitor :
70  public visitor<S_score_part>,
71  public visitor<S_part_group>
72  {
73  public:
75  virtual ~partlistvisitor() {};
76 
77  std::map<int, partGroup> fPartGroups;
78 
79  std::map<std::string, partHeader> fPartHeaders;
80 
85 
89  void partID2range(partGroup &pGroup);
90 
94  bool checkLonelyBarFormat(int staffID);
95 
96  protected:
97 
98  void visitStart( S_score_part& elt);
99  void visitStart( S_part_group& elt);
100 
101  int fPartGroupIncrementer;
102  std::vector<int> fCurrentPartGroupIndex;
103 
104  std::map<std::string, int> part2staffmap;
105  int staffCreatorCounter;
106  };
107 
108 } // NAMESPACE MUSICXML2
109 #endif /* partlistvisitor_hpp */
the smart pointer implementation
Definition: smartpointer.h:58
Definition: partlistvisitor.h:29
Definition: partlistvisitor.h:45
Produces a summary of a MusicXML parts for groupings.
Definition: partlistvisitor.h:72
Definition: visitor.h:27
bool checkLonelyBarFormat(int staffID)
Checks if current staff is lonely in terms of BarFormat definition.
void partID2range(partGroup &pGroup)
Converts XML Part ID list to Guido's Staff range string.
partGroup * find_first_of_partID_inGroup(std::string partID)
Returns the part group with first occurence of partID (string)