[abcp commit] r93 - no log message

0 views
Skip to first unread message

codesite...@google.com

unread,
Mar 15, 2009, 5:50:06 PM3/15/09
to abcp-...@googlegroups.com
Author: rdentato
Date: Sun Mar 15 14:28:37 2009
New Revision: 93

Modified:
trunk/examples/abcdump/abcdump.c
trunk/src/abcp.h
trunk/src/abcpfield.pmx
trunk/src/abcpkey.pmx
trunk/src/abcpscan.pmx
trunk/test/a11.txt

Log:


Modified: trunk/examples/abcdump/abcdump.c
==============================================================================
--- trunk/examples/abcdump/abcdump.c (original)
+++ trunk/examples/abcdump/abcdump.c Sun Mar 15 14:28:37 2009
@@ -303,8 +303,13 @@
while (j != 0) {
printf("+%d",j);
j = abcMeterBeatsNth(scn,k++);
- }
- printf(")\n");
+ }
+ printf(") ");
+ printf("'%.*s'
/ ",abcMeterBeatsLen(scn),abcMeterBeatsStart(scn));
+ printf("'%.*s'
= ",abcMeterUnitsLen(scn),abcMeterUnitsStart(scn));
+ printf("'%.*s'
/ ",abcMeterExplicitBeatsLen(scn),abcMeterExplicitBeatsStart(scn));
+
printf("'%.*s'",abcMeterExplicitUnitsLen(scn),abcMeterExplicitUnitsStart(scn));
+ printf("\n");
break;

default:

Modified: trunk/src/abcp.h
==============================================================================
--- trunk/src/abcp.h (original)
+++ trunk/src/abcp.h Sun Mar 15 14:28:37 2009
@@ -372,7 +372,17 @@
/* in abcpfield.pmx */

int abcMeterBeatsNth(abcScanner *scn,int k);
+int abcMeterBeats(abcScanner *scn);
int abcMeterUnits(abcScanner *scn);
+
+char *abcMeterBeatsStart(abcScanner *scn);
+int abcMeterBeatsLen(abcScanner *scn);
+char *abcMeterUnitsStart(abcScanner *scn);
+int abcMeterUnitsLen(abcScanner *scn);
+char *abcMeterExplicitBeatsStart(abcScanner *scn);
+int abcMeterExplicitBeatsLen(abcScanner *scn);
+char *abcMeterExplicitUnitsStart(abcScanner *scn);
+int abcMeterExplicitUnitsLen(abcScanner *scn);


#endif

Modified: trunk/src/abcpfield.pmx
==============================================================================
--- trunk/src/abcpfield.pmx (original)
+++ trunk/src/abcpfield.pmx Sun Mar 15 14:28:37 2009
@@ -52,9 +52,8 @@
M: (2+2+3)/8
M: C
M: C|
-
- <?=(>(<+= 0-9+>)<?=)>&K<?=/>&K(<*d>)
-
+ M: altro = 3+2/16
+
*/
#define MAXBEATS 30
#define beatsum beats[MAXBEATS+1]
@@ -67,42 +66,113 @@
char *p;
int k;
int i;
+ int explmeter = 0;

+ if (abcTestFlag(scn,ABC_F_FIELDSCANNED)) return;
+
+ abcSetFlag(scn,ABC_F_FIELDSCANNED);
+
for (i=0; i < MAXBEATS; i++)
beats[i] = 0;

+ scn->tok_str[6][0] = scn->tok_str[6][1] = utlEmptyString;
+ scn->tok_str[7][0] = scn->tok_str[7][1] = utlEmptyString;
+ scn->tok_str[8][0] = scn->tok_str[8][1] = utlEmptyString;
+
beatsum = 0;
units = 0;

i = 0;
- p = abcFieldStart(scn);
+ p = abcFieldStart(scn);
k = abcFieldLen(scn);
+ while (k>0 && isspace(*p)) {
+ p++; k--;
+ }
+
+ scn->tok_str[5][0] = scn->tok_str[5][1] = p;
+
while (k>0) {
- switch pmx(p) {
- case "&k" :
+ if (explmeter == 0) {
+ switch pmx(p) {
+
+ case "(C|)&K" : beatsum -= 2;
+ case "(C)&K" : beatsum += 4;
+ beats[0] = beatsum; beats[1] = 0;
+ units = 1;
+ scn->tok_str[5][0] = pmx(Start,1);
+ scn->tok_str[5][1] = pmx(End,1);
k -= pmx(Len,0);
+ explmeter = 1;
break;

- case "C|" :
- beatsum = 2; beats[0] = 2; beats[1] = 0;
- units = 1; k = 0;
+ case "(none)&K" : beatsum -= 1;
+ case "(free)&K" : beatsum -= 1;
+ beats[0] = beatsum; beats[1] = 0;
+ scn->tok_str[5][0] = pmx(Start,1);
+ scn->tok_str[5][1] = pmx(End,1);
+ units = 0;
+ k -= pmx(Len,0);
+ explmeter = 1;
break;

- case "C" :
- beatsum = 4; beats[0] = 4; beats[1] = 0;
- units = 1; k = 0;
+ case "&d&K" :
+ beats[i] = atoi(pmx(Start,0));
+ beatsum += beats[i];
+ if (i<MAXBEATS) i++;
+ beats[i] = 0;
+ k -= pmx(Len,0);
break;

- case "none" :
- beatsum = -1; beats[0] = -1; beats[1] = 0;
- units = 0; k = 0;
+ case "/&K(&d)&K" :
+ units = atoi(pmx(Start,1));
+ scn->tok_str[5][1] = pmx(Start,0);
+ scn->tok_str[6][0] = pmx(Start,1);
+ scn->tok_str[6][1] = pmx(End,1);
+ k -= pmx(Len,0);
+ explmeter = 1;
break;

- case "free" :
- beatsum = -1; beats[0] = -1; beats[1] = 0;
- units = 0; k = 0;
+ case "=&K" :
+ for (i=0; i < MAXBEATS; i++) beats[i] = 0;
+ beatsum = 0; units = 0;
+ i = 0;
+ k -= pmx(Len,0);
+ explmeter = 2;
+ scn->tok_str[5][1] = pmx(Start,0);
+ scn->tok_str[7][0] = scn->tok_str[7][1] = pmx(End,0);
+ break;
+
+ case "&k" :
+ k -= pmx(Len,0);
break;

+ case "<.>&K" :
+ k -= pmx(Len,0);
+ break;
+ }
+ }
+ else if (explmeter == 1) {
+ switch pmx(p) {
+ case "=&K" :
+ for (i=0; i < MAXBEATS; i++) beats[i] = 0;
+ beatsum = 0; units = 0;
+ i = 0;
+ k -= pmx(Len,0);
+ explmeter = 2;
+ scn->tok_str[7][0] = scn->tok_str[7][1] = pmx(End,0);
+ break;
+
+ case "&k" :
+ k -= pmx(Len,0);
+ break;
+
+ case "<.>&K" :
+ k -= pmx(Len,0);
+ break;
+ }
+ }
+ else if (explmeter == 2) {
+ switch pmx(p) {
case "&d&K" :
beats[i] = atoi(pmx(Start,0));
beatsum += beats[i];
@@ -111,17 +181,26 @@
k -= pmx(Len,0);
break;

- case "/&K(&d)" :
+ case "/&K(&d)&K" :
units = atoi(pmx(Start,1));
+ scn->tok_str[7][1] = pmx(Start,0);
+ scn->tok_str[8][0] = pmx(Start,1);
+ scn->tok_str[8][1] = pmx(End,1);
k = 0;
break;
-
+
+ case "&k" :
+ k -= pmx(Len,0);
+ break;
+
case "<.>&K" :
k -= pmx(Len,0);
break;
- }
+ }
+ }
}
-
+ while (scn->tok_str[5][1]>scn->tok_str[5][0] &&
isspace(scn->tok_str[5][1][-1]))
+ scn->tok_str[5][1]--;
}

#if 0
@@ -136,13 +215,94 @@
}
#endif

-int abcMeterUnits(abcScanner *scn)
+char *abcMeterBeatsStart(abcScanner *scn)
+{
+ if (abcToken(scn) != T_FIELD || abcField(scn) != 'M') return
utlEmptyString;
+
+ if (!abcTestFlag(scn,ABC_F_FIELDSCANNED))
+ abc_meter(scn);
+
+ return abcTokenStart(scn,5);
+}
+
+int abcMeterBeatsLen(abcScanner *scn)
+{
+ if (abcToken(scn) != T_FIELD || abcField(scn) != 'M') return 0;
+
+ if (!abcTestFlag(scn,ABC_F_FIELDSCANNED))
+ abc_meter(scn);
+
+ return abcTokenLen(scn,5);
+}
+
+char *abcMeterUnitsStart(abcScanner *scn)
+{
+ if (abcToken(scn) != T_FIELD || abcField(scn) != 'M') return
utlEmptyString;
+
+ if (!abcTestFlag(scn,ABC_F_FIELDSCANNED))
+ abc_meter(scn);
+
+ return abcTokenStart(scn,6);
+}
+
+int abcMeterUnitsLen(abcScanner *scn)
+{
+ if (abcToken(scn) != T_FIELD || abcField(scn) != 'M') return 0;
+
+ if (!abcTestFlag(scn,ABC_F_FIELDSCANNED))
+ abc_meter(scn);
+
+ return abcTokenLen(scn,6);
+}
+
+char *abcMeterExplicitBeatsStart(abcScanner *scn)
+{
+ if (abcToken(scn) != T_FIELD || abcField(scn) != 'M') return
utlEmptyString;
+
+ if (!abcTestFlag(scn,ABC_F_FIELDSCANNED))
+ abc_meter(scn);
+
+ return abcTokenStart(scn,7);
+}
+
+int abcMeterExplicitBeatsLen(abcScanner *scn)
{
if (abcToken(scn) != T_FIELD || abcField(scn) != 'M') return 0;

if (!abcTestFlag(scn,ABC_F_FIELDSCANNED))
abc_meter(scn);

+ return abcTokenLen(scn,7);
+}
+
+char *abcMeterExplicitUnitsStart(abcScanner *scn)
+{
+ if (abcToken(scn) != T_FIELD || abcField(scn) != 'M') return
utlEmptyString;
+
+ if (!abcTestFlag(scn,ABC_F_FIELDSCANNED))
+ abc_meter(scn);
+
+ return abcTokenStart(scn,8);
+}
+
+int abcMeterExplicitUnitsLen(abcScanner *scn)
+{
+ if (abcToken(scn) != T_FIELD || abcField(scn) != 'M') return 0;
+
+ if (!abcTestFlag(scn,ABC_F_FIELDSCANNED))
+ abc_meter(scn);
+
+ return abcTokenLen(scn,8);
+}
+
+
+
+int abcMeterUnits(abcScanner *scn)
+{
+ if (abcToken(scn) != T_FIELD || abcField(scn) != 'M') return 0;
+
+ if (!abcTestFlag(scn,ABC_F_FIELDSCANNED))
+ abc_meter(scn);
return units;
}

@@ -152,18 +312,15 @@

if (!abcTestFlag(scn,ABC_F_FIELDSCANNED))
abc_meter(scn);
-
return beatsum;
}

