* @brief Pushes any QJsonValue onto the Lua stack; null becomes nil. */
| 385 | * @brief Pushes any QJsonValue onto the Lua stack; null becomes nil. |
| 386 | */ |
| 387 | static void jsonValueToLua(lua_State* L, const QJsonValue& v, int depth) |
| 388 | { |
| 389 | switch (v.type()) { |
| 390 | case QJsonValue::Bool: |
| 391 | lua_pushboolean(L, v.toBool() ? 1 : 0); |
| 392 | break; |
| 393 | case QJsonValue::Double: |
| 394 | pushJsonNumber(L, SerialStudio::toDouble(v)); |
| 395 | break; |
| 396 | case QJsonValue::String: { |
| 397 | const QByteArray s = v.toString().toUtf8(); |
| 398 | lua_pushlstring(L, s.constData(), static_cast<size_t>(s.size())); |
| 399 | break; |
| 400 | } |
| 401 | case QJsonValue::Array: |
| 402 | jsonArrayToLua(L, v.toArray(), depth); |
| 403 | break; |
| 404 | case QJsonValue::Object: |
| 405 | jsonObjectToLua(L, v.toObject(), depth); |
| 406 | break; |
| 407 | case QJsonValue::Null: |
| 408 | case QJsonValue::Undefined: |
| 409 | default: |
| 410 | lua_pushnil(L); |
| 411 | break; |
| 412 | } |
| 413 | } |
| 414 | |
| 415 | //-------------------------------------------------------------------------------------------------- |
| 416 | // Shared dispatcher |
no test coverage detected