lokinet/llarp/util/mem.hpp
Thomas Winget 7caa87862e standardize include format and pragma once
All #ifndef guards on headers have been removed, I think,
in favor of #pragma once

Headers are now included as `#include "filename"` if the included file
resides in the same directory as the file including it, or any
subdirectory therein.  Otherwise they are included as
`#include <project/top/dir/relative/path/filename>`

The above does not include system/os headers.
2021-03-09 19:01:41 -05:00

94 lines
1.6 KiB
C++

#pragma once
#include "buffer.hpp"
#include "mem.h"
#include <cctype>
#include <cstdio>
#include <memory>
namespace llarp
{
void
Zero(void* ptr, size_t sz);
template <typename T>
void
dumphex(const uint8_t* t)
{
size_t idx = 0;
while (idx < sizeof(T))
{
printf("%.2x ", t[idx++]);
if (idx % 8 == 0)
printf("\n");
}
}
template <typename T, size_t align = 128>
void
DumpBufferHex(const T& buff)
{
size_t idx = 0;
printf("buffer of size %zu\n", buff.sz);
while (idx < buff.sz)
{
if (buff.base + idx == buff.cur)
{
#ifndef _WIN32
printf("%c[1;31m", 27);
#endif
}
printf("%.2x", buff.base[idx]);
if (buff.base + idx == buff.cur)
{
#ifndef _WIN32
printf("%c[0;0m", 27);
#endif
}
++idx;
if (idx % align == 0)
printf("\n");
}
printf("\n");
fflush(stdout);
}
template <typename T, size_t align = 128>
void
DumpBuffer(const T& buff)
{
size_t idx = 0;
printf("buffer of size %zu\n", buff.sz);
while (idx < buff.sz)
{
if (buff.base + idx == buff.cur)
{
#ifndef _WIN32
printf("%c[1;31m", 27);
#endif
}
if (std::isprint(buff.base[idx]))
{
printf("%c", buff.base[idx]);
}
else
{
printf(".");
}
if (buff.base + idx == buff.cur)
{
#ifndef _WIN32
printf("%c[0;0m", 27);
#endif
}
++idx;
if (idx % align == 0)
printf("\n");
}
printf("\n");
fflush(stdout);
}
} // namespace llarp