source file of the GNU LilyPond music typesetter
- (c) 1998--2005 Jan Nieuwenhuizen <janneke@gnu.org>
- Han-Wen Nienhuys <hanwen@cs.uu.nl>
+ (c) 1998--2006 Jan Nieuwenhuizen <janneke@gnu.org>
+ Han-Wen Nienhuys <hanwen@xs4all.nl>
*/
#include "context.hh"
#include "context-def.hh"
+#include "dispatcher.hh"
LY_DEFINE (ly_context_id, "ly:context-id",
1, 0, 0, (SCM context),
- "Return the id string of @var{context}, "
+ "Return the id string of @var{context}, "
"i.e. for @code{\\context Voice = one .. } "
"return the string @code{one}.")
{
Context *tr = unsmob_context (context);
SCM_ASSERT_TYPE (tr, context, SCM_ARG1, __FUNCTION__, "Context");
- return scm_makfrom0str (tr->id_string (). to_str0 ());
+ return scm_makfrom0str (tr->id_string ().c_str ());
}
LY_DEFINE (ly_context_name, "ly:context-name",
{
Context *tr = unsmob_context (context);
SCM_ASSERT_TYPE (tr, context, SCM_ARG1, __FUNCTION__, "Context");
- return ly_symbol2scm (tr->context_name ().to_str0 ());
+ return ly_symbol2scm (tr->context_name ().c_str ());
}
LY_DEFINE (ly_context_grob_definition, "ly:context-grob-definition",
SCM_ASSERT_TYPE (tr, context, SCM_ARG1, __FUNCTION__, "Context");
SCM_ASSERT_TYPE (scm_is_symbol (name), name, SCM_ARG2, __FUNCTION__, "symbol");
-
return updated_grob_properties (tr, name);
}
-
LY_DEFINE (ly_context_pushpop_property, "ly:context-pushpop-property",
3, 1, 0, (SCM context, SCM grob, SCM eltprop, SCM val),
"Do a single @code{\\override} or @code{\\revert} operation "
LY_DEFINE (ly_context_property, "ly:context-property",
2, 0, 0, (SCM c, SCM name),
- "Return the value of @var{name} from context @var{c}")
+ "Return the value of @var{name} from context @var{c}")
{
Context *t = unsmob_context (c);
- Context * tr = (t);
+ Context *tr = (t);
SCM_ASSERT_TYPE (tr, c, SCM_ARG1, __FUNCTION__, "Translator group");
SCM_ASSERT_TYPE (scm_is_symbol (name), name, SCM_ARG2, __FUNCTION__, "symbol");
SCM_ASSERT_TYPE (tr, context, SCM_ARG1, __FUNCTION__, "Context");
SCM_ASSERT_TYPE (scm_is_symbol (name), name, SCM_ARG2, __FUNCTION__, "symbol");
- tr->internal_set_property (name, val);
+ tr->set_property (name, val);
return SCM_UNSPECIFIED;
}
SCM_ASSERT_TYPE (tr, context, SCM_ARG1, __FUNCTION__, "Context");
SCM_ASSERT_TYPE (scm_is_symbol (name), name, SCM_ARG2, __FUNCTION__, "symbol");
- tr = tr->where_defined (name);
+ SCM val;
+ tr = tr->where_defined (name, &val);
if (tr)
return tr->self_scm ();
Context *tr = unsmob_context (context);
SCM_ASSERT_TYPE (tr, context, SCM_ARG1, __FUNCTION__, "Context");
- tr = tr->get_parent_context () ;
+ tr = tr->get_parent_context ();
if (tr)
return tr->self_scm ();
else
Context *tr = unsmob_context (context);
SCM_ASSERT_TYPE (tr, context, SCM_ARG1, __FUNCTION__, "context");
SCM_ASSERT_TYPE (scm_is_symbol (name), name, SCM_ARG2, __FUNCTION__, "symbol");
-
+
while (tr)
{
if (tr->is_alias (name))
return tr->self_scm ();
- tr = tr->get_parent_context () ;
+ tr = tr->get_parent_context ();
}
-
+
return SCM_BOOL_F;
}
+LY_DEFINE (ly_context_now, "ly:context-now",
+ 1, 0, 0, (SCM context),
+ "Return now-moment of context CONTEXT")
+{
+ Context *ctx = unsmob_context (context);
+ SCM_ASSERT_TYPE (ctx, context, SCM_ARG1, __FUNCTION__, "Context");
+ return ctx->now_mom ().smobbed_copy ();
+}
+LY_DEFINE (ly_context_event_source, "ly:context-event-source",
+ 1, 0, 0, (SCM context),
+ "Return event-source of context CONTEXT")
+{
+ Context *ctx = unsmob_context (context);
+ SCM_ASSERT_TYPE (ctx, context, SCM_ARG1, __FUNCTION__, "Context");
+ return ctx->event_source ()->self_scm ();
+}
+
+LY_DEFINE (ly_context_events_below, "ly:context-events-below",
+ 1, 0, 0, (SCM context),
+ "Return a stream-distributor that distributes all events\n"
+ " from @var{context} and all its subcontexts.")
+{
+ Context *ctx = unsmob_context (context);
+ SCM_ASSERT_TYPE (ctx, context, SCM_ARG1, __FUNCTION__, "Context");
+ return ctx->events_below ()->self_scm ();
+}