Remove dep on rapidjson/internal

This commit is contained in:
Chris Marsh 2017-08-28 10:43:36 -07:00
parent e07806424b
commit 4cf8ca5670
2 changed files with 28 additions and 5 deletions

View File

@ -2,6 +2,31 @@
#include "connection.h" #include "connection.h"
#include "discord-rpc.h" #include "discord-rpc.h"
template <typename T>
void NumberToString(char* dest, T number)
{
if (!number) {
*dest++ = '0';
*dest++ = 0;
return;
}
if (number < 0) {
*dest++ = '-';
number = -number;
}
char temp[32];
int place = 0;
while (number) {
auto digit = number % 10;
number = number / 10;
temp[place++] = '0' + (char)digit;
}
for (--place; place >= 0; --place) {
*dest++ = temp[place];
}
*dest = 0;
}
// it's ever so slightly faster to not have to strlen the key // it's ever so slightly faster to not have to strlen the key
template <typename T> template <typename T>
void WriteKey(JsonWriter& w, T& k) void WriteKey(JsonWriter& w, T& k)
@ -50,8 +75,8 @@ void WriteOptionalString(JsonWriter& w, T& k, const char* value)
void JsonWriteNonce(JsonWriter& writer, int nonce) void JsonWriteNonce(JsonWriter& writer, int nonce)
{ {
WriteKey(writer, "nonce"); WriteKey(writer, "nonce");
char nonceBuffer[32]{}; char nonceBuffer[32];
rapidjson::internal::i32toa(nonce, nonceBuffer); NumberToString(nonceBuffer, nonce);
writer.String(nonceBuffer); writer.String(nonceBuffer);
} }

View File

@ -5,7 +5,6 @@
#include "rapidjson/document.h" #include "rapidjson/document.h"
#include "rapidjson/writer.h" #include "rapidjson/writer.h"
#include "rapidjson/stringbuffer.h" #include "rapidjson/stringbuffer.h"
#include "rapidjson/internal/itoa.h"
// if only there was a standard library function for this // if only there was a standard library function for this
template <size_t Len> template <size_t Len>
@ -35,8 +34,7 @@ size_t JsonWriteRichPresenceObj(char* dest,
size_t JsonWriteSubscribeCommand(char* dest, size_t maxLen, int nonce, const char* evtName); size_t JsonWriteSubscribeCommand(char* dest, size_t maxLen, int nonce, const char* evtName);
// I want to use as few allocations as I can get away with, and to do that with RapidJson, you need // I want to use as few allocations as I can get away with, and to do that with RapidJson, you need
// to supply some of // to supply some of your own allocators for stuff rather than use the defaults
// your own allocators for stuff rather than use the defaults
class LinearAllocator { class LinearAllocator {
public: public: