]> git.donarmstrong.com Git - lilypond.git/blob - lily/group-interface.cc
release: 1.3.40
[lilypond.git] / lily / group-interface.cc
1 /*   
2   group-interface.cc --  implement Group_interface
3   
4   source file of the GNU LilyPond music typesetter
5   
6   (c) 1999--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
7   
8  */
9 #include "group-interface.hh"
10 #include "score-element.hh"
11
12 Group_interface::Group_interface (Score_element const* e)
13 {
14   elt_l_ = (Score_element*)e;
15   name_ = "elements";
16 }
17
18
19 Group_interface::Group_interface (Score_element const *e, String s)
20 {
21   elt_l_ =(Score_element*)e;
22   name_ = s;
23
24 bool
25 Group_interface::has_interface_b () 
26 {
27   SCM el = elt_l_->get_elt_property (name_);
28
29   return el == SCM_EOL || gh_pair_p (el);
30 }
31
32
33 void
34 Group_interface::add_element (Score_element*p) 
35 {
36   p->used_b_ =  true;
37   elt_l_->used_b_ = true;
38
39   add_thing (p->self_scm_);
40 }
41
42 void
43 Group_interface::add_thing (SCM s)
44 {
45   elt_l_->set_elt_property (name_,
46                             gh_cons (s, elt_l_->get_elt_property (name_)));
47
48 }
49
50
51 int
52 Group_interface::count ()
53 {
54   return scm_ilength (elt_l_->get_elt_property (name_));
55 }
56
57 void
58 Group_interface::set_interface ()
59 {
60   if (!has_interface_b ())
61     {
62       elt_l_->set_elt_property (name_, SCM_EOL);
63     }
64 }
65
66 Group_interface
67 group (Score_element*s,String n)
68 {
69   Group_interface gi (s,n);
70   return gi;
71 }
72
73 Group_interface
74 group (Score_element*s)
75 {
76   Group_interface gi (s);
77   return gi;
78 }