packages feed

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;
}