chromium/third_party/openscreen/src/util/enum_name_table.h

// Copyright 2020 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
//
// This file contains helpers for working with enums that require
// both enum->string and string->enum conversions.

#ifndef UTIL_ENUM_NAME_TABLE_H_
#define UTIL_ENUM_NAME_TABLE_H_

#include <array>
#include <string_view>
#include <utility>

#include "platform/base/error.h"
#include "util/osp_logging.h"
#include "util/string_util.h"

namespace openscreen {

constexpr char kUnknownEnumError[] =;

EnumNameTable;

// Get the name of an enum from the enum value.
template <typename Enum, size_t Size>
ErrorOr<const char*> GetEnumName(const EnumNameTable<Enum, Size>& map,
                                 Enum enum_) {}

// Get the value of an enum from the enum name.
template <typename Enum, size_t Size>
ErrorOr<Enum> GetEnum(const EnumNameTable<Enum, Size>& map,
                      std::string_view name) {}

}  // namespace openscreen
#endif  // UTIL_ENUM_NAME_TABLE_H_