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)