2 identifier.hh -- part of GNU LilyPond
4 (c) 1996,97 Han-Wen Nienhuys
10 #include "lily-proto.hh"
13 #include "virtual-methods.hh"
15 /* boolean argument to accesor is copy_b..*/
16 #define IDACCESSOR( Input_staff, staff)\
17 virtual Input_staff * staff(bool) { error(#Input_staff); return 0; }
20 struct Identifier : public Input {
27 Identifier(String n, int code) ;
28 virtual ~Identifier() ;
33 IDACCESSOR(Music, music)
34 IDACCESSOR(Input_engraver, igravs)
35 IDACCESSOR(Input_performer, iperfs)
36 IDACCESSOR(General_script_def, script)
37 IDACCESSOR(Symtables, symtables)
38 IDACCESSOR(Midi_def, mididef)
39 IDACCESSOR(Paper_def, paperdef)
40 IDACCESSOR(Lookup,lookup)
42 IDACCESSOR(Request, request)
43 IDACCESSOR(Score, score)
44 IDACCESSOR(int, intid)
47 virtual void do_print()const=0;
49 Identifier(Identifier const&);
52 #define declare_id_class(Idclass, Class, accessor) \
53 struct Idclass : Identifier {\
55 Idclass(String s, Class*st, int code);\
56 virtual Class* accessor(bool copy);\
58 virtual void do_print()const; \
63 declare_id_class(Real_id, Real, real);
64 declare_id_class(Script_id, General_script_def, script);
65 declare_id_class(Lookup_id, Lookup, lookup);
66 declare_id_class(Symtables_id, Symtables, symtables);
67 declare_id_class(Music_id, Music, music);
68 declare_id_class(Int_id, int, intid);
69 declare_id_class(Score_id, Score, score);
70 declare_id_class(Request_id, Request, request);
71 declare_id_class(Input_gravs_id, Input_engraver, igravs);
72 declare_id_class(Input_perfs_id, Input_performer, iperfs);
73 declare_id_class(Midi_def_id,Midi_def, mididef);
74 declare_id_class(Paper_def_id,Paper_def, paperdef);