]> git.donarmstrong.com Git - lilypond.git/blob - lily/include/prob.hh
Fix some bugs in the dynamic engraver and PostScript backend
[lilypond.git] / lily / include / prob.hh
1 /*
2   property-object.hh -- declare Property_object
3
4   source file of the GNU LilyPond music typesetter
5
6   (c) 2004--2006  Jan Nieuwenhuizen <janneke@gnu.org>
7 */
8
9 #ifndef PROPERTY_OBJECT_HH
10 #define PROPERTY_OBJECT_HH
11
12 #include "stencil.hh"
13
14 /*
15   A formatted "system" (A block of titling also is a Property_object)
16
17   To save memory, we don't keep around the System grobs, but put the
18   formatted content of the grob is put into a
19   Property_object. Page-breaking handles Property_object objects.
20 */
21 class Prob
22 {
23   DECLARE_SMOBS (Prob,);
24   DECLARE_CLASSNAME(Prob);
25
26   void init_vars ();
27 protected:
28   SCM mutable_property_alist_;
29   SCM immutable_property_alist_;
30   SCM type_;
31   
32   virtual void derived_mark () const;
33   virtual SCM copy_mutable_properties () const;
34   virtual void type_check_assignment (SCM,SCM) const;
35   
36 public:
37   Prob (SCM, SCM);
38   Prob (Prob const &);
39   virtual string name () const;
40   SCM type () const { return type_; }
41   SCM get_property_alist (bool mutble) const;
42   SCM internal_get_property (SCM sym) const;
43   void internal_set_property (SCM sym, SCM val);
44 };
45 DECLARE_UNSMOB(Prob,prob);
46 SCM ly_prob_set_property_x (SCM system, SCM sym, SCM value);
47 SCM ly_prob_property (SCM system, SCM sym, SCM dfault);
48
49 #endif /* PROPERTY_OBJECT_HH */