/*
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
/**
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 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;
- static Input *unsmob (SCM);
-
void set (Source_file *, char const *, char const *);
void error (const string&) const;
void programming_error (const string&) const;
string message_string (const string &msg) const;
};
-SCM make_input (Input spot);
-
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