X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Fprofile.cc;h=0390a64a627d1b8180f71643ccf8bed85c374745;hb=f9214bac21e9926dc3248416f58190c98c4167a9;hp=0e986d4d708de362c702f58a53b1c3aad71fa3b4;hpb=dfd93790a53f5cf55229441e8f9c857ca866fb56;p=lilypond.git diff --git a/lily/profile.cc b/lily/profile.cc index 0e986d4d70..0390a64a62 100644 --- a/lily/profile.cc +++ b/lily/profile.cc @@ -3,8 +3,7 @@ source file of the GNU LilyPond music typesetter - (c) 2005 Han-Wen Nienhuys - + (c) 2005--2007 Han-Wen Nienhuys */ #include "profile.hh" @@ -13,34 +12,35 @@ 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, (), - "") +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 prob, grob and context.") { - return context_property_lookup_table ? context_property_lookup_table - : scm_c_make_hash_table (1); + if (sym == ly_symbol2scm ("context")) + return context_property_lookup_table ? context_property_lookup_table + : scm_c_make_hash_table (1); + if (sym == ly_symbol2scm ("prob")) + return prob_property_lookup_table ? prob_property_lookup_table + : scm_c_make_hash_table (1); + if (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); } - -LY_DEFINE(ly_property_lookup_stats, "ly:grob-property-lookup-stats", - 0,0,0, (), - "") -{ - return grob_property_lookup_table ? grob_property_lookup_table : - scm_c_make_hash_table (1); -} - void note_property_access (SCM *table, SCM sym) { /* - Statistics: which properties are looked up? + Statistics: which properties are looked up? */ if (!*table) *table = scm_permanent_object (scm_c_make_hash_table (259)); - + SCM hashhandle = scm_hashq_get_handle (*table, sym); if (hashhandle == SCM_BOOL_F) { @@ -48,6 +48,6 @@ note_property_access (SCM *table, SCM sym) hashhandle = scm_hashq_get_handle (*table, sym); } - int count = scm_to_int (scm_cdr (hashhandle)) + 1; + int count = scm_to_int (scm_cdr (hashhandle)) + 1; scm_set_cdr_x (hashhandle, scm_from_int (count)); }