#include "jcabc2ps.h" #include "parse.h" #include "prsAnn.h" /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ int prsDeco (void) { char *F ="prsDeco"; int dt, n=0; for (;;) { dt = 0; switch (*P) { case '~': dt = DECO_IS_ROLL ? D_ROLL : D_GRACE; break; case '.': dt = D_STACC; break; case 'J': dt = D_SLIDE; break; case 'M': dt = D_EMBAR; break; case 'H': dt = D_HOLD; break; case 'R': dt = D_ROLL; break; case 'T': dt = D_TRILL; break; case 'u': dt = D_UPBOW; break; case 'v': dt = D_DOWNBOW; break; case 'K': dt = D_HAT; break; case 'k': dt = D_ATT; break; case '!': case '+': V5 "%s: Deco !%4s ...\n",F,P V; if (prsAnn ()) // prsAnn will call addDeco if it finds a decoration { // and will return true if it finds any sort of continue; // annotation at all // V5 "%s: Deco %d type %d=%s.\n",F,decos,dt,annname[dt].value V; } else { // not a valid annotation, the list of decorations must // be done break; } } if (dt) { // V5 "%s: DECO %d is type %d.\n",F,decos,dt V; P++; addDeco (dt); n++; } else { break; } } // V3 "%s: %d decos found, %d total.\n",F,n,decos V; return n; }