%PDF- <> %âãÏÓ endobj 2 0 obj <> endobj 3 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/Annots[ 28 0 R 29 0 R] /MediaBox[ 0 0 595.5 842.25] /Contents 4 0 R/Group<>/Tabs/S>> endobj ºaâÚÎΞ-ÌE1ÍØÄ÷{òò2ÿ ÛÖ^ÔÀá TÎ{¦?§®¥kuµùÕ5sLOšuY>endobj 2 0 obj<>endobj 2 0 obj<>endobj 2 0 obj<>endobj 2 0 obj<> endobj 2 0 obj<>endobj 2 0 obj<>es 3 0 R>> endobj 2 0 obj<> ox[ 0.000000 0.000000 609.600000 935.600000]/Fi endobj 3 0 obj<> endobj 7 1 obj<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI]>>/Subtype/Form>> stream
// This file is generated by Array_h.template. // Copyright 2016 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef {{"_".join(config.protocol.namespace)}}_Array_h #define {{"_".join(config.protocol.namespace)}}_Array_h //#include "ErrorSupport.h" //#include "Forward.h" //#include "ValueConversions.h" //#include "Values.h" {% for namespace in config.protocol.namespace %} namespace {{namespace}} { {% endfor %} template<typename T> class Array { public: static std::unique_ptr<Array<T>> create() { return std::unique_ptr<Array<T>>(new Array<T>()); } static std::unique_ptr<Array<T>> fromValue(protocol::Value* value, ErrorSupport* errors) { protocol::ListValue* array = ListValue::cast(value); if (!array) { errors->addError("array expected"); return nullptr; } std::unique_ptr<Array<T>> result(new Array<T>()); errors->push(); for (size_t i = 0; i < array->size(); ++i) { errors->setName(StringUtil::fromInteger(i)); std::unique_ptr<T> item = ValueConversions<T>::fromValue(array->at(i), errors); result->m_vector.push_back(std::move(item)); } errors->pop(); if (errors->hasErrors()) return nullptr; return result; } void addItem(std::unique_ptr<T> value) { m_vector.push_back(std::move(value)); } size_t length() { return m_vector.size(); } T* get(size_t index) { return m_vector[index].get(); } std::unique_ptr<protocol::ListValue> toValue() { std::unique_ptr<protocol::ListValue> result = ListValue::create(); for (auto& item : m_vector) result->pushValue(ValueConversions<T>::toValue(item)); return result; } private: std::vector<std::unique_ptr<T>> m_vector; }; template<typename T> class ArrayBase { public: static std::unique_ptr<Array<T>> create() { return std::unique_ptr<Array<T>>(new Array<T>()); } static std::unique_ptr<Array<T>> fromValue(protocol::Value* value, ErrorSupport* errors) { protocol::ListValue* array = ListValue::cast(value); if (!array) { errors->addError("array expected"); return nullptr; } errors->push(); std::unique_ptr<Array<T>> result(new Array<T>()); for (size_t i = 0; i < array->size(); ++i) { errors->setName(StringUtil::fromInteger(i)); T item = ValueConversions<T>::fromValue(array->at(i), errors); result->m_vector.push_back(item); } errors->pop(); if (errors->hasErrors()) return nullptr; return result; } void addItem(const T& value) { m_vector.push_back(value); } size_t length() { return m_vector.size(); } T get(size_t index) { return m_vector[index]; } std::unique_ptr<protocol::ListValue> toValue() { std::unique_ptr<protocol::ListValue> result = ListValue::create(); for (auto& item : m_vector) result->pushValue(ValueConversions<T>::toValue(item)); return result; } private: std::vector<T> m_vector; }; template<> class Array<String> : public ArrayBase<String> {}; template<> class Array<int> : public ArrayBase<int> {}; template<> class Array<double> : public ArrayBase<double> {}; template<> class Array<bool> : public ArrayBase<bool> {}; {% for namespace in config.protocol.namespace %} } // namespace {{namespace}} {% endfor %} #endif // !defined({{"_".join(config.protocol.namespace)}}_Array_h)