X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Fprofile.cc;h=025bea809bbcc83620771ae535aefbdd9c4f0b04;hb=e14a171e46de06072e82513b62632bbeaa987a26;hp=e599501422ab30d14cdbf94863a03a908426b5e9;hpb=108cf0e8c08c8e15e2a800feb161cfad9057daa8;p=lilypond.git diff --git a/lily/profile.cc b/lily/profile.cc index e599501422..025bea809b 100644 --- a/lily/profile.cc +++ b/lily/profile.cc @@ -1,9 +1,20 @@ /* - profile.cc -- implement profiling utilities. + This file is part of LilyPond, the GNU music typesetter. - source file of the GNU LilyPond music typesetter + Copyright (C) 2005--2015 Han-Wen Nienhuys - (c) 2005 Han-Wen Nienhuys + LilyPond is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + LilyPond is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with LilyPond. If not, see . */ #include "profile.hh" @@ -12,21 +23,24 @@ void note_property_access (SCM *table, SCM sym); SCM context_property_lookup_table; SCM grob_property_lookup_table; +SCM prob_property_lookup_table; -LY_DEFINE (ly_context_property_lookup_stats, "ly:context-property-lookup-stats", - 0, 0, 0, (), - "") -{ - return context_property_lookup_table ? context_property_lookup_table - : scm_c_make_hash_table (1); -} - -LY_DEFINE (ly_property_lookup_stats, "ly:grob-property-lookup-stats", - 0, 0, 0, (), - "") +LY_DEFINE (ly_property_lookup_stats, "ly:property-lookup-stats", + 1, 0, 0, (SCM sym), + "Return hash table with a property access corresponding to" + " @var{sym}. Choices are @code{prob}, @code{grob}, and" + " @code{context}.") { - return grob_property_lookup_table ? grob_property_lookup_table - : scm_c_make_hash_table (1); + if (scm_is_eq (sym, ly_symbol2scm ("context"))) + return context_property_lookup_table ? context_property_lookup_table + : scm_c_make_hash_table (1); + if (scm_is_eq (sym, ly_symbol2scm ("prob"))) + return prob_property_lookup_table ? prob_property_lookup_table + : scm_c_make_hash_table (1); + if (scm_is_eq (sym, ly_symbol2scm ("grob"))) + return grob_property_lookup_table ? grob_property_lookup_table + : scm_c_make_hash_table (1); + return scm_c_make_hash_table (1); } void @@ -39,7 +53,7 @@ note_property_access (SCM *table, SCM sym) *table = scm_permanent_object (scm_c_make_hash_table (259)); SCM hashhandle = scm_hashq_get_handle (*table, sym); - if (hashhandle == SCM_BOOL_F) + if (scm_is_false (hashhandle)) { scm_hashq_set_x (*table, sym, scm_from_int (0)); hashhandle = scm_hashq_get_handle (*table, sym);