int abcMeterBeatsNth(abcScanner *scn, int k)
{
if (abcToken(scn) != T_FIELD || abcField(scn) != 'M') return 0;
-
if (k >= MAXBEATS) return 0;

if (!abcTestFlag(scn, ABC_F_FIELDSCANNED))
abc_meter(scn);
-
return beats[k];
}

Modified: trunk/src/abcpkey.pmx
==============================================================================
--- trunk/src/abcpkey.pmx (original)
+++ trunk/src/abcpkey.pmx Sun Mar 15 14:28:37 2009
@@ -339,7 +339,6 @@
abcTokenStart(scn,ABC_Tonic)[1],
parms[ABC_Mode] );

-

abc_clef(scn,p,q);
}

Modified: trunk/src/abcpscan.pmx
==============================================================================
--- trunk/src/abcpscan.pmx (original)
+++ trunk/src/abcpscan.pmx Sun Mar 15 14:28:37 2009
@@ -236,7 +236,7 @@
stategosub(scn,S_TEXT);
break;

- case "\b&K(%)(%)&K((<+S>)&K(&L))&n" :
+ case "\b&K(%)(%)&K((<+! \t\n\r\f>)&K(&L))&n" :
settoken(scn,T_FIELD);
break;

@@ -251,12 +251,12 @@

