]> git.donarmstrong.com Git - lilypond.git/blob - lily/tweak-registration-scheme.cc
1e3f05b9c60abfabf27253bcb7f7d063c394f17c
[lilypond.git] / lily / tweak-registration-scheme.cc
1 /*
2   tweak-registration-scheme.cc --  implement Tweak_registry bindings
3
4   source file of the GNU LilyPond music typesetter
5
6   (c) 2004--2005 Han-Wen Nienhuys <hanwen@xs4all.nl>
7
8 */
9
10
11 #include "tweak-registration.hh"
12 #include "grob.hh"
13 #include "object-key-undumper.hh"
14
15 LY_DEFINE(ly_clear_tweak_registry, "ly:tweak-clear-registry",
16           0,0,0,(),
17           "Clear global tweak registry"
18           )
19 {
20   global_registry_->clear ();
21   return SCM_UNSPECIFIED;
22 }
23
24 LY_DEFINE(ly_insert_tweak, "ly:insert-tweak",
25           2,0,0,
26           (SCM grob, SCM tweak),
27           "add new tweak for grob."
28           )
29 {
30   Grob *gr = unsmob_grob (grob);
31   SCM_ASSERT_TYPE(gr, grob, SCM_ARG1, __FUNCTION__, "Grob");
32   SCM_ASSERT_TYPE(scm_list_p (tweak) == SCM_BOOL_T
33                   && ly_c_procedure_p (scm_car (tweak)),
34                   tweak, SCM_ARG2, __FUNCTION__, "Tweak");
35   
36   global_registry_->insert_grob_tweak (gr, tweak);
37   return SCM_UNSPECIFIED;
38 }
39
40
41 LY_DEFINE(ly_tweak_read_keys, "ly:tweak-define-keys",
42           1,0,0,(SCM keys),
43           "Read keys"
44           )
45 {
46   global_registry_->undumper ()->parse_contents (keys); 
47   return SCM_UNSPECIFIED;
48 }
49
50
51 LY_DEFINE(ly_all_tweaks, "ly:all-tweaks",
52           0,0,0,(),
53           "all tweaks"
54           )
55 {
56   return global_registry_->list_tweaks();
57 }
58
59
60 LY_DEFINE(ly_tweak_read_tweaks, "ly:tweak-define-tweaks",
61           1,0,0,(SCM tweaks),
62           "Read  tweaks"
63           )
64 {
65   for (SCM s = tweaks; scm_is_pair (s); s = scm_cdr (s))
66     {
67       global_registry_->insert_tweak_from_file (scm_car (s));
68     }
69   return SCM_UNSPECIFIED;
70 }