+pl 15.jcn2
+ - autoconf on guile
+ - graphical-lisp-element + silly half hook-up with autuplet
+ (see init/test/tup.ly)
+
pl 15.jcn1
- autoconf on mf,mfont mp,mpost
MAJOR_VERSION=1
MINOR_VERSION=0
PATCH_LEVEL=15
-MY_PATCH_LEVEL=jcn1
+MY_PATCH_LEVEL=jcn2
# use the above to send patches: MY_PATCH_LEVEL is always empty for a
# released version.
AC_STEPMAKE_TEXMF
# AC_STEPMAKE_TEXMF_DIRS
AC_STEPMAKE_YODL
-
+AC_CHECK_LIB(guile, scm_shell)
dnl should check out -print
dnl huh?
int yet_another_stupid_function_to_allow_semicolon()
-#define DECLARE_VIRTUAL_COPY_CONS(T,R)\
+#define DECLARE_VIRTUAL_COPY_CONS(T, R)\
virtual R *clone() const
-#define IMPLEMENT_VIRTUAL_COPY_CONS(T,R)\
- R *T::clone() const { return new T(*this); } \
+#define IMPLEMENT_VIRTUAL_COPY_CONS(T, R)\
+ R *T::clone() const { return new T(*this); }\
+
-#define IMPLEMENT_IS_TYPE_B(D) \
- IMPLEMENT_STATIC_NAME(D)\
- bool D::static_is_type_b (const char *s) \
-{ \
- return s == static_name(); \
-}
-
-#define IMPLEMENT_IS_TYPE_B1(D,B) \
- IMPLEMENT_STATIC_NAME(D)\
- bool D::static_is_type_b (const char *s) \
-{ \
- return s == static_name() || B::static_is_type_b (s); \
-}
-#define IMPLEMENT_IS_TYPE_B2(D, BA, BB) \
- IMPLEMENT_STATIC_NAME(D)\
- bool D::static_is_type_b (const char *s) \
-{ \
- return s == static_name() || BA::static_is_type_b (s) || BB::static_is_type_b (s); \
+#define IMPLEMENT_IS_TYPE_B(D)\
+ IMPLEMENT_STATIC_NAME(D)\
+ bool D::static_is_type_b (const char *s)\
+{\
+ return s == static_name();\
+}
+
+#define IMPLEMENT_IS_TYPE_B1(D, B)\
+ IMPLEMENT_STATIC_NAME(D)\
+ bool D::static_is_type_b (const char *s)\
+{\
+ return s == static_name() || B::static_is_type_b (s);\
+}
+
+#define IMPLEMENT_IS_TYPE_B2(D, BA, BB)\
+ IMPLEMENT_STATIC_NAME(D)\
+ bool D::static_is_type_b (const char *s)\
+{\
+ return s == static_name() || BA::static_is_type_b (s) || BB::static_is_type_b (s);\
}
#endif
--- /dev/null
+\score{
+ \notes \type Staff \times 2/3 { a b c }
+}
#include "auto-plet-engraver.hh"
#include "command-request.hh"
-#include "slur.hh"
+#include "graphical-lisp-element.hh"
#include "note-column.hh"
bool
return true;
}
-
void
Tuplet_engraver::do_process_requests ()
{
int stopcount =0;
- Link_array<Slur> start_arr;
+ Link_array<Graphical_lisp_element> start_arr;
for (int i=0; i < bracket_req_arr_.size (); i++)
{
stopcount++;
if (bracket_req_arr_[i]->spantype == Span_req::START)
{
- Slur *sp =new Slur;
- start_arr.push (sp);
- announce_element (Score_element_info (sp, bracket_req_arr_[i]));
+ Graphical_lisp_element* glep = new Graphical_lisp_element ("tuplet");
+ start_arr.push (glep);
+// lots of stuff does info->elem_l_->is_type ()
+// announce_element (Score_element_info (glep, bracket_req_arr_[i]));
}
}
for (; stopcount--; )
{
- Slur *sp = started_span_p_arr_.pop ();
- stop_now_span_p_arr_.push (sp);
+ Graphical_lisp_element* glep = started_span_p_arr_.pop ();
+ stop_now_span_p_arr_.push (glep);
}
for (int i=0; i < start_arr.size (); i++)
{
Note_column *nc = (Note_column*)i.elem_l_->access_Item ();
for (int j =0; j <started_span_p_arr_.size (); j++)
- started_span_p_arr_[j]->add_column (nc);
+// started_span_p_arr_[j]->add_column (nc);
+ started_span_p_arr_[j]->call ("add-column", (void*)nc);
}
}
daddy_grav_l()->announce_element (i);
}
-
void
Engraver::typeset_element (Score_element*p)
{
daddy_grav_l()->typeset_element (p);
}
+void
+Engraver::typeset_element (Graphical_lisp_element*p)
+{
+ daddy_grav_l ()->typeset_element (p);
+}
+
Paper_def*
Engraver::paper() const
{
--- /dev/null
+/*
+ graphical-lisp-element.cc -- implement Graphical_lisp_element
+
+ source file of the GNU LilyPond music typesetter
+
+ (c) 1998 Jan Nieuwenhuizen <janneke@gnu.org>
+*/
+
+#include "graphical-lisp-element.hh"
+#include "string.hh"
+#include "debug.hh"
+
+#undef IMPLEMENT_STATIC_NAME
+#define IMPLEMENT_STATIC_NAME(c)\
+char const* c::static_name ()\
+{ return type_str_.ch_C (); }\
+size_t c::static_class_size () { return sizeof (c); }
+
+IMPLEMENT_IS_TYPE_B (Graphical_lisp_element);
+
+Graphical_lisp_element::Graphical_lisp_element (String str)
+{
+ type_str_ = str;
+}
+
+void*
+Graphical_lisp_element::access (String str)
+{
+ SCM scm;
+// scm = gh_cons (gh_str02scm (str.ch_C ()));
+// scm = gh_cons (gh_symbol2scm (str.ch_C ()));
+ return 0;
+}
+
+void
+Graphical_lisp_element::call (String str, void* p)
+{
+// gh_apply (str.ch_C (), SCM_EOL);
+// gh_apply (str.ch_C (), SCM_EOL);
+
+// mm, common lisp only?
+// String ptr = to_str (" \\%x", p);
+ String ptr = to_str (" '%x", p);
+ str = "(" + str + ptr + ")";
+ gh_eval_str (str.ch_l ());
+// gh_eval_str ("(add-column 0)");
+}
protected:
Link_array<Bracket_req> bracket_req_arr_;
- Link_array<Slur> started_span_p_arr_;
- Link_array<Slur> stop_now_span_p_arr_;
+ Link_array<Graphical_lisp_element> started_span_p_arr_;
+ Link_array<Graphical_lisp_element> stop_now_span_p_arr_;
virtual void do_removal_processing ();
virtual void acknowledge_element (Score_element_info);
Invoke walker method to typeset element. Default: pass on to daddy.
*/
virtual void typeset_element (Score_element*elem_p);
+ virtual void typeset_element (Graphical_lisp_element*);
/**
take note of item/spanner
--- /dev/null
+/*
+ graphical-lisp-element.hh -- declare Graphical_lisp_element
+
+ source file of the GNU LilyPond music typesetter
+
+ (c) 1998 Jan Nieuwenhuizen <janneke@gnu.org>
+*/
+
+
+#ifndef GRAPHICAL_LISP_ELEMENT_HH
+#define GRAPHICAL_LISP_ELEMENT_HH
+
+#include "lily-guile.hh"
+#include "lily-proto.hh"
+#include "string.hh"
+
+#define virtual
+#define static
+#include "virtual-methods.hh"
+
+class Graphical_lisp_element
+{
+public:
+ DECLARE_MY_RUNTIME_TYPEINFO;
+
+ Graphical_lisp_element (String);
+
+ void* access (String);
+ void call (String, void*);
+
+private:
+ String type_str_;
+};
+
+#undef virtual
+#undef static
+
+#endif // GRAPHICAL_LISP_ELEMENT_HH
+
--- /dev/null
+/*
+ lily-guile.hh encapsulate guile
+
+ source file of the GNU LilyPond music typesetter
+
+ (c) 1998 Jan Nieuwenhuizen <janneke@gnu.org>
+*/
+
+#ifndef LILY_GUILE_HH
+#define LILY_GUILE_HH
+
+extern "C" {
+#include <guile/gh.h>
+}
+
+#endif // LILY_GUILE_HH
struct Engraver_group_engraver;
struct General_script_def;
struct Graphical_element;
+struct Graphical_lisp_element;
struct Graphical_axis_group;
struct Mark_req;
struct Music_output;
*/
struct Score_element_info {
Score_element * elem_l_;
+ Graphical_lisp_element * lisp_l_;
Request*req_l_;
Array<Engraver*> origin_grav_l_arr_;
Score_element_info (Score_element*, Request*);
+ Score_element_info (Graphical_lisp_element*, Request*);
Score_element_info();
};
virtual void announce_element (Score_element_info);
virtual void do_announces();
virtual void typeset_element (Score_element*elem_p);
+ virtual void typeset_element (Graphical_lisp_element*elem_p);
virtual void do_pre_move_processing();
virtual void do_add_processing ();
};
#include <iostream.h>
#include <assert.h>
#include <locale.h>
+#include "lily-guile.hh"
+
#include "proto.hh"
#include "dimensions.hh"
#include "plist.hh"
#include "ps-lookup.hh"
#include "tex-lookup.hh"
+
#if HAVE_GETTEXT
#include <libintl.h>
#endif
*mlog << get_version_str () << endl;
}
-int
-main (int argc, char **argv)
+void
+guile_init ()
{
+ gh_eval_str ("(define (add-column p) (display \"adding column (in guile): \") (display p) (newline))");
+}
+
+void
+main_prog (int argc, char **argv)
+{
+ guile_init ();
+
// facilitate binary distributions
char const *env_lily = getenv ("LILYPONDPREFIX");
String prefix_directory;
do_one_file (i, default_outname_base_global);
}
+// return exit_status_i_;
+}
+
+int
+main (int argc, char **argv)
+{
+ gh_enter (argc, argv, (void(*)())main_prog);
return exit_status_i_;
}
Score_element_info::Score_element_info (Score_element*s_l, Request*r_l)
{
elem_l_ = s_l;
+ lisp_l_ = 0;
+ req_l_ = r_l;
+}
+
+Score_element_info::Score_element_info (Graphical_lisp_element*g_l, Request*r_l)
+{
+ elem_l_ = 0;
+ lisp_l_ = g_l;
req_l_ = r_l;
}
Score_element_info::Score_element_info()
{
elem_l_ = 0;
+ lisp_l_ = 0;
req_l_ = 0;
}
#include "score-column.hh"
#include "command-request.hh"
#include "paper-def.hh"
+#include "graphical-lisp-element.hh"
Score_engraver::Score_engraver()
void
Score_engraver::typeset_element (Score_element *elem_p)
{
- elem_p_arr_.push(elem_p);
+ elem_p_arr_.push (elem_p);
+}
+
+void
+Score_engraver::typeset_element (Graphical_lisp_element* elem_p)
+{
+ *mlog << "not typesetting: " << elem_p->static_name () << "\n";
+ delete elem_p;
}
void
Spanner *s = elem_p->access_Spanner ();
pscore_p_->typeset_unbroken_spanner (s);
-
-
- /*
+ /*
do something sensible if spanner not
spanned on 2 items.
*/
}
-
Music_output*
Score_engraver::get_output_p ()
{
1.0.14.hwn1
1.0.15
1.0.15.jcn1
+1.0.15.jcn2