| 123456789101112131415161718192021222324252627282930313233343536373839 | #ifndef PBWRITER_H#define PBWRITER_H#include <vector>#include <string>#include <memory>#include <PbWireType.h>class PbWriter{private:    std::vector<uint8_t> &rawData;    uint32_t pos;    uint32_t msgStartPos = 0;    void encodeVarInt(uint32_t low, uint32_t high, int32_t atIndex = 0);    uint32_t encodeZigzag32(int32_t value);    uint64_t encodeZigzag64(int64_t value);public:    PbWriter(std::vector<uint8_t> &rawData);    template <typename T>    void encodeVarInt(T, int32_t atIndex = 0);    template <typename T>    void encodeFixed(T);    void addSVarInt32(uint32_t tag, int32_t);    void addSVarInt64(uint32_t tag, int64_t);    void addString(uint32_t tag, std::string &target);    void addVector(uint32_t tag, std::vector<uint8_t> &target);    template <typename T>    void addVarInt(uint32_t tag, T intType);    void addBool(uint32_t tag, bool value);    void addField(uint32_t tag, PbWireType wiretype);    uint32_t startMessage();    void finishMessage(uint32_t tag, uint32_t pos);};#endif
 |