#include <assert.h>
#include "identifier.hh"
-#include "lexer.hh"
+#include "my-lily-lexer.hh"
#include "debug.hh"
+#include "input-score.hh"
+#include "symtable.hh"
+#include "input-staff.hh"
+#include "input-music.hh"
+#include "lookup.hh"
+#include "script-def.hh"
+#include "request.hh"
+
void
Identifier::error(String expect)
{
::error(e);
}
+Identifier::Identifier(String n, int code)
+ : name(n)
+{
+ token_code_i_ = code;
+ data = 0;
+ accessed_b_ = 0;
+ init_b_ = 0;
+ defined_ch_C_ = 0;
+}
+
void
Identifier::print()const
{
DEFAULT_PRINT(M_chord_id, Music_general_chord, mchord);
DEFAULT_PRINT(M_voice_id, Music_voice, mvoice);
DEFAULT_PRINT(Request_id, Request, request);
+DEFAULT_PRINT(Score_id, Input_score, score);
void
Real_id::do_print() const
{
mtor << *((Real_id*)this)->real(false)<< "\n";
}
+#define implement_id_class(Idclass, Class, accessor) \
+char const * Idclass::classname() const\
+{\
+ return #Class;\
+}\
+Class*\
+Idclass::accessor(bool copy) {\
+ if (copy){ \
+ accessed_b_ = true;\
+ return new Class(* (Class*) data);\
+ }else\
+ return (Class*) data;\
+ }\
+Idclass::~Idclass() { delete accessor(false); }\
+Idclass::Idclass(String s, Class*st, int code):Identifier(s,code) { data = st; }\
+
+
+implement_id_class(Real_id, Real, real)
+implement_id_class(Script_id, Script_def, script)
+implement_id_class(Lookup_id, Lookup, lookup)
+implement_id_class(Symtables_id, Symtables, symtables)
+implement_id_class(Staff_id, Input_staff, staff)
+implement_id_class(M_chord_id, Music_general_chord, mchord)
+implement_id_class(M_voice_id, Music_voice, mvoice)
+implement_id_class(Score_id, Input_score, score)
+implement_id_class(Request_id, Request, request)