]> git.donarmstrong.com Git - lilypond.git/commitdiff
use classnames for interface naming; remove inclusion of
authorHan-Wen Nienhuys <hanwen@xs4all.nl>
Wed, 29 Nov 2006 15:20:12 +0000 (16:20 +0100)
committerHan-Wen Nienhuys <hanwen@xs4all.nl>
Wed, 29 Nov 2006 15:20:12 +0000 (16:20 +0100)
grob/item/spanner headers in interface headers.

189 files changed:
lily/accidental-engraver.cc
lily/accidental-placement.cc
lily/accidental.cc
lily/align-interface.cc
lily/ambitus-engraver.cc
lily/ambitus.cc
lily/arpeggio-engraver.cc
lily/arpeggio.cc
lily/axis-group-interface.cc
lily/balloon.cc
lily/bar-line.cc
lily/beam-quanting.cc
lily/beam.cc
lily/break-align-engraver.cc
lily/break-alignment-interface.cc
lily/breathing-sign.cc
lily/chord-name.cc
lily/clef-engraver.cc
lily/clef.cc
lily/cluster-engraver.cc
lily/cluster.cc
lily/collision-engraver.cc
lily/custos.cc
lily/dot-column-engraver.cc
lily/dot-column.cc
lily/dots.cc
lily/drum-note-engraver.cc
lily/dynamic-engraver.cc
lily/dynamic-text-spanner.cc
lily/enclosing-bracket.cc
lily/extender-engraver.cc
lily/figured-bass-continuation.cc
lily/figured-bass-position-engraver.cc
lily/fingering-engraver.cc
lily/font-interface.cc
lily/gregorian-ligature.cc
lily/grid-line-interface.cc
lily/grob-interface.cc
lily/grob.cc
lily/hairpin.cc
lily/hara-kiri-group-spanner.cc
lily/horizontal-bracket-engraver.cc
lily/horizontal-bracket.cc
lily/include/accidental-interface.hh
lily/include/accidental-placement.hh
lily/include/align-interface.hh
lily/include/ambitus.hh
lily/include/arpeggio.hh
lily/include/axis-group-interface.hh
lily/include/bar-line.hh
lily/include/bar.hh
lily/include/beam.hh
lily/include/break-align-interface.hh
lily/include/breathing-sign.hh
lily/include/chord-name.hh
lily/include/clef.hh
lily/include/cluster.hh
lily/include/custos.hh
lily/include/dot-column.hh
lily/include/dots.hh
lily/include/font-interface.hh
lily/include/gregorian-ligature.hh
lily/include/grid-line-interface.hh
lily/include/grob-interface.hh
lily/include/grob.hh
lily/include/hairpin.hh
lily/include/hara-kiri-group-spanner.hh
lily/include/horizontal-bracket.hh
lily/include/item.hh
lily/include/line-interface.hh
lily/include/line-spanner.hh
lily/include/lyric-extender.hh
lily/include/lyric-hyphen.hh
lily/include/measure-grouping-spanner.hh
lily/include/melody-spanner.hh
lily/include/mensural-ligature.hh
lily/include/multi-measure-rest.hh
lily/include/note-collision.hh
lily/include/note-column.hh
lily/include/note-head.hh
lily/include/note-spacing.hh
lily/include/paper-column.hh
lily/include/percent-repeat-item.hh
lily/include/rest-collision.hh
lily/include/rest.hh
lily/include/rhythmic-head.hh
lily/include/script-column.hh
lily/include/script-interface.hh
lily/include/self-alignment-interface.hh
lily/include/semi-tie-column.hh
lily/include/semi-tie.hh
lily/include/separating-group-spanner.hh
lily/include/separation-item.hh
lily/include/side-position-interface.hh
lily/include/slur.hh
lily/include/spaceable-grob.hh
lily/include/spacing-interface.hh
lily/include/spacing-spanner.hh
lily/include/span-bar.hh
lily/include/spanner.hh
lily/include/staff-spacing.hh
lily/include/staff-symbol-referencer.hh
lily/include/staff-symbol.hh
lily/include/stem-tremolo.hh
lily/include/stem.hh
lily/include/system-start-delimiter.hh
lily/include/system.hh
lily/include/text-interface.hh
lily/include/text-spanner.hh
lily/include/tie-column.hh
lily/include/tie.hh
lily/include/time-signature.hh
lily/include/tuplet-bracket.hh
lily/include/vaticana-ligature.hh
lily/include/volta-bracket.hh
lily/item.cc
lily/key-signature-interface.cc
lily/ledger-line-spanner.cc
lily/ligature-bracket-engraver.cc
lily/line-interface.cc
lily/line-spanner.cc
lily/lyric-extender.cc
lily/lyric-hyphen.cc
lily/measure-grouping-engraver.cc
lily/measure-grouping-spanner.cc
lily/melody-spanner.cc
lily/mensural-ligature.cc
lily/multi-measure-rest-engraver.cc
lily/multi-measure-rest.cc
lily/new-fingering-engraver.cc
lily/note-collision.cc
lily/note-column.cc
lily/note-head-line-engraver.cc
lily/note-head.cc
lily/note-spacing.cc
lily/ottava-bracket.cc
lily/ottava-engraver.cc
lily/paper-column.cc
lily/part-combine-engraver.cc
lily/percent-repeat-item.cc
lily/piano-pedal-bracket.cc
lily/piano-pedal-engraver.cc
lily/pitch-squash-engraver.cc
lily/rest-collision-engraver.cc
lily/rest-collision.cc
lily/rest.cc
lily/rhythmic-column-engraver.cc
lily/rhythmic-head.cc
lily/script-column-engraver.cc
lily/script-column.cc
lily/script-interface.cc
lily/script-row-engraver.cc
lily/self-aligment-interface.cc
lily/semi-tie-column.cc
lily/semi-tie.cc
lily/separating-group-spanner.cc
lily/separating-line-group-engraver.cc
lily/separation-item.cc
lily/side-position-interface.cc
lily/slur.cc
lily/spaceable-grob.cc
lily/spacing-spanner.cc
lily/span-arpeggio-engraver.cc
lily/span-bar.cc
lily/spanner.cc
lily/staff-spacing.cc
lily/staff-symbol-referencer.cc
lily/staff-symbol.cc
lily/stanza-number-engraver.cc
lily/stem-tremolo.cc
lily/stem.cc
lily/system-start-delimiter.cc
lily/system-start-text.cc
lily/system.cc
lily/text-engraver.cc
lily/text-interface.cc
lily/text-spanner-engraver.cc
lily/text-spanner.cc
lily/tie-column.cc
lily/tie.cc
lily/time-signature-engraver.cc
lily/time-signature.cc
lily/trill-spanner-engraver.cc
lily/tuplet-bracket.cc
lily/tuplet-engraver.cc
lily/tuplet-number.cc
lily/vaticana-ligature.cc
lily/volta-bracket.cc
lily/volta-engraver.cc

index fc462faffab9215e244dd389afdf88d35351a33b..9d671c11e610a0e34420ca703689247d4ba382ef 100644 (file)
@@ -9,7 +9,9 @@
 
 #include "accidental-placement.hh"
 #include "arpeggio.hh"
+#include "spanner.hh"
 #include "context.hh"
+#include "item.hh"
 #include "engraver.hh"
 #include "international.hh"
 #include "pitch.hh"
index c943c9cca442520c776b6a0c530a63fdfcfa7572..a96f0e2542afdde9c4ad0cb894e99fb12d35675a 100644 (file)
@@ -9,6 +9,7 @@
 
 #include "accidental-placement.hh"
 
+#include "item.hh"
 #include "rhythmic-head.hh"
 #include "accidental-interface.hh"
 #include "music.hh"
