1 /* 2 * Copyright 2013, Ingo Weinhold, ingo_weinhold@gmx.de. 3 * Distributed under the terms of the MIT License. 4 */ 5 #ifndef _KERNEL_DEBUG_HEX_DUMP_H 6 #define _KERNEL_DEBUG_HEX_DUMP_H 7 8 9 #include <debug.h> 10 11 12 namespace BKernel { 13 14 15 enum { 16 HEX_DUMP_FLAG_OMIT_ADDRESS = 0x01 17 }; 18 19 20 class HexDumpDataProvider { 21 public: 22 virtual ~HexDumpDataProvider(); 23 24 virtual bool HasMoreData() const = 0; 25 virtual uint8 NextByte() = 0; 26 virtual bool GetAddressString(char* buffer, 27 size_t bufferSize) const; 28 }; 29 30 31 class HexDumpBufferDataProvider : public HexDumpDataProvider { 32 public: 33 HexDumpBufferDataProvider(const void* data, 34 size_t dataSize); 35 36 virtual bool HasMoreData() const; 37 virtual uint8 NextByte(); 38 virtual bool GetAddressString(char* buffer, 39 size_t bufferSize) const; 40 41 private: 42 const uint8* fData; 43 size_t fDataSize; 44 }; 45 46 47 void print_hex_dump(HexDumpDataProvider& data, size_t maxBytes, 48 uint32 flags = 0); 49 void print_hex_dump(const void* data, size_t maxBytes, uint32 flags = 0); 50 51 52 } // namespace BKernel 53 54 55 #endif /* _KERNEL_DEBUG_HEX_DUMP_H */ 56