| // Copyright 2019 The Fuchsia Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #include <lib/disk-inspector/common-types.h> |
| |
| namespace disk_inspector { |
| |
| template <typename T> |
| PrimitiveType<T>::PrimitiveType(fbl::String name, const T* value) : name_(name), value_(value) { |
| ZX_DEBUG_ASSERT_MSG(value, "Null input buffer value is not allowed"); |
| } |
| |
| template <typename T> |
| void PrimitiveType<T>::GetValue(const void** out_buffer, size_t* out_buffer_size) const { |
| ZX_DEBUG_ASSERT_MSG(out_buffer, "Null output buffer value is not allowed"); |
| ZX_DEBUG_ASSERT_MSG(out_buffer_size, "Zero-sized output buffer is not allowed"); |
| |
| *out_buffer = value_; |
| *out_buffer_size = sizeof(*value_); |
| } |
| |
| template class PrimitiveType<uint32_t>; |
| template class PrimitiveType<uint64_t>; |
| template class PrimitiveType<char>; |
| |
| template <typename T> |
| PrimitiveTypeArray<T>::PrimitiveTypeArray(fbl::String name, const T* value, size_t size) |
| : name_(name), value_(value), size_(size) { |
| ZX_DEBUG_ASSERT_MSG(value, "Null input buffer value is not allowed"); |
| ZX_DEBUG_ASSERT_MSG(size, "Zero-sized arrays are not allowed"); |
| } |
| |
| template <typename T> |
| std::unique_ptr<DiskObject> PrimitiveTypeArray<T>::GetElementAt(uint32_t index) const { |
| if (index >= size_) { |
| return nullptr; |
| } |
| return std::make_unique<PrimitiveType<T>>(name_, value_ + index); |
| } |
| |
| template class PrimitiveTypeArray<uint32_t>; |
| template class PrimitiveTypeArray<uint64_t>; |
| template class PrimitiveTypeArray<char>; |
| |
| } // namespace disk_inspector |