OLD | NEW |
(Empty) | |
| 1 // Copyright (c) 2009 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. |
| 4 |
| 5 #ifndef CHROME_BROWSER_SYNC_UTIL_DBGQ_H_ |
| 6 #define CHROME_BROWSER_SYNC_UTIL_DBGQ_H_ |
| 7 |
| 8 #include "base/basictypes.h" // for COMPILE_ASSERT |
| 9 |
| 10 // A circular queue that is designed to be easily inspectable in a debugger. It |
| 11 // puts the elements into the array in reverse, so you can just look at the i_ |
| 12 // pointer for a recent history. |
| 13 template <typename T, size_t size> |
| 14 class DebugQueue { |
| 15 COMPILE_ASSERT(size > 0, DebugQueue_size_must_be_greater_than_zero); |
| 16 public: |
| 17 DebugQueue() : i_(array_) { } |
| 18 void Push(const T& t) { |
| 19 i_ = (array_ == i_ ? array_ + size - 1 : i_ - 1); |
| 20 *i_ = t; |
| 21 } |
| 22 protected: |
| 23 T* i_; // Points to the newest element in the queue. |
| 24 T array_[size]; |
| 25 }; |
| 26 |
| 27 #endif // CHROME_BROWSER_SYNC_UTIL_DBGQ_H_ |
OLD | NEW |