// Protocol Buffers - Google's data interchange format // Copyright 2023 Google LLC. All rights reserved. // // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file or at // https://developers.google.com/open-source/licenses/bsd // We encode backwards, to avoid pre-computing lengths (one-pass encode). #include "upb/wire/encode.h" #include #include #include #include #include "upb/mem/arena.h" #include "upb/message/message.h" #include "upb/mini_table/message.h" #include "upb/wire/internal/encoder.h" // Must be last. #include "upb/port/def.inc" upb_EncodeStatus upb_Encode(const upb_Message* msg, const upb_MiniTable* l, int options, upb_Arena* arena, char** buf, size_t* size) { return _upb_Encode(msg, l, options, arena, buf, size, false); } upb_EncodeStatus upb_EncodeLengthPrefixed(const upb_Message* msg, const upb_MiniTable* l, int options, upb_Arena* arena, char** buf, size_t* size) { return _upb_Encode(msg, l, options, arena, buf, size, true); } const char* upb_EncodeStatus_String(upb_EncodeStatus status) { switch (status) { case kUpb_EncodeStatus_Ok: return "Ok"; case kUpb_EncodeStatus_MissingRequired: return "Missing required field"; case kUpb_EncodeStatus_MaxDepthExceeded: return "Max depth exceeded"; case kUpb_EncodeStatus_OutOfMemory: return "Arena alloc failed"; default: return "Unknown encode status"; } }