Changeset 527 for proto/parabix2/src


Ignore:
Timestamp:
Jul 22, 2010, 11:15:04 AM (9 years ago)
Author:
lindanl
Message:

encoding name validation

Location:
proto/parabix2/src
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • proto/parabix2/src/bytelex.h

    r424 r527  
    397397}
    398398
     399template<CodeUnit_Base C>
     400inline bool at_ASCII_letter(unsigned char x8data[]) {
     401        switch (x8data[0]) {
     402                case Ord<C, 'A'>::value: case Ord<C, 'a'>::value:
     403                case Ord<C, 'B'>::value: case Ord<C, 'b'>::value:
     404                case Ord<C, 'C'>::value: case Ord<C, 'c'>::value:
     405                case Ord<C, 'D'>::value: case Ord<C, 'd'>::value:
     406                case Ord<C, 'E'>::value: case Ord<C, 'e'>::value:
     407                case Ord<C, 'F'>::value: case Ord<C, 'f'>::value:
     408                case Ord<C, 'G'>::value: case Ord<C, 'g'>::value:
     409                case Ord<C, 'H'>::value: case Ord<C, 'h'>::value:
     410                case Ord<C, 'I'>::value: case Ord<C, 'i'>::value:
     411                case Ord<C, 'J'>::value: case Ord<C, 'j'>::value:
     412                case Ord<C, 'K'>::value: case Ord<C, 'k'>::value:
     413                case Ord<C, 'L'>::value: case Ord<C, 'l'>::value:
     414                case Ord<C, 'M'>::value: case Ord<C, 'm'>::value:
     415                case Ord<C, 'N'>::value: case Ord<C, 'n'>::value:
     416                case Ord<C, 'O'>::value: case Ord<C, 'o'>::value:
     417                case Ord<C, 'P'>::value: case Ord<C, 'p'>::value:
     418                case Ord<C, 'Q'>::value: case Ord<C, 'q'>::value:
     419                case Ord<C, 'R'>::value: case Ord<C, 'r'>::value:
     420                case Ord<C, 'S'>::value: case Ord<C, 's'>::value:
     421                case Ord<C, 'T'>::value: case Ord<C, 't'>::value:
     422                case Ord<C, 'U'>::value: case Ord<C, 'u'>::value:
     423                case Ord<C, 'V'>::value: case Ord<C, 'v'>::value:
     424                case Ord<C, 'W'>::value: case Ord<C, 'w'>::value:
     425                case Ord<C, 'X'>::value: case Ord<C, 'x'>::value:
     426                case Ord<C, 'Y'>::value: case Ord<C, 'y'>::value:
     427                case Ord<C, 'Z'>::value: case Ord<C, 'z'>::value:
     428                        return true;
     429                default: return false;
     430        }
     431}
     432template<CodeUnit_Base C>
     433inline bool at_ASCII_ncnamechar(unsigned char x8data[]) {
     434        switch (x8data[0]) {
     435                case Ord<C, '0'>::value: case Ord<C, '1'>::value:
     436                case Ord<C, '2'>::value: case Ord<C, '3'>::value:
     437                case Ord<C, '4'>::value: case Ord<C, '5'>::value:
     438                case Ord<C, '6'>::value: case Ord<C, '7'>::value:
     439                case Ord<C, '8'>::value: case Ord<C, '9'>::value:
     440                case Ord<C, 'A'>::value: case Ord<C, 'a'>::value:
     441                case Ord<C, 'B'>::value: case Ord<C, 'b'>::value:
     442                case Ord<C, 'C'>::value: case Ord<C, 'c'>::value:
     443                case Ord<C, 'D'>::value: case Ord<C, 'd'>::value:
     444                case Ord<C, 'E'>::value: case Ord<C, 'e'>::value:
     445                case Ord<C, 'F'>::value: case Ord<C, 'f'>::value:
     446                case Ord<C, 'G'>::value: case Ord<C, 'g'>::value:
     447                case Ord<C, 'H'>::value: case Ord<C, 'h'>::value:
     448                case Ord<C, 'I'>::value: case Ord<C, 'i'>::value:
     449                case Ord<C, 'J'>::value: case Ord<C, 'j'>::value:
     450                case Ord<C, 'K'>::value: case Ord<C, 'k'>::value:
     451                case Ord<C, 'L'>::value: case Ord<C, 'l'>::value:
     452                case Ord<C, 'M'>::value: case Ord<C, 'm'>::value:
     453                case Ord<C, 'N'>::value: case Ord<C, 'n'>::value:
     454                case Ord<C, 'O'>::value: case Ord<C, 'o'>::value:
     455                case Ord<C, 'P'>::value: case Ord<C, 'p'>::value:
     456                case Ord<C, 'Q'>::value: case Ord<C, 'q'>::value:
     457                case Ord<C, 'R'>::value: case Ord<C, 'r'>::value:
     458                case Ord<C, 'S'>::value: case Ord<C, 's'>::value:
     459                case Ord<C, 'T'>::value: case Ord<C, 't'>::value:
     460                case Ord<C, 'U'>::value: case Ord<C, 'u'>::value:
     461                case Ord<C, 'V'>::value: case Ord<C, 'v'>::value:
     462                case Ord<C, 'W'>::value: case Ord<C, 'w'>::value:
     463                case Ord<C, 'X'>::value: case Ord<C, 'x'>::value:
     464                case Ord<C, 'Y'>::value: case Ord<C, 'y'>::value:
     465                case Ord<C, 'Z'>::value: case Ord<C, 'z'>::value:
     466                case Ord<C, '-'>::value: case Ord<C, '.'>::value:
     467                case Ord<C, '_'>::value:
     468                  return true;
     469                default: return false;
     470        }
     471}
    399472template<CodeUnit_Base C>
    400473inline bool at_PubidChar(unsigned char x8data[]) {
  • proto/parabix2/src/xmldecl.c

    r424 r527  
    127127
    128128template <CodeUnit_Base C>
    129 inline void XML_Decl_Parser<C>::ScanToQuote() {
    130         while (!AtQuote<C>(cur())) buffer_rel_pos+=1;
     129inline void XML_Decl_Parser<C>::ScanEncodingName() {
     130        if (at_ASCII_letter<C>(cur())) {
     131          Advance(1);
     132          while (at_ASCII_ncnamechar<C>(cur())) Advance(1);
     133        }
    131134}
    132135
     
    158161                Advance(1);
    159162                int start_pos = AbsPos();
    160                 ScanToQuote();
     163                ScanEncodingName();
    161164                if (cur()[0] != quoteCh) DeclError();
    162165                int lgth = AbsPos() - start_pos;
  • proto/parabix2/src/xmldecl.h

    r424 r527  
    110110        void DeclError();
    111111        void Scan_WS();
    112         void ScanToQuote();
     112        void ScanEncodingName();
    113113        void ParseVersion(Entity_Info & e);
    114114        void ParseEncoding(Entity_Info & e);
Note: See TracChangeset for help on using the changeset viewer.