X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Fobject-key-undumper.cc;h=3aec3c5808d3abf2d434c51370a1d1f48af0e5e8;hb=9ac6b17dfcca6826c8ab3ea5d65b789086ae15e0;hp=429d9ab2bcb9a524a79a8986f498affb8f08d31f;hpb=a8aed07c25a2b875b3e6dde590258d04735df868;p=lilypond.git diff --git a/lily/object-key-undumper.cc b/lily/object-key-undumper.cc index 429d9ab2bc..3aec3c5808 100644 --- a/lily/object-key-undumper.cc +++ b/lily/object-key-undumper.cc @@ -1,33 +1,25 @@ /* - object-key-undumper.cc -- implement Object_key_undumper + object-key-undumper.cc -- implement Object_key_undumper source file of the GNU LilyPond music typesetter - (c) 2004 Han-Wen Nienhuys - + (c) 2004--2006 Han-Wen Nienhuys */ -#include - - -#include "smobs.hh" -#include "object-key.hh" #include "object-key-undumper.hh" #include "ly-smobs.icc" -IMPLEMENT_SMOBS(Object_key_undumper); -IMPLEMENT_DEFAULT_EQUAL_P(Object_key_undumper); +IMPLEMENT_SMOBS (Object_key_undumper); +IMPLEMENT_DEFAULT_EQUAL_P (Object_key_undumper); SCM Object_key_undumper::mark_smob (SCM smob) { - Object_key_undumper * undumper = (Object_key_undumper*) SCM_CELL_WORD_1(smob); - for (Int_to_key_map::const_iterator i (undumper->keys_.begin()); - i != undumper->keys_.end(); i++) - { - scm_gc_mark ((*i).second->self_scm ()); - } + Object_key_undumper *undumper = (Object_key_undumper *) SCM_CELL_WORD_1 (smob); + for (Int_to_key_map::const_iterator i (undumper->keys_.begin ()); + i != undumper->keys_.end (); i++) + scm_gc_mark ((*i).second->self_scm ()); return SCM_BOOL_F; } @@ -35,58 +27,16 @@ Object_key_undumper::mark_smob (SCM smob) int Object_key_undumper::print_smob (SCM s, SCM port, scm_print_state*) { + (void) s; scm_puts ("#", port); return 1; } - Object_key_undumper::Object_key_undumper () { - smobify_self(); -} - - -LY_DEFINE(ly_undumper_read_keys, "ly:undumper-read-keys", - 2,0,0, - (SCM undumper, SCM keys), - "Read serialized @var{keys} into @var{undumper}." - ) -{ - Object_key_undumper *u = unsmob_key_undumper (undumper); - SCM_ASSERT_TYPE(u, undumper, SCM_ARG1, __FUNCTION__, "Undumper"); - - u->parse_contents (keys); - return SCM_UNSPECIFIED; -} - -LY_DEFINE(ly_make_undumper, "ly:make-undumper", - 0, 0,0, - (), - "Create a key undumper. " - ) -{ - Object_key_undumper *u = new Object_key_undumper (); - SCM x = u->self_scm(); - scm_gc_unprotect_object (x); - return x; + smobify_self (); } - -LY_DEFINE(ly_undumper_lookup, "ly:undumper-lookup", - 2,0,0, - (SCM undumper, SCM serial), - "Return the object key for number @var{serial}. " - ) - -{ - Object_key_undumper* u = unsmob_key_undumper (undumper); - - SCM_ASSERT_TYPE(u, undumper, SCM_ARG1, __FUNCTION__, "undumper"); - SCM_ASSERT_TYPE(scm_is_integer(serial), serial, SCM_ARG2, __FUNCTION__, "integer"); - return u->get_key (scm_to_int (serial))->self_scm(); -} - - void Object_key_undumper::parse_contents (SCM contents) { @@ -96,7 +46,6 @@ Object_key_undumper::parse_contents (SCM contents) if (scm_car (entry) != ly_symbol2scm ("define-key")) continue; - int number = scm_to_int (scm_cadr (entry)); SCM skey = scm_caddr (entry); @@ -104,37 +53,34 @@ Object_key_undumper::parse_contents (SCM contents) SCM *tail = &new_key; for (SCM t = skey; scm_is_pair (t); t = scm_cdr (t)) { - SCM entry = scm_car (t); - if (scm_is_pair (entry) - && scm_car (entry) == ly_symbol2scm ("key")) + SCM item = scm_car (t); + if (scm_is_pair (item) + && scm_car (item) == ly_symbol2scm ("key")) { - int index = scm_to_int (scm_cadr (entry)); + int index = scm_to_int (scm_cadr (item)); Object_key const *key = get_key (index); - *tail = scm_cons (key->self_scm(), SCM_EOL); + *tail = scm_cons (key->self_scm (), SCM_EOL); } else - { - *tail = scm_cons (entry, SCM_EOL); - } - tail = SCM_CDRLOC(*tail); + *tail = scm_cons (item, SCM_EOL); + tail = SCM_CDRLOC (*tail); } Object_key *k = Object_key::undump (new_key); keys_[number] = k; - scm_gc_unprotect_object (k->self_scm()); + k->unprotect (); } - } -Object_key const* +Object_key const * Object_key_undumper::get_key (int idx) { Int_to_key_map::const_iterator i (keys_.find (idx)); - assert (i != keys_.end()); + assert (i != keys_.end ()); return (*i).second; } -Object_key_undumper::~Object_key_undumper() +Object_key_undumper::~Object_key_undumper () { }