2 identifier.hh -- part of LilyPond
4 (c) 1996,97 Han-Wen Nienhuys
13 /* boolean argument to accesor is copy_b..*/
14 #define IDACCESSOR( Input_staff, staff)\
15 virtual Input_staff * staff(bool) { error(#Input_staff); return 0; }
23 Identifier(String n, int code) : name(n) { token_code_i_ = code; }
24 virtual ~Identifier() {}
27 virtual char const *classname() const{ return "new Identifier"; }
29 IDACCESSOR(Input_staff, staff)
30 IDACCESSOR(Input_music, music)
31 IDACCESSOR(Music_voice, mvoice)
32 IDACCESSOR(Script_def, script)
33 IDACCESSOR(Symtables, symtables)
34 IDACCESSOR(Music_general_chord, mchord)
35 IDACCESSOR(Lookup,lookup)
37 IDACCESSOR(Request, request)
38 IDACCESSOR(Input_score, score)
41 virtual void do_print()const=0;
43 Identifier(Identifier const&){}
46 #define declare_id_class(Idclass, Class, accessor) \
47 struct Idclass : Identifier {\
48 virtual char const *classname()const;\
49 Idclass(String s, Class*st, int code);\
50 virtual Class* accessor(bool copy);\
52 virtual void do_print()const; \
57 declare_id_class(Real_id, Real, real);
58 declare_id_class(Script_id, Script_def, script);
59 declare_id_class(Lookup_id, Lookup, lookup);
60 declare_id_class(Symtables_id, Symtables, symtables);
61 declare_id_class(Staff_id, Input_staff, staff);
62 declare_id_class(M_chord_id, Music_general_chord, mchord);
63 declare_id_class(M_voice_id, Music_voice, mvoice);
64 declare_id_class(Score_id, Input_score, score);
65 declare_id_class(Request_id, Request, request);