Merge commit '12371c21d206cb07a5db91fc81d55cd740bd12f0'

This commit is contained in:
Gary Talent 2017-12-22 00:32:18 -06:00
commit 3d77d6425e
6 changed files with 64 additions and 4 deletions

View File

@ -3,9 +3,10 @@ if("${CMAKE_FIND_ROOT_PATH}" STREQUAL "")
set(OxStd_LIBRARY /usr/local/lib/ox/libOxStd.a)
set(OxFS_LIBRARY /usr/local/lib/ox/libOxFS.a)
set(OxClArgs_LIBRARY /usr/local/lib/ox/libOxClArgs.a)
set(OxMetalClaw /usr/local/lib/ox/libOxMetalClaw.a)
else("${CMAKE_FIND_ROOT_PATH}" STREQUAL "")
set(Ox_INCLUDE_DIRS ${CMAKE_FIND_ROOT_PATH}/include/)
set(OxStd_LIBRARY ${CMAKE_FIND_ROOT_PATH}/lib/ox/libOxStd.a)
set(OxFS_LIBRARY ${CMAKE_FIND_ROOT_PATH}/lib/ox/libOxFS.a)
set(OxClArgs_LIBRARY ${CMAKE_FIND_ROOT_PATH}/lib/ox/libOxClArgs.a)
set(OxMetalClaw ${CMAKE_FIND_ROOT_PATH}/lib/ox/libOxMetalClaw.a)
endif("${CMAKE_FIND_ROOT_PATH}" STREQUAL "")

27
deps/ox/deps/ox/src/ox/mc/optype.hpp vendored Normal file
View File

@ -0,0 +1,27 @@
/*
* Copyright 2015 - 2017 gtalent2@gmail.com
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*/
#pragma once
namespace ox {
enum class OpType {
Read = 0,
Write = 1
};
template<typename T, typename O>
ox::Error ioOp(T *io, O *obj) {
if (io->opType() == ox::OpType::Read) {
return ioOpRead(io, obj);
} else {
return ioOpWrite(io, obj);
}
}
}

View File

@ -17,6 +17,10 @@ MetalClawReader::MetalClawReader(uint8_t *buff, size_t buffLen): m_fieldPresence
m_buffLen = buffLen;
}
int MetalClawReader::op(const char*, int8_t *val) {
return readInteger(val);
}
int MetalClawReader::op(const char*, int16_t *val) {
return readInteger(val);
}
@ -29,6 +33,11 @@ int MetalClawReader::op(const char*, int64_t *val) {
return readInteger(val);
}
int MetalClawReader::op(const char*, uint8_t *val) {
return readInteger(val);
}
int MetalClawReader::op(const char*, uint16_t *val) {
return readInteger(val);
}

View File

@ -32,10 +32,12 @@ class MetalClawReader {
public:
MetalClawReader(uint8_t *buff, size_t buffLen);
int op(const char*, int8_t *val);
int op(const char*, int16_t *val);
int op(const char*, int32_t *val);
int op(const char*, int64_t *val);
int op(const char*, uint8_t *val);
int op(const char*, uint16_t *val);
int op(const char*, uint32_t *val);
int op(const char*, uint64_t *val);

View File

@ -17,6 +17,10 @@ MetalClawWriter::MetalClawWriter(uint8_t *buff, size_t buffLen): m_fieldPresence
m_buffLen = buffLen;
}
int MetalClawWriter::op(const char*, int8_t *val) {
return appendInteger(*val);
}
int MetalClawWriter::op(const char*, int16_t *val) {
return appendInteger(*val);
}
@ -29,6 +33,11 @@ int MetalClawWriter::op(const char*, int64_t *val) {
return appendInteger(*val);
}
int MetalClawWriter::op(const char*, uint8_t *val) {
return appendInteger(*val);
}
int MetalClawWriter::op(const char*, uint16_t *val) {
return appendInteger(*val);
}
@ -51,4 +60,8 @@ void MetalClawWriter::setFields(int fields) {
m_fieldPresence.setMaxLen(m_buffIt);
}
size_t MetalClawWriter::size() {
return m_buffIt;
}
}

View File

@ -29,10 +29,12 @@ class MetalClawWriter {
public:
MetalClawWriter(uint8_t *buff, size_t buffLen);
int op(const char*, int8_t *val);
int op(const char*, int16_t *val);
int op(const char*, int32_t *val);
int op(const char*, int64_t *val);
int op(const char*, uint8_t *val);
int op(const char*, uint16_t *val);
int op(const char*, uint32_t *val);
int op(const char*, uint64_t *val);
@ -50,6 +52,8 @@ class MetalClawWriter {
void setFields(int fields);
size_t size();
OpType opType() {
return OpType::Write;
}
@ -125,7 +129,7 @@ int MetalClawWriter::op(const char*, T *val, size_t len) {
// write the length
typedef uint32_t ArrayLength;
if (m_buffIt + sizeof(ArrayLength) < m_buffLen) {
*((T*) &m_buff[m_buffIt]) = ox::bigEndianAdapt((ArrayLength) len);
*((ArrayLength*) &m_buff[m_buffIt]) = ox::bigEndianAdapt((ArrayLength) len);
m_buffIt += sizeof(ArrayLength);
} else {
err = MC_BUFFENDED;
@ -149,9 +153,13 @@ int MetalClawWriter::op(const char*, T *val, size_t len) {
};
template<typename T>
int write(uint8_t *buff, size_t buffLen, T *val) {
int write(uint8_t *buff, size_t buffLen, T *val, size_t *sizeOut = nullptr) {
MetalClawWriter writer(buff, buffLen);
return ioOp(&writer, val);
auto err = ioOp(&writer, val);
if (sizeOut) {
*sizeOut = writer.size();
}
return err;
}
}