// Copyright 2020 David Robillard <d@drobilla.net>
// SPDX-License-Identifier: GPL-3.0-or-later

#ifndef PATCHAGE_CLIENTTYPE_HPP
#define PATCHAGE_CLIENTTYPE_HPP

#include "warnings.hpp"

PATCHAGE_DISABLE_FMT_WARNINGS
#include <fmt/core.h>
#include <fmt/ostream.h>
PATCHAGE_RESTORE_WARNINGS

#include <ostream>

namespace patchage {

/// A type of client (program) with supported ports
enum class ClientType {
  jack,
  alsa,
};

inline std::ostream&
operator<<(std::ostream& os, const ClientType type)
{
  switch (type) {
  case ClientType::jack:
    return os << "JACK";
  case ClientType::alsa:
    return os << "ALSA";
  }

  return os;
}

} // namespace patchage

template<>
struct fmt::formatter<patchage::ClientType> : fmt::ostream_formatter {};

#endif // PATCHAGE_CLIENTTYPE_HPP