#include "context-def.hh"
#include "context.hh"
#include "warn.hh"
-#include "music-output-def.hh"
+#include "output-def.hh"
#include "scm-hash.hh"
#include "main.hh"
#include "ly-smobs.icc"
Context::is_removable () const
{
return context_list_ == SCM_EOL && ! iterator_count_ &&
- !dynamic_cast<Score_context const*> (this)
- ;
+ !dynamic_cast<Score_context const*> (this);
}
void
Context::check_removal ()
{
- for (SCM p = context_list_; is_pair (p); p = ly_cdr (p))
+ for (SCM p = context_list_; scm_is_pair (p); p = ly_cdr (p))
{
Context *trg = unsmob_context (ly_car (p));
scm_gc_unprotect_object (properties_scm_);
}
-Context *
-Context::find_context_below (SCM n, String id)
-{
- if ((is_alias (n) && (id_string_ == id || id.is_empty ())))
- return this;
-
- Context* r = 0;
- for (SCM p = context_list_; !r && is_pair (p); p = ly_cdr (p))
- {
- Context * t = unsmob_context (ly_car (p));
-
- r = dynamic_cast<Context*> (t)->find_context_below (n, id);
- }
-
- return r;
-}
Context*
return get_score_context ()->find_create_context (n, id, operations);
- Context * existing = find_context_below (n,id);
+ Context * existing = find_context_below (this, n,id);
if (existing)
return existing;
none.
*/
SCM
-default_child_context_name (Context const *tg)
+Context::default_child_context_name () const
{
- return is_pair (tg->accepts_list_)
- ? ly_car (scm_last_pair (tg->accepts_list_))
+ return scm_is_pair (accepts_list_)
+ ? ly_car (scm_last_pair (accepts_list_))
: SCM_EOL;
}
bool
Context::is_bottom_context () const
{
- return !is_symbol (default_child_context_name (this));
+ return !scm_is_symbol (default_child_context_name ());
}
Context*
{
if (!is_bottom_context ())
{
- SCM nm = default_child_context_name (this);
- SCM st = get_output_def ()->find_context_def (nm);
+ SCM nm = default_child_context_name ();
+ SCM st = find_context_def (get_output_def (), nm);
Context_def *t = unsmob_context_def (st);
if (!t)
Context::is_alias (SCM sym) const
{
if (sym == ly_symbol2scm ("Bottom")
- && !is_pair (accepts_list_))
+ && !scm_is_pair (accepts_list_))
return true;
if (sym == unsmob_context_def (definition_)->get_context_name ())
return true;
*/
Context *
find_context_below (Context * where,
- String type, String id)
+ SCM type, String id)
{
- if (where->is_alias (ly_symbol2scm (type.to_str0 ())))
+ if (where->is_alias (type))
{
- if (id == "" || where->id_string_ == id)
+ if (id == "" || where->id_string () == id)
return where;
}
Context * found = 0;
- for (SCM s = where->context_list_;
- !found && is_pair (s); s = ly_cdr (s))
+ for (SCM s = where->children_contexts ();
+ !found && scm_is_pair (s); s = ly_cdr (s))
{
Context * tr = unsmob_context (ly_car (s));
return 0;
}
-Music_output_def *
+Output_def *
Context::get_output_def () const
{
return (daddy_context_)
bool
Context::try_music (Music* m)
{
- Translator* t = unsmob_translator (implementation_);
+ Translator* t = implementation ();
if (!t)
return false;
programming_error ("No Global context!");
return 0;
}
+
+Context*
+Context::get_parent_context () const
+{
+ return daddy_context_;
+}
+
+Translator_group*
+Context::implementation () const
+{
+ return dynamic_cast<Translator_group*> (unsmob_translator (implementation_));
+}