]> git.donarmstrong.com Git - lilypond.git/commitdiff
more files.
authorHan-Wen Nienhuys <hanwen@xs4all.nl>
Mon, 16 Feb 2004 02:38:26 +0000 (02:38 +0000)
committerHan-Wen Nienhuys <hanwen@xs4all.nl>
Mon, 16 Feb 2004 02:38:26 +0000 (02:38 +0000)
ChangeLog
lily/context-scheme.cc [new file with mode: 0644]
lily/include/score-translator.hh [new file with mode: 0644]
lily/score-translator.cc [new file with mode: 0644]

index 07b3b2e3aab15335869c5f86312c5908ce17690e..ce1b4a6bdca4e80ccd7de10db16ea7e8f451e7f7 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,9 @@
 2004-02-16  Han-Wen Nienhuys   <hanwen@xs4all.nl>
 
+       * lily/context-scheme.cc: new file.
+
+       * lily/score-translator.cc (get_output): new file.
+
        * lily/include/grob-info.hh: origin_contexts() now does not
        include the originating engraver
 
diff --git a/lily/context-scheme.cc b/lily/context-scheme.cc
new file mode 100644 (file)
index 0000000..a9f28b7
--- /dev/null
@@ -0,0 +1,169 @@
+#include "context.hh"
+#include "context-def.hh"
+
+
+LY_DEFINE(ly_context_id,
+         "ly:context-id", 1,0,0,  (SCM context),
+         "Return the id string of @var{context}, i.e. for @code{\\context Voice "
+"= one .. } it will 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 ());
+}
+
+
+LY_DEFINE(ly_context_name,
+         "ly:context-name", 1,0,0,  (SCM context),
+         "Return the name of @var{context}, i.e. for @code{\\context Voice "
+"= one .. } it will return the symbol @code{Voice}.")
+{
+  Context * tr =   (unsmob_context (context));
+  SCM_ASSERT_TYPE(tr, context, SCM_ARG1, __FUNCTION__, "Context");
+
+  return unsmob_context_def (tr->definition_)->get_context_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 "
+         "in @var{context}. The grob definition @code{grob} is extended with "
+         "@code{eltprop} (if @var{val} is specified) "
+         "or reverted (if  unspecified).")
+{
+  Context *tg =  (unsmob_context (context));
+
+  SCM_ASSERT_TYPE(tg, context, SCM_ARG1, __FUNCTION__, "context");
+  SCM_ASSERT_TYPE(gh_symbol_p (grob), grob, SCM_ARG2, __FUNCTION__, "symbol");
+  SCM_ASSERT_TYPE(gh_symbol_p (eltprop), eltprop, SCM_ARG3, __FUNCTION__, "symbol");
+
+  execute_pushpop_property (tg, grob, eltprop, val);
+
+  return SCM_UNDEFINED;
+}
+
+
+LY_DEFINE(ly_get_context_property,
+         "ly:get-context-property", 2, 0, 0,
+         (SCM context, SCM name),
+         "retrieve the value of @var{name} from context @var{context}")
+{
+  Context *t = unsmob_context (context);
+  Context * tr=    (t);
+  SCM_ASSERT_TYPE(tr, context, SCM_ARG1, __FUNCTION__, "Translator group");
+  SCM_ASSERT_TYPE(gh_symbol_p (name), name, SCM_ARG2, __FUNCTION__, "symbol");
+
+  return tr->internal_get_property (name);
+  
+}
+
+LY_DEFINE(ly_set_context_property,
+         "ly:set-context-property!", 3, 0, 0,
+         (SCM context, SCM name, SCM val),
+         "set value of property @var{name} in context @var{context} to @var{val}.")
+{
+  Context *t = unsmob_context (context);
+  Context * tr=    (t);
+
+  SCM_ASSERT_TYPE(tr, context, SCM_ARG1, __FUNCTION__, "Context");
+  SCM_ASSERT_TYPE(gh_symbol_p (name), name, SCM_ARG2, __FUNCTION__, "symbol");
+
+  tr->internal_set_property (name, val);
+
+  return SCM_UNSPECIFIED;
+}
+
+
+LY_DEFINE(ly_context_property_where_defined,
+         "ly:context-property-where-defined", 2, 0, 0,
+         (SCM context, SCM name),
+         "Return the context above @var{context} where @var{name}  is defined.")
+{
+  Context *t = unsmob_context (context);
+  Context * tr =  (t);
+  SCM_ASSERT_TYPE(tr, context, SCM_ARG1, __FUNCTION__, "Context");
+  SCM_ASSERT_TYPE(gh_symbol_p (name), name, SCM_ARG2, __FUNCTION__, "symbol");
+
+
+  tr = tr->where_defined (name);
+
+  if (tr)
+    return tr->self_scm();
+
+  return SCM_EOL;
+}
+
+LY_DEFINE(ly_unset_context_property,
+         "ly:unset-context-property", 2, 0, 0,
+         (SCM context, SCM name),
+         "Unset value of property @var{name} in context @var{context}.")
+{
+  Context *t = unsmob_context (context);
+  Context * tr =  (t);
+  SCM_ASSERT_TYPE(tr, context, SCM_ARG1, __FUNCTION__, "Context");
+  SCM_ASSERT_TYPE(gh_symbol_p (name), name, SCM_ARG2, __FUNCTION__, "symbol");
+
+  tr->unset_property (name);
+
+  return SCM_UNSPECIFIED;
+}
+
+
+
+LY_DEFINE(ly_context_parent,
+         "ly:context-parent", 1, 0, 0,
+         (SCM context),
+         "Return the parent of @var{context}, #f if none.")
+{
+  Context *t = unsmob_context (context);
+  Context * tr=    (t);
+
+  SCM_ASSERT_TYPE(tr, context, SCM_ARG1, __FUNCTION__, "Context");
+
+  tr =  tr->daddy_context_ ;
+  if (tr)
+    return tr->self_scm();
+  else
+    return SCM_BOOL_F;
+}
+
+/*
+  Todo: should support translator IDs, and creation?
+ */
+LY_DEFINE(ly_translator_find,
+         "ly:translator-find", 2, 0,0,
+         (SCM context, SCM name),
+         "Find a parent of @var{context} that has name or alias @var{name}. "
+         "Return @code{#f} if not found." )
+{
+  Context * tr=    ( unsmob_context (context));
+
+  SCM_ASSERT_TYPE(tr, context, SCM_ARG1, __FUNCTION__, "context");
+  SCM_ASSERT_TYPE(gh_symbol_p (name), name, SCM_ARG2, __FUNCTION__, "symbol");
+  
+  while (tr)
+    {
+      if (tr->is_alias (name))
+       return tr->self_scm();
+      tr =  tr->daddy_context_ ;
+    }
+  
+  return SCM_BOOL_F;
+}
+
+
+LY_DEFINE(ly_context_properties,
+         "ly:context-properties", 1, 0, 0,
+         (SCM context),
+         "Return all properties  of @var{context} in an alist.")
+{
+  Context *t = unsmob_context (context);
+  Context * tr= (t);
+
+  SCM_ASSERT_TYPE(tr, context, SCM_ARG1, __FUNCTION__, "Context");
+
+  return tr->properties_as_alist ();
+}
diff --git a/lily/include/score-translator.hh b/lily/include/score-translator.hh
new file mode 100644 (file)
index 0000000..0b619fc
--- /dev/null
@@ -0,0 +1,28 @@
+/*   
+  score-translator.hh -- declare Score_translator
+
+source file of the GNU LilyPond music typesetter
+
+(c) 2004 Han-Wen Nienhuys <hanwen@xs4all.nl>
+
+ */
+
+#ifndef SCORE_TRANSLATOR_HH
+#define SCORE_TRANSLATOR_HH
+
+#include "translator-group.hh" 
+
+class Score_translator : public virtual Translator_group 
+{
+  friend class Score_context;
+ protected:
+  virtual Music_output* get_output ();
+  virtual void prepare (Moment);
+  virtual void finish ();
+  virtual void one_time_step ();
+};
+
+
+#endif /* SCORE_TRANSLATOR_HH */
+
+
diff --git a/lily/score-translator.cc b/lily/score-translator.cc
new file mode 100644 (file)
index 0000000..74c2411
--- /dev/null
@@ -0,0 +1,31 @@
+/*   
+  score-translator.cc --  implement Score_translator
+
+  source file of the GNU LilyPond music typesetter
+
+  (c) 2004 Han-Wen Nienhuys <hanwen@xs4all.nl>
+ */
+
+#include "score-translator.hh"
+#include "moment.hh"
+
+void
+Score_translator::prepare (Moment)
+{
+}
+
+Music_output*
+Score_translator::get_output ()
+{
+  return 0;
+}
+
+void
+Score_translator::finish ()
+{
+}
+
+void
+Score_translator::one_time_step ()
+{
+}