ucd-0.0.1.2: src/cbits/BidiBrackets.c
#include <stdint.h>
#include <stdio.h>
#include "BidiBrackets.h"
uint32_t bidi_brackets(uint32_t x) {
long length = sizeof(BidiBrackets) / sizeof(BidiBrackets[0]);
const uint32_t *try, *base;
base = BidiBrackets;
while (length > 0) {
try = &base[length/2];
uint32_t y = try[0] & 0x1FFFFF;
switch ((x > y) - (x < y)) {
case -1: length /= 2; break;
case 1: base = try + 1; length -= length/2+1; break;
default: return try[0];
}
}
return x;
}