diff options
Diffstat (limited to 'chromium/tools/clang/blink_gc_plugin/TracingStatus.h')
-rw-r--r-- | chromium/tools/clang/blink_gc_plugin/TracingStatus.h | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/chromium/tools/clang/blink_gc_plugin/TracingStatus.h b/chromium/tools/clang/blink_gc_plugin/TracingStatus.h new file mode 100644 index 00000000000..9eb1080de85 --- /dev/null +++ b/chromium/tools/clang/blink_gc_plugin/TracingStatus.h @@ -0,0 +1,29 @@ +// Copyright 2014 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef TOOLS_BLINK_GC_PLUGIN_TRACING_STATUS_H_ +#define TOOLS_BLINK_GC_PLUGIN_TRACING_STATUS_H_ + +// TracingStatus is a three-point value ordered by unneeded < unknown < needed. +class TracingStatus { + public: + static TracingStatus Unneeded() { return kUnneeded; } + static TracingStatus Unknown() { return kUnknown; } + static TracingStatus Needed() { return kNeeded; } + bool IsUnneeded() const { return status_ == kUnneeded; } + bool IsUnknown() const { return status_ == kUnknown; } + bool IsNeeded() const { return status_ == kNeeded; } + TracingStatus LUB(const TracingStatus& other) const { + return status_ > other.status_ ? status_ : other.status_; + } + bool operator==(const TracingStatus& other) const { + return status_ == other.status_; + } + private: + enum Status { kUnneeded, kUnknown, kNeeded }; + TracingStatus(Status status) : status_(status) {} + Status status_; +}; + +#endif // TOOLS_BLINK_GC_PLUGIN_TRACING_STATUS_H_ |