LibMusicXML 3.22
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
26namespace 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
65
69 class EXP partlistvisitor :
70 public visitor<S_score_part>,
71 public visitor<S_part_group>
72 {
73 public:
74 partlistvisitor();
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 */
Definition partlistvisitor.h:29
Definition visitor.h:27
bool checkLonelyBarFormat(int staffID)
Checks if current staff is lonely in terms of BarFormat definition.
partGroup * find_first_of_partID_inGroup(std::string partID)
Returns the part group with first occurence of partID (string)
void partID2range(partGroup &pGroup)
Converts XML Part ID list to Guido's Staff range string.