// Copyright (c) 2012 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. // // Helper functions that allow to map enum values to strings. namespace remoting { namespace protocol { template struct NameMapElement { const T value; const char* const name; }; template const char* ValueToName(const NameMapElement (&map)[N], T value) { for (size_t i = 0; i < N; ++i) { if (map[i].value == value) return map[i].name; } NOTREACHED(); return NULL; } template bool NameToValue(const NameMapElement (&map)[N], const std::string& name, T* result) { for (size_t i = 0; i < N; ++i) { if (map[i].name == name) { *result = map[i].value; return true; } } return false; } } // namespace protocol } // namespace remoting