From 50093cd4fe4461c657e9133113016db1124904d9 Mon Sep 17 00:00:00 2001
From: Thomas Voss <mail@thomasvoss.com>
Date: Fri, 3 May 2024 17:45:08 +0200
Subject: Don’t use binary search
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 gen/prop/na1 | 12 +++---------
 1 file changed, 3 insertions(+), 9 deletions(-)

(limited to 'gen/prop/na1')

diff --git a/gen/prop/na1 b/gen/prop/na1
index 776bf11..c01ee60 100755
--- a/gen/prop/na1
+++ b/gen/prop/na1
@@ -10,7 +10,6 @@ BEGIN {
 
 	print "/* This file is autogenerated by gen/prop/na1; DO NOT EDIT. */"
 	print ""
-	print "#include \"_bsearch.h\""
 	print "#include \"macros.h\""
 	print "#include \"rune.h\""
 	print "#include \"unicode/prop.h\""
@@ -18,27 +17,22 @@ BEGIN {
 	print "#define _(...) \\"
 	print "\t{(const char8_t []){__VA_ARGS__}, sizeof((const char8_t []){__VA_ARGS__})}"
 	print ""
-	print "static const struct {"
-	print "\trune k;"
-	print "\tstruct u8view v;"
-	print "} lookup[] = {"
+	print "static const struct u8view lookup[] = {"
 }
 
 length($11) > 0 {
 	gsub(/./, "\x27&\x27, ", $11)
 	sub(/, $/, "", $11)
-	printf "\t{RUNE_C(0x%06X), _(%s)},\n", strtonum("0X" $1), $11
+	printf "\t[RUNE_C(0x%06X)] = _(%s),\n", strtonum("0X" $1), $11
 }
 
 END {
 	print "};"
 	print ""
-	print "_MLIB_DEFINE_BSEARCH_KV(struct u8view, lookup, (struct u8view){})"
-	print ""
 	print "struct u8view"
 	print "uprop_get_na1(rune ch)"
 	print "{"
-	print "\treturn mlib_lookup_kv(ch);"
+	print "\treturn ch < lengthof(lookup) ? lookup[ch] : (struct u8view){};"
 	print "}"
 }
 ' data/UnicodeData
-- 
cgit v1.2.3