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 //______________________________________________________________________________
7 class 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 
70  msrSyllable (
71  int inputLineNumber,
72  msrSyllableKind syllableKind,
73  msrSyllableExtendKind syllableExtendKind,
74  rational syllableWholeNotes,
75  msrTupletFactor syllableTupletFactor,
76  S_msrStanza syllableStanzaUpLink);
77 
78  msrSyllable (
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 };
195 typedef SMARTP<msrSyllable> S_msrSyllable;
196 EXP ostream& operator<< (ostream& os, const S_msrSyllable& elt);
197 
Definition: msrSyllables_MUT_DEP.h:8
Rational number representation.
Definition: rational.h:25