]> git.donarmstrong.com Git - lilypond.git/blobdiff - lily/include/music.hh
release: 0.1.0
[lilypond.git] / lily / include / music.hh
index 06fbcd73957dee0818ccef74d092dd6d2dfdc8c5..41531a790218770701f6aa02855a7bc039e2b38b 100644 (file)
 #ifndef MUSIC_HH
 #define MUSIC_HH
 
-#include "plist.hh"
 #include "virtual-methods.hh"
 #include "input.hh"
 #include "minterval.hh"
 #include "lily-proto.hh"
+#include "string.hh"
 
+/** In Lily, everything that has a length and a pitch (which can be
+  transposed) is considered "music", 
+
+  Music is hierarchical: 
+
+  @seealso Music_list
+  */
 class Music:public Input {
 public:
+    Music_list * parent_music_l_;
+    
+    /** what kind of iterator needed to walk this music?  This doesn't
+      make sense for simple (ie non-list) music, but it does no harm
+      here. Yes, it did harm Music_list: you can forget to copy it.
+      
+      */
+    String type_str_;
+
+    /// what name (or look for this name)
+    String id_str_;    
+
     virtual MInterval time_int()const;
     virtual ~Music(){}
     void print() const;
     virtual void transpose(Melodic_req const *);
     virtual void translate(Moment dt);
-    VIRTUAL_COPY_CONS(Music,Music)
-    NAME_MEMBERS();
+    VIRTUAL_COPY_CONS(Music,Music);
+    DECLARE_MY_RUNTIME_TYPEINFO;
     Music();
 protected:
     virtual void do_print() const;
   
 };
 
-class Music_list : public Music {
-public:
-    Music_list(Music_list const&);    
-    Music_list();
-    NAME_MEMBERS();
-    VIRTUAL_COPY_CONS(Music_list,Music)
-    virtual void add(Music*);
-    virtual void transpose(Melodic_req const *);
-protected:
-    Pointer_list<Music*> music_p_list_;
-    virtual void do_print() const;
-};
-
-
-class Chord : public Music_list {
-public:
-    NAME_MEMBERS();
-    VIRTUAL_COPY_CONS(Chord,Music)
-    virtual void translate(Moment dt);
-    virtual MInterval time_int()const;
-};
-
-
-class MVoice : public Music_list {
-public:
-    NAME_MEMBERS();
-    VIRTUAL_COPY_CONS(MVoice, Music)
-    virtual void translate(Moment dt);
-    virtual MInterval time_int()const;
-};
-
 #endif // MUSIC_HH