packages feed

ucd-0.0.1.4: src/cbits/BidiBrackets.c

#include <stdint.h>
#include "BidiBrackets.h"

uint32_t bidi_brackets(uint32_t x) {
    unsigned long length = sizeof(BidiBrackets) / sizeof(BidiBrackets[0]);
    const uint32_t *try, *base;
    base = BidiBrackets;
    while (length > 0) {
        try = &base[length/2];
        uint32_t r = try[0], y = r & 0x1FFFFF;
        switch ((x > y) - (x < y)) {
        case -1: length /= 2; break;
        case  1: base = try + 1; length -= length/2+1; break;
        default: return r;
        }
    }
    return x;
}