@@ -415,7 +416,6 @@ Accidental_placement::calc_positioning_done (SCM smob)
 }
 
 ADD_INTERFACE (Accidental_placement,
-              "accidental-placement-interface",
               "Resolve accidental collisions.",
 
               /* properties */
index 0557883267e56497f28304e3b66813576d185eff..060c97849dcc6dc7ad37924368580512b8c3c8c2 100644 (file)
@@ -254,7 +254,7 @@ Accidental_interface::print (SCM smob)
 /*
   TODO: should move avoid-slur into item?
 */
-ADD_INTERFACE (Accidental_interface, "accidental-interface",
+ADD_INTERFACE (Accidental_interface,
               "a single accidental",
               "accidentals "
               "avoid-slur "
index 736ecb9096a51a48111595b51d938b74c896189a..f2eacf7608893e0c964511a87c812494bc6ec623 100644 (file)
@@ -367,7 +367,6 @@ find_fixed_alignment_parent (Grob *g)
 }
 
 ADD_INTERFACE (Align_interface,
-              "align-interface",
               
               "Order grobs from top to bottom, left to right, right to left or bottom "
               "to top.  "
@@ -389,9 +388,3 @@ ADD_INTERFACE (Align_interface,
               "stacking-dir "
               "threshold "
               );
-
-struct Foobar
-{
-  bool has_interface (Grob *);
-};
-
index 2c606e878ac4248068c8878efe71c2649441ba39..5946b91c6d7c7c1f42226f0726272f0c8db8ac1b 100644 (file)
@@ -11,6 +11,7 @@
 #include "engraver.hh"
 
 #include "axis-group-interface.hh"
+#include "item.hh"
 #include "note-head.hh"
 #include "pitch-interval.hh"
 #include "pointer-group-interface.hh"
index 2d88f61eae8e7ec66d987a6c0eaeb207e606ecb3..1e6da083bc1d13ae654c0858d5a06aa1cd5b4a3c 100644 (file)
@@ -68,7 +68,7 @@ Ambitus::print (SCM smob)
   return SCM_EOL;
 }
 
-ADD_INTERFACE (Ambitus, "ambitus-interface",
+ADD_INTERFACE (Ambitus ,
               "The line between note heads for a pitch range.",
 
               /* props */
index a09810d90a80dd29c70787f4738b79e69ac46f72..0086d121e79362616f2b0dbf998271a8cf384e2b 100644 (file)
@@ -15,6 +15,7 @@
 #include "side-position-interface.hh"
 #include "stream-event.hh"
 #include "note-column.hh"
+#include "item.hh"
 
 #include "translator.icc"
 
index c3ed8a3939c0ad0da5326867a863a6ef7cb7d0a6..76fd30ad8ff28f6f60442215de458edeb109616b 100644 (file)
@@ -8,6 +8,7 @@
 
 #include "arpeggio.hh"
 
+#include "grob.hh"
 #include "output-def.hh"
 #include "stem.hh"
 #include "staff-symbol-referencer.hh"
@@ -143,7 +144,7 @@ Arpeggio::width (SCM smob)
   return ly_interval2scm (arpeggio.extent (X_AXIS));
 }
 
-ADD_INTERFACE (Arpeggio, "arpeggio-interface",
+ADD_INTERFACE (Arpeggio,
               "Functions and settings for drawing an arpeggio symbol (a wavy line left to noteheads.",
 
               /* properties */
index c7a5b8eff90b5c0cd4b45501465987b94ee381b5..1ed274ec76ab00136a91d7d8d20fd11941484fdf 100644 (file)
@@ -315,7 +315,7 @@ Axis_group_interface::skyline_spacing (Grob *me, vector<Grob*> elements)
     }
 }
 
-ADD_INTERFACE (Axis_group_interface, "axis-group-interface",
+ADD_INTERFACE (Axis_group_interface,
 
               "An object that groups other layout objects.",
 
index c450189fc011caf94b84d64e7fe95bf9025af1ee..065d61c159432bbc3737015e1dbe16836909b6a7 100644 (file)
@@ -19,7 +19,7 @@ class Balloon_interface
 {
 public:
   DECLARE_SCHEME_CALLBACK (print, (SCM));
-  static bool has_interface (Grob *);
+  DECLARE_GROB_INTERFACE ();
 };
 
 MAKE_SCHEME_CALLBACK (Balloon_interface, print, 1);
@@ -69,7 +69,7 @@ Balloon_interface::print (SCM smob)
   return fr.smobbed_copy ();
 }
 
-ADD_INTERFACE (Balloon_interface, "balloon-interface",
+ADD_INTERFACE (Balloon_interface,
               "A collection of routines to put text balloons around an object.",
 
               /* properties */
index 0a1c0d9fea9493b64ae34e4174690499861c79a1..840a1de15d352a19c1773707da83d5deed88f39e 100644 (file)
@@ -239,7 +239,6 @@ Bar_line::dashed_bar_line (Grob *me, Real h, Real thick)
 
 
 ADD_INTERFACE (Bar_line,
-              "bar-line-interface",
 
               "Bar line.\n"
               "\n"
index e4cec84364b670b23da5f15980d5c498ae0a1999..a0a1528597b83af52fcfde7cb641685a5e2e9e87 100644 (file)
@@ -12,6 +12,7 @@
 #include <algorithm>
 using namespace std;
 
+#include "grob.hh"
 #include "align-interface.hh"
 #include "international.hh"
 #include "output-def.hh"
index 0778c5838884749ae4a85bb2e912008c0100511a..d0204833527507b2e40b0e0f0a2bf4e558b8c9ad 100644 (file)
@@ -1440,7 +1440,6 @@ Beam::get_direction_beam_count (Grob *me, Direction d)
 }
 
 ADD_INTERFACE (Beam,
-              "beam-interface",
 
               "A beam. \n\n"
               "The @code{thickness} property is the weight of beams, "
index 450286b84826056028db2a3f6e5c5f6ef88d4e2e..dcce285bdfa0492fe61b2081c9c26d0b0fe8000f 100644 (file)
@@ -12,6 +12,7 @@
 #include "axis-group-interface.hh"
 #include "context.hh"
 #include "translator-group.hh"
+#include "item.hh"
 
 #include "translator.icc"
 
index 3ccd2aa1253f79b5851095e75608ba3259dca4a3..37eae382978e3d53ea8dddc6ef7724f6f2ffcce7 100644 (file)
@@ -315,7 +315,7 @@ Break_alignable_interface::self_align_callback (SCM grob)
                          - me->relative_coordinate (common, X_AXIS));
 }
 
-ADD_INTERFACE (Break_alignable_interface, "break-alignable-interface",
+ADD_INTERFACE (Break_alignable_interface,
               "Object that is aligned on a break aligment. ",
 
               /* properties */
@@ -324,7 +324,7 @@ ADD_INTERFACE (Break_alignable_interface, "break-alignable-interface",
 
 
 
-ADD_INTERFACE (Break_aligned_interface, "break-aligned-interface",
+ADD_INTERFACE (Break_aligned_interface,
               "Items that are aligned in prefatory matter.\n"
               "\n"
               "The spacing of these items is controlled by the @code{space-alist}\n"
@@ -353,7 +353,7 @@ ADD_INTERFACE (Break_aligned_interface, "break-aligned-interface",
               "space-alist "
               );
 
-ADD_INTERFACE (Break_alignment_interface, "break-alignment-interface",
+ADD_INTERFACE (Break_alignment_interface,
               "The object that performs break aligment. See @ref{break-aligned-interface}.",
 
               /* properties */
index f8d02996f49a564f90d1d2e3bff3a4870239b689..36b6502fc10cb60c525ae166e4578d6f33792678 100644 (file)
@@ -178,7 +178,7 @@ Breathing_sign::offset_callback (SCM smob)
   return scm_from_double (inter * sz * d);
 }
 
-ADD_INTERFACE (Breathing_sign, "breathing-sign-interface",
+ADD_INTERFACE (Breathing_sign,
               "A breathing sign.",
               
               "direction "
index e929046db489337a6db51e3b1a3862dc781f3548..959898e3a74f085264cf2844b3e1d74e7c937b1b 100644 (file)
@@ -32,7 +32,7 @@ Chord_name::after_line_breaking (SCM smob)
   return SCM_UNSPECIFIED;
 }
 
-ADD_INTERFACE (Chord_name, "chord-name-interface",
+ADD_INTERFACE (Chord_name,
               "A chord name.",
 
               
index 78472dc99e937938a3c8480c53e6c0ced6f55402..258b0473970ec76f03ae16ac74012a60224d51d6 100644 (file)
@@ -11,6 +11,7 @@
 #include <cctype>
 using namespace std;
 
+#include "item.hh"
 #include "context.hh"
 #include "bar-line.hh"
 #include "staff-symbol-referencer.hh"
index 0718f8bd536ac9c2c1c0e3ce59e307284b8faa7e..769c90195b4581b5b194426bbcc6b2e710ecb516 100644 (file)
@@ -56,7 +56,7 @@ Clef::print (SCM smob)
   return out.smobbed_copy ();
 }
 
-ADD_INTERFACE (Clef, "clef-interface",
+ADD_INTERFACE (Clef,
               "A clef sign",
 
               /* properties */
index cd0c59b8172ffbe4ce932483e861ce1adeb4c01f..c1cb5a40258384e2e1c960684d183c281ddd6f0d 100644 (file)
@@ -13,6 +13,7 @@
 #include "pointer-group-interface.hh"
 #include "pitch.hh"
 #include "stream-event.hh"
+#include "item.hh"
 
 #include "translator.icc"
 
index 27ef9dd08a88defccd4c2bbc9f55e407b5810c97..90c2adcf5054a15f9f8151e878ec8220590890ca 100644 (file)
@@ -195,7 +195,7 @@ Cluster::print (SCM smob)
   return out.smobbed_copy ();
 }
 
-ADD_INTERFACE (Cluster, "cluster-interface",
+ADD_INTERFACE (Cluster,
               "A graphically drawn musical cluster. "
               "\n\n"
               "@code{padding} adds to the vertical extent of the shape (top and "
@@ -211,7 +211,7 @@ struct Cluster_beacon
 {
 public:
   DECLARE_SCHEME_CALLBACK (height, (SCM));
-  static bool has_interface (Grob *);
+  DECLARE_GROB_INTERFACE();
 };
 
 MAKE_SCHEME_CALLBACK (Cluster_beacon, height, 1);
@@ -225,7 +225,6 @@ Cluster_beacon::height (SCM g)
 }
 
 ADD_INTERFACE (Cluster_beacon,
-              "cluster-beacon-interface",
               "A place holder for the cluster spanner to determine the vertical "
               "extents of a cluster spanner at this X position.",
 
index 7f56435e81958c806e053171e3ec4793645d5465..32dddc1d7ae36c91e3079b7c840856307c6e6b64 100644 (file)
@@ -10,6 +10,7 @@
 #include "note-column.hh"
 #include "note-collision.hh"
 #include "axis-group-interface.hh"
+#include "item.hh"
 
 class Collision_engraver : public Engraver
 {
index 4e0010dcf6af748dc1aa098970496bf496790142..7a3c09bbfa16d826b9dc274296659c3075adec09 100644 (file)
@@ -81,7 +81,7 @@ Custos::print (SCM smob)
   return stencil.smobbed_copy ();
 }
 
-ADD_INTERFACE (Custos, "custos-interface",
+ADD_INTERFACE (Custos,
               "A custos object.",
               "style "
               "neutral-position "
index 04a75241c6cd17eea49ffb67fdf5246e82c718f9..ede002049f7358318fe54954fe430a0567c91a7f 100644 (file)
@@ -11,6 +11,7 @@
 #include "side-position-interface.hh"
 #include "engraver.hh"
 #include "translator.icc"
+#include "item.hh" 
 
 class Dot_column_engraver : public Engraver
 {
index 4683c51cb53faa05d0a0edef971ef1a2f81b9c61..33af9f381b4e72c145e904a4d45e088c7eeaac38 100644 (file)
@@ -292,7 +292,6 @@ Dot_column::add_head (Grob *me, Grob *rh)
 }
 
 ADD_INTERFACE (Dot_column,
-              "dot-column-interface",
               
               "Groups dot objects so they form a column, and position dots so they do not "
               "clash with staff lines ",
index f697752e35f9b30f4f46c93bb05328a774244d9a..afa82868a83f95afb6a4b8fc86462593f93ab087 100644 (file)
@@ -59,7 +59,7 @@ Dots::print (SCM d)
   return mol.smobbed_copy ();
 }
 
-ADD_INTERFACE (Dots, "dots-interface",
+ADD_INTERFACE (Dots,
               "The dots to go with a notehead or rest."
               "@code{direction} sets the preferred direction to move in case of staff "
               "line collisions.",
index 5cdbbe8a4cb0bca7e66b7f66be371a5ff1242d21..fc1b77a0342870c520b767f1325f1d53a546f3ce 100644 (file)
@@ -7,6 +7,7 @@
 #include <cctype>
 using namespace std;
 
+#include "item.hh"
 #include "duration.hh"
 #include "engraver.hh"
 #include "note-column.hh"
index 50cde13ea3b2833a26c290a5851e09570c70eb65..fc87783bba6053b33df8303dca36ef07a33075e9 100644 (file)
@@ -23,6 +23,8 @@
 #include "staff-symbol-referencer.hh"
 #include "stream-event.hh"
 #include "warn.hh"
+#include "item.hh"
+#include "spanner.hh"
 
 #include "translator.icc"
 
index 59eb1c3a58a767ae9b20c1534e1806a6eaf7c681..ff6eac541e4dd76e1833b57c715a337dbd09acca 100644 (file)
@@ -22,7 +22,7 @@ class Dynamic_text_spanner
 {
 public:
   DECLARE_SCHEME_CALLBACK (print, (SCM));
-  static bool has_interface (Grob *);
+  DECLARE_GROB_INTERFACE();
 };
 
 /*
@@ -154,7 +154,6 @@ Dynamic_text_spanner::print (SCM smob)
 }
 
 ADD_INTERFACE (Dynamic_text_spanner,
-              "dynamic-text-spanner-interface",
               "A text spanner for crescendo texts",
               
               "bound-padding "
index 81a292a2ecbefb208cf0f80d0fbdde609de94964..60e98f0944e9131c89023620f53d8a30bdbf5b62 100644 (file)
@@ -15,7 +15,7 @@
 
 struct Enclosing_bracket
 {
-  static bool has_interface (Grob*);
+  DECLARE_GROB_INTERFACE();
   
 public:
   DECLARE_SCHEME_CALLBACK(print, (SCM));
@@ -24,7 +24,6 @@ public:
 
 
 ADD_INTERFACE(Enclosing_bracket,
-             "enclosing-bracket-interface",
              
              "Brackets alongside bass figures.",
              
index 3fb0d430334bfde6ac7c52271d1b5e197786a0d1..efea867822abf2b12ebab55865b6d5a5b266a2e1 100644 (file)
@@ -17,6 +17,7 @@
 #include "pointer-group-interface.hh"
 #include "stream-event.hh"
 #include "warn.hh"
+#include "spanner.hh"
 
 #include "translator.icc"
 
index d6b6f2002bb2be583fd2ff6ae14d1894d99bd4e5..2830b10295267c50714fb633cba4b6305f2bd77f 100644 (file)
@@ -21,7 +21,7 @@
 
 struct Figured_bass_continuation
 {
-  static bool has_interface (Grob*);
+  DECLARE_GROB_INTERFACE();
   
 public:
   DECLARE_SCHEME_CALLBACK(print, (SCM));
@@ -82,7 +82,6 @@ Figured_bass_continuation::print (SCM grob)
 }
 
 ADD_INTERFACE(Figured_bass_continuation,
-             "figured-bass-continuation-interface",
              "Simple extender line between bounds.",
              
              /* props */
index a1b97c99cb8b92c545cefc12baffaa9218abd63e..caab84bf4a7d9dd37b2ae93944221700b3e1e726 100644 (file)
@@ -11,6 +11,7 @@
 
 #include "context.hh"
 #include "spanner.hh"
+#include "item.hh"
 #include "side-position-interface.hh"
 #include "translator.icc"
 #include "axis-group-interface.hh"
index 896913bbc2796fbcb9e8eae06f648964f2c34398..b5f36ef79b6ed94c5145c5686e8d47fefaead13a 100644 (file)
@@ -13,6 +13,7 @@
 #include "side-position-interface.hh"
 #include "stem.hh"
 #include "stream-event.hh"
+#include "item.hh"
 
 #include "translator.icc"
 
index d620b31d21a72881712a80b938903e9a91646f4a..482f91af7a72a02b2ba743e1f1c2be504c11a68d 100644 (file)
@@ -49,7 +49,7 @@ Font_interface::text_font_alist_chain (Grob *g)
   return g->get_property_alist_chain (defaults);
 }
 
-ADD_INTERFACE (Font_interface, "font-interface",
+ADD_INTERFACE (Font_interface,
               "Any symbol that is typeset through fixed sets of glyphs, "
               " (ie. fonts)",
 
index 5047fa928b9ee22f062105e99c8f442ba6bad21c..fa790b368ea61bf821b7a5637a6f97b33d96d788 100644 (file)
@@ -48,7 +48,7 @@ Gregorian_ligature::prefixes_to_str (Grob *primitive)
   subclass like VaticanaLigatureEngraver.  The property is lateron
   read by the associated item class, such as VaticanaLigature.--jr
 */
-ADD_INTERFACE (Gregorian_ligature, "gregorian-ligature-interface",
+ADD_INTERFACE (Gregorian_ligature,
               "A gregorian ligature",
               "virga stropha inclinatum auctum descendens ascendens "
               "oriscus quilisma deminutum cavum linea pes-or-flexa "
index 49befddff8653fba050309ceaaaf0be4c7d390a4..f5e98ffabe6c96ea86c586bac024f1a19948e822 100644 (file)
@@ -68,10 +68,10 @@ Grid_line_interface::add_grid_point (Grob *me, Grob *b)
   Pointer_group_interface::add_grob (me, ly_symbol2scm ("elements"), b);
 }
 
-ADD_INTERFACE (Grid_line_interface, "grid-line-interface",
+ADD_INTERFACE (Grid_line_interface,
               "A  line that spanned between grid-points. ",
               "elements thickness");
 
-ADD_INTERFACE (Grid_point_interface, "grid-point-interface",
+ADD_INTERFACE (Grid_point_interface,
               "A spanning point for grid lines. ",
               "");
index bd753f80c6f62fb6202213ed0d36c2b871455347..afae13dbecaa922aba2f9c338c5e50f00a1fff9a 100644 (file)
@@ -16,8 +16,7 @@
 #include "warn.hh"
 #include "misc.hh"
 
-void add_interface (char const *cxx_name,
-                   char const *symbol,
+SCM add_interface (char const *cxx_name,
                    char const *descr,
                    char const *vars)
 {
@@ -27,15 +26,13 @@ void add_interface (char const *cxx_name,
   if (lispy_name.substr (end) != suffix)
     lispy_name += suffix;
 
-  if (lispy_name != string (symbol))
-    programming_error (String_convert::form_string ("%s != %s", lispy_name.c_str (),
-                                                   symbol));
-    
-  SCM s = ly_symbol2scm (symbol);
+  SCM s = ly_symbol2scm (lispy_name.c_str ());
   SCM d = scm_makfrom0str (descr);
   SCM l = parse_symbol_list (vars);
 
   ly_add_interface (s, d, l);
+
+  return s;
 }
 
 void
index 1456a264ef9a8cb12c4adbb4ddf4b008b4ecda31..4e7a3e196ebe352fee72f34985742d8d3e54e9e6 100644 (file)
@@ -566,7 +566,7 @@ Grob::programming_error (string s) const
 }
 
 
-ADD_INTERFACE (Grob, "grob-interface",
+ADD_INTERFACE (Grob,
               "A grob represents a piece of music notation\n"
               "\n"
               "All grobs have an X and Y-position on the page.  These X and Y positions\n"
index 891baf0e0cad504dd06ca15b5909b24cc0a02dee..e0916cd99d98c4a0d524155d81fa57bf800b787a 100644 (file)
@@ -251,7 +251,7 @@ Hairpin::print (SCM smob)
   return mol.smobbed_copy ();
 }
 
-ADD_INTERFACE (Hairpin, "hairpin-interface",
+ADD_INTERFACE (Hairpin,
               "A hairpin crescendo/decrescendo.",
 
               /* props */
index 9e23d2b820e6238506c00cd194fdcde1da535135..0dec921395bc21315cee013708805429b32b5e5e 100644 (file)
@@ -153,7 +153,7 @@ Hara_kiri_group_spanner::add_interesting_item (Grob *me, Grob *n)
   Pointer_group_interface::add_unordered_grob (me, ly_symbol2scm ("items-worth-living"), n);
 }
 
-ADD_INTERFACE (Hara_kiri_group_spanner, "hara-kiri-group-spanner-interface",
+ADD_INTERFACE (Hara_kiri_group_spanner,
               "A group spanner that  keeps track of interesting items.  If it "
               "doesn't contain any after linebreaking, then it "
               "will remove itself and all its children.",
index b0909c26890de22562518fcd3f2058dbfe3f98f9..57c368154a50a2a2790f6b3fe1ce2ef2f98a3cea 100644 (file)
@@ -13,6 +13,8 @@
 #include "pointer-group-interface.hh"
 #include "side-position-interface.hh"
 #include "stream-event.hh"
+#include "spanner.hh"
+#include "item.hh"
 
 #include "translator.icc"
 
index 00dd0b653ff4d3f095b6574895b2219cb5c5e0d9..d2b016b49625419ee6a4a7c1005242e7842aaa13 100644 (file)
@@ -16,6 +16,8 @@
 #include "staff-symbol-referencer.hh"
 #include "tuplet-bracket.hh"
 #include "axis-group-interface.hh"
+#include "spanner.hh"
+#include "item.hh"
 
 
 Stencil
@@ -111,8 +113,6 @@ Horizontal_bracket::print (SCM smob)
 }
 
 ADD_INTERFACE (Horizontal_bracket,
-
-              "horizontal-bracket-interface",
               "A horizontal bracket encompassing notes.",
 
               /* props */                
index b9f4e7c83dc5383b75da65d70f3bf37588f39473..62eeb1b5adbaf426345c6654f798490faa90ca6d 100644 (file)
@@ -14,6 +14,7 @@
 #include "box.hh"
 #include "lily-guile.hh"
 #include "lily-proto.hh"
+#include "grob-interface.hh"
 
 class Accidental_interface
 {
@@ -21,7 +22,7 @@ public:
   DECLARE_SCHEME_CALLBACK (print, (SCM));
   DECLARE_SCHEME_CALLBACK (after_line_breaking, (SCM));
   
-  static bool has_interface (Grob *);
+  DECLARE_GROB_INTERFACE();
   static string get_fontcharname (string style, int alteration);
   static vector<Box> accurate_boxes (Grob *me,
                                                          Grob **common);
index 43c33b8a9fa7cced0e6ba8eabeb6ff635b753e60..ed2703af87651b42894764305e7d6cff3e3effbf 100644 (file)
@@ -9,6 +9,7 @@
 #ifndef ACCIDENTAL_PLACEMENT_HH
 #define ACCIDENTAL_PLACEMENT_HH
 
+#include "grob-interface.hh"
 #include "grob.hh"
 
 class Accidental_placement
@@ -25,7 +26,7 @@ public:
                                 vector<Grob*> *real_acc);
 
   DECLARE_SCHEME_CALLBACK(calc_positioning_done, (SCM));
-  static bool has_interface (Grob *);
+  DECLARE_GROB_INTERFACE();
 };
 #endif /* ACCIDENTAL_PLACEMENT_HH */
 
index 273dbc660ccb18dec8cd388c205f9c0298b4eeaa..5363ead48d924d1f1b14642d040b7356c5d69dca 100644 (file)
@@ -12,6 +12,7 @@
 #include "lily-proto.hh"
 #include "lily-guile.hh"
 #include "std-vector.hh"
+#include "grob-interface.hh"
 
 struct Align_interface
 {
@@ -27,7 +28,7 @@ struct Align_interface
   static void add_element (Grob *, Grob *);
   static int get_count (Grob *, Grob *);
 
-  static bool has_interface (Grob *);
+  DECLARE_GROB_INTERFACE();
 
   static Real get_pure_child_y_translation (Grob *, Grob *child, int start, int end);
 };
index 7f0a2d40cfdb6ce394484ec861a161f8f1becbbe..7bd37ecc29fc16608c9bd72f52349eef8bbf7e53 100644 (file)
 #define AMBITUS_HH
 
 #include "lily-guile.hh"
-
-class Grob;
+#include "lily-proto.hh"
+#include "grob-interface.hh"
 
 struct Ambitus
 {
   DECLARE_SCHEME_CALLBACK (print, (SCM smob));
-  static bool has_interface (Grob *);
+  DECLARE_GROB_INTERFACE();
   static Slice get_positions (Grob *);
   static Interval head_width (Grob *me, Grob *common);
 };
index 27f2d14dae17db8a94d76d53458da9509d92b943..ce69cddc17650ae0885f5645e1f39b6801772ab7 100644 (file)
@@ -11,6 +11,8 @@
 
 #include "lily-guile.hh"
 #include "lily-proto.hh"
+#include "grob-interface.hh"
+
 
 class Arpeggio
 {
@@ -18,7 +20,7 @@ public:
   DECLARE_SCHEME_CALLBACK (print, (SCM));
   DECLARE_SCHEME_CALLBACK (brew_chord_bracket, (SCM));
   DECLARE_SCHEME_CALLBACK (width, (SCM));
-  static bool has_interface (Grob *);
+  DECLARE_GROB_INTERFACE();
 };
 
 #endif /* ARPEGGIO_HH */
index b1bd975454aa1e811e90925cde04061d0c869bfd..e03d7326adceadb2fc10f565c78bab86d142394e 100644 (file)
@@ -12,9 +12,8 @@
 #include "std-vector.hh"
 #include "lily-proto.hh"
 #include "lily-guile.hh"
+#include "grob-interface.hh"
 
-/**
- */
 struct Axis_group_interface
 {
   static SCM generic_group_extent (Grob *me, Axis a);
@@ -35,7 +34,7 @@ struct Axis_group_interface
   static void set_axes (Grob *, Axis, Axis);
   static bool has_axis (Grob *, Axis);
   static void get_children (Grob *, vector<Grob*> *);
-  static bool has_interface (Grob *);
+  DECLARE_GROB_INTERFACE();
 };
 
 #endif /* AXIS_GROUP_INTERFACE_HH */
index 39253a7b8d39c020063ddd3c3af2f768b4a64dab..d06c8314ea8f10e4858e112fca6e3ab68072dcdd 100644 (file)
@@ -9,14 +9,12 @@
 
 #include "lily-guile.hh"
 #include "lily-proto.hh"
+#include "grob-interface.hh"
 
-/**
-   A vertical bar.
-*/
 class Bar_line
 {
 public:
-  static bool has_interface (Grob *);
+  DECLARE_GROB_INTERFACE();
 
   static Stencil dashed_bar_line (Grob *me, Real h, Real thick);
   static Stencil compound_barline (Grob *, string, Real height, bool rounded);
index b7ebca69a50b5583c51179d6db7fa1cbba45a060..eb74b7ac6d1e9d8f61762a8f96bd7a7d68c6979e 100644 (file)
@@ -9,6 +9,7 @@
 
 #include "lily-guile.hh"
 #include "lily-proto.hh"
+#include "grob-interface.hh"
 
 /**
    A vertical bar.
@@ -16,7 +17,7 @@
 class Bar
 {
 public:
-  static bool has_interface (Grob *);
+  DECLARE_GROB_INTERFACE();
 
   static Stencil compound_barline (Grob *, string, Real height);
   static Stencil simple_barline (Grob *, Real wid, Real height);
index 71821f6629f796679c0d84fa53be0bf87c0464a5..ae138911ee8b27988fbbc82a78b51fc71b71f72d 100644 (file)
@@ -10,6 +10,7 @@
 #ifndef BEAM_HH
 #define BEAM_HH
 
+#include "grob-interface.hh"
 #include "std-vector.hh"
 #include "lily-proto.hh"
 #include "lily-guile.hh"
@@ -71,7 +72,7 @@ public:
   static int visible_stem_count (Grob *);
   static Grob *first_visible_stem (Grob *);
   static Grob *last_visible_stem (Grob *);
-  static bool has_interface (Grob *);
+  DECLARE_GROB_INTERFACE();
   static void add_stem (Grob *, Grob *);
   static bool is_knee (Grob *);
   static void set_beaming (Grob *, Beaming_pattern const *);
index 5319c75b439998081bf2818cf0f1b4a43d4ce195..421043b24cc70dd05808a0e5768b19aaf5a6f925 100644 (file)
@@ -9,13 +9,14 @@
 #ifndef BREAK_ALIGN_INTERFACE_HH
 #define BREAK_ALIGN_INTERFACE_HH
 
-#include "item.hh"
+#include "grob-interface.hh"
+#include "lily-proto.hh"
 
 class Break_alignment_interface
 {
 public:
   static vector<Grob*> ordered_elements (Grob *me);
-  static bool has_interface (Grob *);
+  DECLARE_GROB_INTERFACE();
   static void add_element (Grob *me, Grob *add);
   static SCM break_align_order (Item *me);
   DECLARE_SCHEME_CALLBACK (calc_positioning_done, (SCM element));
@@ -24,13 +25,13 @@ public:
 
 struct Break_aligned_interface
 {
-  static bool has_interface (Grob *);
+  DECLARE_GROB_INTERFACE();
 };
 
 struct Break_alignable_interface
 {
   DECLARE_SCHEME_CALLBACK (self_align_callback, (SCM element));
-  static bool has_interface (Grob *);
+  DECLARE_GROB_INTERFACE();
 };
 
 #endif // BREAK_ALIGN_INTERFACE_HH
index 9093230a58d40b2e0041b11c2e63a6e7c92ebef3..237fd158be1522e43151784f4dd9ae4ee99177c8 100644 (file)
@@ -9,6 +9,7 @@
 #ifndef BREATHING_SIGN_HH
 #define BREATHING_SIGN_HH
 
+#include "grob-interface.hh"
 #include "lily-guile.hh"
 
 class Grob;
@@ -28,7 +29,7 @@ public:
   DECLARE_SCHEME_CALLBACK (finalis, (SCM));
   DECLARE_SCHEME_CALLBACK (offset_callback, (SCM element));
 
-  static bool has_interface (Grob *);
+  DECLARE_GROB_INTERFACE();
 };
 
 #endif // BREATHING_SIGN_HH
index dc79a77a0b92eb9c7d9488dbd61202adba856cc6..f5c805684fe66c186952e0792f32ddb66eac4199 100644 (file)
 #define CHORD_NAME_HH
 
 #include "stencil.hh"
+#include "grob-interface.hh"
 
 class Chord_name
 {
 public:
   DECLARE_SCHEME_CALLBACK (after_line_breaking, (SCM));
-  static bool has_interface (Grob *);
+  DECLARE_GROB_INTERFACE();
 };
 
 #endif // CHORD_NAME_HH
index 2f78edb8229c705da3bbc0a21f44f6a575c6b709..aaa74356854db15700608354a2b6e729a3d17fe6 100644 (file)
 
 #include "lily-guile.hh"
 #include "lily-proto.hh"
+#include "grob-interface.hh"
 
 struct Clef
 {
   DECLARE_SCHEME_CALLBACK (calc_glyph_name, (SCM));
   DECLARE_SCHEME_CALLBACK (print, (SCM));
-  static bool has_interface (Grob *);
+  DECLARE_GROB_INTERFACE();
 };
 
 #endif /* CLEF_HH */
index 6b6ad1dda065ebdb9e3580071e10fbbcfbb6522d..75090102e6e2e4cb770dc3b55e8ac2c7724e1440 100644 (file)
 #define CLUSTER_HH
 
 #include "stencil.hh"
+#include "grob-interface.hh"
 
 class Cluster
 {
 public:
   DECLARE_SCHEME_CALLBACK (print, (SCM));
-  //  DECLARE_SCHEME_CALLBACK (after_line_breaking, (SCM));
-  static bool has_interface (Grob *);
-  // DECLARE_SCHEME_CALLBACK (set_spacing_rods, (SCM ));
+  DECLARE_GROB_INTERFACE();
 };
 
 #endif // CLUSTER_HH
index c6a693404bcea90bfb15e857cb8f0d1fbed5e6f9..45914f77abf5708e67ef94154172663d96eae742 100644 (file)
 #define CUSTOS_HH
 
 #include "lily-guile.hh"
-
-class Grob;
-class Stencil;
+#include "lily-proto.hh"
+#include "grob-interface.hh"
 
 struct Custos
 {
   DECLARE_SCHEME_CALLBACK (print, (SCM));
-  static bool has_interface (Grob *);
+  DECLARE_GROB_INTERFACE();
 
 private:
   static void add_streepjes (Grob *me, int pos, int interspaces, Stencil *custos_);
index 63ad0d3f931a4030ce4c36c693f94470a6030428..8362e84613307d369eb2a588d2d581b0c660f390 100644 (file)
@@ -10,6 +10,8 @@
 #define DOT_COLUMN_HH
 
 #include "lily-guile.hh"
+#include "grob-interface.hh"
+
 
 class Grob;
 
@@ -22,7 +24,7 @@ public:
   static int compare (Grob *const &, Grob *const &);
   static void add_head (Grob *dotcol, Grob *rh);
 
-  static bool has_interface (Grob *);
+  DECLARE_GROB_INTERFACE();
   DECLARE_SCHEME_CALLBACK (side_position, (SCM));
   DECLARE_SCHEME_CALLBACK (calc_positioning_done, (SCM));
 };
index e62e7f13a5371f7edc30b85ecffa97f92b12058f..8f83f3a0574a618f2692e7e759c88b74b3db063c 100644 (file)
 
 #include "lily-proto.hh"
 #include "lily-guile.hh"
+#include "grob-interface.hh"
 
 class Dots
 {
 public:
   DECLARE_SCHEME_CALLBACK (print, (SCM));
-  static bool has_interface (Grob *);
+  DECLARE_GROB_INTERFACE();
 };
 
 #endif // DOTS_HH
index c92692026d6e07ca7d5dbdb2fe5ec69e64eacde5..cc68af60d7fd725e9e25f04d57e4b91d7e168a95 100644 (file)
 #define FONT_INTERFACE_HH
 
 #include "font-metric.hh"
+#include "grob-interface.hh"
 
 struct Font_interface
 {
   static SCM text_font_alist_chain (Grob *);
   static SCM music_font_alist_chain (Grob *);
   static Font_metric *get_default_font (Grob *);
-  static bool has_interface (Grob *);
+  DECLARE_GROB_INTERFACE();
 };
 
 #endif /* FONT_INTERFACE_HH */
index a6d8adc95084285306fdf4f199efdd5c938315d0..07b0ba11efe8f9f4994efda2071205d86b459561 100644 (file)
 
 class Grob;
 #include "std-string.hh"
+#include "grob-interface.hh"
+
 
 class Gregorian_ligature
 {
 public:
-  static bool has_interface (Grob *);
+  DECLARE_GROB_INTERFACE();
   static string prefixes_to_str (Grob *);
 };
 
index fc789eea2ed3e154ab4f70eb84dead6c37ece712..1ff2de217fc9aa58566a5c83da136235b17fe87a 100644 (file)
@@ -11,6 +11,8 @@
 
 #include "lily-proto.hh"
 #include "lily-guile.hh"
+#include "grob-interface.hh"
+
 
 class Grid_line_interface
 {
@@ -18,13 +20,13 @@ public:
   static void add_grid_point (Grob *me, Grob *b);
   DECLARE_SCHEME_CALLBACK (print, (SCM));
   DECLARE_SCHEME_CALLBACK (width, (SCM));
-  static bool has_interface (Grob *);
+  DECLARE_GROB_INTERFACE();
 };
 
 class Grid_point_interface
 {
 public:
-  static bool has_interface (Grob *);
+  DECLARE_GROB_INTERFACE();
 };
 
 #endif /* GRID_LINE_INTERFACE_HH */
index 29cf625874f7ccd4c1d0edd4b37b7f64d993e998..f6a92c0afed034a5859c8ff2a54d38d03e7c5746 100644 (file)
 
 #include "lily-guile.hh"
 
-#define ADD_INTERFACE(cl, a, b, c)                             \
+#define DECLARE_GROB_INTERFACE() \
+  static SCM interface_symbol_;           \
+  static bool has_interface (Grob*)
+
+#define ADD_INTERFACE(cl, b, c)                                \
+  SCM cl::interface_symbol_; \
   bool cl::has_interface (Grob *me)                            \
   {                                                            \
-    return me->internal_has_interface (ly_symbol2scm (a));     \
+    return me->internal_has_interface (interface_symbol_);     \
   }                                                            \
   void cl ## _init_ifaces ()                                   \
   {                                                            \
-    add_interface (#cl, a, b, c);                              \
+    cl::interface_symbol_ = add_interface (#cl, b, c);         \
   }                                                            \
   ADD_SCM_INIT_FUNC (cl ## ifaces, cl ## _init_ifaces);
 
-void add_interface (char const *cxx_name,
-                   char const *symbol,
+SCM add_interface (char const *cxx_name,
                    char const *descr,
                    char const *vars);
 
index 64fb7322a69f3065a907d5b9f45e08470e0978e3..3a06afda205fe472ab318f3a7a7d8557e3fe2f03 100644 (file)
@@ -110,7 +110,7 @@ public:
 
   /* interfaces */
   bool internal_has_interface (SCM intf);
-  static bool has_interface (Grob *me);
+  DECLARE_GROB_INTERFACE();
 
   /* offsets */
   void translate_axis (Real, Axis);
index 521fad1e4cdb84ee3ee6463a09ddbe755e57c50d..b76b4373a3970f624cffafb816cb7371a174909f 100644 (file)
@@ -8,6 +8,7 @@
 
 #ifndef HAIRPIN_HH
 #define HAIRPIN_HH
+#include "grob-interface.hh"
 
 #include "lily-guile.hh"
 #include "lily-proto.hh"
@@ -20,7 +21,7 @@ public:
   DECLARE_SCHEME_CALLBACK (print, (SCM));
   DECLARE_SCHEME_CALLBACK (after_line_breaking, (SCM));
   static void consider_suicide (Spanner*);
-  static bool has_interface (Grob *);
+  DECLARE_GROB_INTERFACE();
 };
 
 #endif // HAIRPIN_HH
index 0112b0864f081a1695acd7634845716feea8ac7c..93986178b691cc2d2c1b7704bdcf88b15f695574 100644 (file)
@@ -11,6 +11,7 @@
 
 #include "lily-guile.hh"
 #include "lily-proto.hh"
+#include "grob-interface.hh"
 
 class Hara_kiri_group_spanner
 {
@@ -20,7 +21,7 @@ public:
   DECLARE_SCHEME_CALLBACK (pure_height, (SCM smob, SCM start, SCM end));
   DECLARE_SCHEME_CALLBACK (force_hara_kiri_in_y_parent_callback, (SCM));
   DECLARE_SCHEME_CALLBACK (after_line_breaking, (SCM));
-  static bool has_interface (Grob *);
+  DECLARE_GROB_INTERFACE();
   static bool request_suicide (Grob *me, int start, int end);
   static void consider_suicide (Grob *me);
   static void add_interesting_item (Grob *me, Grob *n);
index cb54b95a26988066dd57b7c3ee17c21d1f8d97c8..dea58a3cccfc375d5eebe9632da1933e77d51350 100644 (file)
@@ -12,6 +12,7 @@
 #include "lily-guile.hh"
 #include "lily-proto.hh"
 #include "std-vector.hh"
+#include "grob-interface.hh"
 
 struct Horizontal_bracket
 {
@@ -20,7 +21,7 @@ struct Horizontal_bracket
   static Stencil make_enclosing_bracket (Grob *me, Grob *refpoint,
                                         vector<Grob*> grobs,
                                         Axis a, Direction dir);
-  static bool has_interface (Grob *);
+  DECLARE_GROB_INTERFACE();
 };
 
 #endif /* HORIZONTAL_BRACKET_HH */
index 7c28a35240f5f212b6ee0c654b9acde45e8bbbe6..d1d7a2f7d9c1423751c4cfd6317a3600e3137a39 100644 (file)
@@ -8,6 +8,7 @@
 #ifndef ITEM_HH
 #define ITEM_HH
 
+#include "grob-interface.hh"
 #include "box.hh"
 #include "grob.hh"
 
@@ -40,7 +41,7 @@ public:
   virtual Paper_column *get_column () const;
   virtual void handle_prebroken_dependencies ();
   virtual Interval_t<int> spanned_rank_iv ();
-  static bool has_interface (Grob *);
+  DECLARE_GROB_INTERFACE();
 protected:
   virtual void discretionary_processing ();
   void copy_breakable_items ();
index 8b8bd6df9044811b767f4aba2ec45d9191adc9b6..ec33ce93c6300f94869f29a0076f70cae7579c9e 100644 (file)
 #define LINE_INTERFACE_HH
 
 #include "lily-proto.hh"
+#include "grob-interface.hh"
 
 struct Line_interface
 {
   static Stencil line (Grob *me, Offset from, Offset to);
-  static bool has_interface (Grob *);
+  DECLARE_GROB_INTERFACE();
   static Stencil make_dashed_line (Real th, Offset from, Offset to, Real, Real);
   static Stencil make_line (Real th, Offset from, Offset to);
   static Stencil make_arrow (Offset beg, Offset end, Real thick,
index be124f74e45bad97fdf46822611ca3ab64a6bf18..4c7e4471d6b6d157fcce6d9f78bf608899b67949 100644 (file)
@@ -10,6 +10,7 @@
 #define LINE_SPANNER_HH
 
 #include "lily-guile.hh"
+#include "grob-interface.hh"
 
 class Grob;
 class Stencil;
@@ -20,7 +21,7 @@ public:
   DECLARE_SCHEME_CALLBACK (print, (SCM));
   DECLARE_SCHEME_CALLBACK (after_line_breaking, (SCM));
   static Stencil line_stencil (Grob *me, Offset f, Offset t);
-  static bool has_interface (Grob *);
+  DECLARE_GROB_INTERFACE();
 
 private:
   static Offset get_broken_offset (Grob *me, Direction dir);
index c4e4cf347997162d14d054925c79889e1e8af6b6..4d891f8c14f098fa04dfdc9d9a99175db6867b5e 100644 (file)
@@ -8,7 +8,8 @@
 #ifndef EXTENDER_SPANNER_HH
 #define EXTENDER_SPANNER_HH
 
-#include "spanner.hh"
+#include "grob-interface.hh"
+#include "lily-proto.hh"
 
 /*
   Extenders must be entered manually for now.
@@ -26,7 +27,7 @@
 class Lyric_extender
 {
 public:
-  static bool has_interface (Grob *);
+  DECLARE_GROB_INTERFACE();
   DECLARE_SCHEME_CALLBACK (print, (SCM));
 };
 
index d842a389e9cc4b6be5585c7af15d9d8c28749095..b5377ae82aee8b23699bf958e3f0a9047350dfc7 100644 (file)
@@ -7,13 +7,14 @@
 #ifndef HYPHEN_SPANNER_HH
 #define HYPHEN_SPANNER_HH
 
-#include "spanner.hh"
+#include "grob-interface.hh"
+#include "lily-proto.hh"
 
 struct Lyric_hyphen
 {
 public:
   DECLARE_SCHEME_CALLBACK (set_spacing_rods, (SCM));
-  bool has_interface (Grob *);
+  DECLARE_GROB_INTERFACE();
   DECLARE_SCHEME_CALLBACK (print, (SCM));
 };
 
index 96612d128690454b5164d7f3cb1eb476434df2ab..ef481714ee0a4b6d8bb54768896cc3da6012aa3e 100644 (file)
@@ -9,14 +9,16 @@
 #ifndef MEASURE_GROUPING_SPANNER_HH
 #define MEASURE_GROUPING_SPANNER_HH
 
-#include "grob.hh"
+#include "grob-interface.hh"
+#include "lily-proto.hh"
+
 
 class Measure_grouping
 {
 public:
   DECLARE_SCHEME_CALLBACK (print, (SCM));
 
-  static bool has_interface (Grob *);
+  DECLARE_GROB_INTERFACE();
 };
 
 #endif /* MEASURE_GROUPING_SPANNER_HH */
index 42762c0a6fe0fdd9b1d83e20b3576f511b1509cc..a02fc1f576fd49ec53289ff5366f5377016a07ce 100644 (file)
 
 #include "lily-guile.hh"
 #include "lily-proto.hh"
+#include "grob-interface.hh"
 
 class Melody_spanner
 {
 public:
-  static bool has_interface (Grob*);
+  DECLARE_GROB_INTERFACE();
   static void add_stem (Grob*, Grob*);
   DECLARE_SCHEME_CALLBACK(calc_neutral_stem_direction, (SCM));
 };
index bb51eaca88a8afa42c3bdeb2caa0008ef09aa4f1..e887e07a9a3016bce05fe6bb599463a26c6d80a4 100644 (file)
@@ -12,6 +12,8 @@
 
 #include "lily-proto.hh"
 #include "lily-guile.hh"
+#include "grob-interface.hh"
+
 
 /*
  * These are all possible mensural ligature primitives.
@@ -32,7 +34,7 @@ struct Mensural_ligature
 {
   DECLARE_SCHEME_CALLBACK (brew_ligature_primitive, (SCM));
   DECLARE_SCHEME_CALLBACK (print, (SCM));
-  static bool has_interface (Grob *);
+  DECLARE_GROB_INTERFACE();
 };
 
 #endif /* MENSURAL_LIGATURE_HH */
index b5ea6f5895a751b336d070f7f9bf59b7a857425b..2b29582869f869457f9f54325c50b551a4f03890 100644 (file)
@@ -9,13 +9,14 @@
 #ifndef MULTI_MEASURE_REST_HH
 #define MULTI_MEASURE_REST_HH
 
+#include "grob-interface.hh"
 #include "lily-guile.hh"
 #include "rod.hh"
 
 class Multi_measure_rest
 {
 public:
-  static bool has_interface (Grob *);
+  DECLARE_GROB_INTERFACE();
   DECLARE_SCHEME_CALLBACK (print, (SCM));
   DECLARE_SCHEME_CALLBACK (percent, (SCM));
   static void add_column (Grob *, Item *);
index 11f578ce8152da85c0abe7727b51494937905d97..20de1ca362b4ec5bd3849b80fbdf099067e36d0e 100644 (file)
@@ -12,6 +12,8 @@
 #include "lily-proto.hh"
 #include "lily-guile.hh"
 #include "std-vector.hh"
+#include "grob-interface.hh"
+
 
 /**
    Resolve conflicts between various Note_columns (chords).
@@ -32,6 +34,6 @@ public:
   static Drul_array<vector<Grob*> > get_clash_groups (Grob *me);
   DECLARE_SCHEME_CALLBACK (calc_positioning_done, (SCM smob));
   static void add_column (Grob *me, Grob *ncol);
-  static bool has_interface (Grob *);
+  DECLARE_GROB_INTERFACE();
 };
 #endif // COLLISION_HH
index ec12414539031d490301ca5f327b37a0d433085e..73030a46d9d0a12b50b48c29a70bd2a08a36bcd2 100644 (file)
@@ -9,7 +9,9 @@
 #ifndef NOTE_COLUMN_HH
 #define NOTE_COLUMN_HH
 
-#include "item.hh"
+#include "grob-interface.hh"
+#include "lily-proto.hh"
+
 
 /** a struct for treating a group of noteheads (noteheads, stem
     (chord) and scripts) as a single entity.
@@ -32,7 +34,7 @@ public:
   static void set_dotcol (Grob *me, Grob *);
   static void add_head (Grob *me, Grob *);
   static bool has_rests (Grob *me);
-  static bool has_interface (Grob *);
+  DECLARE_GROB_INTERFACE();
 
   static Item *get_stem (Grob *);
 };
index 55b1107f9f67fba189b0b80c4ddcf39df453b492..ff4e9a848aed3b34b47f0d425c00de9b2a756e81 100644 (file)
@@ -8,6 +8,7 @@
 #define NOTEHEAD_HH
 
 #include "stencil.hh"
+#include "grob-interface.hh"
 
 /** ball at the end of the stem. Also takes care of ledger lines.
 
@@ -23,7 +24,7 @@ public:
   DECLARE_SCHEME_CALLBACK (brew_ez_stencil, (SCM));
   DECLARE_SCHEME_CALLBACK (stem_x_shift, (SCM));
   DECLARE_SCHEME_CALLBACK (calc_stem_attachment, (SCM));
-  static bool has_interface (Grob *);
+  DECLARE_GROB_INTERFACE();
   static Real stem_attachment_coordinate (Grob *, Axis a);
   static int get_balltype (Grob *);
 
index cd786f8de1afcb6107ad97049bf42202a45a685a..dc8cbe4e0296608ef829f3321e0b5f549b847d29 100644 (file)
@@ -9,12 +9,13 @@
 #ifndef NOTE_SPACING_HH
 #define NOTE_SPACING_HH
 
+#include "grob-interface.hh"
 #include "lily-proto.hh"
 
 class Note_spacing
 {
 public:
-  static bool has_interface (Grob *);
+  DECLARE_GROB_INTERFACE();
 
   static void get_spacing (Grob *me, Item *, Real, Real, Real *, Real *);
   static void stem_dir_correction (Grob *me, Item *next_col, Real incr,
index 6adbdbe1795f8e80ad5b5c5353b26287f22d76a5..c182d6aa6c6887fde16665b0804b4e8349a0e8e6 100644 (file)
@@ -11,6 +11,7 @@
 
 #include "item.hh"
 #include "rod.hh"
+#include "lily-proto.hh"
 
 class Paper_column : public Item
 {
@@ -42,7 +43,7 @@ public:
   DECLARE_SCHEME_CALLBACK (print, (SCM));
   DECLARE_SCHEME_CALLBACK (before_line_breaking, (SCM));
 
-  static bool has_interface (Grob *);
+  DECLARE_GROB_INTERFACE();
   static int get_rank (Grob *);
   static bool is_musical (Grob *);
   static Moment when_mom (Grob *);
index 58d8d0ee64ec14762dc5cdfaf64b03ce3462dd8a..83662b5d3d1579522246bb51c3c6165a4e1555e0 100644 (file)
@@ -9,12 +9,13 @@
 #ifndef PERCENT_REPEAT_ITEM_HH
 #define PERCENT_REPEAT_ITEM_HH
 
-#include "grob.hh"
+#include "grob-interface.hh"
+#include "lily-proto.hh"
 
 class Percent_repeat_item_interface
 {
 public:
-  static bool has_interface (Grob *);
+  DECLARE_GROB_INTERFACE();
   DECLARE_SCHEME_CALLBACK (beat_slash, (SCM));
   DECLARE_SCHEME_CALLBACK (double_percent, (SCM));
   static Stencil x_percent (Grob *, int, Real, Real);
index fe76e1b15c8d4c5d8d44d6967eac1e78f42a1a7c..c90883c2e29ba37b44636b6e74752193207998b9 100644 (file)
@@ -9,6 +9,7 @@
 #ifndef REST_COLLISION_HH
 #define REST_COLLISION_HH
 
+#include "grob-interface.hh"
 #include "lily-proto.hh"
 #include "lily-guile.hh"
 
@@ -17,7 +18,7 @@ class Rest_collision
 public:
   static void add_column (Grob *me, Grob *);
 
-  static bool has_interface (Grob *);
+  DECLARE_GROB_INTERFACE();
   DECLARE_SCHEME_CALLBACK (force_shift_callback, (SCM element));
   DECLARE_SCHEME_CALLBACK (calc_positioning_done, (SCM element));
   DECLARE_SCHEME_CALLBACK (force_shift_callback_rest, (SCM element, SCM off));
index 357b76bcb22c84a6903a323790d16d9417b29c77..4d8be0e01c3497bf5073082bc48cf3ac3b9752f5 100644 (file)
@@ -10,6 +10,7 @@
 #define REST_HH
 
 #include "lily-guile.hh"
+#include "grob-interface.hh"
 
 class Grob;
 
@@ -17,7 +18,7 @@ class Rest
 {
 public:
   DECLARE_SCHEME_CALLBACK (y_offset_callback, (SCM));
-  static bool has_interface (Grob *);
+  DECLARE_GROB_INTERFACE();
   static string glyph_name (Grob *, int, string, bool);
   static SCM brew_internal_stencil (Grob*, bool);
   static SCM generic_extent_callback (Grob*, Axis);
index cd1620fb8c9d489f80b33f18409f6cec70737d7d..f59e758a4b638e15c7fa2bb3ffa2d412ae2fc563 100644 (file)
@@ -9,6 +9,7 @@
 #ifndef RHYTHMIC_HEAD_HH
 #define RHYTHMIC_HEAD_HH
 
+#include "grob-interface.hh"
 #include "lily-guile.hh"
 #include "lily-proto.hh"
 
@@ -21,7 +22,7 @@ public:
   static Item *get_dots (Grob *);
   static int dot_count (Grob *);
   DECLARE_SCHEME_CALLBACK (after_line_breaking, (SCM));
-  static bool has_interface (Grob *);
+  DECLARE_GROB_INTERFACE();
 };
 
 #endif // RHYTHMIC_HEAD_HH
index d4b121072657b6481297720be2621c16cebfd5e8..d3ac2e49ff38b7800a0ee8fdf512dff8e62d3652 100644 (file)
@@ -11,7 +11,7 @@
 
 #include "lily-guile.hh"
 #include "lily-proto.hh"
-
+#include "grob-interface.hh"
 #include "std-vector.hh"
 
 class Script_column
@@ -20,7 +20,7 @@ public:
   static void add_side_positioned (Grob *, Grob *);
   DECLARE_SCHEME_CALLBACK (before_line_breaking, (SCM));
   DECLARE_SCHEME_CALLBACK (row_before_line_breaking, (SCM));
-  static bool has_interface (Grob *);
+  DECLARE_GROB_INTERFACE();
   static void order_grobs (vector<Grob*> grobs);
 
 };
index 8d0e0355c01574310f95325f113160438592732c..3b8d714eeb9a1621cc43ad3d016bd4a1785e35b1 100644 (file)
@@ -11,6 +11,7 @@
 
 #include "lily-guile.hh"
 #include "lily-proto.hh"
+#include "grob-interface.hh"
 
 /**
    Articulation marks (and the like) that are attached to notes/stems.
@@ -21,7 +22,7 @@ class Script_interface
 {
 public:
   static Stencil get_stencil (Grob *, Direction d);
-  static bool has_interface (Grob *);
+  DECLARE_GROB_INTERFACE();
   DECLARE_SCHEME_CALLBACK (print, (SCM));
   DECLARE_SCHEME_CALLBACK (calc_direction, (SCM));
 };
index 63ea1c0f592085ecbe89f81117c115b1c9bfb9af..4fe353fb97932febdf3cbd6a1752dca58d19f3b9 100644 (file)
@@ -9,11 +9,12 @@
 #ifndef SELF_ALIGNMENT_INTERFACE_HH
 #define SELF_ALIGNMENT_INTERFACE_HH
 
-#include "spanner.hh"
+#include "lily-proto.hh"
+#include "grob-interface.hh"
 
 struct Self_alignment_interface
 {
-  static bool has_interface (Grob *);
+  DECLARE_GROB_INTERFACE();
 
   static SCM aligned_on_self (Grob *me, Axis a);
   static SCM centered_on_object (Grob *me, Axis a);
index cfeb7fc779bad333adf12f67dd173066986a2014..d27ad3c5a47e8bee69c24549837c6fa4ce4ec577 100644 (file)
@@ -16,7 +16,7 @@
 
 struct Semi_tie_column
 {
-  static bool has_interface (Grob *);
+  DECLARE_GROB_INTERFACE();
   
   DECLARE_SCHEME_CALLBACK(calc_positioning_done, (SCM));
 };
index ec63c627ef3aee49bd2a388fc137469ade4448c9..0d5bb85f75882a339557d4b6c3019c799d6d4abe 100644 (file)
@@ -16,7 +16,7 @@
 
 struct Semi_tie
 {
-  static bool has_interface (Grob *);
+  DECLARE_GROB_INTERFACE();
   
   DECLARE_SCHEME_CALLBACK (calc_direction, (SCM));
   DECLARE_SCHEME_CALLBACK (calc_control_points, (SCM));
index 15b6aecbe839b10b5c897aa18179148360ea5308..1419d539718cb0e159eb6c1e25168a2ccbfd96ec 100644 (file)
@@ -9,7 +9,8 @@
 #ifndef SEPARATING_GROUP_SPANNER_HH
 #define SEPARATING_GROUP_SPANNER_HH
 
-#include "spanner.hh"
+#include "grob-interface.hh"
+#include "lily-proto.hh"
 
 class Separating_group_spanner
 {
@@ -20,7 +21,7 @@ class Separating_group_spanner
 public:
   static void add_spacing_unit (Grob *me, Item *);
 
-  static bool has_interface (Grob *);
+  DECLARE_GROB_INTERFACE();
   DECLARE_SCHEME_CALLBACK (set_spacing_rods, (SCM));
 };
 
index 012935761bbe2458fcdb406dd5f8605e5ae560c0..c5d7c7106ac0b4aab0f121383559f887f6f69af9 100644 (file)
 
 #include "lily-proto.hh"
 #include "direction.hh"
+#include "grob-interface.hh"
 
 struct Separation_item
 {
-  static bool has_interface (Grob *);
+  DECLARE_GROB_INTERFACE();
   static Interval conditional_width (Grob *, Grob *);
   static Interval width (Grob *);
   static Interval relative_width (Grob *, Grob *);
index fd58027a888218f64887eb9c6ace247a1d53c0bc..dc105cea4abc2666187d517de196fe124e4c7f51 100644 (file)
@@ -9,8 +9,8 @@
 #ifndef SIDE_POSITION_INTERFACE_HH
 #define SIDE_POSITION_INTERFACE_HH
 
-#include "spanner.hh"
-#include "item.hh"
+#include "grob-interface.hh"
+#include "lily-proto.hh"
 
 /*
   TODO: move out unrelated callbacks.
@@ -33,7 +33,7 @@ public:
                                    bool pure, int start, int end, Real *current_off);
   static Axis get_axis (Grob *);
   static void set_axis (Grob *, Axis);
-  static bool has_interface (Grob *);
+  DECLARE_GROB_INTERFACE();
   static void add_support (Grob *, Grob *);
   static void add_staff_support (Grob *);
   static Direction get_direction (Grob *);
index d8603485d524ae892393a63bf564fc3ec0f54ae8..f31aba7bb2d2d7e3f9f10b9ea241030243fa7e56 100644 (file)
@@ -13,6 +13,7 @@
 #include "lily-proto.hh"
 #include "lily-guile.hh"
 #include "std-vector.hh"
+#include "grob-interface.hh"
 
 class Slur
 {
@@ -28,7 +29,7 @@ public:
   DECLARE_SCHEME_CALLBACK (height, (SCM));
   DECLARE_SCHEME_CALLBACK (outside_slur_callback, (SCM, SCM));
   DECLARE_SCHEME_CALLBACK (pure_outside_slur_callback, (SCM, SCM, SCM, SCM));
-  static bool has_interface (Grob *);
+  DECLARE_GROB_INTERFACE();
   static Bezier get_curve (Grob *me);
 };
 
index 3167a5e3519f5be8ea5de91ddb5233b482275cb2..573be0337f24fcf544ff2e8d63a6cd83ed434c5c 100644 (file)
@@ -11,6 +11,7 @@
 
 #include "lily-guile.hh"
 #include "lily-proto.hh"
+#include "grob-interface.hh"
 
 struct Spaceable_grob
 {
@@ -19,7 +20,7 @@ struct Spaceable_grob
   static void add_spring (Grob *me, Grob *to, Real dist, Real strength);
   static void get_spring (Grob *me, Grob *other, Real *dist, Real *inv_strength);
 
-  static bool has_interface (Grob *);
+  DECLARE_GROB_INTERFACE();
   static void remove_interface (Grob *);
   static SCM get_minimum_distances (Grob *);
   static SCM get_ideal_distances (Grob *);
index c33eea09d4cf6e5f3cf5b8363f4095e7bd9d1379..1d7665bbb51b9f9d0948aabf6e3703e107838bc0 100644 (file)
@@ -5,9 +5,11 @@
 
   (c) 2002--2006 Han-Wen Nienhuys <hanwen@xs4all.nl>
 */
+#include "grob-interface.hh"
+#include "lily-proto.hh"
 
 struct Spacing_interface
 {
-  static bool has_interface (Grob *);
+  DECLARE_GROB_INTERFACE();
 };
 
index f39ea98bc30726fd2042cd670c1bf9e2f65f5bdb..719d8d1fb329f0a555e1cc98cc31594fcccfa16b 100644 (file)
@@ -13,6 +13,7 @@
 #include "lily-guile.hh"
 #include "rational.hh"
 #include "std-vector.hh"
+#include "grob-interface.hh"
 
 struct Spacing_options
 {
@@ -56,7 +57,7 @@ public:
 
   DECLARE_SCHEME_CALLBACK (set_springs, (SCM));
   DECLARE_SCHEME_CALLBACK (calc_common_shortest_duration, (SCM));
-  static bool has_interface (Grob *);
+  DECLARE_GROB_INTERFACE();
 };
 
 #endif /* SPACING_SPANNER_HH */
index ed9802eb46e656ead3aa30fd754be4f82d4e7c47..a328101ade112051e82749bf4a3a73fee1a177ac 100644 (file)
@@ -11,6 +11,7 @@
 
 #include "lily-guile.hh"
 #include "lily-proto.hh"
+#include "grob-interface.hh"
 
 /**
    This is a barline that is spanned across other bar lines.  This is
@@ -21,7 +22,7 @@ class Span_bar
 {
 public:
 
-  static bool has_interface (Grob *);
+  DECLARE_GROB_INTERFACE();
   static Interval get_spanned_interval (Grob *);
   static void add_bar (Grob *, Grob *);
   static void evaluate_glyph (Grob *);
index 8267bf1af44dbd830c1624d1d020325a80e2be17..abc6d23adceddca17d5c8edf68090a11c062c726 100644 (file)
@@ -9,6 +9,8 @@
 
 #include "grob.hh"
 #include "rod.hh"
+#include "grob-interface.hh"
+#include "lily-proto.hh"
 
 /** A symbol which is attached between two columns. A spanner is a
     symbol which spans across several columns, so its final appearance
@@ -60,7 +62,7 @@ public:
   static bool less (Spanner *const &, Spanner *const &);
   virtual Grob *find_broken_piece (System *) const;
   virtual void derived_mark () const;
-  static bool has_interface (Grob *);
+  DECLARE_GROB_INTERFACE();
   virtual System *get_system () const;
 
 protected:
index 9b3010facd31c74b11229d10b21d9811c4c8714c..af6d394ead586b0d438f8dabb581f11ec81788b9 100644 (file)
 #define STAFF_SPACING_HH
 
 #include "lily-proto.hh"
+#include "grob-interface.hh"
 
 class Staff_spacing
 {
 public:
   static void next_notes_correction (Grob *, Grob *, Real *, Real *);
   static void next_note_correction (Grob *, Grob *, Interval, Real*, Real *);
-  static bool has_interface (Grob *);
+  DECLARE_GROB_INTERFACE();
   static void get_spacing_params (Grob *, Real *, Real *);
 
   static Interval bar_y_positions (Grob *);
index 1b4c096b8ee4b38fa0351a360191342f4f2e649b..e6d4ceeec5bad67f570099ab1431612e12a07181 100644 (file)
@@ -9,7 +9,8 @@
 #ifndef STAFF_SYMBOL_REFERENCER_HH
 #define STAFF_SYMBOL_REFERENCER_HH
 
-#include "grob.hh"
+#include "grob-interface.hh"
+#include "lily-proto.hh"
 
 /**
    A notation object that needs access to variables of the staff (no
@@ -18,7 +19,7 @@
 class Staff_symbol_referencer
 {
 public:
-  static bool has_interface (Grob *);
+  DECLARE_GROB_INTERFACE();
   static bool ugly_hack (Grob *);
   static void set_position (Grob *, Real);
   DECLARE_SCHEME_CALLBACK (callback, (SCM element));
index edf3a0f532e46002d7951502715055213ff14922..599c1cbf60bf77866838ddcb80033ca904fc4941 100644 (file)
@@ -11,6 +11,7 @@
 
 #include "lily-guile.hh"
 #include "lily-proto.hh"
+#include "grob-interface.hh"
 
 /**
    TODO: add linethickness as parameter.
@@ -26,6 +27,6 @@ public:
   static int line_count (Grob *);
   DECLARE_SCHEME_CALLBACK (print, (SCM));
   DECLARE_SCHEME_CALLBACK (height, (SCM));  
-  static bool has_interface (Grob *);
+  DECLARE_GROB_INTERFACE();
 };
 #endif // STAFF_SYMBOL_HH
index 49b5fd4c5cd01beec22d65c9639bb3df0a66fc83..d05e5fc410b0c41ece4d88272e87e1d8bf3051cb 100644 (file)
 
 #include "lily-proto.hh"
 #include "lily-guile.hh"
+#include "grob-interface.hh"
 
 class Stem_tremolo
 {
 public:
 
-  static bool has_interface (Grob *);
+  DECLARE_GROB_INTERFACE();
   DECLARE_SCHEME_CALLBACK (calc_slope, (SCM));
   DECLARE_SCHEME_CALLBACK (calc_width, (SCM));
   DECLARE_SCHEME_CALLBACK (print, (SCM));
index 3d06bca6f6e08745fac2cf705ceba87ba7e9536d..402ab5a14b0f9268302e95a09d3632e2244710a6 100644 (file)
@@ -11,6 +11,7 @@
 #include "lily-proto.hh"
 #include "lily-guile.hh"
 #include "stem-info.hh"
+#include "grob-interface.hh"
 
 class Stem
 {
@@ -37,7 +38,7 @@ public:
   static Real stem_end_position (Grob *);
   static Stencil flag (Grob *);
   static Stencil get_translated_flag (Grob*);
-  static bool has_interface (Grob *);
+  DECLARE_GROB_INTERFACE();
   static void set_spacing_hints (Grob *);
   
   DECLARE_SCHEME_CALLBACK (print, (SCM));
index 115c8cd37a74a02ac148a7dbc9c04e30d03c011a..4304837649272d8595c43c33c67f1d311f4dff14 100644 (file)
@@ -11,6 +11,7 @@
 
 #include "lily-guile.hh"
 #include "lily-proto.hh"
+#include "grob-interface.hh"
 
 /*
   Braces/brackets across staves.
@@ -20,7 +21,7 @@ class System_start_delimiter
 public:
   DECLARE_SCHEME_CALLBACK (print, (SCM));
 
-  static bool has_interface (Grob *);
+  DECLARE_GROB_INTERFACE();
   static void try_collapse (Grob *);
   static Stencil staff_bracket (Grob *, Real);
   static Stencil old_staff_bracket (Grob *, Real);
index f10b9b750fb29578e9a1bea041c1c596aca77f83..9866a1966778125ce25edb882491732159e372f2 100644 (file)
@@ -12,6 +12,7 @@
 #include "spanner.hh"
 #include "grob-array.hh"
 #include "skyline.hh"
+#include "grob-interface.hh"
 
 /*
   If you keep following offset reference points, you will always end
@@ -42,7 +43,7 @@ public:
   int spanner_count () const;
 
   void break_into_pieces (vector<Column_x_positions> const &);
-  static bool has_interface (Grob *);
+  DECLARE_GROB_INTERFACE();
 
   vector<Item*> broken_col_range (Item const *, Item const *) const;
   vector<Grob*> columns () const;
index 97094c8aec5e92121ba36a79e9e34548a007b97e..187e73715e7813b9415e0bd3af6a9f3fd4ce3bb1 100644 (file)
@@ -11,6 +11,8 @@
 #define TEXT_ITEM
 
 #include "stencil.hh"
+#include "grob-interface.hh"
+
 
 class Text_interface
 {
@@ -18,7 +20,7 @@ public:
   DECLARE_SCHEME_CALLBACK (print, (SCM));
   DECLARE_SCHEME_CALLBACK (interpret_markup, (SCM, SCM, SCM));
   DECLARE_SCHEME_CALLBACK (interpret_string, (SCM, SCM, SCM));
-  static bool has_interface (Grob *);
+  DECLARE_GROB_INTERFACE();
   static bool is_markup (SCM);
 };
 
index 86f87e264ba04f5e0479da6bf9ecf0ee688c8b14..28fc7c680a91aeb64345d6d25091e41ae7ad3acd 100644 (file)
 #define TEXT_SPANNER_HH
 
 #include "lily-guile.hh"
-
-class Grob;
+#include "grob-interface.hh"
+#include "lily-proto.hh"
 
 class Text_spanner
 {
 public:
   DECLARE_SCHEME_CALLBACK (print, (SCM));
-  static bool has_interface (Grob *);
+  DECLARE_GROB_INTERFACE();
 };
 
 #endif /* TEXT_SPANNER_HH */
index ff101a883984cee19af77056c6c8bbfc5dc872ab..3826b207cea03bf2540b0a88c203d3912f0edd4e 100644 (file)
 
 #include "lily-proto.hh"
 #include "lily-guile.hh"
+#include "grob-interface.hh"
 
 class Tie_column
 {
 public:
-  static bool has_interface (Grob *);
+  DECLARE_GROB_INTERFACE();
   static void add_tie (Grob *me, Grob *);
   DECLARE_SCHEME_CALLBACK (calc_positioning_done, (SCM));
   DECLARE_SCHEME_CALLBACK (before_line_breaking, (SCM));
index 7f96b826cffd20ab84e4902b197381ab47fbc694..9764908fe82fc2999a44695283eff9cd6063462a 100644 (file)
@@ -12,6 +12,7 @@
 #include "lily-guile.hh"
 #include "lily-proto.hh"
 #include "skyline.hh"
+#include "grob-interface.hh"
 
 
   
@@ -20,7 +21,7 @@ class Tie
 {
 public:
   static void set_head (Grob *, Direction, Grob *head);
-  static bool has_interface (Grob *);
+  DECLARE_GROB_INTERFACE();
   static Grob *head (Grob *, Direction);
   static int get_column_rank (Grob *, Direction);
   static int get_position (Grob *);
index 72cdc97a069127123e0f5a7b81f00084025fe9aa..d25843252e248f003546b67f32eacd602f2ab541 100644 (file)
@@ -7,7 +7,8 @@
 #ifndef METER_HH
 #define METER_HH
 
-#include "item.hh"
+#include "grob-interface.hh"
+#include "lily-proto.hh"
 
 /**
    Print a time_signature sign.
@@ -18,7 +19,7 @@
 */
 struct Time_signature
 {
-  static bool has_interface (Grob *);
+  DECLARE_GROB_INTERFACE();
   static Stencil special_time_signature (Grob *, SCM, int, int);
   static Stencil numbered_time_signature (Grob *, int, int);
   DECLARE_SCHEME_CALLBACK (print, (SCM));
index 1b9d9c03c0a88b4e4a215686a832fdef802e6372..221be2b6d33933c5cbc3cb15bdce0d3795e23c90 100644 (file)
@@ -10,6 +10,7 @@
 #include "lily-guile.hh"
 #include "lily-proto.hh"
 #include "std-vector.hh"
+#include "grob-interface.hh"
 
 class Tuplet_bracket
 {
@@ -20,7 +21,7 @@ public:
   DECLARE_SCHEME_CALLBACK (print, (SCM));
   DECLARE_SCHEME_CALLBACK (calc_connect_to_neighbors, (SCM smob));
   
-  static bool has_interface (Grob *);
+  DECLARE_GROB_INTERFACE();
   static Grob* get_common_x (Spanner *);
   static void add_tuplet_bracket (Grob *me, Grob *smaller_bracket);
   static void get_bounds (Grob *, Grob **, Grob **);
index f84280cc403edded57ed70a95c7d8b7aa764b78c..c9e53803e4a627679026ee8bd4339d8cf3c14f40 100644 (file)
 #define VATICANA_LIGATURE_HH
 
 #include "stencil.hh"
+#include "grob-interface.hh"
+#include "lily-proto.hh"
 
 struct Vaticana_ligature
 {
   DECLARE_SCHEME_CALLBACK (brew_ligature_primitive, (SCM));
   DECLARE_SCHEME_CALLBACK (print, (SCM));
-  static bool has_interface (Grob *);
+  DECLARE_GROB_INTERFACE();
 };
 
 /*
index f9999b92f61234abab64aecb1e9f8e6caadef748..955876f6f6943312a8017b3042196b03e27a6ec4 100644 (file)
@@ -8,11 +8,13 @@
 #define VOLTA_SPANNER_HH
 
 #include "spanner.hh"
+#include "grob-interface.hh"
+#include "lily-proto.hh"
 
 class Volta_bracket_interface
 {
 public:
-  static bool has_interface (Grob *);
+  DECLARE_GROB_INTERFACE();
   DECLARE_SCHEME_CALLBACK (print, (SCM));
   static void modify_edge_height (Spanner *);
   static void add_column (Grob *, Grob *col);
index ff00630b5f8a739cc7719caf5ee87d84c29781f0..173df20ed87fd7b19451d2f4b212ea9c0dc18eea 100644 (file)
@@ -197,9 +197,7 @@ unsmob_item (SCM s)
 }
 
 ADD_INTERFACE (Item,
-              "item-interface",
-              "\n"
-              "\n"
+
               "Grobs can be distinguished in their role in the horizontal spacing.\n"
               "Many grobs define constraints on the spacing by their sizes. For\n"
               "example, note heads, clefs, stems, and all other symbols with a fixed\n"
index 5705b46ccf7899ee584032ec77cad99499b244d5..60a11db86ab831cbc0db12dd035ec20bc3773f96 100644 (file)
@@ -20,7 +20,7 @@ struct Key_signature_interface
 {
   DECLARE_SCHEME_CALLBACK (print, (SCM));
 
-  static bool has_interface (Grob *);
+  DECLARE_GROB_INTERFACE();
 };
 
 /*
@@ -149,6 +149,6 @@ Key_signature_interface::print (SCM smob)
   return mol.smobbed_copy ();
 }
 
-ADD_INTERFACE (Key_signature_interface, "key-signature-interface",
+ADD_INTERFACE (Key_signature_interface,
               "A group of accidentals, to be printed as signature sign.",
               "style c0-position alteration-alist");
index 1817b49be9832b83293808278b0c32f236e15378..4a62aa7e4da1c8f2dd14476d72d8ef009888968b 100644 (file)
@@ -29,7 +29,7 @@ struct Ledger_line_spanner
                                    Interval x_extent,
                                    Real left_shorten);
 
-  static bool has_interface (Grob *);
+  DECLARE_GROB_INTERFACE();
 };
 
 Stencil
@@ -352,7 +352,6 @@ Ledger_line_spanner::print (SCM smob)
 }
 
 ADD_INTERFACE (Ledger_line_spanner,
-              "ledger-line-spanner-interface",
 
               "This spanner draws the ledger lines of a staff.\n"
               "This is a separate grob because it has to process\n"
@@ -368,11 +367,10 @@ ADD_INTERFACE (Ledger_line_spanner,
 
 struct Ledgered_interface
 {
-  static bool has_interface (Grob *);
+  DECLARE_GROB_INTERFACE();
 };
 
 ADD_INTERFACE (Ledgered_interface,
-              "ledgered-interface",
 
               "Objects that need ledger lines, typically "
               "note heads. See also @ref{ledger-line-spanner-interface}.",
index 18efd8177a21a54250bef4557a51c0e66cc48a8c..6e8dd9a22a9469cb878996252023b332b5d3e6a0 100644 (file)
@@ -11,6 +11,9 @@
 #include "tuplet-bracket.hh"
 #include "spanner.hh"
 #include "stream-event.hh"
+#include "spanner.hh"
+#include "item.hh"
+
 #include "translator.icc"
 
 /*
index ff7fae57837ddb738f4d9cf352dd91bdab1de9ba..74b8c034bcff51c6fec8506c6632528c6487844b 100644 (file)
@@ -11,6 +11,7 @@
 #include "staff-symbol-referencer.hh"
 #include "lookup.hh"
 #include "output-def.hh"
+#include "grob.hh"
 
 Stencil
 Line_interface::make_arrow (Offset begin, Offset end,
@@ -139,7 +140,7 @@ Line_interface::line (Grob *me, Offset from, Offset to)
   return stil;
 }
 
-ADD_INTERFACE (Line_interface, "line-interface",
+ADD_INTERFACE (Line_interface,
               "Generic line objects. Any object using lines supports this.  Normally, "
               "you get a straight line. If @code{dash-period} is defined, a dashed line is "
               "produced; the length of the dashes is tuned with "
index 0b6a9fae7fefbddb76a5e1235410186157c00e5a..48d4b3aa9b5aab0757cf8faac4bd9be6c135eef3 100644 (file)
@@ -299,7 +299,7 @@ Line_spanner::print (SCM smob)
     }
 }
 
-ADD_INTERFACE (Line_spanner, "line-spanner-interface",
+ADD_INTERFACE (Line_spanner,
               "Generic line drawn between two objects, e.g. for use with glissandi.\n"
               "The property @code{style} can be @code{line}, "
               "@code{dashed-line}, @code{trill}, \n"
index 867a6d83d30f903a8853f66c1d0d047bb1a39791..b7d9bb6e108b3e352912f33b6e003b16d101331a 100644 (file)
@@ -8,7 +8,8 @@
 
 #include "lyric-extender.hh"
 
-
+#include "spanner.hh"
+#include "item.hh"
 #include "warn.hh"
 #include "lookup.hh"
 #include "paper-column.hh"
@@ -84,7 +85,7 @@ Lyric_extender::print (SCM smob)
   return mol.smobbed_copy ();
 }
 
-ADD_INTERFACE (Lyric_extender, "lyric-extender-interface",
+ADD_INTERFACE (Lyric_extender,
               "The extender is a simple line at the baseline of the lyric "
               "that helps show the length of a melissima (tied/slurred note).",
 
index b6636477c508e7b05f6e19792c1e5cb7deb8b668..d38460be74541729fbd271f2f37525684ad65d9a 100644 (file)
@@ -13,6 +13,7 @@
 #include "output-def.hh"
 #include "paper-column.hh"
 #include "moment.hh"
+#include "spanner.hh"
 
 /*
   TODO: should extract hyphen dimensions or hyphen glyph from the
@@ -130,8 +131,6 @@ Lyric_hyphen::set_spacing_rods (SCM smob)
 
 ADD_INTERFACE (Lyric_hyphen,
 
-              "lyric-hyphen-interface",
-              
               "A centered hyphen is a simple line between "
               "lyrics used to divide syllables",
 
index 49b51955947fda42d83a036040b119ba095aa3fe..fe7abf1ea4a137d1bfbd01f04483815fc287957b 100644 (file)
@@ -10,6 +10,7 @@
 #include "side-position-interface.hh"
 #include "global-context.hh"
 #include "engraver.hh"
+#include "spanner.hh"
 
 #include "translator.icc"
 
index 9306badd21f1347cc19013474f7317290111069e..a256d0468dd820a40e0e4653be0da33a27654d81 100644 (file)
@@ -47,7 +47,7 @@ Measure_grouping::print (SCM grob)
   return m.smobbed_copy ();
 }
 
-ADD_INTERFACE (Measure_grouping, "measure-grouping-interface",
+ADD_INTERFACE (Measure_grouping,
               "This object indicates groups of beats. "
               "Valid choices for @code{style} are @code{bracket} and @code{triangle}.",
               "thickness style height");
index d0544ab2d21e6a4d90a7af969c21df463306e9b4..d4901f2c9b1a12a9958132fdc7b133e0af3ef928 100644 (file)
@@ -88,7 +88,7 @@ Melody_spanner::add_stem (Grob *me, Grob *stem)
   stem->set_property ("neutral-direction", Melody_spanner::calc_neutral_stem_direction_proc);
 }
 
-ADD_INTERFACE (Melody_spanner, "melody-spanner-interface",
+ADD_INTERFACE (Melody_spanner,
               "Context dependent typesetting decisions.",
 
               "stems "
index a3514943257ddc08f840ee4fa150ed9a8dd08bb0..88a11810581abb86de38528c15456d7399803d04 100644 (file)
@@ -219,7 +219,7 @@ Mensural_ligature::print (SCM)
   return SCM_EOL;
 }
 
-ADD_INTERFACE (Mensural_ligature, "mensural-ligature-interface",
+ADD_INTERFACE (Mensural_ligature,
               "A mensural ligature",
 
               "delta-position "
index 9a7816bf0dd5cbdbff45a4d34917e2a12eab17e8..5d0d7d97135b1d8f46e8f266e86e81f632c4b83d 100644 (file)
@@ -12,6 +12,7 @@
 #include "staff-symbol-referencer.hh"
 #include "stream-event.hh"
 #include "moment.hh"
+#include "spanner.hh"
 
 #include "translator.icc"
 
index 0a87a137ed319a6460b01234fc714aee6150c410..44d699b7ce1bcd0b35137945f03c1ad490c008cf 100644 (file)
@@ -351,7 +351,7 @@ Multi_measure_rest::set_text_rods (SCM smob)
   return SCM_UNSPECIFIED;
 }
 
-ADD_INTERFACE (Multi_measure_rest, "multi-measure-rest-interface",
+ADD_INTERFACE (Multi_measure_rest,
               "A rest that spans a whole number of measures.",
 
               /* properties */
index d944c6327fb0c1cc84f8932bc5dd3d611b0ca225..594f24f337deca28defdb719969dad63ed834f42 100644 (file)
@@ -15,6 +15,7 @@
 #include "side-position-interface.hh"
 #include "stem.hh"
 #include "stream-event.hh"
+#include "item.hh"
 #include "warn.hh"
 
 #include "translator.icc"
index ddfbf19983e14572dcf8fe4eec4baae09489cce1..e880c6cc295e78c685036a8a09f0876d13f591dc 100644 (file)
@@ -15,6 +15,7 @@
 #include "note-head.hh"
 #include "output-def.hh"
 #include "pointer-group-interface.hh"
+#include "item.hh"
 #include "rhythmic-head.hh"
 #include "staff-symbol-referencer.hh"
 #include "side-position-interface.hh"
@@ -529,7 +530,7 @@ Note_collision_interface::add_column (Grob *me, Grob *ncol)
   Axis_group_interface::add_element (me, ncol);
 }
 
-ADD_INTERFACE (Note_collision_interface, "note-collision-interface",
+ADD_INTERFACE (Note_collision_interface,
               "An object that handles collisions between notes with different stem "
               "directions and horizontal shifts. Most of the interesting properties "
               "are to be set in @ref{note-column-interface}: these are "
index 146b3b06545c9eecf3c6b1fd691f34b3ddcd22b8..a53c06006943921f0f8b594e73f4025908003468 100644 (file)
@@ -15,6 +15,7 @@ using namespace std;
 #include "axis-group-interface.hh"
 #include "directional-element-interface.hh"
 #include "international.hh"
+#include "item.hh"
 #include "note-head.hh"
 #include "output-def.hh"
 #include "pointer-group-interface.hh"
@@ -186,7 +187,7 @@ Note_column::arpeggio (Grob *me)
   return unsmob_grob (me->get_object ("arpeggio"));
 }
 
-ADD_INTERFACE (Note_column, "note-column-interface",
+ADD_INTERFACE (Note_column,
               "Stem and noteheads combined",
 
               /* properties */
index 4493ffb7b1134fb959d9f29a1becd9cf15c5d305..2d48f05c70bd9cd7fb354a7e7a0a21c549785917 100644 (file)
@@ -13,6 +13,9 @@
 #include "side-position-interface.hh"
 #include "staff-symbol-referencer.hh"
 #include "context.hh"
+#include "spanner.hh"
+#include "item.hh"
+
 
 /**
    Create line-spanner grobs for lines that connect note heads.
index ecf59808f3865aa1c86837577d7a3539b7dc05ec..7628a8fc57e597d9e57ccf6efec0f414a482cb52 100644 (file)
@@ -141,7 +141,7 @@ Note_head::calc_stem_attachment (SCM smob)
 }
 
 
-ADD_INTERFACE (Note_head, "note-head-interface",
+ADD_INTERFACE (Note_head,
               "Note head",
 
               /* properties */
index 2700c12835a990362644667ddf8da5df43c903f2..f601a1054b4e24a76bfdd39caea676f129d730f6 100644 (file)
@@ -455,7 +455,7 @@ Note_spacing::stem_dir_correction (Grob *me, Item *rcolumn,
   */
 }
 
-ADD_INTERFACE (Note_spacing, "note-spacing-interface",
+ADD_INTERFACE (Note_spacing,
               "This object calculates spacing wishes for individual voices.",
 
               
index f3b90b124cebbe971131e90fbacef8598bbd6640..f1894a25a8806c9be323795e3dbb3d03f9d69a0d 100644 (file)
@@ -24,7 +24,7 @@
 struct Ottava_bracket
 {
   DECLARE_SCHEME_CALLBACK (print, (SCM));
-  static bool has_interface (Grob *);
+  DECLARE_GROB_INTERFACE();
 };
 
 /*
@@ -176,8 +176,6 @@ Ottava_bracket::print (SCM smob)
 }
 
 ADD_INTERFACE (Ottava_bracket,
-              "ottava-bracket-interface",
-              
               "An ottava bracket",
 
               /*
index 243a5aff2dfb9a296821a9b76e3d5d6c9b1fde79..6afa928387e49ee6358aefefa26df994a8b7c6e6 100644 (file)
@@ -10,6 +10,8 @@
 #include "note-column.hh"
 #include "side-position-interface.hh"
 #include "engraver.hh"
+#include "spanner.hh"
+#include "item.hh"
 
 class Ottava_spanner_engraver : public Engraver
 {
index 0f01da091e640ce395962b0eeeee7600d06d828c..78b09c3875ba254781959298b420e874565d5813 100644 (file)
@@ -203,8 +203,6 @@ Paper_column::before_line_breaking (SCM grob)
 
 
 ADD_INTERFACE (Paper_column,
-
-              "paper-column-interface",
               "@code{Paper_column} objects form the top-most X-parents for items."
               "  The are two types of columns: musical columns, where are attached to, and "
               "  non-musical columns, where bar-lines, clefs etc. are attached to. "
index b862a4f73db0a1ec22b802aa608d644e08177082..121ad3fbd27f6405ce179874177ab800e499f771 100644 (file)
@@ -15,6 +15,7 @@
 #include "stem.hh"
 #include "stream-event.hh"
 #include "text-interface.hh"
+#include "item.hh"
 
 #include "translator.icc"
 
index a80015d396456354f68e0c6d3cebdc8eddcc488f..705d9394b200b34423413f1f1863c91021875dd2 100644 (file)
@@ -7,8 +7,7 @@
 */
 
 #include "percent-repeat-item.hh"
-
-
+#include "item.hh"
 #include "lookup.hh"
 #include "font-interface.hh"
 
@@ -71,7 +70,7 @@ Percent_repeat_item_interface::beat_slash (SCM grob)
   return m.smobbed_copy ();
 }
 
-ADD_INTERFACE (Percent_repeat_item_interface, "percent-repeat-item-interface",
+ADD_INTERFACE (Percent_repeat_item_interface,
               "Repeats that look like percent signs",
               
               "slope "
index baffc8fe98aee8d763fa225b99d1185fda3f998b..8c76a60d138d793ddb236fc855cec947c626d27d 100644 (file)
@@ -14,7 +14,7 @@
 struct Piano_pedal_bracket
 {
   DECLARE_SCHEME_CALLBACK (print, (SCM));
-  static bool has_interface (Grob *);
+  DECLARE_GROB_INTERFACE();
 };
 
 MAKE_SCHEME_CALLBACK (Piano_pedal_bracket, print, 1);
@@ -90,7 +90,6 @@ Piano_pedal_bracket::print (SCM smob)
 }
 
 ADD_INTERFACE (Piano_pedal_bracket,
-              "piano-pedal-bracket-interface",
 
               "The bracket of the piano pedal.  "
               "It can be tuned through the regular "
index 25c486f9e6361bfb3e094c0822d668dfa3ce94cd..8c919cb36f9d6d5eaab2dbb1be5a607000d2067f 100644 (file)
 #include "stream-event.hh"
 #include "string-convert.hh"
 #include "warn.hh"
-#include "protected-scm.hh"
+#include "spanner.hh"
+#include "item.hh"
+
 #include "translator.icc"
 
+
 /*
   TODO:
 
index 50d2d862ac2efbc391cd0c29e68fc0ac0ce26fb6..f072c3c84e209301a097a3354122f42172b60072 100644 (file)
@@ -5,10 +5,13 @@
 
   (c) 1997--2006 Han-Wen Nienhuys <hanwen@xs4all.nl>
 */
+
+#include "engraver.hh"
+
 #include "staff-symbol-referencer.hh"
 #include "note-head.hh"
 #include "rhythmic-head.hh"
-#include "engraver.hh"
+#include "grob.hh"
 
 class Pitch_squash_engraver : public Engraver
 {
index 6158a8b4f4e0f7b24fb0bb6ef97593612afc0a78..fb1c763b9eb8bf7002d8b6d350b9621e87997589 100644 (file)
@@ -10,6 +10,7 @@
 #include "engraver.hh"
 #include "rest-collision.hh"
 #include "note-column.hh"
+#include "item.hh"
 
 class Rest_collision_engraver : public Engraver
 {
index 959bf2156b25338711cab33e5430dcd923a4c4ab..899d22a5c725d65092c1277ca8b83d44a5bda602 100644 (file)
@@ -260,7 +260,7 @@ Rest_collision::calc_positioning_done (SCM smob)
   return SCM_UNSPECIFIED;
 }
 
-ADD_INTERFACE (Rest_collision, "rest-collision-interface",
+ADD_INTERFACE (Rest_collision,
               "Move around ordinary rests (not multi-measure-rests) to avoid "
               "conflicts.",
 
index d7351d648aebf3ce7583876bb1bf8a6bac9ea2b3..139386416d4d29387fbd90da7a3534bbb6109995 100644 (file)
@@ -186,7 +186,7 @@ Rest::generic_extent_callback (Grob *me, Axis a)
   return ly_interval2scm (unsmob_stencil (m)->extent (a));
 }
 
-ADD_INTERFACE (Rest, "rest-interface",
+ADD_INTERFACE (Rest,
               "A rest symbol.",
 
               /* properties */
index 9543fcc92f1e45d83fcff5010f29f6025c4180f2..ec8b754873ce9af8bb0550ff07adb90eee5472cb 100644 (file)
@@ -10,6 +10,7 @@
 #include "rhythmic-head.hh"
 #include "stem.hh"
 #include "note-column.hh"
+#include "item.hh"
 #include "dot-column.hh"
 #include "pointer-group-interface.hh"
 
index f771c75edc910e727b5d44eaa220d0608b3caaff..00ef3ae020abadfe6e7da11dca70511c1428a3ae 100644 (file)
@@ -50,8 +50,6 @@ Rhythmic_head::duration_log (Grob *me)
 
 ADD_INTERFACE (Rhythmic_head,
 
-              "rhythmic-head-interface",
-
               "Note head or rest",
               
               "dot "
index ce69a3929c8b61022fd20c067cb422bdc01f6da6..ada6f0aac4d1c67933013af6338c89924f556ed9 100644 (file)
@@ -9,6 +9,7 @@
 #include "engraver.hh"
 #include "script-column.hh"
 #include "side-position-interface.hh"
+#include "item.hh"
 
 #include "translator.icc"
 
@@ -18,7 +19,7 @@
 class Script_column_engraver : public Engraver
 {
   Grob *script_column_;
-  vector<Item*> scripts_;
+  vector<Grob*> scripts_;
 
 public:
   TRANSLATOR_DECLARATIONS (Script_column_engraver);
index 36ebc6971c85d5219ad8cec8d79cbfb517c658f2..511efa7dce9138c51d6c8f20c654dbc60ae77823 100644 (file)
@@ -140,7 +140,7 @@ Script_column::order_grobs (vector<Grob*> grobs)
   while (flip (&d) != DOWN);
 }
 
-ADD_INTERFACE (Script_column, "script-column-interface",
+ADD_INTERFACE (Script_column,
               "An interface that sorts scripts "
               "according to their @code{script-priority}",
               
index de8198533bb044483d7c0b79cadf54d644b15b5d..94bebe9e600aacdd848af6e03408ec237d7cda37 100644 (file)
@@ -9,6 +9,7 @@
 #include "script-interface.hh"
 
 #include "directional-element-interface.hh"
+#include "item.hh"
 #include "warn.hh"
 #include "font-interface.hh"
 #include "side-position-interface.hh"
@@ -78,10 +79,10 @@ Script_interface::print (SCM smob)
 
 struct Text_script
 {
-  static bool has_interface (Grob *);
+  DECLARE_GROB_INTERFACE();
 };
 
-ADD_INTERFACE (Text_script, "text-script-interface",
+ADD_INTERFACE (Text_script,
               "An object that is put above or below a note",
 
               /* properties */
@@ -94,7 +95,7 @@ ADD_INTERFACE (Text_script, "text-script-interface",
 /*
   Hmm. Where should we put add-stem-support ?
 */
-ADD_INTERFACE (Script_interface, "script-interface",
+ADD_INTERFACE (Script_interface,
               "An object that is put above or below a note",
               "add-stem-support "
               "avoid-slur "
index da062742707de29b1da65fb1e8ec2ff27025a309..b84c5f22a26bfc4a6ee4a98aef1bdfddc58903a2 100644 (file)
@@ -10,6 +10,7 @@
 #include "engraver.hh"
 
 #include "accidental-placement.hh"
+#include "item.hh"
 #include "script-column.hh"
 #include "side-position-interface.hh"
 
index 47e9fcc8f0c445f25d2e0553fb36f5d9b7784d99..4c63ce73d2ee24dc6d70eb53904b27847ce2ffca 100644 (file)
@@ -8,6 +8,7 @@
 
 #include "self-alignment-interface.hh"
 #include "warn.hh"
+#include "grob.hh"
 
 MAKE_SCHEME_CALLBACK (Self_alignment_interface, y_aligned_on_self, 1);
 SCM
@@ -131,7 +132,7 @@ Self_alignment_interface::set_align_self (Grob *me, Axis a)
                       a);
 }
 
-ADD_INTERFACE (Self_alignment_interface, "self-alignment-interface",
+ADD_INTERFACE (Self_alignment_interface,
               "Position this object on itself and/or on its parent. To this end, the following functions "
               " are provided: \n"
               "@table @code \n"
index 055b377c72107416ea3f7080a8e47232164a62fa..57b81e5d44f803f9519e22d731154d5806972c78 100644 (file)
@@ -22,7 +22,6 @@
 
 
 ADD_INTERFACE(Semi_tie_column,
-             "semi-tie-column-interface",
              "The interface for a column of l.v. ties.",
 
              /* properties */
index c5a514b53559662c532a5dae6cdf6d684e0d894e..77b266e6c43aeea6704dcaeccd5b3a4738a3d12c 100644 (file)
@@ -17,8 +17,6 @@
 
 ADD_INTERFACE(Semi_tie,
              
-             "semi-tie-interface",
-             
              "A tie which is only on one side connected to note heads. ",
 
              /* properties */
index c905b430e78a3326be8148ac78adcf5d1fa3e039..d2bc23a6d339e3a016f9d8c549231692676cd020 100644 (file)
@@ -109,7 +109,7 @@ Separating_group_spanner::add_spacing_unit (Grob *me, Item *i)
   Pointer_group_interface::add_unordered_grob (me, ly_symbol2scm ("elements"), i);
 }
 
-ADD_INTERFACE (Separating_group_spanner, "separating-group-spanner-interface",
+ADD_INTERFACE (Separating_group_spanner,
               "A spanner that calculates spacing constraints (\"rods\") "
               "using the @code{separation-item-interface} grobs in @code{elements}.",
 
index aa6f05a18f4e4578f3c89d5aca6b8097b40f9983..36807989b23ad8c70438e8ced269f28415f7d689 100644 (file)
@@ -16,6 +16,7 @@
 #include "note-spacing.hh"
 #include "accidental-placement.hh"
 #include "context.hh"
+#include "spanner.hh"
 #include "grob-array.hh"
 #include "pointer-group-interface.hh"
 
index 6406a3e0fcc12f9f94cba9a760358e90265d5427..057229c3c9eb695e65685c47b9b7d41e5dabed56 100644 (file)
@@ -148,7 +148,7 @@ Separation_item::extremal_break_aligned_grob (Grob *me,
   return last_grob;
 }
 
-ADD_INTERFACE (Separation_item, "separation-item-interface",
+ADD_INTERFACE (Separation_item,
               "Item that computes widths to generate spacing rods. "
               "This is done in concert with @ref{separation-spanner-interface}.",
               "padding X-extent conditional-elements elements");
index 73854bdc40cd0dc9b3899e3627e7fe67bad015d0..825d88e908125bc370c8dd70c8b757a774e88b8d 100644 (file)
@@ -276,7 +276,7 @@ Side_position_interface::get_axis (Grob *me)
   return NO_AXES;
 }
 
-ADD_INTERFACE (Side_position_interface, "side-position-interface",
+ADD_INTERFACE (Side_position_interface,
               "Position a victim object (this one) next to other objects (the "
               "support).   The property @code{direction} signifies where to put the  "
               "victim object relative to the support (left or right, up or down?)\n\n "
index a87feb68506e5f4643ca4695f14886abebc3c88c..093807b78ff2452969c4892e609344a8bc55d150 100644 (file)
@@ -212,7 +212,7 @@ void
 Slur::add_column (Grob *me, Grob *n)
 {
   Pointer_group_interface::add_grob (me, ly_symbol2scm ("note-columns"), n);
-  add_bound_item (dynamic_cast<Spanner *> (me), dynamic_cast<Item *> (n));
+  add_bound_item (dynamic_cast<Spanner *> (me), n);
 }
 
 void
@@ -357,7 +357,7 @@ Slur::auxiliary_acknowledge_extra_object (Grob_info info,
 }
 
 
-ADD_INTERFACE (Slur, "slur-interface",
+ADD_INTERFACE (Slur,
               
               "A slur",
               
index 0f3dc9849b93b6edc9068ef0d9767e5500164601..679c2bcb195651dc1954d371c59830d7d447b887 100644 (file)
@@ -120,7 +120,7 @@ Spaceable_grob::remove_interface (Grob *me)
   me->set_object ("ideal-distances", SCM_EOL);
 }
 
-ADD_INTERFACE (Spaceable_grob, "spaceable-grob-interface",
+ADD_INTERFACE (Spaceable_grob,
               "A layout object that takes part in the spacing problem. ",
               
 
index 2f6e90326ccd06712ed8d48256d13a18706a1c4f..2e174b65c22293dbe74d3b9c6a51fdbb655f1c67 100644 (file)
@@ -493,7 +493,7 @@ Spacing_spanner::breakable_column_spacing (Grob *me, Item *l, Item *r,
   Spaceable_grob::add_spring (l, r, distance, inverse_strength);
 }
 
-ADD_INTERFACE (Spacing_spanner, "spacing-spanner-interface",
+ADD_INTERFACE (Spacing_spanner,
               "The space taken by a note is dependent on its duration. Doubling a\n"
               "duration adds spacing-increment to the space. The most common shortest\n"
               "note gets @code{shortest-duration-space}. Notes that are even shorter are\n"
@@ -518,7 +518,7 @@ ADD_INTERFACE (Spacing_spanner, "spacing-spanner-interface",
               
               );
 
-ADD_INTERFACE (Spacing_interface, "spacing-interface",
+ADD_INTERFACE (Spacing_interface,
               "Something to do with line breaking and spacing. "
               "Kill this one after determining line breaks.",
               
index 55babfbfee0f64ef2b7dfaa1d17629c8c1391543..1e236324ac43aea6e8998b7f4ffcfac9c9d71397 100644 (file)
@@ -13,6 +13,7 @@
 #include "pointer-group-interface.hh"
 #include "side-position-interface.hh"
 #include "staff-symbol-referencer.hh"
+#include "item.hh"
 
 /**
    Make arpeggios that span multiple staves.  Catch arpeggios, and span a
index 5c1c76e85590febc2e757f56c731e54ff27c874f..4566d73f77080e486530436499324cc48f67b630 100644 (file)
@@ -209,7 +209,7 @@ Span_bar::calc_bar_size (SCM smob)
   return scm_from_double (iv.length ());
 }
 
-ADD_INTERFACE (Span_bar, "span-bar-interface",
+ADD_INTERFACE (Span_bar,
               "A bar line that spanned between other barlines. This interface is "
               " used for  bar lines that connect different staves.",
 
index 955ba76ef3ad08b0b3bfe032f02385c17c8dab98..1e49d0b0c9005c79f7fe40fc6ae107982e4f1f39 100644 (file)
@@ -371,7 +371,6 @@ unsmob_spanner (SCM s)
 }
 
 ADD_INTERFACE (Spanner,
-              "spanner-interface",
               "Some objects are horizontally spanned between objects. For\n"
               "example, slur, beam, tie, etc. These grobs form a subtype called\n"
               "@code{Spanner}. All spanners have two span-points (these must be\n"
index 1d9182c16cc719c5a5794b844830ecece10f2ce7..f89113187ed1c435adc678efc7e518c5374873f9 100644 (file)
@@ -261,7 +261,7 @@ Staff_spacing::get_spacing_params (Grob *me, Real *space, Real *fixed)
   *fixed += correction_fixed;
 }
 
-ADD_INTERFACE (Staff_spacing, "staff-spacing-interface",
+ADD_INTERFACE (Staff_spacing,
               "This object calculates spacing details from a "
               " breakable symbol (left) to another object. For example, it takes care "
               " of  optical spacing from  a bar lines to a note.",
index aa45e55e7a4baf8c2b6bc0936fff409b98b3236b..7fe0bf3131679d75ad7aa456547719430f103c1d 100644 (file)
@@ -8,8 +8,8 @@
 
 #include "staff-symbol-referencer.hh"
 
-
 #include "staff-symbol.hh"
+#include "grob.hh"
 #include "output-def.hh"
 #include "libc-extension.hh"
 
@@ -163,7 +163,7 @@ position_less (Grob *const &a, Grob *const &b)
     < Staff_symbol_referencer::get_position (b);
 }
 
-ADD_INTERFACE (Staff_symbol_referencer, "staff-symbol-referencer-interface",
+ADD_INTERFACE (Staff_symbol_referencer,
               "An object whose Y position is meant relative to a staff "
               "symbol. "
               "These usually have @code{Staff_symbol_referencer::callback} "
index 6edb1f910e4afb8b520e5e67eeb6e23504ee44c6..f999346753e44620bbebde59233da9d8271ef1e0 100644 (file)
@@ -170,7 +170,7 @@ Staff_symbol::height  (SCM smob)
 
 
 
-ADD_INTERFACE (Staff_symbol, "staff-symbol-interface",
+ADD_INTERFACE (Staff_symbol,
               "This spanner draws the lines of a staff. "
               "A staff symbol definines a vertical unit, the staff space. "
               "Quantities that go by a half staff space are called positions "
index 43a044552f29d68827ed4ce9562a94662522ffe5..bdf4ae5db2cfd886199e6290bcf938ecdc9efdfa 100644 (file)
@@ -9,6 +9,7 @@
 #include "engraver.hh"
 #include "side-position-interface.hh"
 #include "text-interface.hh"
+#include "item.hh"
 
 class Stanza_number_engraver : public Engraver
 {
index 6729aa934cf03c79f7bbe90f9956fa8ffbd651c0..e607fda1b08ec3e551a303be846af81c9c78a791 100644 (file)
@@ -215,7 +215,7 @@ Stem_tremolo::print (SCM grob)
   return s.smobbed_copy ();
 }
 
-ADD_INTERFACE (Stem_tremolo, "stem-tremolo-interface",
+ADD_INTERFACE (Stem_tremolo,
               "A beam slashing a stem to indicate a tremolo.",
 
               "beam-thickness "
index 69e7a15ce6328f59d356daed30c4c77cf303afe1..fc21f2d6b9597929ee24dd4c888d1a1f7824d027 100644 (file)
@@ -14,6 +14,7 @@
 */
 
 #include "stem.hh"
+#include "spanner.hh"
 
 #include <cmath>               // rint
 using namespace std;
@@ -988,7 +989,7 @@ Stem::beam_multiplicity (Grob *stem)
 }
 
 /* FIXME:  Too many properties  */
-ADD_INTERFACE (Stem, "stem-interface",
+ADD_INTERFACE (Stem,
               "The stem represent the graphical stem.  "
               "In addition, it internally connects note heads, beams and"
               "tremolos. "
index 7099ca7e7a30039bd40abd0f408f12316129e4cb..c3fe50250a0a9e0bc20de549bffe1bb99c91a828 100644 (file)
@@ -175,7 +175,6 @@ System_start_delimiter::staff_brace (Grob *me, Real y)
 }
 
 ADD_INTERFACE (System_start_delimiter,
-              "system-start-delimiter-interface",
               "The brace, bracket or bar in front of the system. "
               ,
 
index 5a90191081e307575dfce3f143c8cb2c785451c7..a0a90b06c3fb0b52809cfeb3b6ab580380a351f7 100644 (file)
@@ -19,7 +19,7 @@ class System_start_text
 {
 public:
   static Stencil get_stencil (Grob *);
-  static bool has_interface (Grob *);
+  DECLARE_GROB_INTERFACE();
 
   DECLARE_SCHEME_CALLBACK (print, (SCM));
 };
@@ -95,7 +95,6 @@ System_start_text::print (SCM smob)
 
 
 ADD_INTERFACE (System_start_text,
-              "system-start-text-interface",
               "Text in front of the system.",
 
               /* properties */
index 7c1828cabde793c1c963595846bdb66da598811e..c4fec86cb9fa626308896bcef9190e1f7c966ad6 100644 (file)
@@ -535,7 +535,7 @@ System::build_skylines ()
 }
 
 
-ADD_INTERFACE (System, "system-interface",
+ADD_INTERFACE (System,
               "This is the toplevel object: each object in a score "
               "ultimately has a System object as its X and Y parent. ",
 
index bf1dfbd81182dd731d4d7caca5035db8759f13ce..a3447ccce7175cdceaffd377ac45aa7c4510815e 100644 (file)
@@ -13,6 +13,7 @@
 #include "stem.hh"
 #include "stream-event.hh"
 #include "text-interface.hh"
+#include "item.hh"
 
 #include "translator.icc"
 
@@ -22,7 +23,7 @@
 class Text_engraver : public Engraver
 {
   vector<Stream_event *> evs_;
-  vector<Item*> texts_;
+  vector<Grob*> texts_;
 public:
   TRANSLATOR_DECLARATIONS (Text_engraver);
 protected:
index c249052da58a9429d67050fc66e2496fb0848bfa..ebfae5ae5b3b51f7c3016cf1745b8d5ede26553b 100644 (file)
@@ -91,7 +91,7 @@ Text_interface::is_markup (SCM x)
                                      ly_symbol2scm ("markup-signature"))));
 }
 
-ADD_INTERFACE (Text_interface, "text-interface",
+ADD_INTERFACE (Text_interface,
               "A scheme markup text, see @usermanref{Text markup}.",
               "baseline-skip "
               "text "
index 289c44e33fa26905e3e41432f055df2642313782..28f88fd76ffee3f2c35d16f640b5c7ff840d78ca 100644 (file)
@@ -11,6 +11,7 @@
 #include "international.hh"
 #include "note-column.hh"
 #include "side-position-interface.hh"
+#include "spanner.hh"
 #include "stream-event.hh"
 
 #include "translator.icc"
@@ -90,7 +91,7 @@ Text_spanner_engraver::acknowledge_note_column (Grob_info info)
       if (spans[i])
        {
          Side_position_interface::add_support (spans[i], info.grob ());
-         add_bound_item (spans[i], dynamic_cast<Item *> (info.grob ()));
+         add_bound_item (spans[i], info.grob ());
        }
     }
 }
index 4d8b3a092f82162a3df5e0912eafbbd6c00e909c..ea4c25074a2ed7f03b5592b6277660c615dcefc0 100644 (file)
@@ -161,7 +161,6 @@ Text_spanner::print (SCM smob)
 }
 
 ADD_INTERFACE (Text_spanner,
-              "text-spanner-interface",
 
               "generic text spanner",
 
index 13d5fb0177c1fba2577b293ee0e75c2cb8a3c7b3..85529ef1d559585edac3d6e7bf4e5723f18fef6b 100644 (file)
@@ -126,7 +126,7 @@ Tie_column::calc_positioning_done (SCM smob)
 
 
 
-ADD_INTERFACE (Tie_column, "tie-column-interface",
+ADD_INTERFACE (Tie_column,
               "Object that sets directions of multiple ties in a tied chord",
 
               /* properties */
index 1263237688630d9d862a5978acff1a85856c60b7..2aab6ac2b16b513e747d066410048409bdec9a68 100644 (file)
@@ -289,8 +289,6 @@ Tie::print (SCM smob)
 }
 
 ADD_INTERFACE (Tie,
-              "tie-interface",
-              
               "A horizontal curve connecting two noteheads. \n\n"
               ,
               
index 78f795eaedf4c41a6419dbbcf4733b673aff56fa..68a7e178b042da9a83d4c9802521c939efad02fc 100644 (file)
@@ -8,6 +8,7 @@
 
 #include "engraver-group.hh"
 
+#include "item.hh"
 #include "international.hh"
 #include "misc.hh"
 #include "time-signature.hh"
index 26860c688fcac9d6c1267c089f9136bc7fb1a468..ced6468e8dbba8dcc2d0c042cedc4c924b1ff264 100644 (file)
@@ -8,6 +8,7 @@
 
 #include "time-signature.hh"
 
+#include "grob.hh"
 #include "font-interface.hh"
 #include "international.hh"
 #include "output-def.hh"
@@ -119,7 +120,7 @@ Time_signature::numbered_time_signature (Grob *me, int num, int den)
   return m;
 }
 
-ADD_INTERFACE (Time_signature, "time-signature-interface",
+ADD_INTERFACE (Time_signature,
               "A time signature, in different styles.\n"
               "  The following values for 'style are are recognized:\n"
               "\n"
index 19576e6f164c9328b63bc242961e9731468d0509..3f07d5b5accd769f76a4b30e58026f7f17a1feb2 100644 (file)
@@ -19,6 +19,7 @@
 #include "note-column.hh"
 #include "side-position-interface.hh"
 #include "stream-event.hh"
+#include "spanner.hh"
 
 #include "translator.icc"
 
@@ -96,7 +97,7 @@ Trill_spanner_engraver::acknowledge_note_column (Grob_info info)
       if (spans[i])
        {
          Side_position_interface::add_support (spans[i], info.grob ());
-         add_bound_item (spans[i], dynamic_cast<Item *> (info.grob ()));
+         add_bound_item (spans[i], info.grob ());
        }
     }
 }
index 261b086c3f4dea1605f3f9dab4c7aede94f8fbf6..8af6073f83f2fce72bb3ba540057d875d46eccf1 100644 (file)
@@ -731,7 +731,6 @@ Tuplet_bracket::add_tuplet_bracket (Grob *me, Grob *bracket)
 }
 
 ADD_INTERFACE (Tuplet_bracket,
-              "tuplet-bracket-interface",
               "A bracket with a number in the middle, used for tuplets. "
               "When the bracket spans  a line break, the value of "
               "@code{break-overshoot} determines how far it extends "
index 7a3cf534fdbd3717a0a514f9171833fd6640fa31..946fd1d80272e03d4266f024a8b7e25891d6acbd 100644 (file)
@@ -14,6 +14,7 @@
 #include "stream-event.hh"
 #include "tuplet-bracket.hh"
 #include "warn.hh"
+#include "item.hh"
 
 #include "translator.icc"
 
index a68b99b0a5738c34793c1b5c232d4506ec0a680e..31bcbbfa57291a01276ecddc101bc737d5966d7a 100644 (file)
@@ -17,7 +17,7 @@
 struct Tuplet_number
 {
   DECLARE_SCHEME_CALLBACK(print, (SCM));
-  static bool has_interface (Grob *);
+  DECLARE_GROB_INTERFACE();
 };
   
 
@@ -62,7 +62,6 @@ Tuplet_number::print (SCM smob)
 
 
 ADD_INTERFACE (Tuplet_number,
-              "tuplet-number-interface",
               "The number for a bracket. "
               ,
 
index 411953ea878eb2211f31ca08c6e7e851d67558a4..9e97482d029d2779e1cd427d6a10c9be0eb7a96c 100644 (file)
@@ -292,7 +292,7 @@ Vaticana_ligature::print (SCM)
   return SCM_EOL;
 }
 
-ADD_INTERFACE (Vaticana_ligature, "vaticana-ligature-interface",
+ADD_INTERFACE (Vaticana_ligature,
               "A vaticana style gregorian ligature",
 
               /* properties */
index ba33a4015dd2cab815848529def4e998526fac94..9c2e4ea669921abec644dd8159dde2f15500dd4b 100644 (file)
@@ -166,7 +166,7 @@ Volta_bracket_interface::add_column (Grob *me, Grob *c)
   Side_position_interface::add_support (me, c);
 }
 
-ADD_INTERFACE (Volta_bracket_interface, "volta-bracket-interface",
+ADD_INTERFACE (Volta_bracket_interface,
               "Volta bracket with number",
 
               /* properties */
index db4d5e60cfd8bf0f1b1031bbed481ec32d4e4d9b..41b0c7cc78bd6a697eed5bf739b5a43a44944ca5 100644 (file)
@@ -12,6 +12,7 @@
 #include "context.hh"
 #include "international.hh"
 #include "note-column.hh"
+#include "item.hh"
 #include "side-position-interface.hh"
 #include "staff-symbol.hh"
 #include "text-interface.hh"