Introduction
Introduction Statistics Contact Development Disclaimer Help
Keep direct pointer at bracket-struct in bidi-state - libgrapheme - unicode str…
git clone git://git.suckless.org/libgrapheme
Log
Files
Refs
README
LICENSE
---
commit 2165664f6e2fa381eea54b9f887f152df2d9f817
parent df25b40e3ba37e63bf914c199de448c01b3d1b6e
Author: Laslo Hunhold <[email protected]>
Date: Sun, 30 Oct 2022 01:29:19 +0200
Keep direct pointer at bracket-struct in bidi-state
This makes the information easier to access instead of having to turn
the offset in the bracket-array to a pointer in every case we use it.
Signed-off-by: Laslo Hunhold <[email protected]>
Diffstat:
M src/bidirectional.c | 35 +++++++++++++++--------------…
1 file changed, 17 insertions(+), 18 deletions(-)
---
diff --git a/src/bidirectional.c b/src/bidirectional.c
@@ -1,7 +1,6 @@
/* See LICENSE file for copyright and license details. */
#include <stdbool.h>
#include <stddef.h>
-#include <stdlib.h>
#include "../gen/bidirectional.h"
#include "../grapheme.h"
@@ -50,7 +49,7 @@ struct state {
uint_least8_t paragraph_level;
int_least8_t level;
enum bidi_property prop;
- uint_least8_t bracket_off;
+ const struct bracket *bracket;
bool visited;
enum bidi_property rawprop;
};
@@ -59,23 +58,23 @@ static inline void
state_serialize(const struct state *s, int_least32_t *out)
{
*out = (int_least32_t)(
- ((((uint_least32_t)(s->paragraph_level)) & 0x01 /* 00000001 */)…
- ((((uint_least32_t)(s->level + 1)) & 0x7F /* 01111111 */)…
- ((((uint_least32_t)(s->prop)) & 0x1F /* 00011111 */)…
- ((((uint_least32_t)(s->bracket_off)) & 0xFF /* 11111111 */)…
- ((((uint_least32_t)(s->visited)) & 0x01 /* 00000001 */)…
- ((((uint_least32_t)(s->rawprop)) & 0x1F /* 00011111 */)…
+ ((((uint_least32_t)(s->paragraph_level)) & 0x01 /* 00000…
+ ((((uint_least32_t)(s->level + 1)) & 0x7F /* 01111…
+ ((((uint_least32_t)(s->prop)) & 0x1F /* 00011…
+ ((((uint_least32_t)(s->bracket - bidi_bracket)) & 0xFF /* 11111…
+ ((((uint_least32_t)(s->visited)) & 0x01 /* 00000…
+ ((((uint_least32_t)(s->rawprop)) & 0x1F /* 00011…
}
static inline void
state_deserialize(int_least32_t in, struct state *s)
{
- s->paragraph_level = (uint_least8_t)((((uint_least32_t)in) >> 0)…
- s->level = (int_least8_t)((((uint_least32_t)in) >> 1)…
- s->prop = (enum bidi_property)((((uint_least32_t)in) >> 8)…
- s->bracket_off = (uint_least8_t)((((uint_least32_t)in) >> 13)…
- s->visited = (bool)((((uint_least32_t)in) >> 21)…
- s->rawprop = (enum bidi_property)((((uint_least32_t)in) >> 22)…
+ s->paragraph_level = (uint_least8_t)((((uint_least32_t)…
+ s->level = (int_least8_t)((((uint_least32_t)…
+ s->prop = (enum bidi_property)((((uint_least32_t)…
+ s->bracket = bidi_bracket + (uint_least8_t)((((uint_least32_t)…
+ s->visited = (bool)((((uint_least32_t)…
+ s->rawprop = (enum bidi_property)((((uint_least32_t)…
}
static void
@@ -84,7 +83,7 @@ isolate_runner_init(int_least32_t *buf, size_t buflen, size_t…
struct isolate_runner *ir)
{
struct state s;
- ssize_t i;
+ size_t i;
int_least8_t cur_level, sos_level;
state_deserialize(buf[off], &s);
@@ -115,8 +114,8 @@ isolate_runner_init(int_least32_t *buf, size_t buflen, size…
*/
cur_level = s.level;
ir->cur.prop = NUM_BIDI_PROPS;
- for (i = (ssize_t)off - 1, sos_level = -1; i >= 0; i--) {
- state_deserialize(buf[i], &s);
+ for (i = off, sos_level = -1; i >= 1; i--) {
+ state_deserialize(buf[i - 1], &s);
if (s.level != -1) {
/*
@@ -935,7 +934,7 @@ get_embedding_levels(HERODOTUS_READER *r, enum grapheme_bid…
s.paragraph_level = 0;
s.level = 0;
s.prop = get_bidi_property(cp);
- s.bracket_off = get_bidi_bracket_off(cp);
+ s.bracket = bidi_bracket + get_bidi_bracket_off(cp);
s.visited = 0;
s.rawprop = get_bidi_property(cp);
state_serialize(&s, &(buf[bufoff]));
You are viewing proxied material from suckless.org. The copyright of proxied material belongs to its original authors. Any comments or complaints in relation to proxied material should be directed to the original authors of the content concerned. Please see the disclaimer for more details.