Add an optional sizeOut parameter to Metal Claw write

This commit is contained in:
2017-11-07 21:39:18 -06:00
parent 443a62c3f4
commit 489736d23b
2 changed files with 12 additions and 2 deletions
+4
View File
@@ -51,4 +51,8 @@ void MetalClawWriter::setFields(int fields) {
m_fieldPresence.setMaxLen(m_buffIt); m_fieldPresence.setMaxLen(m_buffIt);
} }
size_t MetalClawWriter::size() {
return m_buffIt;
}
} }
+8 -2
View File
@@ -49,6 +49,8 @@ class MetalClawWriter {
void setFields(int fields); void setFields(int fields);
size_t size();
private: private:
template<typename I> template<typename I>
int appendInteger(I val); int appendInteger(I val);
@@ -144,9 +146,13 @@ int MetalClawWriter::op(const char*, T *val, size_t len) {
}; };
template<typename T> 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); MetalClawWriter writer(buff, buffLen);
return ioOp(&writer, val); auto err = ioOp(&writer, val);
if (sizeOut) {
*sizeOut = writer.size();
}
return err;
} }
} }