chromium/services/audio/group_coordinator-impl.h

// Copyright 2018 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef SERVICES_AUDIO_GROUP_COORDINATOR_IMPL_H_
#define SERVICES_AUDIO_GROUP_COORDINATOR_IMPL_H_

#include "base/compiler_specific.h"
#include "base/containers/contains.h"
#include "base/no_destructor.h"
#include "base/not_fatal_until.h"
#include "base/ranges/algorithm.h"

#if DCHECK_IS_ON()
#define DCHECK_INCREMENT_MUTATION_COUNT
#define DCHECK_REMEMBER_CURRENT_MUTATION_COUNT
#define DCHECK_MUTATION_COUNT_UNCHANGED
#else
#define DCHECK_INCREMENT_MUTATION_COUNT
#define DCHECK_REMEMBER_CURRENT_MUTATION_COUNT
#define DCHECK_MUTATION_COUNT_UNCHANGED
#endif

namespace audio {

template <typename Member>
GroupCoordinator<Member>::GroupCoordinator() {}

template <typename Member>
GroupCoordinator<Member>::~GroupCoordinator() {}

template <typename Member>
void GroupCoordinator<Member>::RegisterMember(
    const base::UnguessableToken& group_id,
    Member* member) {}

template <typename Member>
void GroupCoordinator<Member>::UnregisterMember(
    const base::UnguessableToken& group_id,
    Member* member) {}

template <typename Member>
void GroupCoordinator<Member>::AddObserver(
    const base::UnguessableToken& group_id,
    Observer* observer) {}

template <typename Member>
void GroupCoordinator<Member>::RemoveObserver(
    const base::UnguessableToken& group_id,
    Observer* observer) {}

template <typename Member>
void GroupCoordinator<Member>::ForEachMemberInGroup(
    const base::UnguessableToken& group_id,
    base::RepeatingCallback<void(Member*)> callback) const {}

template <typename Member>
const std::vector<Member*>& GroupCoordinator<Member>::GetCurrentMembersUnsafe(
    const base::UnguessableToken& group_id) const {}

template <typename Member>
typename GroupCoordinator<Member>::GroupMap::iterator
GroupCoordinator<Member>::FindGroup(const base::UnguessableToken& group_id) {}

template <typename Member>
void GroupCoordinator<Member>::MaybePruneGroupMapEntry(
    typename GroupMap::iterator it) {}

template <typename Member>
GroupCoordinator<Member>::Observer::~Observer() = default;

template <typename Member>
GroupCoordinator<Member>::Group::Group() = default;
template <typename Member>
GroupCoordinator<Member>::Group::~Group() = default;
template <typename Member>
GroupCoordinator<Member>::Group::Group(
    GroupCoordinator<Member>::Group&& other) = default;
template <typename Member>
typename GroupCoordinator<Member>::Group& GroupCoordinator<Member>::Group::
operator=(GroupCoordinator::Group&& other) = default;

}  // namespace audio

#if DCHECK_IS_ON()
#undef DCHECK_INCREMENT_MUTATION_COUNT
#undef DCHECK_REMEMBER_CURRENT_MUTATION_COUNT
#undef DCHECK_MUTATION_COUNT_UNCHANGED
#endif

#endif  // SERVICES_AUDIO_GROUP_COORDINATOR_IMPL_H_