]> git.donarmstrong.com Git - lilypond.git/commitdiff
* lily/prob-scheme.cc (LY_DEFINE): new file.
authorHan-Wen Nienhuys <hanwen@xs4all.nl>
Tue, 24 Jan 2006 13:51:14 +0000 (13:51 +0000)
committerHan-Wen Nienhuys <hanwen@xs4all.nl>
Tue, 24 Jan 2006 13:51:14 +0000 (13:51 +0000)
(LY_DEFINE): functions ly:make-prob , ly:prob-type? , ly:prob-(set-)property(!)

* lily/music-scheme.cc (LY_DEFINE): rewrite get/set property using
prob functions.

* lily/music.cc (derived_mark): derive Music from Prob.

* lily/paper-system.cc (LY_DEFINE): derive from Prob.

* lily/prob.cc (Module): Implement Prob (Property Object), object
with shared and r/w property alists.

* lily/include/prob.hh (Module): new file. Declare Prob.

17 files changed:
ChangeLog
lily/include/lily-proto.hh
lily/include/paper-system.hh
lily/include/prob.hh
lily/music-scheme.cc
lily/music.cc
lily/paper-book.cc
lily/paper-score-scheme.cc
lily/paper-system-scheme.cc [deleted file]
lily/paper-system.cc
lily/prob-scheme.cc [new file with mode: 0644]
lily/prob.cc
lily/system.cc
scm/framework-ps.scm
scm/layout-page-layout.scm
scm/lily-library.scm
scm/music-functions.scm

index a33b5240199d16351b2ac53137efc65096f8f321..e54e951f21d253630c4b8abc05d94ae78f2c1874 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,11 @@
 2006-01-24  Han-Wen Nienhuys  <hanwen@xs4all.nl>
 
+       * lily/prob-scheme.cc (LY_DEFINE): new file.
+       (LY_DEFINE): functions ly:make-prob , ly:prob-type? , ly:prob-(set-)property(!)
+
+       * lily/music-scheme.cc (LY_DEFINE): rewrite get/set property using
+       prob functions.
+
        * lily/music.cc (derived_mark): derive Music from Prob.
 
        * lily/paper-system.cc (LY_DEFINE): derive from Prob.
index 1e9affd339fe3c142d99032c66b65fb47bd09ac8..da0f30e1f67d23b887a7aaa17b4f64715b9b53e5 100644 (file)
@@ -120,7 +120,6 @@ class Paper_book;
 class Paper_column;
 class Paper_outputter;
 class Paper_score;
-class Paper_system;
 class Performance;
 class Performer;
 class Performer_group;
index a152f789b72abf7cee01ca4642b97f2f96e9b91d..8c709c34647c838a621ef5bc8a39731bd77896f9 100644 (file)
   formatted content of the grob is put into a
   Paper_system. Page-breaking handles Paper_system objects.
 */
-class Paper_system : public Prob 
-{
-public:
-  Paper_system (Stencil, SCM);
-};
-Paper_system*unsmob_paper_system (SCM);
+Prob *make_paper_system (SCM immutable_init);
+void paper_system_set_stencil (Prob *prob, Stencil s);
 
 #endif /* PAPER_SYSTEM_HH */
index 80827a67a332cac4a04c4c47ba2d5e009aa8df45..f854bf3a413a679494dd070e4475bd590f317ad9 100644 (file)
@@ -27,21 +27,23 @@ class Prob
 protected:
   SCM mutable_property_alist_;
   SCM immutable_property_alist_;
-
+  SCM type_;
+  
   virtual void derived_mark () const;
   virtual SCM copy_mutable_properties () const;
   virtual void type_check_assignment (SCM,SCM) const;
   
 public:
-  Prob (SCM);
+  Prob (SCM, SCM);
   Prob (Prob const &);
   virtual String name () const;
-
+  SCM type () const { return type_; }
   SCM get_property_alist (bool mutble) const;
   SCM internal_get_property (SCM sym) const;
   void internal_set_property (SCM sym, SCM val);
 };
-
-DECLARE_UNSMOB (Prob, prob);
+DECLARE_UNSMOB(Prob,prob);
+SCM ly_prob_set_property_x (SCM system, SCM sym, SCM value);
+SCM ly_prob_property (SCM system, SCM sym, SCM dfault);
 
 #endif /* PROPERTY_OBJECT_HH */
