static rj::Value _JsValueToImplValue( const JsValue& value, Allocator& allocator) { switch (value.GetType()) { case JsValue::ObjectType: return _ToImplObjectValue(value.GetJsObject(), allocator); case JsValue::ArrayType: return _ToImplArrayValue(value.GetJsArray(), allocator); case JsValue::BoolType: return rj::Value(value.GetBool()); case JsValue::StringType: return rj::Value(value.GetString().c_str(), allocator); case JsValue::RealType: return rj::Value(value.GetReal()); case JsValue::IntType: return value.IsUInt64() ? rj::Value(value.GetUInt64()) : rj::Value(value.GetInt64()); case JsValue::NullType: return rj::Value(); default: { TF_CODING_ERROR("Unknown JsValue type"); return rj::Value(); } } }
static void _CheckArrayOf( const JsValue& value) { IndenterScope scope(*indenter); TF_AXIOM(value.IsArrayOf<T>()); const std::vector<T> array = value.GetArrayOf<T>(); const JsArray& expArray = value.GetJsArray(); indent << "array.size = " << array.size() << ", expArray.size = " << expArray.size() << std::endl; for (size_t i = 0; i < array.size(); ++i) { TF_AXIOM(array[i] == expArray[i].Get<T>()); } }