tinymux/utf/utf8_FirstByte.c
Stephen Dennis 025f6a42b8 Build: Generate all unicode table files from utf/ pipeline directly
Add -o/-i flags to classify, integers, strings, and pairs tools so
they write to caller-specified paths instead of hardcoded .txt files.
Add -c flag to strings for C-mode output (co_string_desc, C casts).

Rewrite utf/Makefile.in to generate all output files directly in
their final locations:
  mux/include/utf8tables.h       — C++ header (libmux.so)
  mux/lib/utf8tables.cpp         — C++ table data (libmux.so)
  mux/include/unicode_tables_c.h — C header (color_ops, rv64)
  ragel/unicode_tables.h         — symlink to unicode_tables_c.h
  ragel/unicode_tables.c         — C tables (case mapping)
  mux/rv64/src/unicode_tables.c  — C tables (case + widths + gcb)

The C header is assembled from preamble + generated DFA declarations +
postamble (inline DFA runner functions). No manual sync needed — the
upper_sbt debacle cannot recur.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-16 16:41:36 -06:00

26 lines
1.4 KiB
C

/* UTF-8 lead byte classification table.
* 1=ASCII, 2=2-byte, 3=3-byte, 4=4-byte, 5=continuation, 6=illegal.
* Defined by the UTF-8 encoding spec; never changes.
*/
const unsigned char utf8_FirstByte[256] =
{
// 0 1 2 3 4 5 6 7 8 9 A B C D E F
//
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 0
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 1
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 2
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 3
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 4
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 5
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 6
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 7
5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, // 8
5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, // 9
5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, // A
5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, // B
6, 6, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, // C
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, // D
3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, // E
4, 4, 4, 4, 4, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6 // F
};