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