From: fred Date: Sun, 24 Mar 2002 19:35:43 +0000 (+0000) Subject: lilypond-0.0.43 X-Git-Tag: release/1.5.59~5165 X-Git-Url: https://git.donarmstrong.com/?a=commitdiff_plain;h=0a757b1ad106127e703d06c71631dd5be51d1e3c;p=lilypond.git lilypond-0.0.43 --- diff --git a/lily/include/identifier.hh b/lily/include/identifier.hh index 6312582bf0..2baf529b49 100644 --- a/lily/include/identifier.hh +++ b/lily/include/identifier.hh @@ -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_