@end itemize
There are also Scheme functions to access all of these logging functions from
-scheme.
+scheme. In addition, the Grob class contains some convenience wrappers for
+even easier access to these functions.
The message and debug functions in @code{warn.hh} also have an optional
argument @code{newline}, which specifies whether the message should always
@item @tab @tab
@headitem
-@tab Scheme, no location
-@tab Scheme, input location
+@tab C++ from a Grob
+@tab Scheme, music expression
@item ERROR
+@tab @code{Grob::programming_error (msg)}
@tab -
-@tab @code{(ly:error msg args)}, @code{(ly:programming-error msg args)}
@item WARN
-@tab @code{(ly:warning msg args)}
-@tab @code{(ly:input-warning input msg args)}
+@tab @code{Grob::warning (msg)}
+@tab @code{(ly:music-warning music msg)}
@item BASIC
-@tab @code{(ly:success msg args)}
+@tab -
@tab -
@item PROGRESS
-@tab (ly:progress msg args), (ly:message msg args)
-@tab @code{(ly:input-message input msg args)}
+@tab -
+@tab @code{(ly:music-message music msg)}
@item DEBUG
-@tab @code{(ly:debug msg args)}
@tab -
-
+@tab -
@item @tab @tab
@headitem
-@tab Scheme, music expression
-@tab
+@tab Scheme, no location
+@tab Scheme, input location
@item ERROR
@tab -
+@tab @code{(ly:error msg args)}, @code{(ly:programming-error msg args)}
@item WARN
-@tab @code{(ly:music-warning music msg)}
+@tab @code{(ly:warning msg args)}
+@tab @code{(ly:input-warning input msg args)}
@item BASIC
+@tab @code{(ly:success msg args)}
@tab -
@item PROGRESS
-@tab @code{(ly:music-message music msg)}
+@tab (ly:progress msg args), (ly:message msg args)
+@tab @code{(ly:input-message input msg args)}
@item DEBUG
+@tab @code{(ly:debug msg args)}
@tab -
+
@end multitable