/// implementation and the message could be decoded, must return `Ok(Some(message))`. If the
/// message type is unknown to the implementation, must return `Ok(None)`. If a decoding error
/// occur, must return `Err(DecodeError::X)` where `X` details the encountered error.
/// implementation and the message could be decoded, must return `Ok(Some(message))`. If the
/// message type is unknown to the implementation, must return `Ok(None)`. If a decoding error
/// occur, must return `Err(DecodeError::X)` where `X` details the encountered error.
pub read: extern "C" fn (this_arg: *const c_void, message_type: u16, buffer: crate::c_types::u8slice) -> crate::c_types::derived::CResult_COption_TypeZDecodeErrorZ,
/// Frees any resources associated with this object given its this_arg pointer.
/// Does not need to free the outer struct containing function pointers and may be NULL is no resources need to be freed.
pub read: extern "C" fn (this_arg: *const c_void, message_type: u16, buffer: crate::c_types::u8slice) -> crate::c_types::derived::CResult_COption_TypeZDecodeErrorZ,
/// Frees any resources associated with this object given its this_arg pointer.
/// Does not need to free the outer struct containing function pointers and may be NULL is no resources need to be freed.
/// Calls the free function if one is set
#[no_mangle]
pub extern "C" fn CustomMessageReader_free(this_ptr: CustomMessageReader) { }
/// Calls the free function if one is set
#[no_mangle]
pub extern "C" fn CustomMessageReader_free(this_ptr: CustomMessageReader) { }
/// This has no meaning in the LDK, and can be NULL or any other value.
pub this_arg: *mut c_void,
/// Returns the type identifying the message payload.
/// This has no meaning in the LDK, and can be NULL or any other value.
pub this_arg: *mut c_void,
/// Returns the type identifying the message payload.
pub type_id: extern "C" fn (this_arg: *const c_void) -> u16,
/// Return a human-readable "debug" string describing this object
pub debug_str: extern "C" fn (this_arg: *const c_void) -> crate::c_types::Str,
/// Serialize the object into a byte array
pub write: extern "C" fn (this_arg: *const c_void) -> crate::c_types::derived::CVec_u8Z,
pub type_id: extern "C" fn (this_arg: *const c_void) -> u16,
/// Return a human-readable "debug" string describing this object
pub debug_str: extern "C" fn (this_arg: *const c_void) -> crate::c_types::Str,
/// Serialize the object into a byte array
pub write: extern "C" fn (this_arg: *const c_void) -> crate::c_types::derived::CVec_u8Z,
+ /// Called, if set, after this Type has been cloned into a duplicate object.
+ /// The new Type is provided, and should be mutated as needed to perform a
+ /// deep copy of the object pointed to by this_arg or avoid any double-freeing.
+ pub cloned: Option<extern "C" fn (new_Type: &mut Type)>,
/// Frees any resources associated with this object given its this_arg pointer.
/// Does not need to free the outer struct containing function pointers and may be NULL is no resources need to be freed.
pub free: Option<extern "C" fn(this_arg: *mut c_void)>,
}
unsafe impl Send for Type {}
unsafe impl Sync for Type {}
/// Frees any resources associated with this object given its this_arg pointer.
/// Does not need to free the outer struct containing function pointers and may be NULL is no resources need to be freed.
pub free: Option<extern "C" fn(this_arg: *mut c_void)>,
}
unsafe impl Send for Type {}
unsafe impl Sync for Type {}
Type {
this_arg: orig.this_arg,
type_id: Clone::clone(&orig.type_id),
debug_str: Clone::clone(&orig.debug_str),
write: Clone::clone(&orig.write),
Type {
this_arg: orig.this_arg,
type_id: Clone::clone(&orig.type_id),
debug_str: Clone::clone(&orig.debug_str),
write: Clone::clone(&orig.write),
+#[no_mangle]
+/// Creates a copy of a Type
+pub extern "C" fn Type_clone(orig: &Type) -> Type {
+ let mut res = Type_clone_fields(orig);
+ if let Some(f) = orig.cloned { (f)(&mut res) };
+ res
+}
+impl Clone for Type {
+ fn clone(&self) -> Self {
+ Type_clone(self)
+ }
+}