use crate::opaque_pointee::opaque_pointee; use crate::{upb_ExtensionRegistry, upb_MiniTable, upb_MiniTableField, RawArena}; use std::ptr::NonNull; opaque_pointee!(upb_Message); pub type RawMessage = NonNull; extern "C" { /// SAFETY: No constraints. pub fn upb_Message_New(mini_table: *const upb_MiniTable, arena: RawArena) -> Option; pub fn upb_Message_DeepCopy( dst: RawMessage, src: RawMessage, mini_table: *const upb_MiniTable, arena: RawArena, ); pub fn upb_Message_DeepClone( m: RawMessage, mini_table: *const upb_MiniTable, arena: RawArena, ) -> Option; pub fn upb_Message_SetBaseField( m: RawMessage, mini_table: *const upb_MiniTableField, val: *const std::ffi::c_void, ); pub fn upb_Message_IsEqual( m1: RawMessage, m2: RawMessage, mini_table: *const upb_MiniTable, options: i32, ) -> bool; pub fn upb_Message_MergeFrom( dst: RawMessage, src: RawMessage, mini_table: *const upb_MiniTable, extreg: *const upb_ExtensionRegistry, arena: RawArena, ) -> bool; }