| OLD | NEW | 
|---|
| 1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 The Chromium Authors. All rights reserved. | 
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be | 
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. | 
| 4 | 4 | 
| 5 #ifndef {{"_".join(config.protocol.namespace)}}_Values_h | 5 #ifndef {{"_".join(config.protocol.namespace)}}_Values_h | 
| 6 #define {{"_".join(config.protocol.namespace)}}_Values_h | 6 #define {{"_".join(config.protocol.namespace)}}_Values_h | 
| 7 | 7 | 
| 8 //#include "Allocator.h" | 8 //#include "Allocator.h" | 
| 9 //#include "Collections.h" | 9 //#include "Collections.h" | 
| 10 //#include "Forward.h" | 10 //#include "Forward.h" | 
| 11 | 11 | 
| 12 {% for namespace in config.protocol.namespace %} | 12 {% for namespace in config.protocol.namespace %} | 
| 13 namespace {{namespace}} { | 13 namespace {{namespace}} { | 
| 14 {% endfor %} | 14 {% endfor %} | 
| 15 | 15 | 
| 16 class ListValue; | 16 class ListValue; | 
| 17 class DictionaryValue; | 17 class DictionaryValue; | 
| 18 class Value; | 18 class Value; | 
| 19 | 19 | 
| 20 class {{config.lib.export_macro}} Value { | 20 class {{config.lib.export_macro}} Value { | 
| 21     PROTOCOL_DISALLOW_COPY(Value); | 21     PROTOCOL_DISALLOW_COPY(Value); | 
| 22 public: | 22 public: | 
| 23     virtual ~Value() { } | 23     virtual ~Value() { } | 
| 24 | 24 | 
| 25     static std::unique_ptr<Value> null() | 25     static std::unique_ptr<Value> null() | 
| 26     { | 26     { | 
| 27         return wrapUnique(new Value()); | 27         return std::unique_ptr<Value>(new Value()); | 
| 28     } | 28     } | 
| 29 | 29 | 
| 30     enum ValueType { | 30     enum ValueType { | 
| 31         TypeNull = 0, | 31         TypeNull = 0, | 
| 32         TypeBoolean, | 32         TypeBoolean, | 
| 33         TypeInteger, | 33         TypeInteger, | 
| 34         TypeDouble, | 34         TypeDouble, | 
| 35         TypeString, | 35         TypeString, | 
| 36         TypeObject, | 36         TypeObject, | 
| 37         TypeArray, | 37         TypeArray, | 
| (...skipping 22 matching lines...) Expand all  Loading... | 
| 60     friend class DictionaryValue; | 60     friend class DictionaryValue; | 
| 61     friend class ListValue; | 61     friend class ListValue; | 
| 62 | 62 | 
| 63     ValueType m_type; | 63     ValueType m_type; | 
| 64 }; | 64 }; | 
| 65 | 65 | 
| 66 class {{config.lib.export_macro}} FundamentalValue : public Value { | 66 class {{config.lib.export_macro}} FundamentalValue : public Value { | 
| 67 public: | 67 public: | 
| 68     static std::unique_ptr<FundamentalValue> create(bool value) | 68     static std::unique_ptr<FundamentalValue> create(bool value) | 
| 69     { | 69     { | 
| 70         return wrapUnique(new FundamentalValue(value)); | 70         return std::unique_ptr<FundamentalValue>(new FundamentalValue(value)); | 
| 71     } | 71     } | 
| 72 | 72 | 
| 73     static std::unique_ptr<FundamentalValue> create(int value) | 73     static std::unique_ptr<FundamentalValue> create(int value) | 
| 74     { | 74     { | 
| 75         return wrapUnique(new FundamentalValue(value)); | 75         return std::unique_ptr<FundamentalValue>(new FundamentalValue(value)); | 
| 76     } | 76     } | 
| 77 | 77 | 
| 78     static std::unique_ptr<FundamentalValue> create(double value) | 78     static std::unique_ptr<FundamentalValue> create(double value) | 
| 79     { | 79     { | 
| 80         return wrapUnique(new FundamentalValue(value)); | 80         return std::unique_ptr<FundamentalValue>(new FundamentalValue(value)); | 
| 81     } | 81     } | 
| 82 | 82 | 
| 83     bool asBoolean(bool* output) const override; | 83     bool asBoolean(bool* output) const override; | 
| 84     bool asDouble(double* output) const override; | 84     bool asDouble(double* output) const override; | 
| 85     bool asInteger(int* output) const override; | 85     bool asInteger(int* output) const override; | 
| 86     void writeJSON(StringBuilder* output) const override; | 86     void writeJSON(StringBuilder* output) const override; | 
| 87     std::unique_ptr<Value> clone() const override; | 87     std::unique_ptr<Value> clone() const override; | 
| 88 | 88 | 
| 89 private: | 89 private: | 
| 90     explicit FundamentalValue(bool value) : Value(TypeBoolean), m_boolValue(valu
     e) { } | 90     explicit FundamentalValue(bool value) : Value(TypeBoolean), m_boolValue(valu
     e) { } | 
| 91     explicit FundamentalValue(int value) : Value(TypeInteger), m_integerValue(va
     lue) { } | 91     explicit FundamentalValue(int value) : Value(TypeInteger), m_integerValue(va
     lue) { } | 
| 92     explicit FundamentalValue(double value) : Value(TypeDouble), m_doubleValue(v
     alue) { } | 92     explicit FundamentalValue(double value) : Value(TypeDouble), m_doubleValue(v
     alue) { } | 
| 93 | 93 | 
| 94     union { | 94     union { | 
| 95         bool m_boolValue; | 95         bool m_boolValue; | 
| 96         double m_doubleValue; | 96         double m_doubleValue; | 
| 97         int m_integerValue; | 97         int m_integerValue; | 
| 98     }; | 98     }; | 
| 99 }; | 99 }; | 
| 100 | 100 | 
| 101 class {{config.lib.export_macro}} StringValue : public Value { | 101 class {{config.lib.export_macro}} StringValue : public Value { | 
| 102 public: | 102 public: | 
| 103     static std::unique_ptr<StringValue> create(const String& value) | 103     static std::unique_ptr<StringValue> create(const String& value) | 
| 104     { | 104     { | 
| 105         return wrapUnique(new StringValue(value)); | 105         return std::unique_ptr<StringValue>(new StringValue(value)); | 
| 106     } | 106     } | 
| 107 | 107 | 
| 108     static std::unique_ptr<StringValue> create(const char* value) | 108     static std::unique_ptr<StringValue> create(const char* value) | 
| 109     { | 109     { | 
| 110         return wrapUnique(new StringValue(value)); | 110         return std::unique_ptr<StringValue>(new StringValue(value)); | 
| 111     } | 111     } | 
| 112 | 112 | 
| 113     bool asString(String* output) const override; | 113     bool asString(String* output) const override; | 
| 114     void writeJSON(StringBuilder* output) const override; | 114     void writeJSON(StringBuilder* output) const override; | 
| 115     std::unique_ptr<Value> clone() const override; | 115     std::unique_ptr<Value> clone() const override; | 
| 116 | 116 | 
| 117 private: | 117 private: | 
| 118     explicit StringValue(const String& value) : Value(TypeString), m_stringValue
     (value) { } | 118     explicit StringValue(const String& value) : Value(TypeString), m_stringValue
     (value) { } | 
| 119     explicit StringValue(const char* value) : Value(TypeString), m_stringValue(v
     alue) { } | 119     explicit StringValue(const char* value) : Value(TypeString), m_stringValue(v
     alue) { } | 
| 120 | 120 | 
| 121     String m_stringValue; | 121     String m_stringValue; | 
| 122 }; | 122 }; | 
| 123 | 123 | 
| 124 class {{config.lib.export_macro}} SerializedValue : public Value { | 124 class {{config.lib.export_macro}} SerializedValue : public Value { | 
| 125 public: | 125 public: | 
| 126     static std::unique_ptr<SerializedValue> create(const String& value) | 126     static std::unique_ptr<SerializedValue> create(const String& value) | 
| 127     { | 127     { | 
| 128         return wrapUnique(new SerializedValue(value)); | 128         return std::unique_ptr<SerializedValue>(new SerializedValue(value)); | 
| 129     } | 129     } | 
| 130 | 130 | 
| 131     bool asSerialized(String* output) const override; | 131     bool asSerialized(String* output) const override; | 
| 132     void writeJSON(StringBuilder* output) const override; | 132     void writeJSON(StringBuilder* output) const override; | 
| 133     std::unique_ptr<Value> clone() const override; | 133     std::unique_ptr<Value> clone() const override; | 
| 134 | 134 | 
| 135 private: | 135 private: | 
| 136     explicit SerializedValue(const String& value) : Value(TypeSerialized), m_ser
     ializedValue(value) { } | 136     explicit SerializedValue(const String& value) : Value(TypeSerialized), m_ser
     ializedValue(value) { } | 
| 137 | 137 | 
| 138     String m_serializedValue; | 138     String m_serializedValue; | 
| 139 }; | 139 }; | 
| 140 | 140 | 
| 141 class {{config.lib.export_macro}} DictionaryValue : public Value { | 141 class {{config.lib.export_macro}} DictionaryValue : public Value { | 
| 142 public: | 142 public: | 
| 143     using Entry = std::pair<String, Value*>; | 143     using Entry = std::pair<String, Value*>; | 
| 144     static std::unique_ptr<DictionaryValue> create() | 144     static std::unique_ptr<DictionaryValue> create() | 
| 145     { | 145     { | 
| 146         return wrapUnique(new DictionaryValue()); | 146         return std::unique_ptr<DictionaryValue>(new DictionaryValue()); | 
| 147     } | 147     } | 
| 148 | 148 | 
| 149     static DictionaryValue* cast(Value* value) | 149     static DictionaryValue* cast(Value* value) | 
| 150     { | 150     { | 
| 151         if (!value || value->type() != TypeObject) | 151         if (!value || value->type() != TypeObject) | 
| 152             return nullptr; | 152             return nullptr; | 
| 153         return static_cast<DictionaryValue*>(value); | 153         return static_cast<DictionaryValue*>(value); | 
| 154     } | 154     } | 
| 155 | 155 | 
| 156     static std::unique_ptr<DictionaryValue> cast(std::unique_ptr<Value> value) | 156     static std::unique_ptr<DictionaryValue> cast(std::unique_ptr<Value> value) | 
| 157     { | 157     { | 
| 158         return wrapUnique(DictionaryValue::cast(value.release())); | 158         return std::unique_ptr<DictionaryValue>(DictionaryValue::cast(value.rele
     ase())); | 
| 159     } | 159     } | 
| 160 | 160 | 
| 161     void writeJSON(StringBuilder* output) const override; | 161     void writeJSON(StringBuilder* output) const override; | 
| 162     std::unique_ptr<Value> clone() const override; | 162     std::unique_ptr<Value> clone() const override; | 
| 163 | 163 | 
| 164     size_t size() const { return m_data.size(); } | 164     size_t size() const { return m_data.size(); } | 
| 165 | 165 | 
| 166     void setBoolean(const String& name, bool); | 166     void setBoolean(const String& name, bool); | 
| 167     void setInteger(const String& name, int); | 167     void setInteger(const String& name, int); | 
| 168     void setDouble(const String& name, double); | 168     void setDouble(const String& name, double); | 
| (...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 202 | 202 | 
| 203     using Dictionary = protocol::HashMap<String, std::unique_ptr<Value>>; | 203     using Dictionary = protocol::HashMap<String, std::unique_ptr<Value>>; | 
| 204     Dictionary m_data; | 204     Dictionary m_data; | 
| 205     std::vector<String> m_order; | 205     std::vector<String> m_order; | 
| 206 }; | 206 }; | 
| 207 | 207 | 
| 208 class {{config.lib.export_macro}} ListValue : public Value { | 208 class {{config.lib.export_macro}} ListValue : public Value { | 
| 209 public: | 209 public: | 
| 210     static std::unique_ptr<ListValue> create() | 210     static std::unique_ptr<ListValue> create() | 
| 211     { | 211     { | 
| 212         return wrapUnique(new ListValue()); | 212         return std::unique_ptr<ListValue>(new ListValue()); | 
| 213     } | 213     } | 
| 214 | 214 | 
| 215     static ListValue* cast(Value* value) | 215     static ListValue* cast(Value* value) | 
| 216     { | 216     { | 
| 217         if (!value || value->type() != TypeArray) | 217         if (!value || value->type() != TypeArray) | 
| 218             return nullptr; | 218             return nullptr; | 
| 219         return static_cast<ListValue*>(value); | 219         return static_cast<ListValue*>(value); | 
| 220     } | 220     } | 
| 221 | 221 | 
| 222     static std::unique_ptr<ListValue> cast(std::unique_ptr<Value> value) | 222     static std::unique_ptr<ListValue> cast(std::unique_ptr<Value> value) | 
| 223     { | 223     { | 
| 224         return wrapUnique(ListValue::cast(value.release())); | 224         return std::unique_ptr<ListValue>(ListValue::cast(value.release())); | 
| 225     } | 225     } | 
| 226 | 226 | 
| 227     ~ListValue() override; | 227     ~ListValue() override; | 
| 228 | 228 | 
| 229     void writeJSON(StringBuilder* output) const override; | 229     void writeJSON(StringBuilder* output) const override; | 
| 230     std::unique_ptr<Value> clone() const override; | 230     std::unique_ptr<Value> clone() const override; | 
| 231 | 231 | 
| 232     void pushValue(std::unique_ptr<Value>); | 232     void pushValue(std::unique_ptr<Value>); | 
| 233 | 233 | 
| 234     Value* at(size_t index); | 234     Value* at(size_t index); | 
| 235     size_t size() const { return m_data.size(); } | 235     size_t size() const { return m_data.size(); } | 
| 236 | 236 | 
| 237 private: | 237 private: | 
| 238     ListValue(); | 238     ListValue(); | 
| 239     std::vector<std::unique_ptr<Value>> m_data; | 239     std::vector<std::unique_ptr<Value>> m_data; | 
| 240 }; | 240 }; | 
| 241 | 241 | 
| 242 {% for namespace in config.protocol.namespace %} | 242 {% for namespace in config.protocol.namespace %} | 
| 243 } // namespace {{namespace}} | 243 } // namespace {{namespace}} | 
| 244 {% endfor %} | 244 {% endfor %} | 
| 245 | 245 | 
| 246 #endif // {{"_".join(config.protocol.namespace)}}_Values_h | 246 #endif // {{"_".join(config.protocol.namespace)}}_Values_h | 
| OLD | NEW | 
|---|