| 12345678910111213141516171819202122232425262728293031323334353637 | #ifndef PROTOBUF_H#define PROTOBUF_H#include <iostream>#include <memory>#include "protobuf.h"#include <PbReader.h>#include <PbCommon.h>std::optional<AnyRef> findFieldWithProtobufTag(AnyRef ref, uint32_t tag);void decodeField(std::shared_ptr<PbReader> reader, AnyRef any);void decodeProtobuf(std::shared_ptr<PbReader> reader, AnyRef any);void encodeProtobuf(std::shared_ptr<PbWriter> writer, AnyRef any, uint32_t protobufTag = 0);template <typename T>std::vector<uint8_t> encodePb(T & data){    auto ref = AnyRef::of(&data);    std::vector<uint8_t> rawData;;    auto writer = std::make_shared<PbWriter>(rawData);    encodeProtobuf(writer, ref);     return rawData;}template <typename T>T decodePb(std::vector<uint8_t> & bytes){    T data = {};    auto ref = AnyRef::of(&data);    auto writer = std::make_shared<PbReader>(bytes);    decodeProtobuf(writer, ref);     return data;}#endif
 |