#ifdef WITH_RIVE_SCRIPTING
// The LuaAtoms name table and lookup, shared by the native runtime and the
// wasm script module build; both install it as the state's useratom callback
// so namecall dispatch and direct field getters agree everywhere.
#include "rive/lua/rive_lua_libs.hpp"

#include <array>
#include <string_view>

using namespace rive;

namespace
{
struct LuaAtomName
{
  std::string_view name;
  int16_t atom;
};

constexpr LuaAtomName atoms[] = {
    {"length", (int16_t)LuaAtoms::length},
    {"lengthSquared", (int16_t)LuaAtoms::lengthSquared},
    {"normalized", (int16_t)LuaAtoms::normalized},
    {"distance", (int16_t)LuaAtoms::distance},
    {"distanceSquared", (int16_t)LuaAtoms::distanceSquared},
    {"dot", (int16_t)LuaAtoms::dot},
    {"lerp", (int16_t)LuaAtoms::lerp},
    {"moveTo", (int16_t)LuaAtoms::moveTo},
    {"lineTo", (int16_t)LuaAtoms::lineTo},
    {"quadTo", (int16_t)LuaAtoms::quadTo},
    {"cubicTo", (int16_t)LuaAtoms::cubicTo},
    {"close", (int16_t)LuaAtoms::close},
    {"type", (int16_t)LuaAtoms::type},
    {"reset", (int16_t)LuaAtoms::reset},
    {"add", (int16_t)LuaAtoms::add},
    {"contours", (int16_t)LuaAtoms::contours},
    {"measure", (int16_t)LuaAtoms::measure},
    {"invert", (int16_t)LuaAtoms::invert},
    {"isIdentity", (int16_t)LuaAtoms::isIdentity},
    {"width", (int16_t)LuaAtoms::width},
    {"height", (int16_t)LuaAtoms::height},
    {"clamp", (int16_t)LuaAtoms::clamp},
    {"repeat", (int16_t)LuaAtoms::repeat},
    {"mirror", (int16_t)LuaAtoms::mirror},
    {"bilinear", (int16_t)LuaAtoms::bilinear},
    {"nearest", (int16_t)LuaAtoms::nearest},
    {"style", (int16_t)LuaAtoms::style},
    {"join", (int16_t)LuaAtoms::join},
    {"cap", (int16_t)LuaAtoms::cap},
    {"thickness", (int16_t)LuaAtoms::thickness},
    {"blendMode", (int16_t)LuaAtoms::blendMode},
    {"feather", (int16_t)LuaAtoms::feather},
    {"gradient", (int16_t)LuaAtoms::gradient},
    {"gradientTransform", (int16_t)LuaAtoms::gradientTransform},
    {"color", (int16_t)LuaAtoms::color},
    {"stroke", (int16_t)LuaAtoms::stroke},
    {"fill", (int16_t)LuaAtoms::fill},
    {"miter", (int16_t)LuaAtoms::miter},
    {"round", (int16_t)LuaAtoms::round},
    {"bevel", (int16_t)LuaAtoms::bevel},
    {"butt", (int16_t)LuaAtoms::butt},
    {"square", (int16_t)LuaAtoms::square},
    {"srcOver", (int16_t)LuaAtoms::srcOver},
    {"additive", (int16_t)LuaAtoms::additive},
    {"screen", (int16_t)LuaAtoms::screen},
    {"overlay", (int16_t)LuaAtoms::overlay},
    {"darken", (int16_t)LuaAtoms::darken},
    {"lighten", (int16_t)LuaAtoms::lighten},
    {"colorDodge", (int16_t)LuaAtoms::colorDodge},
    {"colorBurn", (int16_t)LuaAtoms::colorBurn},
    {"hardLight", (int16_t)LuaAtoms::hardLight},
    {"softLight", (int16_t)LuaAtoms::softLight},
    {"difference", (int16_t)LuaAtoms::difference},
    {"exclusion", (int16_t)LuaAtoms::exclusion},
    {"multiply", (int16_t)LuaAtoms::multiply},
    {"hue", (int16_t)LuaAtoms::hue},
    {"saturation", (int16_t)LuaAtoms::saturation},
    {"luminosity", (int16_t)LuaAtoms::luminosity},
    {"copy", (int16_t)LuaAtoms::copy},
    {"drawPath", (int16_t)LuaAtoms::drawPath},
    {"drawImage", (int16_t)LuaAtoms::drawImage},
    {"drawImageMesh", (int16_t)LuaAtoms::drawImageMesh},
    {"drawImageMeshInstanced", (int16_t)LuaAtoms::drawImageMeshInstanced},
    {"clipPath", (int16_t)LuaAtoms::clipPath},
    {"save", (int16_t)LuaAtoms::save},
    {"restore", (int16_t)LuaAtoms::restore},
    {"transform", (int16_t)LuaAtoms::transform},
    {"value", (int16_t)LuaAtoms::value},
    {"red", (int16_t)LuaAtoms::red},
    {"green", (int16_t)LuaAtoms::green},
    {"blue", (int16_t)LuaAtoms::blue},
    {"alpha", (int16_t)LuaAtoms::alpha},
    {"getNumber", (int16_t)LuaAtoms::getNumber},
    {"getTrigger", (int16_t)LuaAtoms::getTrigger},
    {"getString", (int16_t)LuaAtoms::getString},
    {"getBoolean", (int16_t)LuaAtoms::getBoolean},
    {"getColor", (int16_t)LuaAtoms::getColor},
    {"getList", (int16_t)LuaAtoms::getList},
    {"getViewModel", (int16_t)LuaAtoms::getViewModel},
    {"getEnum", (int16_t)LuaAtoms::getEnum},
    {"getIndex", (int16_t)LuaAtoms::getIndex},
    {"getImage", (int16_t)LuaAtoms::getImage},
    {"getFont", (int16_t)LuaAtoms::getFont},
    {"getBlob", (int16_t)LuaAtoms::getBlob},
    {"values", (int16_t)LuaAtoms::values},
    {"addListener", (int16_t)LuaAtoms::addListener},
    {"removeListener", (int16_t)LuaAtoms::removeListener},
    {"fire", (int16_t)LuaAtoms::fire},
    {"push", (int16_t)LuaAtoms::push},
    {"insert", (int16_t)LuaAtoms::insert},
    {"pop", (int16_t)LuaAtoms::pop},
    {"swap", (int16_t)LuaAtoms::swap},
    {"shift", (int16_t)LuaAtoms::shift},
    {"clear", (int16_t)LuaAtoms::clear},
    {"draw", (int16_t)LuaAtoms::draw},
    {"modulateOpacity", (int16_t)LuaAtoms::modulateOpacity},
    {"advance", (int16_t)LuaAtoms::advance},
    {"frameOrigin", (int16_t)LuaAtoms::frameOrigin},
    {"data", (int16_t)LuaAtoms::data},
    {"instance", (int16_t)LuaAtoms::instance},
    {"animation", (int16_t)LuaAtoms::animation},
    {"new", (int16_t)LuaAtoms::newAtom},
    {"bounds", (int16_t)LuaAtoms::bounds},
    {"pointerDown", (int16_t)LuaAtoms::pointerDown},
    {"pointerUp", (int16_t)LuaAtoms::pointerUp},
    {"pointerMove", (int16_t)LuaAtoms::pointerMove},
    {"pointerExit", (int16_t)LuaAtoms::pointerExit},
    {"isNumber", (int16_t)LuaAtoms::isNumber},
    {"isString", (int16_t)LuaAtoms::isString},
    {"isBoolean", (int16_t)LuaAtoms::isBoolean},
    {"isColor", (int16_t)LuaAtoms::isColor},
    {"hit", (int16_t)LuaAtoms::hit},
    {"id", (int16_t)LuaAtoms::id},
    {"position", (int16_t)LuaAtoms::position},
    {"rotation", (int16_t)LuaAtoms::rotation},
    {"scale", (int16_t)LuaAtoms::scale},
    {"worldTransform", (int16_t)LuaAtoms::worldTransform},
    {"scaleX", (int16_t)LuaAtoms::scaleX},
    {"scaleY", (int16_t)LuaAtoms::scaleY},
    {"decompose", (int16_t)LuaAtoms::decompose},
    {"children", (int16_t)LuaAtoms::children},
    {"parent", (int16_t)LuaAtoms::parent},
    {"node", (int16_t)LuaAtoms::node},
    {"paint", (int16_t)LuaAtoms::paint},
    {"asPath", (int16_t)LuaAtoms::asPath},
    {"asPaint", (int16_t)LuaAtoms::asPaint},
    {"addToPath", (int16_t)LuaAtoms::addToPath},
    {"positionAndTangent", (int16_t)LuaAtoms::positionAndTangent},
    {"warp", (int16_t)LuaAtoms::warp},
    {"extract", (int16_t)LuaAtoms::extract},
    {"next", (int16_t)LuaAtoms::next},
    {"isClosed", (int16_t)LuaAtoms::isClosed},
    {"markNeedsUpdate", (int16_t)LuaAtoms::markNeedsUpdate},
    {"viewModel", (int16_t)LuaAtoms::viewModel},
    {"rootViewModel", (int16_t)LuaAtoms::rootViewModel},
    {"globalViewModel", (int16_t)LuaAtoms::globalViewModel},
    {"globalViewModelNames", (int16_t)LuaAtoms::globalViewModelNames},
    {"dataContext", (int16_t)LuaAtoms::dataContext},
    {"image", (int16_t)LuaAtoms::image},
    {"blob", (int16_t)LuaAtoms::blob},
    {"size", (int16_t)LuaAtoms::size},
    {"name", (int16_t)LuaAtoms::name},
    {"duration", (int16_t)LuaAtoms::duration},
    {"setTime", (int16_t)LuaAtoms::setTime},
    {"setTimeFrames", (int16_t)LuaAtoms::setTimeFrames},
    {"setTimePercentage", (int16_t)LuaAtoms::setTimePercentage},
    {"isPointerEvent", (int16_t)LuaAtoms::isPointerEvent},
    {"isKeyboardEvent", (int16_t)LuaAtoms::isKeyboardEvent},
    {"isTextInput", (int16_t)LuaAtoms::isTextInput},
    {"previousPosition", (int16_t)LuaAtoms::previousPosition},
    {"timeStamp", (int16_t)LuaAtoms::timeStamp},
    {"isFocus", (int16_t)LuaAtoms::isFocus},
    {"isReportedEvent", (int16_t)LuaAtoms::isReportedEvent},
    {"isViewModelChange", (int16_t)LuaAtoms::isViewModelChange},
    {"isNone", (int16_t)LuaAtoms::isNone},
    {"isGamepadConnected", (int16_t)LuaAtoms::isGamepadConnected},
    {"isGamepadEvent", (int16_t)LuaAtoms::isGamepadEvent},
    {"isGamepadDisconnected", (int16_t)LuaAtoms::isGamepadDisconnected},
    {"asPointerEvent", (int16_t)LuaAtoms::asPointerEvent},
    {"asKeyboardEvent", (int16_t)LuaAtoms::asKeyboardEvent},
    {"asTextInput", (int16_t)LuaAtoms::asTextInput},
    {"asFocus", (int16_t)LuaAtoms::asFocus},
    {"asReportedEvent", (int16_t)LuaAtoms::asReportedEvent},
    {"asViewModelChange", (int16_t)LuaAtoms::asViewModelChange},
    {"asGamepadConnected", (int16_t)LuaAtoms::asGamepadConnected},
    {"asGamepadEvent", (int16_t)LuaAtoms::asGamepadEvent},
    {"asGamepadDisconnected", (int16_t)LuaAtoms::asGamepadDisconnected},
    {"gamepadEvent", (int16_t)LuaAtoms::gamepadEvent},
    {"gamepadConnected", (int16_t)LuaAtoms::gamepadConnected},
    {"gamepadDisconnected", (int16_t)LuaAtoms::gamepadDisconnected},
    {"asNone", (int16_t)LuaAtoms::asNone},
    {"key", (int16_t)LuaAtoms::key},
    {"shift", (int16_t)LuaAtoms::shift},
    {"alt", (int16_t)LuaAtoms::alt},
    {"control", (int16_t)LuaAtoms::control},
    {"meta", (int16_t)LuaAtoms::meta},
    {"text", (int16_t)LuaAtoms::text},
    {"phase", (int16_t)LuaAtoms::phase},
    {"delaySeconds", (int16_t)LuaAtoms::delaySeconds},
    {"deviceId", (int16_t)LuaAtoms::deviceId},
    {"buttonMask", (int16_t)LuaAtoms::buttonMask},
    {"remove", (int16_t)LuaAtoms::remove},
    {"removeAt", (int16_t)LuaAtoms::removeAt},
    {"removeAllOf", (int16_t)LuaAtoms::removeAllOf},
    {"axes", (int16_t)LuaAtoms::axes},
    {"gamepadMapping", (int16_t)LuaAtoms::gamepadMapping},
    {"mapping", (int16_t)LuaAtoms::mapping},
    {"isStandardMapping", (int16_t)LuaAtoms::isStandardMapping},
    {"buttons", (int16_t)LuaAtoms::buttons},
    {"buttonPressed", (int16_t)LuaAtoms::buttonPressed},
    {"buttonValue", (int16_t)LuaAtoms::buttonValue},
    {"axis", (int16_t)LuaAtoms::axis},
    {"west", (int16_t)LuaAtoms::west},
    {"south", (int16_t)LuaAtoms::south},
    {"north", (int16_t)LuaAtoms::north},
    {"east", (int16_t)LuaAtoms::east},
    {"leftShoulder", (int16_t)LuaAtoms::leftShoulder},
    {"rightShoulder", (int16_t)LuaAtoms::rightShoulder},
    {"back", (int16_t)LuaAtoms::gamepadBack},
    {"forward", (int16_t)LuaAtoms::gamepadForward},
    {"leftStickButton", (int16_t)LuaAtoms::leftStickButton},
    {"rightStickButton", (int16_t)LuaAtoms::rightStickButton},
    {"dpadUp", (int16_t)LuaAtoms::dpadUp},
    {"dpadDown", (int16_t)LuaAtoms::dpadDown},
    {"dpadLeft", (int16_t)LuaAtoms::dpadLeft},
    {"dpadRight", (int16_t)LuaAtoms::dpadRight},
    {"start", (int16_t)LuaAtoms::start},
    {"leftStick", (int16_t)LuaAtoms::leftStick},
    {"rightStick", (int16_t)LuaAtoms::rightStick},
    {"leftTrigger", (int16_t)LuaAtoms::leftTrigger},
    {"rightTrigger", (int16_t)LuaAtoms::rightTrigger},
    {"leftTriggerPressed", (int16_t)LuaAtoms::leftTriggerPressed},
    {"rightTriggerPressed", (int16_t)LuaAtoms::rightTriggerPressed},
    {"changeKind", (int16_t)LuaAtoms::changeKind},
    {"changeIndex", (int16_t)LuaAtoms::changeIndex},
    {"changeValue", (int16_t)LuaAtoms::changeValue},
    {"hasStandardButtonIntent", (int16_t)LuaAtoms::hasStandardButtonIntent},
    {"hasStandardAxisIntent", (int16_t)LuaAtoms::hasStandardAxisIntent},
    {"intentButton", (int16_t)LuaAtoms::intentButton},
    {"intentAxis", (int16_t)LuaAtoms::intentAxis},
    {"audio", (int16_t)LuaAtoms::audio},
    {"play", (int16_t)LuaAtoms::play},
    {"playAtTime", (int16_t)LuaAtoms::playAtTime},
    {"playInTime", (int16_t)LuaAtoms::playInTime},
    {"playAtFrame", (int16_t)LuaAtoms::playAtFrame},
    {"playInFrame", (int16_t)LuaAtoms::playInFrame},
    {"stop", (int16_t)LuaAtoms::stop},
    {"pause", (int16_t)LuaAtoms::pause},
    {"resume", (int16_t)LuaAtoms::resume},
    {"seek", (int16_t)LuaAtoms::seek},
    {"seekFrame", (int16_t)LuaAtoms::seekFrame},
    {"volume", (int16_t)LuaAtoms::volume},
    {"completed", (int16_t)LuaAtoms::completed},
    {"time", (int16_t)LuaAtoms::time},
    {"timeFrame", (int16_t)LuaAtoms::timeFrame},
    {"sampleRate", (int16_t)LuaAtoms::sampleRate},
    // GPU
    {"write", (int16_t)LuaAtoms::write},
    {"upload", (int16_t)LuaAtoms::upload},
    {"view", (int16_t)LuaAtoms::view},
    {"setPipeline", (int16_t)LuaAtoms::setPipeline},
    {"setVertexBuffer", (int16_t)LuaAtoms::setVertexBuffer},
    {"setIndexBuffer", (int16_t)LuaAtoms::setIndexBuffer},
    {"setBindGroup", (int16_t)LuaAtoms::setBindGroup},
    {"setViewport", (int16_t)LuaAtoms::setViewport},
    {"setScissorRect", (int16_t)LuaAtoms::setScissorRect},
    {"setStencilReference", (int16_t)LuaAtoms::setStencilReference},
    {"drawIndexed", (int16_t)LuaAtoms::drawIndexed},
    {"finish", (int16_t)LuaAtoms::finish},
    {"beginRenderPass", (int16_t)LuaAtoms::beginRenderPass},
    {"beginFrame", (int16_t)LuaAtoms::beginFrame},
    {"endFrame", (int16_t)LuaAtoms::endFrame},
    {"colorView", (int16_t)LuaAtoms::colorView},
    {"depthView", (int16_t)LuaAtoms::depthView},
    {"setBlendColor", (int16_t)LuaAtoms::setBlendColor},
    {"resize", (int16_t)LuaAtoms::resize},
    {"set", (int16_t)LuaAtoms::set},
    {"canvas", (int16_t)LuaAtoms::canvas},
    {"gpuCanvas", (int16_t)LuaAtoms::gpuCanvas},
    {"features", (int16_t)LuaAtoms::features},
    {"shader", (int16_t)LuaAtoms::shader},
    {"format", (int16_t)LuaAtoms::format},
    {"gpuTarget", (int16_t)LuaAtoms::gpuTarget},
    {"sampleCount", (int16_t)LuaAtoms::sampleCount},
    {"andThen", (int16_t)LuaAtoms::andThen},
    {"catch", (int16_t)LuaAtoms::catch_},
    {"finally", (int16_t)LuaAtoms::finally_},
    {"cancel", (int16_t)LuaAtoms::cancel},
    {"onCancel", (int16_t)LuaAtoms::onCancel},
    {"getStatus", (int16_t)LuaAtoms::getStatus},
    {"decodeImage", (int16_t)LuaAtoms::decodeImage},
    // Mat4
    {"transpose", (int16_t)LuaAtoms::transpose},
    {"transformPoint", (int16_t)LuaAtoms::transformPoint},
    {"transformVec4", (int16_t)LuaAtoms::transformVec4},
    {"writeToBuffer", (int16_t)LuaAtoms::writeToBuffer},
    {"invertAffine", (int16_t)LuaAtoms::invertAffine},
    // Vector
    {"writeVec4", (int16_t)LuaAtoms::writeVec4},
    // Drawable
    {"modulateColor", (int16_t)LuaAtoms::modulateColor},
    {"setColorModulation", (int16_t)LuaAtoms::setColorModulation},
    {"propertyKey", (int16_t)LuaAtoms::propertyKey},
    {"drawModulated", (int16_t)LuaAtoms::drawModulated},
    {"number", (int16_t)LuaAtoms::number},
    {"boolean", (int16_t)LuaAtoms::boolean},
    {"string", (int16_t)LuaAtoms::string},
    // Fetch Response
    {"status", (int16_t)LuaAtoms::status},
    {"statusText", (int16_t)LuaAtoms::statusText},
    {"ok", (int16_t)LuaAtoms::ok},
    {"url", (int16_t)LuaAtoms::url},
    {"headers", (int16_t)LuaAtoms::headers},
    {"arrayBuffer", (int16_t)LuaAtoms::arrayBuffer},
    {"header", (int16_t)LuaAtoms::header},
    // Decoded Rive files
    {"decodeFile", (int16_t)LuaAtoms::decodeFile},
    {"artboardNames", (int16_t)LuaAtoms::artboardNames},
    {"bindableArtboard", (int16_t)LuaAtoms::bindableArtboard},
    {"getArtboard", (int16_t)LuaAtoms::getArtboard},
#ifdef WITH_RIVE_TOOLS
    {"properties", (int16_t)LuaAtoms::properties},
#endif
    {"append", (int16_t)LuaAtoms::append},
    {"line", (int16_t)LuaAtoms::line},
    {"lines", (int16_t)LuaAtoms::lines},
    {"hitTest", (int16_t)LuaAtoms::hitTest},
    {"caret", (int16_t)LuaAtoms::caret},
    {"selectionRects", (int16_t)LuaAtoms::selectionRects},
    {"glyph", (int16_t)LuaAtoms::glyph},
    {"glyphs", (int16_t)LuaAtoms::glyphs},
    {"path", (int16_t)LuaAtoms::path},
    {"glyphPath", (int16_t)LuaAtoms::glyphPath},
    {"withOptions", (int16_t)LuaAtoms::withOptions},
    {"hasGlyph", (int16_t)LuaAtoms::hasGlyph},
    {"axisValue", (int16_t)LuaAtoms::axisValue},
    {"lineHeight", (int16_t)LuaAtoms::lineHeight},
    {"decode", (int16_t)LuaAtoms::decode},
    {"font", (int16_t)LuaAtoms::font},
    {"ascent", (int16_t)LuaAtoms::ascent},
    {"descent", (int16_t)LuaAtoms::descent},
    {"capHeight", (int16_t)LuaAtoms::capHeight},
    {"xHeight", (int16_t)LuaAtoms::xHeight},
    {"weight", (int16_t)LuaAtoms::weight},
    {"isItalic", (int16_t)LuaAtoms::isItalic},
    {"sizing", (int16_t)LuaAtoms::sizing},
    {"overflow", (int16_t)LuaAtoms::overflow},
    {"align", (int16_t)LuaAtoms::align},
    {"wrap", (int16_t)LuaAtoms::wrap},
    {"wordBreak", (int16_t)LuaAtoms::wordBreak},
    {"origin", (int16_t)LuaAtoms::origin},
    {"direction", (int16_t)LuaAtoms::direction},
    {"maxWidth", (int16_t)LuaAtoms::maxWidth},
    {"maxHeight", (int16_t)LuaAtoms::maxHeight},
    {"paragraphSpacing", (int16_t)LuaAtoms::paragraphSpacing},
    {"lineCount", (int16_t)LuaAtoms::lineCount},
    {"glyphCount", (int16_t)LuaAtoms::glyphCount},
    {"baseline", (int16_t)LuaAtoms::baseline},
    {"bottom", (int16_t)LuaAtoms::bottom},
    {"top", (int16_t)LuaAtoms::top},
    {"textIndex", (int16_t)LuaAtoms::textIndex},
    {"firstIndex", (int16_t)LuaAtoms::firstIndex},
    {"lastIndex", (int16_t)LuaAtoms::lastIndex},
    {"x", (int16_t)LuaAtoms::x},
    {"y", (int16_t)LuaAtoms::y},
    {"isEmpty", (int16_t)LuaAtoms::isEmpty},
    {"index", (int16_t)LuaAtoms::index},
    {"ltr", (int16_t)LuaAtoms::ltr},
    {"rtl", (int16_t)LuaAtoms::rtl},
    {"auto", (int16_t)LuaAtoms::autoDetect},
    {"left", (int16_t)LuaAtoms::left},
    {"right", (int16_t)LuaAtoms::right},
    {"center", (int16_t)LuaAtoms::center},
    {"end", (int16_t)LuaAtoms::end},
    {"autoWidth", (int16_t)LuaAtoms::autoWidth},
    {"autoHeight", (int16_t)LuaAtoms::autoHeight},
    {"fixed", (int16_t)LuaAtoms::fixed},
    {"visible", (int16_t)LuaAtoms::visible},
    {"hidden", (int16_t)LuaAtoms::hidden},
    {"clipped", (int16_t)LuaAtoms::clipped},
    {"ellipsis", (int16_t)LuaAtoms::ellipsis},
    {"noWrap", (int16_t)LuaAtoms::noWrap},
    {"breakWord", (int16_t)LuaAtoms::breakWord},
    {"normal", (int16_t)LuaAtoms::normal},
    {"breakAll", (int16_t)LuaAtoms::breakAll},
    {"letterSpacing", (int16_t)LuaAtoms::letterSpacing},
    {"foregroundColor", (int16_t)LuaAtoms::foregroundColor},
    {"min", (int16_t)LuaAtoms::min},
    {"max", (int16_t)LuaAtoms::max},
    {"default", (int16_t)LuaAtoms::defaultValue},
    {"delta", (int16_t)LuaAtoms::delta},
    {"precise", (int16_t)LuaAtoms::precise},
    {"pointerScroll", (int16_t)LuaAtoms::pointerScroll},
};

constexpr size_t atomCount = std::size(atoms);
// Power of two so the modulo is a mask, and roomy enough to keep probes short.
constexpr bool hasAtom(LuaAtoms atom)
{
  for (const LuaAtomName& row : atoms)
  {
    if (row.atom == (int16_t)atom)
    {
      return true;
    }
  }
  return false;
}

constexpr bool hasAtomRange(LuaAtoms first, LuaAtoms last)
{
  for (int16_t atom = (int16_t)first; atom <= (int16_t)last; atom++)
  {
    if (!hasAtom((LuaAtoms)atom))
    {
      return false;
    }
  }
  return true;
}

// The text and scroll atoms follow the tools only ones; a guard swallowing
// them only shows in a runtime build, which the test binaries never are.
static_assert(
    hasAtomRange(LuaAtoms::append, LuaAtoms::pointerScroll),
    "text and scroll atoms must register in every build");

constexpr size_t atomSlotCount = 1024;
static_assert(
    atomCount < atomSlotCount,
    "atomSlotCount must exceed the number of atoms");

constexpr uint32_t hashAtomName(std::string_view name)
{
  uint32_t hash = 2166136261u;
  for (char c : name)
  {
    hash = (hash ^ (uint8_t)c) * 16777619u;
  }
  return hash;
}

constexpr size_t longestAtomName()
{
  size_t longest = 0;
  for (const LuaAtomName& entry : atoms)
  {
    if (entry.name.size() > longest)
    {
      longest = entry.name.size();
    }
  }
  return longest;
}
constexpr size_t maxAtomNameLength = longestAtomName();

// Slots hold an index into atoms biased by one so zero reads as empty.
constexpr std::array<uint16_t, atomSlotCount> buildAtomSlots()
{
  std::array<uint16_t, atomSlotCount> slots{};
  for (size_t i = 0; i < atomCount; i++)
  {
    size_t slot = hashAtomName(atoms[i].name) & (atomSlotCount - 1);
    while (slots[slot] != 0 && atoms[slots[slot] - 1].name != atoms[i].name)
    {
      slot = (slot + 1) & (atomSlotCount - 1);
    }
    if (slots[slot] == 0)
    {
      slots[slot] = (uint16_t)(i + 1);
    }
  }
  return slots;
}
constexpr std::array<uint16_t, atomSlotCount> atomSlots = buildAtomSlots();

int16_t findAtom(const char* chars, size_t length)
{
  if (length > maxAtomNameLength)
  {
    return -1;
  }
  std::string_view name(chars, length);
  size_t slot = hashAtomName(name) & (atomSlotCount - 1);
  for (uint16_t index = atomSlots[slot]; index != 0;
       index = atomSlots[slot = (slot + 1) & (atomSlotCount - 1)])
  {
    if (atoms[index - 1].name == name)
    {
      return atoms[index - 1].atom;
    }
  }
  return -1;
}
} // namespace

namespace rive
{
int16_t rive_lua_findAtom(const char* chars, size_t length)
{
  return findAtom(chars, length);
}
} // namespace rive
#endif
