#pragma once #include #include const uint8_t bytes_i32[4] = {0, 0, 0, 1}; const uint8_t bytes_i64[8] = {0, 0, 0, 0, 0, 0, 0, 1}; const std::vector VECTOR_ONE = {1}; const std::vector VECTOR_ZERO = {0}; const std::vector VECTOR_COLLECTION = {1, 0}; const std::vector> LENGTH_PREFIXED_SAMPLES = { {1, 0, 0, 0, 0}, {1, 0, 0, 0, 0, 0, 0, 0, 0}, {5, 0x08, 0x01, 0x33, 0x01, 0x00}, {5, 0x10, 0x01, 0x33, 0x10, 0x00}, }; const std::vector LENGTH_I32 = {bytes_i32, bytes_i32 + 4}; const std::vector LENGTH_I64 = {bytes_i64, bytes_i64 + 8}; // Constantes wire types constexpr uint8_t WIRE_TYPE_VAR_INT = 0; constexpr uint8_t WIRE_TYPE_I64 = 1; constexpr uint8_t WIRE_TYPE_LENGTH_PREFIXED = 2; constexpr uint8_t WIRE_TYPE_I32 = 5; // Prototipos de funciones size_t varint_length(uint32_t v); size_t encode_varint(std::vector& dst, uint32_t value); uint32_t pack_wire_tag(uint32_t field_id, uint8_t wire_type);