case "\b&K()(I):&K((<*S>)&K(&L))&n" :
case "\b&K()(U):&K((<.>)&K=&K&e\\(&q)&L)&n" :
- case "\b&K()(U):&K((<.>)&K=&K(<+S>)&L)&n" :
+ case "\b&K()(U):&K((<.>)&K=&K(<+! \t\n\r\f>)&L)&n" :
case "\b&K()(<a>):&K(&L)&n" :
settoken(scn,T_FIELD);
break;

- case "\b&K#(<+S>)&K(&L)&n" :
+ case "\b&K#(<+! \t\n\r\f>)&K(&L)&n" :
settoken(scn,T_PRAGMA);
break;

@@ -341,7 +341,7 @@
stategosub(scn,S_TEXT);
break;

- case "\b&K(%)(%)&K((<+S>)&K(&L))&n" :
+ case "\b&K(%)(%)&K((<+! \t\n\r\f>)&K(&L))&n" :
settoken(scn,T_FIELD);
break;

@@ -356,12 +356,12 @@

case "\b&K()(I):&K((<*S>)&K(&L))&n" :
case "\b&K()(U):&K((<.>)&K=&K&e\\(&q)&L)&n" :
- case "\b&K()(U):&K((<.>)&K=&K(<+S>)&L)&n" :
+ case "\b&K()(U):&K((<.>)&K=&K(<+! \t\n\r\f>)&L)&n" :
case "\b&K()(<a>):&K(&L)&n" :
settoken(scn,T_FIELD);
break;

