2 identifier.hh -- part of GNU LilyPond
4 (c) 1996--2000 Han-Wen Nienhuys
10 #include "lily-proto.hh"
11 #include "lily-guile.hh"
14 #include "virtual-methods.hh"
18 class Output_def_identifier;
19 class Score_identifier;
22 #define IDACCESSOR(Class)\
23 virtual Class * access_content_ ## Class (bool) const { error (#Class + String ("_identifier")); return 0; }\
27 A declarable data structure in lilypond.
29 TODO: use SMOBS for the union type, and junk all derived classes.
31 struct Identifier : public Input {
36 Identifier (Identifier const&);
37 Identifier (int code) ;
41 void error (String) const;
43 IDACCESSOR(Music_output_def)
45 VIRTUAL_COPY_CONS(Identifier);
47 DECLARE_SMOBS(Identifier, foo);
50 virtual String do_str () const;
53 #define DECLARE_ID_CLASS(Class) \
54 struct Class ## _identifier : Identifier {\
57 Class ## _identifier (Class ## _identifier const&);\
58 Class ## _identifier (Class*st, int code);\
59 VIRTUAL_COPY_CONS(Identifier);\
60 virtual Class* access_content_ ## Class (bool copy_b) const;\
61 ~Class ## _identifier();\
63 virtual String do_str () const; \
67 DECLARE_ID_CLASS(Score);
68 DECLARE_ID_CLASS(Music_output_def);
70 Identifier * unsmob_identifier (SCM);
71 SCM smobify (Identifier*);
73 #endif // IDENTIFIER_HH