mirror of https://github.com/meshcore-dev/MeshCore
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
43 lines
1.2 KiB
43 lines
1.2 KiB
#pragma once
|
|
|
|
// Mock Stream class for native testing.
|
|
// Provides the Print/Stream surface used by Utils.cpp and RegionMap.cpp (BufStream).
|
|
|
|
#include <cstdint>
|
|
#include <cstddef>
|
|
#include <cstdio>
|
|
#include <cstdarg>
|
|
#include <cstring>
|
|
|
|
class Stream {
|
|
public:
|
|
virtual ~Stream() {}
|
|
|
|
virtual size_t write(uint8_t c) { (void)c; return 1; }
|
|
virtual size_t write(const uint8_t* buffer, size_t size) {
|
|
size_t written = 0;
|
|
while (written < size) {
|
|
if (!write(buffer[written])) break;
|
|
written++;
|
|
}
|
|
return written;
|
|
}
|
|
|
|
virtual int available() { return 0; }
|
|
virtual int read() { return -1; }
|
|
virtual int peek() { return -1; }
|
|
virtual void flush() {}
|
|
|
|
size_t print(char c) { return write((uint8_t)c); }
|
|
size_t print(const char* str) { return write((const uint8_t*)str, strlen(str)); }
|
|
size_t printf(const char* fmt, ...) {
|
|
char buf[256];
|
|
va_list ap;
|
|
va_start(ap, fmt);
|
|
int n = vsnprintf(buf, sizeof(buf), fmt, ap);
|
|
va_end(ap);
|
|
if (n < 0) return 0;
|
|
if (n > (int)sizeof(buf) - 1) n = sizeof(buf) - 1;
|
|
return write((const uint8_t*)buf, (size_t)n);
|
|
}
|
|
};
|
|
|