X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Fsimple-closure.cc;h=465640eef59fc48f6de2ed6073ced7e1972ccb8f;hb=ab6b5b6312019ac4d6ea8af57b2ba5aa4295b42f;hp=a4204cddc4e381a7bd68f886af5da850fd5224c9;hpb=ef96995c66220cf1f49a98e43b5fcfe9a2f1bac1;p=lilypond.git diff --git a/lily/simple-closure.cc b/lily/simple-closure.cc index a4204cddc4..465640eef5 100644 --- a/lily/simple-closure.cc +++ b/lily/simple-closure.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2005--2014 Han-Wen Nienhuys + Copyright (C) 2005--2015 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify @@ -32,7 +32,7 @@ evaluate_args (SCM delayed_argument, SCM args, bool pure, int start, int end) *tail = scm_cons (evaluate_with_simple_closure (delayed_argument, scm_car (s), pure, start, end), SCM_EOL); - if (scm_car (*tail) == SCM_UNSPECIFIED) + if (scm_is_eq (scm_car (*tail), SCM_UNSPECIFIED)) return SCM_UNSPECIFIED; tail = SCM_CDRLOC (*tail); } @@ -47,16 +47,16 @@ evaluate_with_simple_closure (SCM delayed_argument, int start, int end) { - if (Simple_closure *sc = Simple_closure::unsmob (expr)) + if (Simple_closure *sc = unsmob (expr)) { SCM inside = sc->expression (); - SCM proc = !pure && Unpure_pure_container::unsmob (scm_car (inside)) - ? Unpure_pure_container::unsmob (scm_car (inside))->unpure_part () + SCM proc = !pure && unsmob (scm_car (inside)) + ? unsmob (scm_car (inside))->unpure_part () : scm_car (inside); SCM args = scm_cons (delayed_argument, evaluate_args (delayed_argument, scm_cdr (inside), pure, start, end)); - if (scm_cdr (args) == SCM_UNSPECIFIED) + if (scm_is_eq (scm_cdr (args), SCM_UNSPECIFIED)) return SCM_UNSPECIFIED; if (pure) return call_pure_function (proc, args, start, end); @@ -64,16 +64,16 @@ evaluate_with_simple_closure (SCM delayed_argument, } else if (!scm_is_pair (expr)) return expr; - else if (scm_car (expr) == ly_symbol2scm ("quote")) + else if (scm_is_eq (scm_car (expr), ly_symbol2scm ("quote"))) return scm_cadr (expr); - else if (Unpure_pure_container::unsmob (scm_car (expr)) + else if (unsmob (scm_car (expr)) || ly_is_procedure (scm_car (expr))) { - SCM proc = !pure && Unpure_pure_container::unsmob (scm_car (expr)) - ? Unpure_pure_container::unsmob (scm_car (expr))->unpure_part () + SCM proc = !pure && unsmob (scm_car (expr)) + ? unsmob (scm_car (expr))->unpure_part () : scm_car (expr); SCM args = evaluate_args (delayed_argument, scm_cdr (expr), pure, start, end); - if (args == SCM_UNSPECIFIED) + if (scm_is_eq (args, SCM_UNSPECIFIED)) return SCM_UNSPECIFIED; if (pure) return call_pure_function (proc, args, start, end); @@ -109,15 +109,15 @@ LY_DEFINE (ly_eval_simple_closure, "ly:eval-simple-closure", bool pure = (scm_is_number (scm_start) && scm_is_number (scm_end)); int start = robust_scm2int (scm_start, 0); int end = robust_scm2int (scm_end, 0); - SCM expr = Simple_closure::unsmob (closure)->expression (); + SCM expr = unsmob (closure)->expression (); return evaluate_with_simple_closure (delayed, expr, pure, start, end); } int -Simple_closure::print_smob (SCM s, SCM port, scm_print_state *) +Simple_closure::print_smob (SCM port, scm_print_state *) const { scm_puts ("#", port); return 1; }