diff options
Diffstat (limited to 'debian/uncrustify-trinity/uncrustify-trinity-0.73.0/src/char_table.h')
-rw-r--r-- | debian/uncrustify-trinity/uncrustify-trinity-0.73.0/src/char_table.h | 81 |
1 files changed, 81 insertions, 0 deletions
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.73.0/src/char_table.h b/debian/uncrustify-trinity/uncrustify-trinity-0.73.0/src/char_table.h new file mode 100644 index 00000000..3fa23a54 --- /dev/null +++ b/debian/uncrustify-trinity/uncrustify-trinity-0.73.0/src/char_table.h @@ -0,0 +1,81 @@ +/** + * @file char_table.h + * A simple table to help tokenize stuff. + * Used to parse strings (paired char) and words. + * + * @author Ben Gardner + * @license GPL v2+ + */ + +#ifndef CHAR_TABLE_H_INCLUDED +#define CHAR_TABLE_H_INCLUDED + +/** + * bit0-7 = paired char + * bit8 = OK for keyword 1st char + * bit9 = OK for keyword 2+ char + */ +struct CharTable +{ + static size_t chars[128]; + + enum + { + KW1 = 0x0100, + KW2 = 0x0200, + }; + + + static inline size_t Get(size_t ch) + { + if (ch < ARRAY_SIZE(chars)) + { + return(chars[ch]); + } + /* + * HACK: If the top bit is set, then we are likely dealing with UTF-8, + * and since that is only allowed in identifiers, then assume that is + * what this is. This only prevents corruption, it does not properly + * handle UTF-8 because the byte length and screen size are assumed to be + * the same. + */ + return(KW1 | KW2); + } + + + static inline bool IsKw1(size_t ch) + { + return((Get(ch) & KW1) != 0); + } + + + static inline bool IsKw2(size_t ch) + { + return((Get(ch) & KW2) != 0); + } +}; + +#ifdef DEFINE_CHAR_TABLE +size_t CharTable::chars[128] = +{ + 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, // [........] + 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, // [........] + 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, // [........] + 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, // [........] + 0x000, 0x000, 0x022, 0x000, 0x300, 0x000, 0x000, 0x027, // [ !"#$%&'] + 0x029, 0x028, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, // [()*+,-./] + 0x200, 0x200, 0x200, 0x200, 0x200, 0x200, 0x200, 0x200, // [01234567] + 0x200, 0x200, 0x000, 0x000, 0x03e, 0x000, 0x03c, 0x000, // [89:;<=>?] + 0x200, 0x300, 0x300, 0x300, 0x300, 0x300, 0x300, 0x300, // [@ABCDEFG] + 0x300, 0x300, 0x300, 0x300, 0x300, 0x300, 0x300, 0x300, // [HIJKLMNO] + 0x300, 0x300, 0x300, 0x300, 0x300, 0x300, 0x300, 0x300, // [PQRSTUVW] + 0x300, 0x300, 0x300, 0x05d, 0x000, 0x05b, 0x000, 0x300, // [XYZ[\]^_] + 0x060, 0x300, 0x300, 0x300, 0x300, 0x300, 0x300, 0x300, // [`abcdefg] + 0x300, 0x300, 0x300, 0x300, 0x300, 0x300, 0x300, 0x300, // [hijklmno] + 0x300, 0x300, 0x300, 0x300, 0x300, 0x300, 0x300, 0x300, // [pqrstuvw] + 0x300, 0x300, 0x300, 0x07d, 0x000, 0x07b, 0x000, 0x000, // [xyz{|}~.] +}; +#endif /* DEFINE_CHAR_TABLE */ + + +#endif /* CHAR_TABLE_H_INCLUDED */ |