// Copyright (c) 2010 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 CHROME_BROWSER_PARSERS_METADATA_PARSER_H_ #define CHROME_BROWSER_PARSERS_METADATA_PARSER_H_ #pragma once #include <string> class FilePath; // Allows for Iteration on the Properties of a given file. class MetadataPropertyIterator { public: MetadataPropertyIterator() {} virtual ~MetadataPropertyIterator() {} // Gets the next Property in the iterator. Returns false if at the end // of the list. virtual bool GetNext(std::string* key, std::string* value) = 0; // Gets the number of Properties in this iterator. virtual int Length() = 0; // Checks to see if we're at the end of the list. virtual bool IsEnd() = 0; }; // Represents a single instance of parsing on a particular file. class MetadataParser { public: explicit MetadataParser(const FilePath& path) {} virtual ~MetadataParser() {} static const char* kPropertyType; static const char* kPropertyFilesize; static const char* kPropertyTitle; // Does all the heavy work of parsing out the file. Blocking until complete. virtual bool Parse() = 0; // Gets a particular property found in a parse call. virtual bool GetProperty(const std::string& key, std::string* value) = 0; // Gets an interator allowing you to iterate over all the properties found // in a parse call. virtual MetadataPropertyIterator* GetPropertyIterator() = 0; }; #endif // CHROME_BROWSER_PARSERS_METADATA_PARSER_H_