2 This file is part of LilyPond, the GNU music typesetter.
4 Copyright (C) 2000--2014 Han-Wen Nienhuys <hanwen@xs4all.nl>
6 LilyPond is free software: you can redistribute it and/or modify
7 it under the terms of the GNU General Public License as published by
8 the Free Software Foundation, either version 3 of the License, or
9 (at your option) any later version.
11 LilyPond is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 GNU General Public License for more details.
16 You should have received a copy of the GNU General Public License
17 along with LilyPond. If not, see <http://www.gnu.org/licenses/>.
20 #ifndef CONTEXT_DEF_HH
21 #define CONTEXT_DEF_HH
23 #include "std-vector.hh"
24 #include "lily-proto.hh"
27 #include "virtual-methods.hh"
31 The definition of an interpretation context as given in the
32 input. The lists are stored in order of definition.
38 these lists store the definition, in opposite order of entry
46 SCM translator_group_type_;
50 Input *origin () const;
51 void add_context_mod (SCM);
52 SCM get_default_child (SCM user_mods) const;
53 SCM get_context_name () const { return context_name_; }
54 SCM get_accepted (SCM user_mods) const;
55 SCM get_property_ops () const { return property_ops_; }
56 SCM get_translator_names (SCM) const;
57 SCM get_translator_group_type () const { return translator_group_type_; }
58 void set_acceptor (SCM accepts, bool add);
59 SCM lookup (SCM sym) const;
60 bool is_alias (SCM sym) const;
62 VIRTUAL_COPY_CONSTRUCTOR (Context_def, Context_def);
64 vector<Context_def *> path_to_acceptable_context (SCM type_string,
67 vector<Context_def *> internal_path_to_acceptable_context (SCM type_string,
70 set<const Context_def *> *seen) const;
71 Context *instantiate (SCM extra_ops);
73 SCM to_alist () const;
74 static SCM make_scm ();
76 void apply_default_property_operations (Context *);
79 DECLARE_SMOBS (Context_def);
81 Context_def (Context_def const &);
84 DECLARE_UNSMOB (Context_def, context_def);
86 #endif /* CONTEXT_DEF_HH */