aboutsummaryrefslogtreecommitdiffhomepage
path: root/modules/skottie/src/SkottieJson.h
diff options
context:
space:
mode:
Diffstat (limited to 'modules/skottie/src/SkottieJson.h')
-rw-r--r--modules/skottie/src/SkottieJson.h62
1 files changed, 10 insertions, 52 deletions
diff --git a/modules/skottie/src/SkottieJson.h b/modules/skottie/src/SkottieJson.h
index 76e17c610e..98ee25a3ce 100644
--- a/modules/skottie/src/SkottieJson.h
+++ b/modules/skottie/src/SkottieJson.h
@@ -8,68 +8,26 @@
#ifndef SkottieJson_DEFINED
#define SkottieJson_DEFINED
+#include "SkJSON.h"
#include "SkRefCnt.h"
-#include "rapidjson/document.h"
-
class SkData;
class SkStream;
class SkString;
namespace skottie {
-namespace json {
-
-class ValueRef {
-public:
- ValueRef() : fValue(nullptr) {}
- ValueRef(const rapidjson::Value& v) : fValue(v.IsNull() ? nullptr : &v) {}
-
- bool isNull() const { return !fValue; }
- bool isObject() const { return fValue && fValue->IsObject(); }
- bool isArray() const { return fValue && fValue->IsArray(); }
-
- template <typename T>
- bool to(T*) const;
+template <typename T>
+bool Parse(const skjson::Value&, T*);
- template <typename T>
- T toDefault(const T& defaultValue) const {
- T v;
- if (!this->to<T>(&v)) {
- v = defaultValue;
- }
- return v;
+template <typename T>
+T ParseDefault(const skjson::Value& v, const T& defaultValue) {
+ T res;
+ if (!Parse<T>(v, &res)) {
+ res = defaultValue;
}
-
- size_t size() const;
- ValueRef operator[](size_t i) const;
- ValueRef operator[](const char* key) const;
-
- bool operator==(const ValueRef& other) const { return fValue == other.fValue; }
- bool operator!=(const ValueRef& other) const { return !(*this == other); }
-
- const rapidjson::Value* begin() const;
- const rapidjson::Value* end() const;
-
- SkString toString() const;
-
-private:
- const rapidjson::Value* fValue;
-};
-
-// Container for the json DOM
-class Document {
-public:
- explicit Document(SkStream*);
-
- ValueRef root() const { return fDocument; }
-
-private:
- sk_sp<SkData> fData; // raw data
- rapidjson::Document fDocument; // in-place json DOM
-};
-
-} // namespace json
+ return res;
+}
} // namespace skottie