MCPcopy Create free account
hub / github.com/buke/quickjs-go / build_script_ext_table

Function build_script_ext_table

deps/quickjs/unicode_gen.c:1757–1805  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1755}
1756
1757void build_script_ext_table(FILE *f)
1758{
1759 int i, j, n, n1, script_ext_len;
1760 DynBuf dbuf_s, *dbuf = &dbuf_s;
1761 int cw_count;
1762
1763 dbuf_init(dbuf);
1764 cw_count = 0;
1765 for(i = 0; i <= CHARCODE_MAX;) {
1766 script_ext_len = unicode_db[i].script_ext_len;
1767 j = i + 1;
1768 while (j <= CHARCODE_MAX &&
1769 unicode_db[j].script_ext_len == script_ext_len &&
1770 !memcmp(unicode_db[j].script_ext, unicode_db[i].script_ext,
1771 script_ext_len)) {
1772 j++;
1773 }
1774 n = j - i;
1775 cw_count++;
1776 n--;
1777 if (n < 128) {
1778 dbuf_putc(dbuf, n);
1779 } else if (n < 128 + (1 << 14)) {
1780 n1 = n - 128;
1781 assert(n1 < (1 << 14));
1782 dbuf_putc(dbuf, (n1 >> 8) + 128);
1783 dbuf_putc(dbuf, n1);
1784 } else {
1785 n1 = n - (128 + (1 << 14));
1786 assert(n1 < (1 << 22));
1787 dbuf_putc(dbuf, (n1 >> 16) + 128 + 64);
1788 dbuf_putc(dbuf, n1 >> 8);
1789 dbuf_putc(dbuf, n1);
1790 }
1791 dbuf_putc(dbuf, script_ext_len);
1792 for(j = 0; j < script_ext_len; j++)
1793 dbuf_putc(dbuf, unicode_db[i].script_ext[j]);
1794 i += n + 1;
1795 }
1796#ifdef DUMP_TABLE_SIZE
1797 printf("script_ext: %d entries",
1798 cw_count);
1799 printf(", length=%d bytes\n", (int)dbuf->size);
1800#endif
1801
1802 dump_byte_table(f, "unicode_script_ext_table", dbuf->buf, dbuf->size);
1803
1804 dbuf_free(dbuf);
1805}
1806
1807/* the following properties are synthetized so no table is necessary */
1808#define PROP_TABLE_COUNT PROP_ASCII

Callers 1

mainFunction · 0.85

Calls 5

dbuf_initFunction · 0.85
dbuf_putcFunction · 0.85
dump_byte_tableFunction · 0.85
dbuf_freeFunction · 0.85
assertFunction · 0.50

Tested by

no test coverage detected