chromium/services/service_manager/public/cpp/interface_provider_spec.h

// Copyright 2016 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_SERVICE_MANAGER_PUBLIC_CPP_INTERFACE_PROVIDER_SPEC_H_
#define SERVICES_SERVICE_MANAGER_PUBLIC_CPP_INTERFACE_PROVIDER_SPEC_H_

#include <map>
#include <set>
#include <string>
#include <unordered_map>

#include "services/service_manager/public/cpp/types_export.h"

namespace service_manager {

Capability;
CapabilitySet;
Interface;
InterfaceSet;
Name;

// See comments in
// services/service_manager/public/mojom/interface_provider_spec.mojom for
// a description of InterfaceProviderSpec.
struct SERVICE_MANAGER_PUBLIC_CPP_TYPES_EXPORT InterfaceProviderSpec {};

// Map of spec name -> spec.
InterfaceProviderSpecMap;

// Convenience for reading a spec named |spec_name| out of |map|. If such a spec
// is found, |spec| is modified and this function returns true. If a spec is not
// found, |spec| is unmodified and this function returns false.
bool SERVICE_MANAGER_PUBLIC_CPP_TYPES_EXPORT
GetInterfaceProviderSpec(const std::string& spec_name,
                         const InterfaceProviderSpecMap& map,
                         InterfaceProviderSpec* spec);

}  // namespace service_manager

#endif  // SERVICES_SERVICE_MANAGER_PUBLIC_CPP_INTERFACE_PROVIDER_SPEC_H_