#include "system.hh"
#include "font-interface.hh"
+
+
+LY_DEFINE (ly_grob_property_data, "ly:grob-property-data",
+ 2, 0, 0, (SCM grob, SCM sym),
+ //, SCM dfault),
+ "Retrieve @var{sym} for @var{grob} but don't process callbacks.")
+{
+ Grob *sc = unsmob_grob (grob);
+ SCM_ASSERT_TYPE (sc, grob, SCM_ARG1, __FUNCTION__, "grob");
+ SCM_ASSERT_TYPE (scm_is_symbol (sym), sym, SCM_ARG2, __FUNCTION__, "symbol");
+ // SCM_ASSERT_TYPE (ly_is_procedure (proc), proc, SCM_ARG3, __FUNCTION__, "procedure");
+
+ return sc->get_property_data (sym);
+}
+
LY_DEFINE (ly_grob_set_property_x, "ly:grob-set-property!",
3, 0, 0, (SCM grob, SCM sym, SCM val),
"Set @var{sym} in grob @var{grob} to value @var{val}")
SCM_ASSERT_TYPE (sc, grob, SCM_ARG1, __FUNCTION__, "grob");
SCM_ASSERT_TYPE (scm_is_symbol (sym), sym, SCM_ARG2, __FUNCTION__, "symbol");
- if (!type_check_assignment (sym, val, ly_symbol2scm ("backend-type?")))
+ if (!ly_is_procedure (val)
+ && !type_check_assignment (sym, val, ly_symbol2scm ("backend-type?")))
error ("typecheck failed");
sc->internal_set_property (sym, val);
LY_DEFINE (ly_grob_property, "ly:grob-property",
2, 0, 0, (SCM grob, SCM sym),
"Return the value of a value in grob @var{g} of property @var{sym}. "
- "It will return @code{' ()} (end-of-list) "
+ "It will return @code{'()} (end-of-list) "
"if @var{sym} is undefined in @var{g}."
"\n\n")
{
return sc->internal_get_property (sym);
}
+
+LY_DEFINE (ly_grob_interfaces, "ly:grob-interfaces",
+ 1, 0, 0, (SCM grob),
+ "Return the interfaces list of grob @var{grob}.")
+{
+ Grob *sc = unsmob_grob (grob);
+ SCM_ASSERT_TYPE (sc, grob, SCM_ARG1, __FUNCTION__, "grob");
+
+ return sc->get_interfaces ();
+}
+
LY_DEFINE (ly_grob_object, "ly:grob-object",
2, 0, 0, (SCM grob, SCM sym),
"Return the value of a pointer in grob @var{g} of property @var{sym}. "
return ly_bool2scm (b);
}
-LY_DEFINE (ly_item_p, "ly:item?",
- 1, 0, 0, (SCM g),
- "Is @var{g} an @code{Item} object?")
-{
- Grob *me = unsmob_grob (g);
- bool b = dynamic_cast<Item *> (me);
- return ly_bool2scm (b);
-}
-
-LY_DEFINE (ly_item_break_dir, "ly:item-break-dir",
- 1, 0, 0, (SCM it),
- "The break status dir of item @var{it}. @code{-1} is end of "
- "line, @code{0} unbroken, and @code{1} begin of line.")
-{
- Item *me = dynamic_cast<Item *> (unsmob_grob (it));
- SCM_ASSERT_TYPE (me, it, SCM_ARG1, __FUNCTION__, "Item");
- return scm_from_int (me->break_status_dir ());
-}
-
LY_DEFINE (ly_grob_key, "ly:grob-key",
1, 0, 0,
(SCM grob),