Index: third_party/courgette/region.h |
=================================================================== |
--- third_party/courgette/region.h (revision 0) |
+++ third_party/courgette/region.h (revision 0) |
@@ -0,0 +1,62 @@ |
+// Copyright (c) 2009 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 COURGETTE_REGION_H_ |
+#define COURGETTE_REGION_H_ |
+ |
+#include <string> |
+ |
+#include "base/basictypes.h" |
+ |
+namespace courgette { |
+ |
+// A Region is a descriptor for a region of memory. It has a start address and |
+// a length measured in bytes. The Region object does not own the memory. |
+// |
+class Region { |
+ public: |
+ // Default constructor: and empty region. |
+ Region() : start_(NULL), length_(0) {} |
+ |
+ // Usual constructor for regions given a |start| address and |length|. |
+ Region(const void* start, size_t length) |
+ : start_(static_cast<const uint8*>(start)), |
+ length_(length) { |
+ } |
+ |
+ // String constructor. Region is owned by the string, so the string should |
+ // have a lifetime greater than the region. |
+ explicit Region(const std::string& string) |
+ : start_(reinterpret_cast<const uint8*>(string.c_str())), |
+ length_(string.length()) { |
+ } |
+ |
+ // Copy constructor. |
+ Region(const Region& other) : start_(other.start_), length_(other.length_) {} |
+ |
+ // Assignment 'operator' makes |this| region the same as |other|. |
+ Region& assign(const Region& other) { |
+ this->start_ = other.start_; |
+ this->length_ = other.length_; |
+ return *this; |
+ } |
+ |
+ // Returns the starting address of the region. |
+ const uint8* start() const { return start_; } |
+ |
+ // Returns the length of the region. |
+ size_t length() const { return length_; } |
+ |
+ // Returns the address after the last byte of the region. |
+ const uint8* end() const { return start_ + length_; } |
+ |
+ private: |
+ const uint8* start_; |
+ size_t length_; |
+ |
+ void operator=(const Region&); // Disallow assignment operator. |
+}; |
+ |
+} // namespace |
+#endif // COURGETTE_REGION_H_ |