diff options
author | jimblandy <jimblandy@4c0a9323-5329-0410-9bdc-e9ce6186880e> | 2010-02-05 17:17:24 +0000 |
---|---|---|
committer | jimblandy <jimblandy@4c0a9323-5329-0410-9bdc-e9ce6186880e> | 2010-02-05 17:17:24 +0000 |
commit | 2214cb9bc1872cafae9127778c0cba556c89e43d (patch) | |
tree | 9106ebba828abbb1eaf6fc0bed593ec113428a7a /src/google_breakpad/processor | |
parent | Breakpad processor: Save Windows unwinding data earlier in x86 walker. (diff) | |
download | breakpad-2214cb9bc1872cafae9127778c0cba556c89e43d.tar.xz |
Breakpad processor: Make PostfixEvaluator treat the MemoryRegion as const.
In order to be able to treat any MemoryRegion as const, the accessor
functions need to be declared this-const, which means annotations on
all the subclasses, etc. etc.
Since MinidumpMemoryRegion fills its memory_ member on demand, that
member needs to be marked 'mutable', but this is exactly the sort of
situation the 'mutable' keyword was intended for, so that seems all
right.
a=jimblandy, r=nealsid
git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@509 4c0a9323-5329-0410-9bdc-e9ce6186880e
Diffstat (limited to 'src/google_breakpad/processor')
-rw-r--r-- | src/google_breakpad/processor/memory_region.h | 14 | ||||
-rw-r--r-- | src/google_breakpad/processor/minidump.h | 20 |
2 files changed, 17 insertions, 17 deletions
diff --git a/src/google_breakpad/processor/memory_region.h b/src/google_breakpad/processor/memory_region.h index 1ac3fe8d..6e01cddf 100644 --- a/src/google_breakpad/processor/memory_region.h +++ b/src/google_breakpad/processor/memory_region.h @@ -1,4 +1,4 @@ -// Copyright (c) 2006, Google Inc. +// Copyright (c) 2010, Google Inc. // All rights reserved. // // Redistribution and use in source and binary forms, with or without @@ -50,10 +50,10 @@ class MemoryRegion { virtual ~MemoryRegion() {} // The base address of this memory region. - virtual u_int64_t GetBase() = 0; + virtual u_int64_t GetBase() const = 0; // The size of this memory region. - virtual u_int32_t GetSize() = 0; + virtual u_int32_t GetSize() const = 0; // Access to data of various sizes within the memory region. address // is a pointer to read, and it must lie within the memory region as @@ -63,10 +63,10 @@ class MemoryRegion { // program. Returns true on success. Fails and returns false if address // is out of the region's bounds (after considering the width of value), // or for other types of errors. - virtual bool GetMemoryAtAddress(u_int64_t address, u_int8_t* value) = 0; - virtual bool GetMemoryAtAddress(u_int64_t address, u_int16_t* value) = 0; - virtual bool GetMemoryAtAddress(u_int64_t address, u_int32_t* value) = 0; - virtual bool GetMemoryAtAddress(u_int64_t address, u_int64_t* value) = 0; + virtual bool GetMemoryAtAddress(u_int64_t address, u_int8_t* value) const =0; + virtual bool GetMemoryAtAddress(u_int64_t address, u_int16_t* value) const =0; + virtual bool GetMemoryAtAddress(u_int64_t address, u_int32_t* value) const =0; + virtual bool GetMemoryAtAddress(u_int64_t address, u_int64_t* value) const =0; }; diff --git a/src/google_breakpad/processor/minidump.h b/src/google_breakpad/processor/minidump.h index 2a83c3f0..4575fca3 100644 --- a/src/google_breakpad/processor/minidump.h +++ b/src/google_breakpad/processor/minidump.h @@ -1,4 +1,4 @@ -// Copyright (c) 2006, Google Inc. +// Copyright (c) 2010, Google Inc. // All rights reserved. // // Redistribution and use in source and binary forms, with or without @@ -242,22 +242,22 @@ class MinidumpMemoryRegion : public MinidumpObject, // Returns a pointer to the base of the memory region. Returns the // cached value if available, otherwise, reads the minidump file and // caches the memory region. - const u_int8_t* GetMemory(); + const u_int8_t* GetMemory() const; // The address of the base of the memory region. - u_int64_t GetBase(); + u_int64_t GetBase() const; // The size, in bytes, of the memory region. - u_int32_t GetSize(); + u_int32_t GetSize() const; // Frees the cached memory region, if cached. void FreeMemory(); // Obtains the value of memory at the pointer specified by address. - bool GetMemoryAtAddress(u_int64_t address, u_int8_t* value); - bool GetMemoryAtAddress(u_int64_t address, u_int16_t* value); - bool GetMemoryAtAddress(u_int64_t address, u_int32_t* value); - bool GetMemoryAtAddress(u_int64_t address, u_int64_t* value); + bool GetMemoryAtAddress(u_int64_t address, u_int8_t* value) const; + bool GetMemoryAtAddress(u_int64_t address, u_int16_t* value) const; + bool GetMemoryAtAddress(u_int64_t address, u_int32_t* value) const; + bool GetMemoryAtAddress(u_int64_t address, u_int64_t* value) const; // Print a human-readable representation of the object to stdout. void Print(); @@ -274,7 +274,7 @@ class MinidumpMemoryRegion : public MinidumpObject, // Implementation for GetMemoryAtAddress template<typename T> bool GetMemoryAtAddressInternal(u_int64_t address, - T* value); + T* value) const; // The largest memory region that will be read from a minidump. The // default is 1MB. @@ -285,7 +285,7 @@ class MinidumpMemoryRegion : public MinidumpObject, MDMemoryDescriptor* descriptor_; // Cached memory. - vector<u_int8_t>* memory_; + mutable vector<u_int8_t>* memory_; }; |