index 4da272678277b18daac75266058cfafe2435e30f..27e5db98804752020a1460fb1cff339eac7f1398 100644 (file)
@@ -11,6 +11,7 @@
 #include "music.hh"
 #include "pitch.hh"
 
+
 LY_DEFINE (ly_music_length, "ly:music-length",
           1, 0, 0, (SCM mus),
           "Get the length of music expression @var{mus}, and return as a @code{Moment} object.")
@@ -21,15 +22,13 @@ LY_DEFINE (ly_music_length, "ly:music-length",
 }
 
 LY_DEFINE (ly_music_property,
-          "ly:music-property", 2, 0, 0, (SCM mus, SCM sym),
+          "ly:music-property", 2, 1, 0, (SCM mus, SCM sym, SCM dfault),
           "Get the property @var{sym} of music expression @var{mus}.\n"
-          "If @var{sym} is undefined, return @code{' ()}.\n")
+          "If @var{sym} is undefined, return @code{'()}.\n")
 {
   Music *sc = unsmob_music (mus);
   SCM_ASSERT_TYPE (sc, mus, SCM_ARG1, __FUNCTION__, "music");
-  SCM_ASSERT_TYPE (scm_is_symbol (sym), sym, SCM_ARG2, __FUNCTION__, "symbol");
-
-  return sc->internal_get_property (sym);
+  return ly_prob_property (mus,sym,dfault);
 }
 
 LY_DEFINE (ly_music_set_property, "ly:music-set-property!",
@@ -38,13 +37,7 @@ LY_DEFINE (ly_music_set_property, "ly:music-set-property!",
 {
   Music *sc = unsmob_music (mus);
   SCM_ASSERT_TYPE (sc, mus, SCM_ARG1, __FUNCTION__, "music");
-  SCM_ASSERT_TYPE (scm_is_symbol (sym), sym, SCM_ARG2, __FUNCTION__, "symbol");
-
-  bool ok = type_check_assignment (sym, val, ly_symbol2scm ("music-type?"));
-  if (ok)
-    sc->internal_set_property (sym, val);
-
-  return SCM_UNSPECIFIED;
+  return ly_prob_set_property_x (mus, sym, val);
 }
 
 
index cba10da79c9f84b917b82d46caf2449be656618f..cf48775f00ee06fb0ac2d74f33a1dc4b255793d2 100644 (file)
@@ -32,7 +32,7 @@ Music::internal_is_music_type (SCM k) const
 }
 
 Music::Music (SCM init)
-  : Prob (init)
+  : Prob (ly_symbol2scm ("Music"), init)
 {
   length_callback_ = SCM_EOL;
   start_callback_ = SCM_EOL;
@@ -219,8 +219,6 @@ Music::transpose (Pitch delta)
     set_property ("pitch-alist", ly_transpose_key_alist (pa, delta.smobbed_copy ()));
 }
 
-
-
 void
 Music::set_spot (Input ip)
 {
index 032af56391a5b97a845e078f2d98eebe7ec55966..cd295de778e3dff9393c688827ac6f15bf00a670 100644 (file)
@@ -216,7 +216,7 @@ Paper_book::score_title (SCM header)
 }
 
 void
-set_system_penalty (Paper_system *ps, SCM header)
+set_system_penalty (Prob *ps, SCM header)
 {
   if (ly_is_module (header))
     {
@@ -245,7 +245,9 @@ Paper_book::add_score_title (SCM header)
        override settings from \paper {}
       */
       SCM props = paper_->lookup_variable (ly_symbol2scm ("score-title-properties"));
-      Paper_system *ps = new Paper_system (title, props);
+      Prob *ps = make_paper_system (props);
+      paper_system_set_stencil (ps, title);
+      
       systems_ = scm_cons (ps->self_scm (), systems_);
       ps->unprotect ();
       set_system_penalty (ps, header);
@@ -264,7 +266,8 @@ Paper_book::systems ()
   if (!title.is_empty ())
     {
       SCM props = paper_->lookup_variable (ly_symbol2scm ("book-title-properties"));
-      Paper_system *ps = new Paper_system (title, props);
+      Prob *ps = make_paper_system (props);
+      paper_system_set_stencil (ps, title);
       set_system_penalty (ps, header_);
 
       systems_ = scm_cons (ps->self_scm (), systems_);
@@ -323,7 +326,8 @@ Paper_book::systems ()
                                                    scm_car (s));
          
          // TODO: init props
-         Paper_system *ps = new Paper_system (*unsmob_stencil (t), SCM_EOL);
+         Prob *ps = make_paper_system (SCM_EOL);
+         paper_system_set_stencil (ps, *unsmob_stencil (t));
          ps->set_property ("is-title", SCM_BOOL_T); 
          systems_ = scm_cons (ps->self_scm (), systems_);
          ps->unprotect ();
@@ -338,10 +342,10 @@ Paper_book::systems ()
   systems_ = scm_reverse (systems_);
 
   int i = 0;
-  Paper_system *last = 0;
+  Prob *last = 0;
   for (SCM s = systems_; s != SCM_EOL; s = scm_cdr (s))
     {
-      Paper_system *ps = unsmob_paper_system (scm_car (s));
+      Prob *ps = unsmob_prob (scm_car (s));
       ps->set_property ("number", scm_from_int (++i));
 
       if (last
index d3ea9b3105c80b22c75bc8d5d356d6f3aded64f3..a2e475093a7b3c1876424dbced918d20e069a3eb 100644 (file)
@@ -11,7 +11,7 @@
 LY_DEFINE (ly_paper_score_paper_systems, "ly:paper-score-paper-systems",
           1, 0, 0,
           (SCM paper_score),
-          "Return vector of Paper_system objects from @var{paper-score}.")
+          "Return vector of paper_system objects from @var{paper-score}.")
 {
   Paper_score *pscore = dynamic_cast<Paper_score *> (unsmob_music_output (paper_score));
   SCM_ASSERT_TYPE (pscore, paper_score, SCM_ARG1, __FUNCTION__, "Paper score (Music output)");
diff --git a/lily/paper-system-scheme.cc b/lily/paper-system-scheme.cc
deleted file mode 100644 (file)
index fe891b9..0000000
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
-  paper-system-scheme.cc -- implement Paper_system bindings
-
-  source file of the GNU LilyPond music typesetter
-
-  (c) 2005--2006 Han-Wen Nienhuys <hanwen@xs4all.nl>
-*/
-
-#include "paper-system.hh"
-
-LY_DEFINE (ly_paper_system_set_property_x, "ly:paper-system-set-property!",
-          2, 1, 0, (SCM system, SCM sym, SCM value),
-          "Set property @var{sym} of @var{system} to @var{value}")
-{
-  Paper_system *ps = unsmob_paper_system (system);
-  SCM_ASSERT_TYPE (ps, system, SCM_ARG1, __FUNCTION__, "paper-system");
-
-  ps->internal_set_property (sym, value);
-  return SCM_UNSPECIFIED;
-}
-
-LY_DEFINE (ly_paper_system_property, "ly:paper-system-property",
-          2, 1, 0, (SCM system, SCM sym, SCM dfault),
-          "Return the value for @var{sym}. Properties may be set by "
-          "setting the @code{line-break-system-details} property of "
-          "NonMusicalPaperColumn.  If the property is not found, "
-          "return @var{dfault}, "
-          "or @code{'()} if undefined.")
-{
-  Paper_system *ps = unsmob_paper_system (system);
-  SCM_ASSERT_TYPE (ps, system, SCM_ARG1, __FUNCTION__, "paper-system");
-  if (dfault == SCM_UNDEFINED)
-    dfault = SCM_EOL;
-
-  SCM retval = ps->internal_get_property (sym);
-  if (retval == SCM_EOL)
-    return dfault;
-  else
-    return retval;
-}
-
-
index d5e8b914bac08c0ec240bca7b34646fd24adac54..5b26cd25088fe139653ae88003868d34bb67128a 100644 (file)
@@ -1,5 +1,5 @@
 /*
-  paper-system.cc -- implement Paper_system
+  paper-system.cc -- implement Prob functions for paper-system
 
   source file of the GNU LilyPond music typesetter
 
@@ -9,10 +9,17 @@
 #include "paper-system.hh"
 #include "item.hh"
 
-Paper_system::Paper_system (Stencil s, SCM immutable_init)
-  : Prob (immutable_init)
+Prob *
+make_paper_system (SCM immutable_init)
 {
-  SCM yext = get_property ("Y-extent");
+  Prob *prob = new Prob (ly_symbol2scm ("paper-system"), immutable_init);
+  return prob;
+}
+
+void
+paper_system_set_stencil (Prob *prob, Stencil s)
+{
+  SCM yext = prob->get_property ("Y-extent");
 
   if (is_number_pair (yext))
     {
@@ -23,19 +30,5 @@ Paper_system::Paper_system (Stencil s, SCM immutable_init)
       s = Stencil (b, s.expr ());
     }
 
-  set_property ("stencil", s.smobbed_copy ());
-}
-
-Paper_system *
-unsmob_paper_system (SCM x)
-{
-  Prob *prob = unsmob_prob (x);
-  return dynamic_cast<Paper_system*> (prob);
-}
-
-LY_DEFINE(ly_paper_system_p, "ly:paper-system?",
-         1,0,0, (SCM obj),
-         "Type predicate.")
-{
-  return scm_from_bool (unsmob_paper_system (obj));
+  prob->set_property ("stencil", s.smobbed_copy ());
 }
diff --git a/lily/prob-scheme.cc b/lily/prob-scheme.cc
new file mode 100644 (file)
index 0000000..3d84754
--- /dev/null
@@ -0,0 +1,66 @@
+/*
+  paper-system-scheme.cc -- implement Prob bindings
+
+  source file of the GNU LilyPond music typesetter
+
+  (c) 2005--2006 Han-Wen Nienhuys <hanwen@xs4all.nl>
+*/
+
+#include "prob.hh"
+
+LY_DEFINE (ly_prob_set_property_x, "ly:prob-set-property!",
+          2, 1, 0, (SCM system, SCM sym, SCM value),
+          "Set property @var{sym} of @var{system} to @var{value}")
+{
+  Prob *ps = unsmob_prob (system);
+  SCM_ASSERT_TYPE (ps, system, SCM_ARG1, __FUNCTION__, "Prob");
+  SCM_ASSERT_TYPE (scm_is_symbol (sym), sym, SCM_ARG2, __FUNCTION__, "symbol");
+
+  ps->internal_set_property (sym, value);
+  return SCM_UNSPECIFIED;
+}
+
+LY_DEFINE (ly_prob_property, "ly:prob-property",
+          2, 1, 0, (SCM system, SCM sym, SCM dfault),
+          "Return the value for @var{sym}.")
+{
+  Prob *ps = unsmob_prob (system);
+  SCM_ASSERT_TYPE (ps, system, SCM_ARG1, __FUNCTION__, "Prob");
+  SCM_ASSERT_TYPE (scm_is_symbol (sym), sym, SCM_ARG2, __FUNCTION__, "symbol");
+
+  if (dfault == SCM_UNDEFINED)
+    dfault = SCM_EOL;
+
+  SCM retval = ps->internal_get_property (sym);
+  if (retval == SCM_EOL)
+    return dfault;
+  else
+    return retval;
+}
+
+LY_DEFINE (ly_prob_type_p, "ly:prob-type?",
+          1, 0, 0,
+          (SCM obj, SCM type),
+          "If obj the specified prob-type?")
+{
+  Prob*prob = unsmob_prob (obj);
+  return scm_from_bool (prob && prob->type() == type);
+}
+
+LY_DEFINE (ly_make_prob, "ly:make-prob",
+          2, 0, 0,
+          (SCM type, SCM init),
+          "Create a Prob.")
+{
+  Prob *pr = new Prob (type, init);
+  SCM x = pr->self_scm () ;
+  return scm_gc_unprotect_object (x);
+}
+
+  
+LY_DEFINE(ly_paper_system_p, "ly:paper-system?",
+         1, 0, 0, (SCM obj),
+         "Type predicate.")
+{
+  return ly_prob_type_p (obj, ly_symbol2scm ("paper-system"));
+}
index 4dbd2858ababb7b9921bf7ed3c6c0dea4ce4cff8..66829f3b2e470f956c98e13b4da600bf5dc17906 100644 (file)
@@ -1,5 +1,5 @@
 /*
-  paper-system.cc -- implement Paper_system
+  prob.cc -- implement Prob
 
   source file of the GNU LilyPond music typesetter
 
@@ -16,11 +16,12 @@ IMPLEMENT_SMOBS (Prob);
 IMPLEMENT_TYPE_P (Prob, "ly:prob?");
 IMPLEMENT_DEFAULT_EQUAL_P (Prob);
 
-Prob::Prob (SCM immutable_init)
+Prob::Prob (SCM type, SCM immutable_init)
 {
   self_scm_ = SCM_EOL;
   mutable_property_alist_ = SCM_EOL;
   immutable_property_alist_ = immutable_init;
+  type_ = type;
   smobify_self ();
 }
 
@@ -69,8 +70,8 @@ Prob::print_smob (SCM smob, SCM port, scm_print_state*)
   Prob *p = (Prob *) SCM_CELL_WORD_1 (smob);
   scm_puts ("#<", port);
   scm_puts ("Prob: ", port);
-
-  
+  scm_display (p->type_, port);
+  scm_puts (" C++: ", port);
   scm_puts (p->class_name (), port);
   scm_display (p->mutable_property_alist_, port);
   scm_display (p->immutable_property_alist_, port);
index cdff8cb82935add293b0ca043c80073c517b05b9..a1636c8a1a26c513d202f86059e95784ca9675a1 100644 (file)
@@ -377,8 +377,8 @@ System::get_paper_system ()
 
   Grob *left_bound = this->get_bound (LEFT);
   SCM prop_init = left_bound->get_property ("line-break-system-details");
-  Paper_system *pl = new Paper_system (sys_stencil,
-                                      prop_init);
+  Prob *pl = make_paper_system (prop_init);
+  paper_system_set_stencil (pl, sys_stencil);
   pl->set_property ("penalty",
                    left_bound->get_property ("page-penalty"));
   
index d3a0891ff2708d7c4f064fa152f2f96bd4d8c839..9bd77fa27099b72b1cb5acb9e042c75fdaa58b91 100644 (file)
     (if (and
         (not (ly:get-option 'preview-include-book-title))
         (pair? systems)
-        (ly:paper-system-property (car systems) 'is-book-title #f))
+        (ly:prob-property (car systems) 'is-book-title #f))
 
        (set! systems (cdr systems)))
 
index fd362128db84288b606c4d57453feed46b821346..5d307da64f6a2bbf8a1b03cab4e6e9c1b8a4ee4d 100644 (file)
@@ -28,7 +28,7 @@
        "\n")))
 
 (define-method (node-system-numbers (node <optimally-broken-page-node>))
-  (map (lambda (ps) (ly:paper-system-property ps 'number))
+  (map (lambda (ps) (ly:prob-property ps 'number))
        (node-lines node)))
 
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
@@ -40,7 +40,7 @@
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 
 (define-public (paper-system-staff-extents ps)
-  (ly:paper-system-property ps 'refpoint-Y-extent '(0 . 0)))
+  (ly:prob-property ps 'refpoint-Y-extent '(0 . 0)))
 
 
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 
 (define (paper-system-annotate-last system layout)
   (let*
-      ((bottomspace (ly:paper-system-property system 'bottom-space))
+      ((bottomspace (ly:prob-property system 'bottom-space))
        (y-extent (paper-system-extent system Y))
        (x-extent (paper-system-extent system X))
-       (stencil (ly:paper-system-property system 'stencil))
+       (stencil (ly:prob-property system 'stencil))
      
        (arrow (if (number? bottomspace)
               (annotate-y-interval layout
        (set! stencil
              (ly:stencil-add stencil arrow)))
 
-    (set! (ly:paper-system-property system 'stencil)
+    (set! (ly:prob-property system 'stencil)
          stencil)
   ))
   
                                                     name extent is-length?)))))
 
        (bbox-extent (paper-system-extent system Y))
-       (refp-extent (ly:paper-system-property system 'refpoint-Y-extent))
-       (next-space (ly:paper-system-property system 'next-space
+       (refp-extent (ly:prob-property system 'refpoint-Y-extent))
+       (next-space (ly:prob-property system 'next-space
                                             (ly:output-def-lookup layout 'betweensystemspace)
                                             ))
-       (next-padding (ly:paper-system-property system 'next-padding
+       (next-padding (ly:prob-property system 'next-padding
                                               (ly:output-def-lookup layout 'betweensystempadding)
                                               ))
                     
        
     
 
-    (set! (ly:paper-system-property system 'stencil)
+    (set! (ly:prob-property system 'stencil)
          (ly:stencil-add
-          (ly:paper-system-property system 'stencil)
+          (ly:prob-property system 'stencil)
           (ly:make-stencil
            (ly:stencil-expr annotations)
            (ly:stencil-extent empty-stencil X)
@@ -512,8 +512,8 @@ is what have collected so far, and has ascending page numbers."
                     (interval-end (vector-ref real-extents 0))
                     ))
           (last-system (vector-ref system-vector (1- system-count)))
-          (bottom-space (if (ly:paper-system? last-system)
-                            (ly:paper-system-property last-system 'bottom-space 0.0)
+          (bottom-space (if (ly:prob? last-system)
+                            (ly:prob-property last-system 'bottom-space 0.0)
                             0.0))
           (space-left (- page-height
                          bottom-space
@@ -530,9 +530,9 @@ is what have collected so far, and has ascending page numbers."
            (lambda (idx)
              (let* (
                     (upper-system (vector-ref system-vector idx))
-                    (between-space (ly:paper-system-property upper-system 'next-space
+                    (between-space (ly:prob-property upper-system 'next-space
                                                              global-inter-system-space))
-                    (fixed-dist (ly:paper-system-property upper-system 'next-padding
+                    (fixed-dist (ly:prob-property upper-system 'next-padding
                                                           global-fixed-dist))
                     
                     (this-system-ext (vector-ref staff-extents idx))
@@ -564,7 +564,7 @@ is what have collected so far, and has ascending page numbers."
            (lambda (idx)
              (let* (
                     (upper-system (vector-ref system-vector idx))
-                    (fixed-dist (ly:paper-system-property upper-system 'next-padding
+                    (fixed-dist (ly:prob-property upper-system 'next-padding
                                                           global-fixed-dist))
                     (this-system-ext (vector-ref real-extents idx))
                     (next-system-ext (vector-ref real-extents (1+ idx)))
@@ -634,7 +634,7 @@ CURRENT-BEST is the best result sofar, or #f."
                      10000))
           (positions (cdr vertical-spacing))
           (get-break-penalty (lambda (sys)
-                               (ly:paper-system-property sys 'penalty 0.0)))
+                               (ly:prob-property sys 'penalty 0.0)))
           (user-nobreak-penalties
            (-
             (apply + (filter negative?
@@ -709,7 +709,7 @@ DONE."
                      (cdr todo)))))
 
   (define (line-number node)
-    (ly:paper-system-property (car (node-lines node)) 'number))
+    (ly:prob-property (car (node-lines node)) 'number))
 
   (ly:message (_ "Calculating page breaks..."))
   (set! force-equalization-factor
index 057d6f88075064476ebf579d2a18e4ec573a84ff..8a5b28d227386b621d26655dc07a9c25d4e86138 100644 (file)
 
 
 (define-public (paper-system-title? system)
-  (equal? #t (ly:paper-system-property system 'is-title)
+  (equal? #t (ly:prob-property system 'is-title)
          ))
 
 (define-public (paper-system-stencil system)
-  (ly:paper-system-property system 'stencil))
+  (ly:prob-property system 'stencil))
 
 (define-public (paper-system-extent system axis)
   (ly:stencil-extent (paper-system-stencil system) axis))
index 3650dd0e8b0baf4f3cd4c260923a8dc358465f46..d3b5b2fda558be22e44a263e33ca11b50bd27c8c 100644 (file)
@@ -22,9 +22,9 @@
   (make-procedure-with-setter ly:grob-property
                              ly:grob-set-property!))
 
-(define-public ly:paper-system-property
-  (make-procedure-with-setter ly:paper-system-property
-                             ly:paper-system-set-property!))
+(define-public ly:prob-property
+  (make-procedure-with-setter ly:prob-property
+                             ly:prob-set-property!))
 
 (define-public (music-map function music)
   "Apply @var{function} to @var{music} and all of the music it contains.