From 7f3cda0ab3cb064239148c9f312687db1c901a34 Mon Sep 17 00:00:00 2001 From: Gary Talent Date: Thu, 15 Feb 2018 22:22:55 -0600 Subject: [PATCH] Add ioOp for TraceMsg and cleanup MetalClaw --- deps/ox/src/ox/mc/read.hpp | 2 +- deps/ox/src/ox/mc/test/tests.cpp | 6 +++--- deps/ox/src/ox/mc/write.hpp | 6 +++++- deps/ox/src/ox/trace/trace.cpp | 9 ++++++++- deps/ox/src/ox/trace/trace.hpp | 23 ++++++++++++++++++----- 5 files changed, 35 insertions(+), 11 deletions(-) diff --git a/deps/ox/src/ox/mc/read.hpp b/deps/ox/src/ox/mc/read.hpp index 502150cc..8add0879 100644 --- a/deps/ox/src/ox/mc/read.hpp +++ b/deps/ox/src/ox/mc/read.hpp @@ -159,7 +159,7 @@ int MetalClawReader::op(const char*, T *val, size_t valLen) { }; template -int read(uint8_t *buff, size_t buffLen, T *val) { +int readMC(uint8_t *buff, size_t buffLen, T *val) { MetalClawReader reader(buff, buffLen); return ioOp(&reader, val); } diff --git a/deps/ox/src/ox/mc/test/tests.cpp b/deps/ox/src/ox/mc/test/tests.cpp index 8d9f494f..24c2c621 100644 --- a/deps/ox/src/ox/mc/test/tests.cpp +++ b/deps/ox/src/ox/mc/test/tests.cpp @@ -83,7 +83,7 @@ map tests = { int err = 0; TestStruct ts; - err |= write(buff, buffLen, &ts); + err |= writeMC(buff, buffLen, &ts); delete []buff; @@ -109,8 +109,8 @@ map tests = { testIn.Struct.Int = 300; testIn.Struct.String = "Test String 2"; - err |= write(buff, buffLen, &testIn); - err |= read(buff, buffLen, &testOut); + err |= writeMC(buff, buffLen, &testIn); + err |= readMC(buff, buffLen, &testOut); err |= !(testIn.Bool == testOut.Bool); err |= !(testIn.Int == testOut.Int); diff --git a/deps/ox/src/ox/mc/write.hpp b/deps/ox/src/ox/mc/write.hpp index ef5a3110..52c922b5 100644 --- a/deps/ox/src/ox/mc/write.hpp +++ b/deps/ox/src/ox/mc/write.hpp @@ -8,6 +8,7 @@ #pragma once +#include #include #include #include "err.hpp" @@ -44,6 +45,9 @@ class MetalClawWriter { template int op(const char*, T *val, size_t len); + template + int op(const char*, const char *val); + template int op(const char*, ox::BString *val); @@ -153,7 +157,7 @@ int MetalClawWriter::op(const char*, T *val, size_t len) { }; template -int write(uint8_t *buff, size_t buffLen, T *val, size_t *sizeOut = nullptr) { +int writeMC(uint8_t *buff, size_t buffLen, T *val, size_t *sizeOut = nullptr) { MetalClawWriter writer(buff, buffLen); auto err = ioOp(&writer, val); if (sizeOut) { diff --git a/deps/ox/src/ox/trace/trace.cpp b/deps/ox/src/ox/trace/trace.cpp index 2bd43239..22fe8215 100644 --- a/deps/ox/src/ox/trace/trace.cpp +++ b/deps/ox/src/ox/trace/trace.cpp @@ -6,7 +6,7 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -#include +#include #include "trace.hpp" @@ -19,4 +19,11 @@ OutStream::OutStream(const char *file, int line, const char *ch, const char *msg m_msg.msg = msg; } +OutStream::~OutStream() { + constexpr size_t buffLen = 1024; + size_t size = 0; + uint8_t buff[buffLen]; + writeMC(buff, buffLen, &m_msg, &size); +} + } diff --git a/deps/ox/src/ox/trace/trace.hpp b/deps/ox/src/ox/trace/trace.hpp index 73b652cb..6fb28a59 100644 --- a/deps/ox/src/ox/trace/trace.hpp +++ b/deps/ox/src/ox/trace/trace.hpp @@ -13,13 +13,24 @@ namespace ox { struct TraceMsg { - const char *file; - int line; - uint64_t time; - const char *ch; + ox::BString<150> file = ""; + int line = 0; + uint64_t time = 0; + ox::BString<50> ch = ""; ox::BString<100> msg; }; +template +int ioOp(T *io, ox::TraceMsg *obj) { + int32_t err = 0; + io->setFields(5); + err |= io->op("file", &obj->file); + err |= io->op("line", &obj->line); + err |= io->op("time", &obj->time); + err |= io->op("msg", &obj->msg); + return err; +} + class OutStream { private: @@ -30,6 +41,8 @@ class OutStream { OutStream(const char *file, int line, const char *ch, const char *msg = ""); + ~OutStream(); + template OutStream &operator<<(T v) { m_msg.msg += " "; @@ -41,4 +54,4 @@ class OutStream { } -#define oxTrace(ch, msg) ox::OutStream(__FILE__, __LINE__, ch, msg) +#define oxTrace(ch) ox::OutStream(__FILE__, __LINE__, ch)