Overview
Comment: | Implement the (userflags) syntax with an implied attribute. |
---|---|
Downloads: | Tarball | ZIP archive | SQL archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA1: |
7268a9ce16d9f567bbc0fda546e802e8 |
User & Date: | user on 2022-02-14 08:22:44 |
Other Links: | manifest | tags |
Context
2022-02-15
| ||
00:37 | If creating an object in the bizarro world with an overridden order of execution, ensure that it is inserted into the proper place in its order. check-in: 2882130a06 user: user tags: trunk | |
2022-02-14
| ||
08:22 | Implement the (userflags) syntax with an implied attribute. check-in: 7268a9ce16 user: user tags: trunk | |
08:01 | Several minor corrections to documentation. No code changes. check-in: 3a60ccaef6 user: user tags: trunk | |
Changes
Modified class.c from [9f8ddd9795] to [e38cb33701].
︙ | ︙ | |||
1608 1609 1610 1611 1612 1613 1614 1615 1616 1617 1618 1619 1620 1621 1622 1623 1624 1625 1626 1627 1628 1629 | x=0; for(;;) { nxttok(); if(tokent==TF_CLOSE) break; if(Tokenf(TF_MACRO) || !Tokenf(TF_NAME) || tokenv!=OP_USERFLAG) ParseError("User flag or close parenthesis expected\n"); tokenv=look_hash(glohash,HASH_SIZE,0x1000,0x10FF,0,"user flags"); if(!tokenv) ParseError("User flag ^%s not defined\n",tokenstr); if((tokenv^y)&0xE0) { if(y&0x100) ParseError("User flag ^%s belongs to the wrong attribute\n",tokenstr); } else { if(Tokenf(TF_COMMA)) x&=~(1<<(tokenv&31)); else x|=1<<(tokenv&31); } } tokenv=x; goto numeric; default: ParseError("Invalid parenthesized instruction\n"); } } else if(tokent==TF_CLOSE) { if(flowdepth) ParseError("Unterminated flow control structure\n"); if(peep<ptr && cl->codes[ptr-1]==OP_RET) break; if(peep<ptr && (cl->codes[ptr-1]&0xFF00)==0x1E00) break; | > > > > > > > | 1608 1609 1610 1611 1612 1613 1614 1615 1616 1617 1618 1619 1620 1621 1622 1623 1624 1625 1626 1627 1628 1629 1630 1631 1632 1633 1634 1635 1636 | x=0; for(;;) { nxttok(); if(tokent==TF_CLOSE) break; if(Tokenf(TF_MACRO) || !Tokenf(TF_NAME) || tokenv!=OP_USERFLAG) ParseError("User flag or close parenthesis expected\n"); tokenv=look_hash(glohash,HASH_SIZE,0x1000,0x10FF,0,"user flags"); if(!tokenv) ParseError("User flag ^%s not defined\n",tokenstr); uflags1: if((tokenv^y)&0xE0) { if(y&0x100) ParseError("User flag ^%s belongs to the wrong attribute\n",tokenstr); } else { if(Tokenf(TF_COMMA)) x&=~(1<<(tokenv&31)); else x|=1<<(tokenv&31); } } tokenv=x; goto numeric; case OP_USERFLAG: tokenv=look_hash(glohash,HASH_SIZE,0x1000,0x10FF,0,"user flags"); if(!tokenv) ParseError("User flag ^%s not defined\n",tokenstr); x=0; y=(tokenv&0xE0)|0x100; goto uflags1; default: ParseError("Invalid parenthesized instruction\n"); } } else if(tokent==TF_CLOSE) { if(flowdepth) ParseError("Unterminated flow control structure\n"); if(peep<ptr && cl->codes[ptr-1]==OP_RET) break; if(peep<ptr && (cl->codes[ptr-1]&0xFF00)==0x1E00) break; |
︙ | ︙ |
Modified class.doc from [6a4cbc1458] to [57198ff64d].
︙ | ︙ | |||
1151 1152 1153 1154 1155 1156 1157 1158 1159 1160 1161 1162 1163 1164 | attribute is preceded by a comma, then it is an error to specify any user flags not assigned to that variable, otherwise any user flags that do not belong are ignored. Any user flag may optionally be preceded by a comma, and may occur multiple times; only the last instance of each is used. If the last instance of a flag has a comma then that bit is clear, if without a comma then it is set. . ( x -- ) + ( in1 in2 -- out ) Add two numbers together. - ( in1 in2 -- out ) Subtract in2 from in1. | > > > > | 1151 1152 1153 1154 1155 1156 1157 1158 1159 1160 1161 1162 1163 1164 1165 1166 1167 1168 | attribute is preceded by a comma, then it is an error to specify any user flags not assigned to that variable, otherwise any user flags that do not belong are ignored. Any user flag may optionally be preceded by a comma, and may occur multiple times; only the last instance of each is used. If the last instance of a flag has a comma then that bit is clear, if without a comma then it is set. (<userflags...>) ( -- number ) As above, but you can omit the attribute; it will be implied. All flags listed must be the same attribute otherwise it is an error. . ( x -- ) + ( in1 in2 -- out ) Add two numbers together. - ( in1 in2 -- out ) Subtract in2 from in1. |
︙ | ︙ |