use super::event::*;
use super::openjpeg::*;
extern "C" {
fn memcpy(
_: *mut core::ffi::c_void,
_: *const core::ffi::c_void,
_: usize,
) -> *mut core::ffi::c_void;
}
pub(crate) unsafe fn opj_write_bytes_BE(
mut p_buffer: *mut OPJ_BYTE,
mut p_value: OPJ_UINT32,
mut p_nb_bytes: OPJ_UINT32,
) {
let mut l_data_ptr = (&mut p_value as *mut OPJ_UINT32 as *const OPJ_BYTE)
.add(core::mem::size_of::<OPJ_UINT32>())
.offset(-(p_nb_bytes as isize));
assert!(p_nb_bytes > 0u32 && p_nb_bytes as usize <= core::mem::size_of::<OPJ_UINT32>());
memcpy(
p_buffer as *mut core::ffi::c_void,
l_data_ptr as *const core::ffi::c_void,
p_nb_bytes as usize,
);
}
pub(crate) unsafe fn opj_write_bytes_LE(
mut p_buffer: *mut OPJ_BYTE,
mut p_value: OPJ_UINT32,
mut p_nb_bytes: OPJ_UINT32,
) {
let mut l_data_ptr = (&mut p_value as *mut OPJ_UINT32 as *const OPJ_BYTE)
.offset(p_nb_bytes as isize)
.offset(-1);
let mut i: OPJ_UINT32 = 0;
assert!(p_nb_bytes > 0u32 && p_nb_bytes as usize <= core::mem::size_of::<OPJ_UINT32>());
i = 0 as OPJ_UINT32;
while i < p_nb_bytes {
let fresh0 = l_data_ptr;
l_data_ptr = l_data_ptr.offset(-1);
let fresh1 = p_buffer;
p_buffer = p_buffer.offset(1);
*fresh1 = *fresh0;
i += 1;
}
}
pub(crate) unsafe fn opj_read_bytes_BE(
mut p_buffer: *const OPJ_BYTE,
mut p_value: *mut OPJ_UINT32,
mut p_nb_bytes: OPJ_UINT32,
) {
let mut l_data_ptr = p_value as *mut OPJ_BYTE;
assert!(p_nb_bytes > 0u32 && p_nb_bytes as usize <= core::mem::size_of::<OPJ_UINT32>());
*p_value = 0 as OPJ_UINT32;
memcpy(
l_data_ptr
.add(core::mem::size_of::<OPJ_UINT32>())
.offset(-(p_nb_bytes as isize)) as *mut core::ffi::c_void,
p_buffer as *const core::ffi::c_void,
p_nb_bytes as usize,
);
}
pub(crate) unsafe fn opj_read_bytes_LE(
mut p_buffer: *const OPJ_BYTE,
mut p_value: *mut OPJ_UINT32,
mut p_nb_bytes: OPJ_UINT32,
) {
let mut l_data_ptr = (p_value as *mut OPJ_BYTE)
.offset(p_nb_bytes as isize)
.offset(-1);
let mut i: OPJ_UINT32 = 0;
assert!(p_nb_bytes > 0u32 && p_nb_bytes as usize <= core::mem::size_of::<OPJ_UINT32>());
*p_value = 0 as OPJ_UINT32;
i = 0 as OPJ_UINT32;
while i < p_nb_bytes {
let fresh2 = p_buffer;
p_buffer = p_buffer.offset(1);
let fresh3 = l_data_ptr;
l_data_ptr = l_data_ptr.offset(-1);
*fresh3 = *fresh2;
i += 1;
}
}
pub(crate) unsafe fn opj_write_double_BE(
mut p_buffer: *mut OPJ_BYTE,
mut p_value: OPJ_FLOAT64,
) {
let mut l_data_ptr = &mut p_value as *mut OPJ_FLOAT64 as *const OPJ_BYTE;
memcpy(
p_buffer as *mut core::ffi::c_void,
l_data_ptr as *const core::ffi::c_void,
core::mem::size_of::<OPJ_FLOAT64>(),
);
}
pub(crate) unsafe fn opj_write_double_LE(
mut p_buffer: *mut OPJ_BYTE,
mut p_value: OPJ_FLOAT64,
) {
let mut l_data_ptr = (&mut p_value as *mut OPJ_FLOAT64 as *const OPJ_BYTE)
.add(core::mem::size_of::<OPJ_FLOAT64>())
.offset(-1);
let mut i: OPJ_UINT32 = 0;
i = 0 as OPJ_UINT32;
while (i as usize) < core::mem::size_of::<OPJ_FLOAT64>() {
let fresh4 = l_data_ptr;
l_data_ptr = l_data_ptr.offset(-1);
let fresh5 = p_buffer;
p_buffer = p_buffer.offset(1);
*fresh5 = *fresh4;
i += 1;
}
}
pub(crate) unsafe fn opj_read_double_BE(
mut p_buffer: *const OPJ_BYTE,
mut p_value: *mut OPJ_FLOAT64,
) {
let mut l_data_ptr = p_value as *mut OPJ_BYTE;
memcpy(
l_data_ptr as *mut core::ffi::c_void,
p_buffer as *const core::ffi::c_void,
core::mem::size_of::<OPJ_FLOAT64>(),
);
}
pub(crate) unsafe fn opj_read_double_LE(
mut p_buffer: *const OPJ_BYTE,
mut p_value: *mut OPJ_FLOAT64,
) {
let mut l_data_ptr = (p_value as *mut OPJ_BYTE)
.add(core::mem::size_of::<OPJ_FLOAT64>())
.offset(-1);
let mut i: OPJ_UINT32 = 0;
i = 0 as OPJ_UINT32;
while (i as usize) < core::mem::size_of::<OPJ_FLOAT64>() {
let fresh6 = p_buffer;
p_buffer = p_buffer.offset(1);
let fresh7 = l_data_ptr;
l_data_ptr = l_data_ptr.offset(-1);
*fresh7 = *fresh6;
i += 1;
}
}
pub(crate) unsafe fn opj_write_float_BE(mut p_buffer: *mut OPJ_BYTE, mut p_value: OPJ_FLOAT32) {
let mut l_data_ptr = &mut p_value as *mut OPJ_FLOAT32 as *const OPJ_BYTE;
memcpy(
p_buffer as *mut core::ffi::c_void,
l_data_ptr as *const core::ffi::c_void,
core::mem::size_of::<OPJ_FLOAT32>(),
);
}
pub(crate) unsafe fn opj_write_float_LE(mut p_buffer: *mut OPJ_BYTE, mut p_value: OPJ_FLOAT32) {
let mut l_data_ptr = (&mut p_value as *mut OPJ_FLOAT32 as *const OPJ_BYTE)
.add(core::mem::size_of::<OPJ_FLOAT32>())
.offset(-1);
let mut i: OPJ_UINT32 = 0;
i = 0 as OPJ_UINT32;
while (i as usize) < core::mem::size_of::<OPJ_FLOAT32>() {
let fresh8 = l_data_ptr;
l_data_ptr = l_data_ptr.offset(-1);
let fresh9 = p_buffer;
p_buffer = p_buffer.offset(1);
*fresh9 = *fresh8;
i += 1;
}
}
pub(crate) unsafe fn opj_read_float_BE(
mut p_buffer: *const OPJ_BYTE,
mut p_value: *mut OPJ_FLOAT32,
) {
let mut l_data_ptr = p_value as *mut OPJ_BYTE;
memcpy(
l_data_ptr as *mut core::ffi::c_void,
p_buffer as *const core::ffi::c_void,
core::mem::size_of::<OPJ_FLOAT32>(),
);
}
pub(crate) unsafe fn opj_read_float_LE(
mut p_buffer: *const OPJ_BYTE,
mut p_value: *mut OPJ_FLOAT32,
) {
let mut l_data_ptr = (p_value as *mut OPJ_BYTE)
.add(core::mem::size_of::<OPJ_FLOAT32>())
.offset(-1);
let mut i: OPJ_UINT32 = 0;
i = 0 as OPJ_UINT32;
while (i as usize) < core::mem::size_of::<OPJ_FLOAT32>() {
let fresh10 = p_buffer;
p_buffer = p_buffer.offset(1);
let fresh11 = l_data_ptr;
l_data_ptr = l_data_ptr.offset(-1);
*fresh11 = *fresh10;
i += 1;
}
}
pub(crate) unsafe fn opj_stream_read_data(
mut p_stream: *mut opj_stream_private_t,
mut p_buffer: *mut OPJ_BYTE,
mut p_size: OPJ_SIZE_T,
mut p_event_mgr: &mut opj_event_mgr,
) -> OPJ_SIZE_T {
let mut l_read_nb_bytes = 0 as OPJ_SIZE_T;
if (*p_stream).m_bytes_in_buffer >= p_size {
memcpy(
p_buffer as *mut core::ffi::c_void,
(*p_stream).m_current_data as *const core::ffi::c_void,
p_size,
);
(*p_stream).m_current_data = (*p_stream).m_current_data.add(p_size);
(*p_stream).m_bytes_in_buffer =
(*p_stream).m_bytes_in_buffer.wrapping_sub(p_size) as OPJ_SIZE_T as OPJ_SIZE_T;
l_read_nb_bytes = (l_read_nb_bytes as usize).wrapping_add(p_size) as OPJ_SIZE_T as OPJ_SIZE_T;
(*p_stream).m_byte_offset += p_size as OPJ_OFF_T;
return l_read_nb_bytes;
}
if (*p_stream).m_status & 0x4u32 != 0 {
l_read_nb_bytes = (l_read_nb_bytes as usize).wrapping_add((*p_stream).m_bytes_in_buffer)
as OPJ_SIZE_T as OPJ_SIZE_T;
memcpy(
p_buffer as *mut core::ffi::c_void,
(*p_stream).m_current_data as *const core::ffi::c_void,
(*p_stream).m_bytes_in_buffer,
);
(*p_stream).m_current_data = (*p_stream)
.m_current_data
.add((*p_stream).m_bytes_in_buffer);
(*p_stream).m_byte_offset += (*p_stream).m_bytes_in_buffer as OPJ_OFF_T;
(*p_stream).m_bytes_in_buffer = 0 as OPJ_SIZE_T;
return if l_read_nb_bytes != 0 {
l_read_nb_bytes
} else {
-(1i32) as OPJ_SIZE_T
};
}
if (*p_stream).m_bytes_in_buffer != 0 {
l_read_nb_bytes = (l_read_nb_bytes as usize).wrapping_add((*p_stream).m_bytes_in_buffer)
as OPJ_SIZE_T as OPJ_SIZE_T;
memcpy(
p_buffer as *mut core::ffi::c_void,
(*p_stream).m_current_data as *const core::ffi::c_void,
(*p_stream).m_bytes_in_buffer,
);
(*p_stream).m_current_data = (*p_stream).m_stored_data;
p_buffer = p_buffer.add((*p_stream).m_bytes_in_buffer);
p_size = p_size.wrapping_sub((*p_stream).m_bytes_in_buffer) as OPJ_SIZE_T as OPJ_SIZE_T;
(*p_stream).m_byte_offset += (*p_stream).m_bytes_in_buffer as OPJ_OFF_T;
(*p_stream).m_bytes_in_buffer = 0 as OPJ_SIZE_T
} else {
(*p_stream).m_current_data = (*p_stream).m_stored_data
}
loop {
if p_size < (*p_stream).m_buffer_size {
(*p_stream).m_bytes_in_buffer = (*p_stream).m_read_fn.expect("non-null function pointer")(
(*p_stream).m_stored_data as *mut core::ffi::c_void,
(*p_stream).m_buffer_size,
(*p_stream).m_user_data,
);
if (*p_stream).m_bytes_in_buffer == -(1i32) as OPJ_SIZE_T {
event_msg!(p_event_mgr, EVT_INFO, "Stream reached its end !\n",);
(*p_stream).m_bytes_in_buffer = 0 as OPJ_SIZE_T;
(*p_stream).m_status |= 0x4u32;
return if l_read_nb_bytes != 0 {
l_read_nb_bytes
} else {
-(1i32) as OPJ_SIZE_T
};
} else if (*p_stream).m_bytes_in_buffer < p_size {
l_read_nb_bytes = (l_read_nb_bytes as usize).wrapping_add((*p_stream).m_bytes_in_buffer)
as OPJ_SIZE_T as OPJ_SIZE_T;
memcpy(
p_buffer as *mut core::ffi::c_void,
(*p_stream).m_current_data as *const core::ffi::c_void,
(*p_stream).m_bytes_in_buffer,
);
(*p_stream).m_current_data = (*p_stream).m_stored_data;
p_buffer = p_buffer.add((*p_stream).m_bytes_in_buffer);
p_size = p_size.wrapping_sub((*p_stream).m_bytes_in_buffer) as OPJ_SIZE_T as OPJ_SIZE_T;
(*p_stream).m_byte_offset += (*p_stream).m_bytes_in_buffer as OPJ_OFF_T;
(*p_stream).m_bytes_in_buffer = 0 as OPJ_SIZE_T
} else {
l_read_nb_bytes =
(l_read_nb_bytes as usize).wrapping_add(p_size) as OPJ_SIZE_T as OPJ_SIZE_T;
memcpy(
p_buffer as *mut core::ffi::c_void,
(*p_stream).m_current_data as *const core::ffi::c_void,
p_size,
);
(*p_stream).m_current_data = (*p_stream).m_current_data.add(p_size);
(*p_stream).m_bytes_in_buffer =
(*p_stream).m_bytes_in_buffer.wrapping_sub(p_size) as OPJ_SIZE_T as OPJ_SIZE_T;
(*p_stream).m_byte_offset += p_size as OPJ_OFF_T;
return l_read_nb_bytes;
}
} else {
(*p_stream).m_bytes_in_buffer = (*p_stream).m_read_fn.expect("non-null function pointer")(
p_buffer as *mut core::ffi::c_void,
p_size,
(*p_stream).m_user_data,
);
if (*p_stream).m_bytes_in_buffer == -(1i32) as OPJ_SIZE_T {
event_msg!(p_event_mgr, EVT_INFO, "Stream reached its end !\n",);
(*p_stream).m_bytes_in_buffer = 0 as OPJ_SIZE_T;
(*p_stream).m_status |= 0x4u32;
return if l_read_nb_bytes != 0 {
l_read_nb_bytes
} else {
-(1i32) as OPJ_SIZE_T
};
} else if (*p_stream).m_bytes_in_buffer < p_size {
l_read_nb_bytes = (l_read_nb_bytes as usize).wrapping_add((*p_stream).m_bytes_in_buffer)
as OPJ_SIZE_T as OPJ_SIZE_T;
(*p_stream).m_current_data = (*p_stream).m_stored_data;
p_buffer = p_buffer.add((*p_stream).m_bytes_in_buffer);
p_size = p_size.wrapping_sub((*p_stream).m_bytes_in_buffer) as OPJ_SIZE_T as OPJ_SIZE_T;
(*p_stream).m_byte_offset += (*p_stream).m_bytes_in_buffer as OPJ_OFF_T;
(*p_stream).m_bytes_in_buffer = 0 as OPJ_SIZE_T
} else {
l_read_nb_bytes = (l_read_nb_bytes as usize).wrapping_add((*p_stream).m_bytes_in_buffer)
as OPJ_SIZE_T as OPJ_SIZE_T;
(*p_stream).m_byte_offset += (*p_stream).m_bytes_in_buffer as OPJ_OFF_T;
(*p_stream).m_current_data = (*p_stream).m_stored_data;
(*p_stream).m_bytes_in_buffer = 0 as OPJ_SIZE_T;
return l_read_nb_bytes;
}
}
}
}
pub(crate) unsafe fn opj_stream_write_data(
mut p_stream: *mut opj_stream_private_t,
mut p_buffer: *const OPJ_BYTE,
mut p_size: OPJ_SIZE_T,
mut p_event_mgr: &mut opj_event_mgr,
) -> OPJ_SIZE_T {
let mut l_remaining_bytes = 0 as OPJ_SIZE_T;
let mut l_write_nb_bytes = 0 as OPJ_SIZE_T;
if (*p_stream).m_status & 0x8u32 != 0 {
return -(1i32) as OPJ_SIZE_T;
}
loop {
l_remaining_bytes = (*p_stream)
.m_buffer_size
.wrapping_sub((*p_stream).m_bytes_in_buffer);
if l_remaining_bytes >= p_size {
memcpy(
(*p_stream).m_current_data as *mut core::ffi::c_void,
p_buffer as *const core::ffi::c_void,
p_size,
);
(*p_stream).m_current_data = (*p_stream).m_current_data.add(p_size);
(*p_stream).m_bytes_in_buffer =
(*p_stream).m_bytes_in_buffer.wrapping_add(p_size) as OPJ_SIZE_T as OPJ_SIZE_T;
l_write_nb_bytes =
(l_write_nb_bytes as usize).wrapping_add(p_size) as OPJ_SIZE_T as OPJ_SIZE_T;
(*p_stream).m_byte_offset += p_size as OPJ_OFF_T;
return l_write_nb_bytes;
}
if l_remaining_bytes != 0 {
l_write_nb_bytes =
(l_write_nb_bytes as usize).wrapping_add(l_remaining_bytes) as OPJ_SIZE_T as OPJ_SIZE_T;
memcpy(
(*p_stream).m_current_data as *mut core::ffi::c_void,
p_buffer as *const core::ffi::c_void,
l_remaining_bytes,
);
(*p_stream).m_current_data = (*p_stream).m_stored_data;
p_buffer = p_buffer.add(l_remaining_bytes);
p_size = p_size.wrapping_sub(l_remaining_bytes) as OPJ_SIZE_T as OPJ_SIZE_T;
(*p_stream).m_bytes_in_buffer = (*p_stream)
.m_bytes_in_buffer
.wrapping_add(l_remaining_bytes) as OPJ_SIZE_T
as OPJ_SIZE_T;
(*p_stream).m_byte_offset += l_remaining_bytes as OPJ_OFF_T
}
if opj_stream_flush(p_stream, p_event_mgr) == 0 {
return -(1i32) as OPJ_SIZE_T;
}
}
}
pub(crate) unsafe fn opj_stream_flush(
mut p_stream: *mut opj_stream_private_t,
mut p_event_mgr: &mut opj_event_mgr,
) -> OPJ_BOOL {
let mut l_current_write_nb_bytes = 0 as OPJ_SIZE_T;
(*p_stream).m_current_data = (*p_stream).m_stored_data;
while (*p_stream).m_bytes_in_buffer != 0 {
l_current_write_nb_bytes = (*p_stream).m_write_fn.expect("non-null function pointer")(
(*p_stream).m_current_data as *mut core::ffi::c_void,
(*p_stream).m_bytes_in_buffer,
(*p_stream).m_user_data,
);
if l_current_write_nb_bytes == -(1i32) as OPJ_SIZE_T {
(*p_stream).m_status |= 0x8u32;
event_msg!(p_event_mgr, EVT_INFO, "Error on writing stream!\n",);
return 0i32;
}
(*p_stream).m_current_data = (*p_stream).m_current_data.add(l_current_write_nb_bytes);
(*p_stream).m_bytes_in_buffer = (*p_stream)
.m_bytes_in_buffer
.wrapping_sub(l_current_write_nb_bytes) as OPJ_SIZE_T
as OPJ_SIZE_T
}
(*p_stream).m_current_data = (*p_stream).m_stored_data;
1i32
}
pub(crate) unsafe extern "C" fn opj_stream_read_skip(
mut p_stream: *mut opj_stream_private_t,
mut p_size: OPJ_OFF_T,
mut p_event_mgr: &mut opj_event_mgr,
) -> OPJ_OFF_T {
let mut l_skip_nb_bytes = 0 as OPJ_OFF_T;
let mut l_current_skip_nb_bytes = 0 as OPJ_OFF_T;
assert!(p_size >= 0i64);
if (*p_stream).m_bytes_in_buffer >= p_size as OPJ_SIZE_T {
(*p_stream).m_current_data = (*p_stream).m_current_data.offset(p_size as isize);
(*p_stream).m_bytes_in_buffer = (*p_stream)
.m_bytes_in_buffer
.wrapping_sub(p_size as OPJ_SIZE_T) as OPJ_SIZE_T
as OPJ_SIZE_T;
l_skip_nb_bytes += p_size;
(*p_stream).m_byte_offset += l_skip_nb_bytes;
return l_skip_nb_bytes;
}
if (*p_stream).m_status & 0x4u32 != 0 {
l_skip_nb_bytes += (*p_stream).m_bytes_in_buffer as OPJ_OFF_T;
(*p_stream).m_current_data = (*p_stream)
.m_current_data
.add((*p_stream).m_bytes_in_buffer);
(*p_stream).m_bytes_in_buffer = 0 as OPJ_SIZE_T;
(*p_stream).m_byte_offset += l_skip_nb_bytes;
return if l_skip_nb_bytes != 0 {
l_skip_nb_bytes
} else {
-(1i32) as OPJ_OFF_T
};
}
if (*p_stream).m_bytes_in_buffer != 0 {
l_skip_nb_bytes += (*p_stream).m_bytes_in_buffer as OPJ_OFF_T;
(*p_stream).m_current_data = (*p_stream).m_stored_data;
p_size -= (*p_stream).m_bytes_in_buffer as OPJ_OFF_T;
(*p_stream).m_bytes_in_buffer = 0 as OPJ_SIZE_T
}
while p_size > 0i64 {
if ((*p_stream).m_byte_offset + l_skip_nb_bytes + p_size) as OPJ_UINT64
> (*p_stream).m_user_data_length
{
event_msg!(p_event_mgr, EVT_INFO, "Stream reached its end !\n",);
(*p_stream).m_byte_offset += l_skip_nb_bytes;
l_skip_nb_bytes = (*p_stream)
.m_user_data_length
.wrapping_sub((*p_stream).m_byte_offset as OPJ_UINT64) as OPJ_OFF_T;
opj_stream_read_seek(
p_stream,
(*p_stream).m_user_data_length as OPJ_OFF_T,
p_event_mgr,
);
(*p_stream).m_status |= 0x4u32;
return if l_skip_nb_bytes != 0 {
l_skip_nb_bytes
} else {
-(1i32) as OPJ_OFF_T
};
}
l_current_skip_nb_bytes =
(*p_stream).m_skip_fn.expect("non-null function pointer")(p_size, (*p_stream).m_user_data);
if l_current_skip_nb_bytes == -(1i32) as OPJ_OFF_T {
event_msg!(p_event_mgr, EVT_INFO, "Stream reached its end !\n",);
(*p_stream).m_status |= 0x4u32;
(*p_stream).m_byte_offset += l_skip_nb_bytes;
return if l_skip_nb_bytes != 0 {
l_skip_nb_bytes
} else {
-(1i32) as OPJ_OFF_T
};
}
p_size -= l_current_skip_nb_bytes;
l_skip_nb_bytes += l_current_skip_nb_bytes
}
(*p_stream).m_byte_offset += l_skip_nb_bytes;
l_skip_nb_bytes
}
pub(crate) unsafe extern "C" fn opj_stream_write_skip(
mut p_stream: *mut opj_stream_private_t,
mut p_size: OPJ_OFF_T,
mut p_event_mgr: &mut opj_event_mgr,
) -> OPJ_OFF_T {
let mut l_is_written = 0i32;
let mut l_current_skip_nb_bytes = 0 as OPJ_OFF_T;
let mut l_skip_nb_bytes = 0 as OPJ_OFF_T;
if (*p_stream).m_status & 0x8u32 != 0 {
return -(1i32) as OPJ_OFF_T;
}
l_is_written = opj_stream_flush(p_stream, p_event_mgr);
if l_is_written == 0 {
(*p_stream).m_status |= 0x8u32;
(*p_stream).m_bytes_in_buffer = 0 as OPJ_SIZE_T;
return -(1i32) as OPJ_OFF_T;
}
while p_size > 0i64 {
l_current_skip_nb_bytes =
(*p_stream).m_skip_fn.expect("non-null function pointer")(p_size, (*p_stream).m_user_data);
if l_current_skip_nb_bytes == -(1i32) as OPJ_OFF_T {
event_msg!(p_event_mgr, EVT_INFO, "Stream error!\n",);
(*p_stream).m_status |= 0x8u32;
(*p_stream).m_byte_offset += l_skip_nb_bytes;
return if l_skip_nb_bytes != 0 {
l_skip_nb_bytes
} else {
-(1i32) as OPJ_OFF_T
};
}
p_size -= l_current_skip_nb_bytes;
l_skip_nb_bytes += l_current_skip_nb_bytes
}
(*p_stream).m_byte_offset += l_skip_nb_bytes;
l_skip_nb_bytes
}
pub(crate) unsafe fn opj_stream_tell(mut p_stream: *const opj_stream_private_t) -> OPJ_OFF_T {
(*p_stream).m_byte_offset
}
pub(crate) unsafe fn opj_stream_get_number_byte_left(
mut p_stream: *const opj_stream_private_t,
) -> OPJ_OFF_T {
assert!((*p_stream).m_byte_offset >= 0i64);
assert!((*p_stream).m_user_data_length >= (*p_stream).m_byte_offset as OPJ_UINT64);
if (*p_stream).m_user_data_length != 0 {
((*p_stream).m_user_data_length as OPJ_OFF_T) - (*p_stream).m_byte_offset
} else {
0i64
}
}
pub(crate) unsafe fn opj_stream_skip(
mut p_stream: *mut opj_stream_private_t,
mut p_size: OPJ_OFF_T,
mut p_event_mgr: &mut opj_event_mgr,
) -> OPJ_OFF_T {
assert!(p_size >= 0i64);
(*p_stream).m_opj_skip.expect("non-null function pointer")(p_stream, p_size, p_event_mgr)
}
pub(crate) unsafe extern "C" fn opj_stream_read_seek(
mut p_stream: *mut opj_stream_private_t,
mut p_size: OPJ_OFF_T,
mut _p_event_mgr: &mut opj_event_mgr,
) -> OPJ_BOOL {
(*p_stream).m_current_data = (*p_stream).m_stored_data;
(*p_stream).m_bytes_in_buffer = 0 as OPJ_SIZE_T;
if (*p_stream).m_seek_fn.expect("non-null function pointer")(p_size, (*p_stream).m_user_data) == 0
{
(*p_stream).m_status |= 0x4u32;
return 0i32;
} else {
(*p_stream).m_status &= !(0x4u32);
(*p_stream).m_byte_offset = p_size
}
1i32
}
pub(crate) unsafe extern "C" fn opj_stream_write_seek(
mut p_stream: *mut opj_stream_private_t,
mut p_size: OPJ_OFF_T,
mut p_event_mgr: &mut opj_event_mgr,
) -> OPJ_BOOL {
if opj_stream_flush(p_stream, p_event_mgr) == 0 {
(*p_stream).m_status |= 0x8u32;
return 0i32;
}
(*p_stream).m_current_data = (*p_stream).m_stored_data;
(*p_stream).m_bytes_in_buffer = 0 as OPJ_SIZE_T;
if (*p_stream).m_seek_fn.expect("non-null function pointer")(p_size, (*p_stream).m_user_data) == 0
{
(*p_stream).m_status |= 0x8u32;
return 0i32;
} else {
(*p_stream).m_byte_offset = p_size
}
1i32
}
pub(crate) unsafe fn opj_stream_seek(
mut p_stream: *mut opj_stream_private_t,
mut p_size: OPJ_OFF_T,
mut p_event_mgr: &mut opj_event_mgr,
) -> OPJ_BOOL {
assert!(p_size >= 0i64);
(*p_stream).m_opj_seek.expect("non-null function pointer")(p_stream, p_size, p_event_mgr)
}
pub(crate) unsafe fn opj_stream_has_seek(
mut p_stream: *const opj_stream_private_t,
) -> OPJ_BOOL {
((*p_stream).m_seek_fn
!= Some(
opj_stream_default_seek
as unsafe extern "C" fn(_: OPJ_OFF_T, _: *mut core::ffi::c_void) -> OPJ_BOOL,
)) as core::ffi::c_int
}
pub unsafe extern "C" fn opj_stream_default_read(
mut _p_buffer: *mut core::ffi::c_void,
mut _p_nb_bytes: OPJ_SIZE_T,
mut _p_user_data: *mut core::ffi::c_void,
) -> OPJ_SIZE_T {
-(1i32) as OPJ_SIZE_T
}
pub unsafe extern "C" fn opj_stream_default_write(
mut _p_buffer: *mut core::ffi::c_void,
mut _p_nb_bytes: OPJ_SIZE_T,
mut _p_user_data: *mut core::ffi::c_void,
) -> OPJ_SIZE_T {
-(1i32) as OPJ_SIZE_T
}
pub unsafe extern "C" fn opj_stream_default_skip(
mut _p_nb_bytes: OPJ_OFF_T,
mut _p_user_data: *mut core::ffi::c_void,
) -> OPJ_OFF_T {
-(1i32) as OPJ_OFF_T
}
pub unsafe extern "C" fn opj_stream_default_seek(
mut _p_nb_bytes: OPJ_OFF_T,
mut _p_user_data: *mut core::ffi::c_void,
) -> OPJ_BOOL {
0i32
}