]> git.donarmstrong.com Git - lilypond.git/commitdiff
lilypond-0.0.43
authorfred <fred>
Sun, 24 Mar 2002 19:35:43 +0000 (19:35 +0000)
committerfred <fred>
Sun, 24 Mar 2002 19:35:43 +0000 (19:35 +0000)
lily/include/identifier.hh

index 6312582bf0d923f13096559b92b7cb2c928b24c6..2baf529b493e8195ea823f3c94af2e5f62bfa605 100644 (file)
@@ -1,4 +1,3 @@
-
 /*
   identifier.hh -- part of LilyPond
 
@@ -8,36 +7,64 @@
 #ifndef IDENTIFIER_HH
 #define IDENTIFIER_HH
 
-#include "identparent.hh"
-#include "symtable.hh"
-#include "input-staff.hh"
-#include "input-music.hh"
-#include "lookup.hh"
-#include "script-def.hh"
-#include "request.hh"
+#include "proto.hh"
+#include "string.hh"
+
+/* boolean argument to accesor is copy_b..*/
+#define IDACCESSOR( Input_staff, staff)\
+    virtual Input_staff * staff(bool) { error(#Input_staff); return 0; }
+
+
+struct Identifier {
+    void *data;
+    String name;
+    bool init_b_;
+    bool accessed_b_;
+    int token_code_i_;
+    char const *defined_ch_C_;
+    
+    Identifier(String n, int code) ;
+    virtual ~Identifier() {}
 
-#define make_id_class(Idclass, Class, accessor)        \
+    void print()const;
+    virtual char const *classname() const{ return "new Identifier"; }
+    void error(String);
+    IDACCESSOR(Input_staff, staff)
+    IDACCESSOR(Input_music, music)
+    IDACCESSOR(Music_voice, mvoice)
+    IDACCESSOR(Script_def, script)
+    IDACCESSOR(Symtables, symtables)
+    IDACCESSOR(Music_general_chord, mchord)
+    IDACCESSOR(Lookup,lookup)
+    IDACCESSOR(Real,real)
+    IDACCESSOR(Request, request)
+    IDACCESSOR(Input_score, score)
+
+protected:
+    virtual void do_print()const=0;
+private:
+    Identifier(Identifier const&){}
+};
+
+#define declare_id_class(Idclass, Class, accessor)     \
 struct Idclass : Identifier {\
-    virtual const char *classname() { return #Class; }\
-    Idclass(String s, Class*st, int code):Identifier(s,code) { data = st; }\
-    virtual Class* accessor(bool copy) {\
-       if (copy)\
-           return new Class(* (Class*) data);\
-       else\
-           return (Class*) data;\
-    }\
-    ~Idclass() { delete accessor(false); }\
-    virtual void do_print()const; \
+       virtual char const *classname()const;\
+       Idclass(String s, Class*st, int code);\
+       virtual Class* accessor(bool copy);\
+       ~Idclass();\
+       virtual void do_print()const; \
 }\
 
-make_id_class(Real_id, Real, real);
-make_id_class(Script_id, Script_def, script);
-make_id_class(Lookup_id, Lookup, lookup);
-make_id_class(Symtables_id, Symtables, symtables);
-make_id_class(Staff_id, Input_staff, staff);
-make_id_class(M_chord_id, Music_general_chord, mchord);
-make_id_class(M_voice_id, Music_voice, mvoice);
-make_id_class(Request_id, Request, request);
 
-#endif // IDENTIFIER_HH
 
+declare_id_class(Real_id, Real, real);
+declare_id_class(Script_id, Script_def, script);
+declare_id_class(Lookup_id, Lookup, lookup);
+declare_id_class(Symtables_id, Symtables, symtables);
+declare_id_class(Staff_id, Input_staff, staff);
+declare_id_class(M_chord_id, Music_general_chord, mchord);
+declare_id_class(M_voice_id, Music_voice, mvoice);
+declare_id_class(Score_id, Input_score, score);
+declare_id_class(Request_id, Request, request);
+
+#endif // IDENTIFIER_