+++ /dev/null
-%{
-Hi,
- I want to write some music that has the structure:
-
- Intro
- \repeat 4 { Chorus [first-ending] verse }
- fifth-ending final
-
- The obvious:
-
- \repeat 4 { Chorus \alternative{{first-ending}{}} verse}
- \alternative{{}{fifth-ending}}
- final
-
- doesn't work.
-
- And the (logically correct but ugly)
-
- \repeat 4 {Chorus}
- \alternative {{first-ending verse}{fifth ending}}
- final
-
- is very ugly, because the volta bracket keeps going for so
- long.
-
- Peter C
-%}
-
-\score{
- <
- \context Staff \notes\relative c''{
- c c c c
- % coda-klugde: let volta span only one bar
- \property Staff.voltaSpannerDuration = #(make-moment 1 1)
- \repeat "volta" 5 { d d d d }
- \alternative { { e e e e f f f f }
- { g g g g } }
- }
- \context Lyrics \lyrics{
- intro1
- \repeat fold 5 {}
- \alternative {
- { chorus1 one verse1 }
- { chorus1 two verse1 }
- { chorus1 three verse }
- { chorus1 four verse }
- }
- five1
- }
- >
-}
-
-
-%\version "1.0.16";
+++ /dev/null
-/*
- identifier.cc -- implement identifier and derived classes
-
- source file of the GNU LilyPond music typesetter
-
- (c) 1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-*/
-
-
-/*
- JUNKTHIS!
- */
-#include <assert.h>
-
-#include "music-output-def.hh"
-#include "score.hh"
-#include "identifier.hh"
-#include "my-lily-lexer.hh"
-#include "debug.hh"
-#include "ly-smobs.icc"
-
-
-IMPLEMENT_UNSMOB(Identifier, identifier);
-IMPLEMENT_SMOBS(Identifier);
-IMPLEMENT_DEFAULT_EQUAL_P(Identifier);
-
-Identifier::Identifier (int code)
-{
- token_code_i_ = code;
- accessed_b_ = 0;
- smobify_self ();
-}
-
-Identifier::Identifier (Identifier const&s)
- : Input (s)
-{
- smobify_self ();
- token_code_i_ = s.token_code_i_;
- accessed_b_ = s.accessed_b_;
-}
-
-Identifier::~Identifier()
-{
-}
-
-void
-Identifier::error (String expect) const
-{
- ::error (_f ("wrong identifier type, expected: `%s'", expect));
-}
-
-String
-Identifier::str () const
-{
- return do_str ();
-}
-
-String
-Identifier::do_str () const
-{
- return "";
-}
-
-
-/* ugh. */
-#define DUMMY_STR(Class) \
-String \
-Class ## _identifier::do_str () const { \
- return String (#Class); \
-}
-
-DUMMY_STR(Score);
-DUMMY_STR(Music_output_def);
-
-
-#define DEFAULT_STR(Class) \
-String \
-Class ## _identifier::do_str () const\
-{\
- return to_str (*data_p_);\
-}
-
-
-
-/*
- fucking C++ blows me.
- */
-
-#define DEFAULT_ACCESSOR(Class)\
-Class*\
-Class ## _identifier::access_content_ ## Class (bool copy_b) const {\
- ((Class ## _identifier*)this)->accessed_b_ = true;\
- return copy_b ? new Class (*data_p_) : data_p_;\
-}
-
-#define VIRTUAL_ACCESSOR(Class)\
-Class*\
-Class ## _identifier::access_content_ ## Class (bool copy_b) const{\
- ((Class ## _identifier*)this)->accessed_b_ = true;\
- return copy_b ? dynamic_cast<Class*> (data_p_->clone()) : data_p_;\
-}
-
-#define IMPLEMENT_ID_CLASS(Class) \
- Class ## _identifier::~Class ## _identifier() { delete data_p_; }\
- Class ## _identifier::Class ## _identifier (Class*st, int code) \
- :Identifier (code)\
- {\
- data_p_ = st;\
- }\
-Class ## _identifier::Class ## _identifier (Class ## _identifier const &s) \
- : Identifier (s)\
-{\
- data_p_ = s.access_content_ ## Class (true);\
-}
-
-
-IMPLEMENT_ID_CLASS(Score);
-IMPLEMENT_ID_CLASS(Music_output_def);
-VIRTUAL_ACCESSOR(Music_output_def);
-DEFAULT_ACCESSOR(Score);
-
-
-int
-Identifier::print_smob (SCM s, SCM p, scm_print_state*)
-{
- return 1;
-}
-
-SCM
-Identifier::mark_smob (SCM s)
-{
- return SCM_EOL;
-}
-
-
-
+++ /dev/null
-/*
- identifier.hh -- part of GNU LilyPond
-
- (c) 1996--2000 Han-Wen Nienhuys
-*/
-
-#ifndef IDENTIFIER_HH
-#define IDENTIFIER_HH
-
-#include "lily-proto.hh"
-#include "lily-guile.hh"
-#include "string.hh"
-#include "input.hh"
-#include "virtual-methods.hh"
-#include "smobs.hh"
-
-
-class Output_def_identifier;
-class Score_identifier;
-
-
-#define IDACCESSOR(Class)\
-virtual Class * access_content_ ## Class (bool) const { error (#Class + String ("_identifier")); return 0; }\
-
-
-/**
- A declarable data structure in lilypond.
-
- TODO: use SMOBS for the union type, and junk all derived classes.
- */
-struct Identifier : public Input {
-
- bool init_b_;
- bool accessed_b_;
- int token_code_i_;
- Identifier (Identifier const&);
- Identifier (int code) ;
-
- void print() const;
-
- void error (String) const;
- String str () const;
- IDACCESSOR(Music_output_def)
- IDACCESSOR(Score)
- VIRTUAL_COPY_CONS(Identifier);
-
- DECLARE_SMOBS(Identifier, foo);
-protected:
-
- virtual String do_str () const;
-};
-
-#define DECLARE_ID_CLASS(Class) \
-struct Class ## _identifier : Identifier {\
- Class *data_p_; \
- \
- Class ## _identifier (Class ## _identifier const&);\
- Class ## _identifier (Class*st, int code);\
- VIRTUAL_COPY_CONS(Identifier);\
- virtual Class* access_content_ ## Class (bool copy_b) const;\
- ~Class ## _identifier();\
- \
- virtual String do_str () const; \
-}\
-
-
-DECLARE_ID_CLASS(Score);
-DECLARE_ID_CLASS(Music_output_def);
-
-Identifier * unsmob_identifier (SCM);
-SCM smobify (Identifier*);
-
-#endif // IDENTIFIER_HH
-