// Copyright 2019 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef PRINTING_BACKEND_IPP_HANDLER_MAP_H_
#define PRINTING_BACKEND_IPP_HANDLER_MAP_H_
#include <map>
#include <string_view>
#include "base/functional/callback.h"
#include "printing/backend/print_backend.h"
namespace printing {
class CupsOptionProvider;
// Handles IPP attribute, usually by adding 1 or more items to `caps`.
using AttributeHandler =
base::RepeatingCallback<void(const CupsOptionProvider& printer,
const char* name,
AdvancedCapabilities* caps)>;
using HandlerMap = std::map<std::string_view, AttributeHandler>;
// Produces mapping from attribute names to handlers based on their type.
// Implementation is generated by //printing/backend/tools/code_generator.py
// based on list provided by IANA.
HandlerMap GenerateHandlers();
} // namespace printing
#endif // PRINTING_BACKEND_IPP_HANDLER_MAP_H_