Merge commit '12371c21d206cb07a5db91fc81d55cd740bd12f0'

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

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;
}
}