• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright (c) 2013 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 ASH_DISPLAY_DISPLAY_PREF_UTIL_H
6 #define ASH_DISPLAY_DISPLAY_PREF_UTIL_H
7 
8 #include <map>
9 #include <string>
10 
11 #include "base/strings/string_piece.h"
12 
13 namespace ash {
14 
15 // Utility templates to create enum to string map and
16 // a function to find an enum value from a string.
17 template<typename T>
CreateToStringMap(T k1,const std::string & v1,T k2,const std::string & v2,T k3,const std::string & v3,T k4,const std::string & v4)18 std::map<T, std::string>* CreateToStringMap(T k1, const std::string& v1,
19                                             T k2, const std::string& v2,
20                                             T k3, const std::string& v3,
21                                             T k4, const std::string& v4) {
22   std::map<T, std::string>* map = new std::map<T, std::string>();
23   (*map)[k1] = v1;
24   (*map)[k2] = v2;
25   (*map)[k3] = v3;
26   (*map)[k4] = v4;
27   return map;
28 }
29 
30 template<typename T>
CreateToStringMap(T k1,const std::string & v1,T k2,const std::string & v2,T k3,const std::string & v3)31 std::map<T, std::string>* CreateToStringMap(T k1, const std::string& v1,
32                                             T k2, const std::string& v2,
33                                             T k3, const std::string& v3) {
34   std::map<T, std::string>* map = new std::map<T, std::string>();
35   (*map)[k1] = v1;
36   (*map)[k2] = v2;
37   (*map)[k3] = v3;
38   return map;
39 }
40 
41 template<typename T>
ReverseFind(const std::map<T,std::string> * map,const base::StringPiece & value,T * key)42 bool ReverseFind(const std::map<T, std::string>* map,
43                  const base::StringPiece& value,
44                  T* key) {
45   typename std::map<T, std::string>::const_iterator iter = map->begin();
46   for (;
47        iter != map->end();
48        ++iter) {
49     if (iter->second == value) {
50       *key = iter->first;
51       return true;
52     }
53   }
54   return false;
55 }
56 
57 }  // namespace ash
58 
59 #endif  // ASH_DISPLAY_DISPLAY_PREF_UTIL_H
60