#ifndef PBREADER_H #define PBREADER_H #include #include #include #include class PbReader { private: std::vector const &rawData; uint32_t currentWireValue = 0; uint64_t skipVarIntDump = 0; uint32_t nextFieldLength = 0; int64_t decodeZigzag(uint64_t value); public: PbReader(std::vector const &rawData); uint32_t maxPosition = 0; PbWireType currentWireType = PbWireType::unknown; uint32_t currentTag = 0; uint32_t pos = 0; template T decodeVarInt(); template T decodeFixed(); template T decodeSVarInt(); void decodeString(std::string &target); void decodeVector(std::vector &target); bool next(); void skip(); void resetMaxPosition(); }; #endif