/*
This file is part of LilyPond, the GNU music typesetter.
- Copyright (C) 1997--2014 Han-Wen Nienhuys <hanwen@xs4all.nl>
+ Copyright (C) 1997--2015 Han-Wen Nienhuys <hanwen@xs4all.nl>
LilyPond is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
#define INPUT_HH
#include "lily-proto.hh"
+#include "smobs.hh"
/**
Base class for anything that records its poisition in the parse file.
*/
-class Input
+class Input : public Simple_smob<Input>
{
char const *start_;
char const *end_;
Source_file *source_file_;
public:
+ static const char * const type_p_name_;
+ int print_smob (SCM, scm_print_state *) const;
+ static SCM equal_p (SCM, SCM);
+ SCM mark_smob () const;
Source_file *get_source_file () const;
char const *start () const;
char const *end () const;
string message_string (const string &msg) const;
};
-#include "smobs.hh"
-
-SCM make_input (Input spot);
-Input *Input::unsmob (SCM);
-
extern Input dummy_input_global;
+// The parser calls syntax functions with a lot of arguments
+SCM with_location (SCM loc, SCM proc);
+SCM with_location (SCM loc, SCM proc, SCM);
+SCM with_location (SCM loc, SCM proc, SCM, SCM);
+SCM with_location (SCM loc, SCM proc, SCM, SCM, SCM);
+SCM with_location (SCM loc, SCM proc, SCM, SCM, SCM, SCM);
+SCM with_location (SCM loc, SCM proc, SCM, SCM, SCM, SCM, SCM);
+
#endif // INPUT_HH