chromium/third_party/inspector_protocol/crdtp/error_support.h

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

#ifndef CRDTP_ERROR_SUPPORT_H_
#define CRDTP_ERROR_SUPPORT_H_

#include <cstdint>
#include <string>
#include <vector>
#include "export.h"
#include "span.h"

namespace crdtp {
// =============================================================================
// ErrorSupport - For tracking errors in tree structures.
// =============================================================================

// This abstraction is used when converting between Values and inspector
// objects, e.g. in lib/ValueConversions_{h,cc}.template. As the processing
// enters and exits a branch, we call Push / Pop. Within the branch,
// we either set the name or an index (in case we're processing the element of a
// list/vector). Only once an error is seen, the path which is now on the
// stack is materialized and prefixes the error message. E.g.,
// "foo.bar.2: some error". After error collection, ::Errors() is used to
// access the message.
class CRDTP_EXPORT ErrorSupport {};

}  // namespace crdtp

#endif  // CRDTP_ERROR_SUPPORT_H_