// Protocol Buffers - Google's data interchange format // Copyright 2024 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 use crate::{RawArray, RawMap, RawMessage, StringView}; // Transcribed from google3/third_party/upb/upb/message/value.h #[repr(C)] #[derive(Clone, Copy)] pub union upb_MessageValue { pub bool_val: bool, pub float_val: std::ffi::c_float, pub double_val: std::ffi::c_double, pub uint32_val: u32, pub int32_val: i32, pub uint64_val: u64, pub int64_val: i64, // TODO: Replace this `RawMessage` with the const type. pub array_val: Option, pub map_val: Option, pub msg_val: Option, pub str_val: StringView, tagged_msg_val: *const std::ffi::c_void, } impl upb_MessageValue { pub fn zeroed() -> Self { // SAFETY: zero bytes is a valid representation for at least one value in the // union (actually valid for all of them). unsafe { std::mem::zeroed() } } } #[repr(C)] #[derive(Clone, Copy)] pub union upb_MutableMessageValue { pub array: Option, pub map: Option, pub msg: Option, }