mirror of
https://github.com/wpilibsuite/allwpilib
synced 2026-06-20 00:51:42 +00:00
Set up wpiformat
This commit is contained in:
committed by
Peter Johnson
parent
4514ff8071
commit
19f7a5f108
@@ -1,5 +1,5 @@
|
||||
/*----------------------------------------------------------------------------*/
|
||||
/* Copyright (c) FIRST 2015. All Rights Reserved. */
|
||||
/* Copyright (c) FIRST 2015-2017. All Rights Reserved. */
|
||||
/* Open Source Software - may be modified and shared by FRC teams. The code */
|
||||
/* must be accompanied by the FIRST BSD license file in the root directory of */
|
||||
/* the project. */
|
||||
@@ -7,13 +7,14 @@
|
||||
|
||||
#include "WireEncoder.h"
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
#include <cassert>
|
||||
#include <cstdint>
|
||||
#include <cstdlib>
|
||||
#include <cstring>
|
||||
|
||||
#include "llvm/MathExtras.h"
|
||||
#include "support/leb128.h"
|
||||
#include <llvm/MathExtras.h>
|
||||
#include <support/leb128.h>
|
||||
|
||||
using namespace nt;
|
||||
|
||||
@@ -24,16 +25,15 @@ WireEncoder::WireEncoder(unsigned int proto_rev) {
|
||||
|
||||
void WireEncoder::WriteDouble(double val) {
|
||||
// The highest performance way to do this, albeit non-portable.
|
||||
std::uint64_t v = llvm::DoubleToBits(val);
|
||||
m_data.append({(char)((v >> 56) & 0xff), (char)((v >> 48) & 0xff),
|
||||
(char)((v >> 40) & 0xff), (char)((v >> 32) & 0xff),
|
||||
(char)((v >> 24) & 0xff), (char)((v >> 16) & 0xff),
|
||||
(char)((v >> 8) & 0xff), (char)(v & 0xff)});
|
||||
uint64_t v = llvm::DoubleToBits(val);
|
||||
m_data.append(
|
||||
{static_cast<char>((v >> 56) & 0xff), static_cast<char>((v >> 48) & 0xff),
|
||||
static_cast<char>((v >> 40) & 0xff), static_cast<char>((v >> 32) & 0xff),
|
||||
static_cast<char>((v >> 24) & 0xff), static_cast<char>((v >> 16) & 0xff),
|
||||
static_cast<char>((v >> 8) & 0xff), static_cast<char>(v & 0xff)});
|
||||
}
|
||||
|
||||
void WireEncoder::WriteUleb128(unsigned long val) {
|
||||
wpi::WriteUleb128(m_data, val);
|
||||
}
|
||||
void WireEncoder::WriteUleb128(uint32_t val) { wpi::WriteUleb128(m_data, val); }
|
||||
|
||||
void WireEncoder::WriteType(NT_Type type) {
|
||||
char ch;
|
||||
@@ -78,7 +78,7 @@ void WireEncoder::WriteType(NT_Type type) {
|
||||
m_data.push_back(ch);
|
||||
}
|
||||
|
||||
std::size_t WireEncoder::GetValueSize(const Value& value) const {
|
||||
size_t WireEncoder::GetValueSize(const Value& value) const {
|
||||
switch (value.type()) {
|
||||
case NT_BOOLEAN:
|
||||
return 1;
|
||||
@@ -94,22 +94,22 @@ std::size_t WireEncoder::GetValueSize(const Value& value) const {
|
||||
return GetStringSize(value.GetRpc());
|
||||
case NT_BOOLEAN_ARRAY: {
|
||||
// 1-byte size, 1 byte per element
|
||||
std::size_t size = value.GetBooleanArray().size();
|
||||
size_t size = value.GetBooleanArray().size();
|
||||
if (size > 0xff) size = 0xff; // size is only 1 byte, truncate
|
||||
return 1 + size;
|
||||
}
|
||||
case NT_DOUBLE_ARRAY: {
|
||||
// 1-byte size, 8 bytes per element
|
||||
std::size_t size = value.GetDoubleArray().size();
|
||||
size_t size = value.GetDoubleArray().size();
|
||||
if (size > 0xff) size = 0xff; // size is only 1 byte, truncate
|
||||
return 1 + size * 8;
|
||||
}
|
||||
case NT_STRING_ARRAY: {
|
||||
auto v = value.GetStringArray();
|
||||
std::size_t size = v.size();
|
||||
size_t size = v.size();
|
||||
if (size > 0xff) size = 0xff; // size is only 1 byte, truncate
|
||||
std::size_t len = 1; // 1-byte size
|
||||
for (std::size_t i = 0; i < size; ++i) len += GetStringSize(v[i]);
|
||||
size_t len = 1; // 1-byte size
|
||||
for (size_t i = 0; i < size; ++i) len += GetStringSize(v[i]);
|
||||
return len;
|
||||
}
|
||||
default:
|
||||
@@ -144,29 +144,29 @@ void WireEncoder::WriteValue(const Value& value) {
|
||||
break;
|
||||
case NT_BOOLEAN_ARRAY: {
|
||||
auto v = value.GetBooleanArray();
|
||||
std::size_t size = v.size();
|
||||
size_t size = v.size();
|
||||
if (size > 0xff) size = 0xff; // size is only 1 byte, truncate
|
||||
Write8(size);
|
||||
|
||||
for (std::size_t i = 0; i < size; ++i) Write8(v[i] ? 1 : 0);
|
||||
for (size_t i = 0; i < size; ++i) Write8(v[i] ? 1 : 0);
|
||||
break;
|
||||
}
|
||||
case NT_DOUBLE_ARRAY: {
|
||||
auto v = value.GetDoubleArray();
|
||||
std::size_t size = v.size();
|
||||
size_t size = v.size();
|
||||
if (size > 0xff) size = 0xff; // size is only 1 byte, truncate
|
||||
Write8(size);
|
||||
|
||||
for (std::size_t i = 0; i < size; ++i) WriteDouble(v[i]);
|
||||
for (size_t i = 0; i < size; ++i) WriteDouble(v[i]);
|
||||
break;
|
||||
}
|
||||
case NT_STRING_ARRAY: {
|
||||
auto v = value.GetStringArray();
|
||||
std::size_t size = v.size();
|
||||
size_t size = v.size();
|
||||
if (size > 0xff) size = 0xff; // size is only 1 byte, truncate
|
||||
Write8(size);
|
||||
|
||||
for (std::size_t i = 0; i < size; ++i) WriteString(v[i]);
|
||||
for (size_t i = 0; i < size; ++i) WriteString(v[i]);
|
||||
break;
|
||||
}
|
||||
default:
|
||||
@@ -175,9 +175,9 @@ void WireEncoder::WriteValue(const Value& value) {
|
||||
}
|
||||
}
|
||||
|
||||
std::size_t WireEncoder::GetStringSize(llvm::StringRef str) const {
|
||||
size_t WireEncoder::GetStringSize(llvm::StringRef str) const {
|
||||
if (m_proto_rev < 0x0300u) {
|
||||
std::size_t len = str.size();
|
||||
size_t len = str.size();
|
||||
if (len > 0xffff) len = 0xffff; // Limited to 64K length; truncate
|
||||
return 2 + len;
|
||||
}
|
||||
@@ -186,12 +186,13 @@ std::size_t WireEncoder::GetStringSize(llvm::StringRef str) const {
|
||||
|
||||
void WireEncoder::WriteString(llvm::StringRef str) {
|
||||
// length
|
||||
std::size_t len = str.size();
|
||||
size_t len = str.size();
|
||||
if (m_proto_rev < 0x0300u) {
|
||||
if (len > 0xffff) len = 0xffff; // Limited to 64K length; truncate
|
||||
Write16(len);
|
||||
} else
|
||||
} else {
|
||||
WriteUleb128(len);
|
||||
}
|
||||
|
||||
// contents
|
||||
m_data.append(str.data(), str.data() + len);
|
||||
|
||||
Reference in New Issue
Block a user