- case "\b&K#(<+S>)&K(&L)&n" :
+ case "\b&K#(<+! \t\n\r\f>)&K(&L)&n" :
settoken(scn,T_PRAGMA);
break;

@@ -467,11 +467,11 @@
break;

case "\b&K%%&K<?$abc->include&k&e\\(&q)()&K(&L)(&n)" :
- case "\b&K%%&K<?$abc->include&k()(<+S>)&K(&L)(&n)" :
+ case "\b&K%%&K<?$abc->include&k()(<+! \t\n\r\f>)&K(&L)(&n)" :
settoken(scn,T_INCLUDE);
break;

- case "\b&K(%)(%)&K((<+S>)&K(&L))&n" :
+ case "\b&K(%)(%)&K((<+! \t\n\r\f>)&K(&L))&n" :
settoken(scn,T_FIELD);
break;

@@ -482,7 +482,7 @@

case "\b&K()(I):&K((<*S>)&K(&L))&n" :
case "\b&K()(U):&K((<.>)&K=&K&e\\(&q)&L)&n" :
- case "\b&K()(U):&K((<.>)&K=&K(<+S>)&L)&n" :
+ case "\b&K()(U):&K((<.>)&K=&K(<+! \t\n\r\f>)&L)&n" :
case "\b&K()(<a>):&K(&L)&n" :
settoken(scn,T_FIELD);
break;
@@ -492,7 +492,7 @@
stategoto(scn,S_LIMBO);
break;

- case "\b&K#(<+S>)&K(&L)&n" :
+ case "\b&K#(<+! \t\n\r\f>)&K(&L)&n" :
settoken(scn,T_PRAGMA);
break;

