name_value_pairs_parser.h revision ddb351dbec246cf1fab5ec20d2d5520909041de1
1ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen// Copyright (c) 2011 The Chromium Authors. All rights reserved. 2ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen// Use of this source code is governed by a BSD-style license that can be 3ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen// found in the LICENSE file. 4ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 5ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#ifndef CHROME_BROWSER_CHROMEOS_NAME_VALUE_PAIRS_PARSER_H_ 6ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#define CHROME_BROWSER_CHROMEOS_NAME_VALUE_PAIRS_PARSER_H_ 7ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#pragma once 8ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 9ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#include <map> 10ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#include <string> 11ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#include <vector> 12ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 13ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#include "base/basictypes.h" 14ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 15ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsennamespace chromeos { 16ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 17ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen// The parser is used to get machine info as name-value pairs. Defined 18ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen// here to be accessable by tests. 19ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsenclass NameValuePairsParser { 20ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen public: 21ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen typedef std::map<std::string, std::string> NameValueMap; 22ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 23ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen // The obtained info will be written into machine_info. 24ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen explicit NameValuePairsParser(NameValueMap* map); 25ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 26ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen void AddNameValuePair(const std::string& key, const std::string& value); 27ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 28ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen // Executes tool and inserts (key, <output>) into map_. 29ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen bool GetSingleValueFromTool(int argc, const char* argv[], 30ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen const std::string& key); 31ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen // Executes tool, parses the output using ParseNameValuePairs, 32ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen // and inserts the results into name_value_pairs_. 33ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen bool ParseNameValuePairsFromTool(int argc, const char* argv[], 34ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen const std::string& eq, 35ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen const std::string& delim); 36ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 37ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen private: 38ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen // This will parse strings with output in the format: 39ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen // <key><EQ><value><DELIM>[<key><EQ><value>][...] 40ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen // e.g. ParseNameValuePairs("key1=value1 key2=value2", "=", " ") 41ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen bool ParseNameValuePairs(const std::string& in_string, 42ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen const std::string& eq, 43ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen const std::string& delim); 44ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 45ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen NameValueMap* map_; 46ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 47ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen DISALLOW_COPY_AND_ASSIGN(NameValuePairsParser); 48ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen}; 49ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 50ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen} // namespace chromeos 51ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 52ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#endif // CHROME_BROWSER_CHROMEOS_NAME_VALUE_PAIRS_PARSER_H_ 53