Allow three combining chars per cell

Makes use of otherwise wasted padding in the CPUCell struct
This commit is contained in:
Kovid Goyal 2022-04-28 09:45:34 +05:30
parent 1a2d9c6fba
commit 2b3be147e6
No known key found for this signature in database
GPG Key ID: 06BC317B515ACE7C
2 changed files with 8 additions and 3 deletions

View File

@ -9,6 +9,7 @@
#define PY_SSIZE_T_CLEAN
#include <Python.h>
#include <assert.h>
#include <stdint.h>
#include <stdbool.h>
#include <poll.h>
@ -163,12 +164,14 @@ typedef struct {
sprite_index sprite_x, sprite_y, sprite_z;
CellAttrs attrs;
} GPUCell;
static_assert(sizeof(GPUCell) == 20, "Fix the ordering of GPUCell");
typedef struct {
char_type ch;
combining_type cc_idx[2];
hyperlink_id_type hyperlink_id;
combining_type cc_idx[3];
} CPUCell;
static_assert(sizeof(CPUCell) == 12, "Fix the ordering of CPUCell");
typedef enum { UNKNOWN_PROMPT_KIND = 0, PROMPT_START = 1, SECONDARY_PROMPT = 2, OUTPUT_START = 3 } PromptKind;
typedef union LineAttrs {

View File

@ -182,9 +182,11 @@ class TestDataTypes(BaseTest):
l0.add_combining_char(0, '\U000e0100')
self.ae(l0[0], ' \u0300\U000e0100')
l0.add_combining_char(0, '\u0302')
self.ae(l0[0], ' \u0300\u0302')
self.ae(l0[0], ' \u0300\U000e0100\u0302')
l0.add_combining_char(0, '\u0301')
self.ae(l0[0], ' \u0300\U000e0100\u0301')
self.ae(l0[1], '\0')
self.ae(str(l0), ' \u0300\u0302')
self.ae(str(l0), ' \u0300\U000e0100\u0301')
t = 'Testing with simple text'
lb = LineBuf(2, len(t))
l0 = lb.line(0)