1a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)// Copyright 2014 The Chromium Authors. All rights reserved. 2a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 3a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)// found in the LICENSE file. 4a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 5a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)#ifndef TOOLS_BLINK_GC_PLUGIN_TRACING_STATUS_H_ 6a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)#define TOOLS_BLINK_GC_PLUGIN_TRACING_STATUS_H_ 7a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 8a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)// TracingStatus is a three-point value ordered by unneeded < unknown < needed. 9a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)class TracingStatus { 10a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) public: 11a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) static TracingStatus Unneeded() { return kUnneeded; } 12a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) static TracingStatus Unknown() { return kUnknown; } 13a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) static TracingStatus Needed() { return kNeeded; } 14a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) bool IsUnneeded() const { return status_ == kUnneeded; } 15a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) bool IsUnknown() const { return status_ == kUnknown; } 16a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) bool IsNeeded() const { return status_ == kNeeded; } 17a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) TracingStatus LUB(const TracingStatus& other) const { 18a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) return status_ > other.status_ ? status_ : other.status_; 19a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) } 20a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) bool operator==(const TracingStatus& other) const { 21a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) return status_ == other.status_; 22a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) } 23a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) private: 24a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) enum Status { kUnneeded, kUnknown, kNeeded }; 25a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) TracingStatus(Status status) : status_(status) {} 26a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) Status status_; 27a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)}; 28a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 29a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)#endif // TOOLS_BLINK_GC_PLUGIN_TRACING_STATUS_H_ 30