910e62b5创建于 1月15日历史提交
// Copyright 2025 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef MOJO_CORE_IPCZ_DRIVER_VALIDATE_ENUM_H_
#define MOJO_CORE_IPCZ_DRIVER_VALIDATE_ENUM_H_

namespace mojo::core::ipcz_driver {

// Enum must have kMinValue and kMaxValue members and be non-sparse. Use this to
// validate that values from the wire are inside the expected range on receipt.
template <typename T>
bool ValidateEnum(T& value) {
  using UnderlyingType = std::underlying_type<T>::type;
  return static_cast<UnderlyingType>(value) >=
             static_cast<UnderlyingType>(T::kMinValue) &&
         static_cast<UnderlyingType>(value) <=
             static_cast<UnderlyingType>(T::kMaxValue);
}

}  // namespace mojo::core::ipcz_driver

#endif  // MOJO_CORE_IPCZ_DRIVER_VALIDATE_ENUM_H_