34 #ifndef COMMON_MEMORY_RANGE_H_    35 #define COMMON_MEMORY_RANGE_H_    70     data_ = 
reinterpret_cast<const uint8_t*
>(
data);
    72     length_ = data ? length : 0;
    77   bool Covers(
size_t sub_offset, 
size_t sub_length)
 const {
    82     return sub_offset < length_ &&
    83            sub_offset + sub_length >= sub_offset &&
    84            sub_offset + sub_length <= length_;
    90   const void* 
GetData(
size_t sub_offset, 
size_t sub_length)
 const {
    91     return Covers(sub_offset, sub_length) ? (data_ + sub_offset) : NULL;
    96   template <
typename DataType>
    97   const DataType* 
GetData(
size_t sub_offset)
 const {
    98     return reinterpret_cast<const DataType*
>(
    99         GetData(sub_offset, 
sizeof(DataType)));
   107                               unsigned element_index)
 const {
   108     size_t sub_offset = element_offset + element_index * element_size;
   109     return GetData(sub_offset, element_size);
   115   template <
typename ElementType>
   117                                      unsigned element_index)
 const {
   118     return reinterpret_cast<const ElementType*
>(
   125     return Covers(sub_offset, sub_length) ?
   130   const uint8_t* 
data()
 const { 
return data_; }
   133   size_t length()
 const { 
return length_; }
   137   const uint8_t* data_;
   145 #endif  // COMMON_MEMORY_RANGE_H_ MemoryRange(const void *data, size_t length)
 
MemoryRange Subrange(size_t sub_offset, size_t sub_length) const 
 
const void * GetArrayElement(size_t element_offset, size_t element_size, unsigned element_index) const 
 
const ElementType * GetArrayElement(size_t element_offset, unsigned element_index) const 
 
const void * GetData(size_t sub_offset, size_t sub_length) const 
 
const DataType * GetData(size_t sub_offset) const 
 
bool Covers(size_t sub_offset, size_t sub_length) const 
 
const uint8_t * data() const 
 
void Set(const void *data, size_t length)