]> git.donarmstrong.com Git - lilypond.git/blob - lily/include/prob.hh
don't change signatures depending on NDEBUG
[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--2007  Jan Nieuwenhuizen <janneke@gnu.org>
7 */
8
9 #ifndef PROPERTY_OBJECT_HH
10 #define PROPERTY_OBJECT_HH
11
12 #include "stencil.hh"
13 #include "virtual-methods.hh"
14
15
16 /*
17   A formatted "system" (A block of titling also is a Property_object)
18
19   To save memory, we don't keep around the System grobs, but put the
20   formatted content of the grob is put into a
21   Property_object. Page-breaking handles Property_object objects.
22 */
23 class Prob
24 {
25   DECLARE_SMOBS (Prob);
26   DECLARE_CLASSNAME(Prob);
27
28   void init_vars ();
29 protected:
30   SCM mutable_property_alist_;
31   SCM immutable_property_alist_;
32   SCM type_;
33   
34   virtual void derived_mark () const;
35   virtual SCM copy_mutable_properties () const;
36   virtual void type_check_assignment (SCM,SCM) const;
37   
38 public:
39   Prob (SCM, SCM);
40   Prob (Prob const &);
41   virtual string name () const;
42   SCM type () const { return type_; }
43   SCM get_property_alist (bool mutble) const;
44   SCM internal_get_property (SCM sym) const;
45   void internal_set_property (SCM sym, SCM val);
46 };
47 DECLARE_UNSMOB(Prob,prob);
48 SCM ly_prob_set_property_x (SCM system, SCM sym, SCM value);
49 SCM ly_prob_property (SCM system, SCM sym, SCM dfault);
50
51 #endif /* PROPERTY_OBJECT_HH */