@@ -642,7 +642,7 @@

case "\b&K()(I):&K((<*S>)&K(&L))&n" :
case "\b&K()(U):&K((<.>)&K=&K&e\\(&q)&L)&n" :
- case "\b&K()(U):&K((<.>)&K=&K(<+S>)&L)&n" :
+ case "\b&K()(U):&K((<.>)&K=&K(<+! \t\n\r\f>)&L)&n" :
case "\b&K()(<a>):&K(&L)&n" :
settoken(scn,T_FIELD);
stategoto(scn,S_HEADER);
@@ -668,17 +668,17 @@
break;

case "\b&K%%&K<?$abc->include&k&e\\(&q)()&K(&L)(&n)" :
- case "\b&K%%&K<?$abc->include&k()(<+S>)&K(&L)(&n)" :
+ case "\b&K%%&K<?$abc->include&k()(<+! \t\n\r\f>)&K(&L)(&n)" :
settoken(scn,T_INCLUDE);
stategoto(scn,S_HEADER);
break;

- case "\b&K(%)(%)&K((<+S>)&K(&L))&n" :
+ case "\b&K(%)(%)&K((<+! \t\n\r\f>)&K(&L))&n" :
settoken(scn,T_FIELD);
stategoto(scn,S_HEADER);
break;

- case "\b&K#(<+S>)&K(&L)&n" :
+ case "\b&K#(<+! \t\n\r\f>)&K(&L)&n" :
settoken(scn,T_PRAGMA);
break;

@@ -725,7 +725,7 @@

case "\b&K()(I):&K((<*S>)&K(&L))&n" :
case "\b&K()(U):&K((<.>)&K=&K&e\\(&q)&L)&n" :
- case "\b&K()(U):&K((<.>)&K=&K(<+S>)&L)&n" :
+ case "\b&K()(U):&K((<.>)&K=&K(<+! \t\n\r\f>)&L)&n" :
case "\b&K()(<a>):&K(&L)&n" :
settoken(scn,T_FIELD);
break;
@@ -749,15 +749,15 @@
break;

case "\b&K%%&K<?$abc->include&k&e\\(&q)()&K(&L)(&n)" :
- case "\b&K%%&K<?$abc->include&k()(<+S>)&K(&L)(&n)" :
+ case "\b&K%%&K<?$abc->include&k()(<+! \t\n\r\f>)&K(&L)(&n)" :
settoken(scn,T_INCLUDE);
break;

- case "\b&K(%)(%)&K((<+S>)&K(&L))&n" :
+ case "\b&K(%)(%)&K((<+! \t\n\r\f>)&K(&L))&n" :
settoken(scn,T_FIELD);
break;

- case "\b&K#(<+S>)&K(&L)&n" :
+ case "\b&K#(<+! \t\n\r\f>)&K(&L)&n" :
settoken(scn,T_PRAGMA);
break;

@@ -909,7 +909,7 @@

case "\b&K()(I):&K((<*S>)&K(&L))&n" :
case "\b&K()(U):&K((<.>)&K=&K&e\\(&q)&L)&n" :
- case "\b&K()(U):&K((<.>)&K=&K(<+S>)&L)&n" :
+ case "\b&K()(U):&K((<.>)&K=&K(<+! \t\n\r\f>)&L)&n" :
case "\b&K()(<a>):&K(&L)&n" :
settoken(scn,T_FIELD);
statereturn(scn);

Modified: trunk/test/a11.txt
==============================================================================
--- trunk/test/a11.txt (original)
+++ trunk/test/a11.txt Sun Mar 15 14:28:37 2009
@@ -1,9 +1,12 @@
M: 4/4
M: C|
-M:none
+M: C
+M: C|=2+2/4
+M: none
+M: free
M: (3+2)/4
M: 1+2+1/8
M: 3
-M: 12+3+1 / 7
+M: 11+2+3 / 7
M: 0/4
M: 2/0

Reply all
Reply to author
Forward
0 new messages