LibMusicXML  3.18
msrStanzas_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 msrStanza : public msrElement
8 {
9  public:
10 
11  // constants
12  // ------------------------------------------------------
13 
14  #define K_NO_STANZA_NUMBER "-1"
15  #define K_NO_STANZA_NAME "Unknown stanza"
16 
17  // creation from MusicXML
18  // ------------------------------------------------------
19 
20  static SMARTP<msrStanza> create (
21  int inputLineNumber,
22  string stanzaNumber,
23  S_msrVoice stanzaVoiceUpLink);
24 
25  SMARTP<msrStanza> createStanzaNewbornClone (
26  S_msrVoice containingVoice);
27 
28  SMARTP<msrStanza> createStanzaDeepCopy (
29  S_msrVoice containingVoice);
30 
31  protected:
32 
33  // constructors/destructor
34  // ------------------------------------------------------
35 
36  msrStanza (
37  int inputLineNumber,
38  string stanzaNumber,
39  S_msrVoice stanzaVoiceUpLink);
40 
41  public:
42 
43  virtual ~msrStanza ();
44 
45  private:
46 
47  // initialization
48  // ------------------------------------------------------
49 
50  void initializeStanza ();
51 
52  public:
53 
54  // set and get
55  // ------------------------------------------------------
56 
57  // number
58  string getStanzaNumber () const
59  { return fStanzaNumber; }
60 
61  // name
62  string getStanzaName () const
63  { return fStanzaName; }
64 
65  // contents
66  const vector<S_msrSyllable>&
67  getSyllables () const
68  { return fSyllables; }
69 
70  void setStanzaTextPresent ()
71  { fStanzaTextPresent = true; }
72 
73  bool getStanzaTextPresent () const
74  { return fStanzaTextPresent; }
75 
76  // upLinks
77  S_msrVoice getStanzaVoiceUpLink () const
78  { return fStanzaVoiceUpLink; }
79 
80  // services
81  // ------------------------------------------------------
82 
83  void appendSyllableToStanza (
84  S_msrSyllable syllable);
85 
86  S_msrSyllable appendRestSyllableToStanza (
87  int inputLineNumber,
88  rational wholeNotes);
89 
90  S_msrSyllable appendSkipSyllableToStanza (
91  int inputLineNumber,
92  rational wholeNotes);
93 
94  S_msrSyllable appendMeasureEndSyllableToStanza (
95  int inputLineNumber);
96 
97  S_msrSyllable appendMelismaSyllableToStanza (
98  int inputLineNumber,
99  msrSyllable::msrSyllableKind
100  syllableKind,
101  rational wholeNote);
102 
103 /* JMI
104  S_msrSyllable appendTiedSyllableToStanza (
105  int inputLineNumber,
106  rational wholeNotes);
107 
108  S_msrSyllable appendSlurSyllableToStanza (
109  int inputLineNumber,
110  rational wholeNotes);
111 
112  S_msrSyllable appendSlurBeyondEndSyllableToStanza (
113  int inputLineNumber,
114  rational wholeNotes);
115 
116  S_msrSyllable appendLigatureSyllableToStanza (
117  int inputLineNumber,
118  rational wholeNotes);
119 
120  S_msrSyllable appendLigatureBeyondEndSyllableToStanza (
121  int inputLineNumber,
122  rational wholeNotes);
123 
124  S_msrSyllable appendBarNumberCheckSyllableToStanza (
125  int inputLineNumber,
126  string nextMeasureNumber);
127 
128  S_msrSyllable appendBarcheckSyllableToStanza (
129  int inputLineNumber,
130  string nextMeasureNumber);
131 */
132 
133  S_msrSyllable appendLineBreakSyllableToStanza (
134  int inputLineNumber,
135  int nextMeasurePuristNumber);
136 
137  S_msrSyllable appendPageBreakSyllableToStanza (
138  int inputLineNumber,
139  int nextMeasurePuristNumber);
140 
141  void padUpToCurrentMeasureWholeNotesDurationInStanza ( // JMI
142  int inputLineNumber,
143  rational wholeNotes);
144 
145  void appendPaddingNoteToStanza (
146  int inputLineNumber,
147  rational forwardStepLength);
148 
149  public:
150 
151  // visitors
152  // ------------------------------------------------------
153 
154  virtual void acceptIn (basevisitor* v);
155  virtual void acceptOut (basevisitor* v);
156 
157  virtual void browseData (basevisitor* v);
158 
159  public:
160 
161  // print
162  // ------------------------------------------------------
163 
164  virtual void print (ostream& os) const;
165 
166  private:
167 
168  // fields
169  // ------------------------------------------------------
170 
171  // upLinks
172  S_msrVoice fStanzaVoiceUpLink;
173 
174  // number
175  // The lyric number indicates multiple lines,
176  // though a name can be used as well (as in Finale's verse/chorus/section specification)
177  string fStanzaNumber;
178 
179  // name
180  string fStanzaName;
181 
182  // contents
183  vector<S_msrSyllable> fSyllables;
184 
185  bool fStanzaTextPresent;
186 
187  // current measure whole notes
188  rational fStanzaCurrentMeasureWholeNotesDuration;
189 };
190 typedef SMARTP<msrStanza> S_msrStanza;
191 EXP ostream& operator<< (ostream& os, const S_msrStanza& elt);
192 
msrStanza
Definition: msrStanzas_MUT_DEP.h:8
rational
Rational number representation.
Definition: rational.h:25