#ifndef DYNAMIC_DEPTH_INCLUDES_DYNAMIC_DEPTH_VENDOR_INFO_H_ // NOLINT #define DYNAMIC_DEPTH_INCLUDES_DYNAMIC_DEPTH_VENDOR_INFO_H_ // NOLINT #include #include #include #include "dynamic_depth/element.h" #include "xmpmeta/xml/deserializer.h" #include "xmpmeta/xml/serializer.h" namespace dynamic_depth { /** * A VendorInfo element for a Dynamic Depth device. */ class VendorInfo : public Element { public: // Appends child elements' namespaces' and their respective hrefs to the // given collection, and any parent nodes' names to prefix_names. // Key: Name of the namespace. // Value: Full namespace URL. // Example: ("VendorInfo", "http://ns.google.com/photos/dd/1.0/vendorinfo/") void GetNamespaces( std::unordered_map* ns_name_href_map) override; // Serializes this object. bool Serialize( ::dynamic_depth::xmpmeta::xml::Serializer* serializer) const override; // Creates an VendorInfo from the given fields. Returns null if // any of the required fields is empty (see fields below). // Manufacturer is the manufacturer of the element that created the content. // Model is the model of the element that created the content. // Notes is general comments. static std::unique_ptr FromData(const string& manufacturer, const string& model, const string& notes); // Returns the deserialized VendorInfo; null if parsing fails. static std::unique_ptr FromDeserializer( const ::dynamic_depth::xmpmeta::xml::Deserializer& parent_deserializer, const string& namespace_str); // Returns the Manufacturer. const string& GetManufacturer() const; // Returns the Model. const string& GetModel() const; // Returns the Notes. const string& GetNotes() const; // Disallow copying. VendorInfo(const VendorInfo&) = delete; void operator=(const VendorInfo&) = delete; private: VendorInfo(); bool ParseFields( const ::dynamic_depth::xmpmeta::xml::Deserializer& deserializer); // Required field. string manufacturer_; // The manufacturer. // Optional fields. string model_; // The model. string notes_; // The notes. }; } // namespace dynamic_depth #endif // DYNAMIC_DEPTH_INCLUDES_DYNAMIC_DEPTH_VENDOR_INFO_H_ // NOLINT