mirror of
https://github.com/encounter/dawn-cmake.git
synced 2025-08-05 11:45:54 +00:00
This PR condenses the namespaces in the tint/reader/spirv folder. Change-Id: I80cf1e7d3587020359d790381d147fde140b0ba5 Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/86033 Reviewed-by: Ben Clayton <bclayton@google.com> Auto-Submit: Dan Sinclair <dsinclair@chromium.org> Commit-Queue: Dan Sinclair <dsinclair@chromium.org>
71 lines
2.2 KiB
C++
71 lines
2.2 KiB
C++
// Copyright 2020 The Tint Authors
|
|
//
|
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
// you may not use this file except in compliance with the License.
|
|
// You may obtain a copy of the License at
|
|
//
|
|
// http://www.apache.org/licenses/LICENSE-2.0
|
|
//
|
|
// Unless required by applicable law or agreed to in writing, software
|
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
// See the License for the specific language governing permissions and
|
|
// limitations under the License.
|
|
|
|
#ifndef SRC_TINT_READER_SPIRV_FAIL_STREAM_H_
|
|
#define SRC_TINT_READER_SPIRV_FAIL_STREAM_H_
|
|
|
|
#include <ostream>
|
|
|
|
namespace tint::reader::spirv {
|
|
|
|
/// A FailStream object accumulates values onto a given std::ostream,
|
|
/// and can be used to record failure by writing the false value
|
|
/// to given a pointer-to-bool.
|
|
class FailStream {
|
|
public:
|
|
/// Creates a new fail stream
|
|
/// @param status_ptr where we will write false to indicate failure. Assumed
|
|
/// to be a valid pointer to bool.
|
|
/// @param out output stream where a message should be written to explain
|
|
/// the failure
|
|
FailStream(bool* status_ptr, std::ostream* out)
|
|
: status_ptr_(status_ptr), out_(out) {}
|
|
/// Copy constructor
|
|
/// @param other the fail stream to clone
|
|
FailStream(const FailStream& other) = default;
|
|
|
|
/// Converts to a boolean status. A true result indicates success,
|
|
/// and a false result indicates failure.
|
|
/// @returns the status
|
|
operator bool() const { return *status_ptr_; }
|
|
/// Returns the current status value. This can be more readable
|
|
/// the conversion operator.
|
|
/// @returns the status
|
|
bool status() const { return *status_ptr_; }
|
|
|
|
/// Records failure.
|
|
/// @returns a FailStream
|
|
FailStream& Fail() {
|
|
*status_ptr_ = false;
|
|
return *this;
|
|
}
|
|
|
|
/// Appends the given value to the message output stream.
|
|
/// @param val the value to write to the output stream.
|
|
/// @returns this object
|
|
template <typename T>
|
|
FailStream& operator<<(const T& val) {
|
|
*out_ << val;
|
|
return *this;
|
|
}
|
|
|
|
private:
|
|
bool* status_ptr_;
|
|
std::ostream* out_;
|
|
};
|
|
|
|
} // namespace tint::reader::spirv
|
|
|
|
#endif // SRC_TINT_READER_SPIRV_FAIL_STREAM_H_
|