LibMusicXML 3.18
msrSyllables_MUT_DEP.h
1/*
2 This file is to be included only by msrMutualDependencies.h,
3 to satisfy declarations mutual dependencies.
4*/
5
6//______________________________________________________________________________
7class msrSyllable : public msrMeasureElement
8{
9 public:
10
11 // data types
12 // ------------------------------------------------------
13
14 // we want to end the line in the LilyPond code at a break
15 enum msrSyllableKind {
16 kSyllableNone,
17 kSyllableSingle,
18 kSyllableBegin, kSyllableMiddle, kSyllableEnd,
19
20 kSyllableOnRestNote,
21 kSyllableSkipRestNote,
22 kSyllableSkipNonRestNote,
23
24 kSyllableMeasureEnd,
25 kSyllableLineBreak, kSyllablePageBreak};
26
27 static string syllableKindAsString (
28 msrSyllableKind syllableKind);
29
30 enum msrSyllableExtendKind {
31 kSyllableExtendNone,
32 kSyllableExtendSingle,
33 kSyllableExtendStart, kSyllableExtendContinue, kSyllableExtendStop };
34
35 static string syllableExtendKindAsString (
36 msrSyllableExtendKind syllableExtendKind);
37
38
39 // creation from MusicXML
40 // ------------------------------------------------------
41
42 static SMARTP<msrSyllable> create (
43 int inputLineNumber,
44 msrSyllableKind syllableKind,
45 msrSyllableExtendKind syllableExtendKind,
46 rational syllableWholeNotes,
47 msrTupletFactor syllableTupletFactor,
48 S_msrStanza syllableStanzaUpLink);
49
50 static SMARTP<msrSyllable> createWithNextMeasurePuristNumber (
51 int inputLineNumber,
52 msrSyllableKind syllableKind,
53 msrSyllableExtendKind syllableExtendKind,
54 rational syllableWholeNotes,
55 msrTupletFactor syllableTupletFactor,
56 S_msrStanza syllableStanzaUpLink,
57 int syllableNextMeasurePuristNumber);
58
59 SMARTP<msrSyllable> createSyllableNewbornClone (
60 S_msrPart containingPart); // JMI
61
62 SMARTP<msrSyllable> createSyllableDeepCopy (
63 S_msrPart containingPart);
64
65 protected:
66
67 // constructors/destructor
68 // ------------------------------------------------------
69
71 int inputLineNumber,
72 msrSyllableKind syllableKind,
73 msrSyllableExtendKind syllableExtendKind,
74 rational syllableWholeNotes,
75 msrTupletFactor syllableTupletFactor,
76 S_msrStanza syllableStanzaUpLink);
77
79 int inputLineNumber,
80 msrSyllableKind syllableKind,
81 msrSyllableExtendKind syllableExtendKind,
82 rational syllableWholeNotes,
83 msrTupletFactor syllableTupletFactor,
84 S_msrStanza syllableStanzaUpLink,
85 int syllableNextMeasurePuristNumber);
86
87 virtual ~msrSyllable ();
88
89 public:
90
91 // set and get
92 // ------------------------------------------------------
93
94 // upLinks
95 S_msrNote getSyllableNoteUpLink () const
96 { return fSyllableNoteUpLink; }
97
98 S_msrStanza getSyllableStanzaUpLink () const
99 { return fSyllableStanzaUpLink; }
100
101 // syllable kind and contents
102 msrSyllableKind getSyllableKind () const
103 { return fSyllableKind; }
104
105 const list<string>& getSyllableTextsList ()
106 { return fSyllableTextsList; }
107
108 msrSyllableExtendKind getSyllableExtendKind () const
109 { return fSyllableExtendKind; }
110
111 // syllable whole notes
112 rational getSyllableWholeNotes () const
113 { return fSyllableWholeNotes; }
114
115 // syllable tuplet factor
116 msrTupletFactor getSyllableTupletFactor () const
117 { return fSyllableTupletFactor; }
118
119 // syllable next measure purist number
120 void setSyllableNextMeasurePuristNumber (
121 int puristMeasureNumber)
122 {
123 fSyllableNextMeasurePuristNumber =
124 puristMeasureNumber;
125 }
126
127 int getSyllableNextMeasurePuristNumber () const
128 { return fSyllableNextMeasurePuristNumber; }
129
130 // services
131 // ------------------------------------------------------
132
133 void appendSyllableToNoteAndSetItsNoteUpLink (
134 S_msrNote note);
135
136 void appendLyricTextToSyllable (string text);
137
138 public:
139
140 // visitors
141 // ------------------------------------------------------
142
143 virtual void acceptIn (basevisitor* v);
144 virtual void acceptOut (basevisitor* v);
145
146 virtual void browseData (basevisitor* v);
147
148 public:
149
150 // print
151 // ------------------------------------------------------
152
153 string syllableNoteUpLinkAsString () const;
154
155 string syllableWholeNotesAsMsrString () const;
156
157 string syllableKindAsString () const;
158
159 string syllableExtendKindAsString () const;
160
161 string syllableTextsListAsString () const;
162
163 static void writeTextsList (
164 const list<string>& textsList,
165 ostream& os);
166
167 string asString () const;
168
169 virtual void print (ostream& os) const;
170
171 private:
172
173 // fields
174 // ------------------------------------------------------
175
176 // upLinks
177 S_msrNote fSyllableNoteUpLink;
178 S_msrStanza fSyllableStanzaUpLink;
179
180 // syllable kind and contents
181 msrSyllableKind fSyllableKind;
182 list<string> fSyllableTextsList;
183 msrSyllableExtendKind fSyllableExtendKind;
184
185 // syllable whole notes
186 rational fSyllableWholeNotes;
187
188 // syllable tuplet factor
189 msrTupletFactor fSyllableTupletFactor;
190
191 // syllable complementary measure number
192 // for kSyllableMeasureEnd, kSyllableLineBreak and kSyllablePageBreak
193 int fSyllableNextMeasurePuristNumber;
194};
195typedef SMARTP<msrSyllable> S_msrSyllable;
196EXP ostream& operator<< (ostream& os, const S_msrSyllable& elt);
197
Definition: msrSyllables_MUT_DEP.h:8
Rational number representation.
Definition: rational.h:25