Skip to content

Commit

Permalink
fn init_edges: Cleanup (#386)
Browse files Browse the repository at this point in the history
I'll work on the safety of the `Edge*` types once I do initial cleanup
for their functions.
  • Loading branch information
kkysen authored Aug 24, 2023
2 parents 1a6c503 + eb6fa7a commit f3bcfb5
Showing 1 changed file with 85 additions and 154 deletions.
239 changes: 85 additions & 154 deletions src/intra_edge.rs
Original file line number Diff line number Diff line change
Expand Up @@ -45,164 +45,95 @@ use crate::src::levels::BL_64X64;
use crate::src::levels::BL_128X128;
use crate::src::levels::BL_16X16;
use crate::src::levels::BL_8X8;
unsafe extern "C" fn init_edges(node: *mut EdgeNode, bl: BlockLevel, edge_flags: EdgeFlags) {

unsafe fn init_edges(node: *mut EdgeNode, bl: BlockLevel, edge_flags: EdgeFlags) {
(*node).o = edge_flags;
if bl as libc::c_uint == BL_8X8 as libc::c_int as libc::c_uint {
let nt: *mut EdgeTip = node as *mut EdgeTip;
(*node).h[0] = (edge_flags as libc::c_uint
| (EDGE_I444_LEFT_HAS_BOTTOM as libc::c_int
| EDGE_I422_LEFT_HAS_BOTTOM as libc::c_int
| EDGE_I420_LEFT_HAS_BOTTOM as libc::c_int) as libc::c_uint)
as EdgeFlags;
(*node).h[1] = (edge_flags as libc::c_uint
& (EDGE_I444_LEFT_HAS_BOTTOM as libc::c_int
| EDGE_I422_LEFT_HAS_BOTTOM as libc::c_int
| EDGE_I420_LEFT_HAS_BOTTOM as libc::c_int
| EDGE_I420_TOP_HAS_RIGHT as libc::c_int) as libc::c_uint)
as EdgeFlags;
(*node).v[0] = (edge_flags as libc::c_uint
| (EDGE_I444_TOP_HAS_RIGHT as libc::c_int
| EDGE_I422_TOP_HAS_RIGHT as libc::c_int
| EDGE_I420_TOP_HAS_RIGHT as libc::c_int) as libc::c_uint)
as EdgeFlags;
(*node).v[1] = (edge_flags as libc::c_uint
& (EDGE_I444_TOP_HAS_RIGHT as libc::c_int
| EDGE_I422_TOP_HAS_RIGHT as libc::c_int
| EDGE_I420_TOP_HAS_RIGHT as libc::c_int
| EDGE_I420_LEFT_HAS_BOTTOM as libc::c_int
| EDGE_I422_LEFT_HAS_BOTTOM as libc::c_int) as libc::c_uint)
as EdgeFlags;
(*nt).split[0] = (EDGE_I444_TOP_HAS_RIGHT as libc::c_int
| EDGE_I422_TOP_HAS_RIGHT as libc::c_int
| EDGE_I420_TOP_HAS_RIGHT as libc::c_int
| (EDGE_I444_LEFT_HAS_BOTTOM as libc::c_int
| EDGE_I422_LEFT_HAS_BOTTOM as libc::c_int
| EDGE_I420_LEFT_HAS_BOTTOM as libc::c_int)) as EdgeFlags;
(*nt).split[1] = (edge_flags as libc::c_uint
& (EDGE_I444_TOP_HAS_RIGHT as libc::c_int
| EDGE_I422_TOP_HAS_RIGHT as libc::c_int
| EDGE_I420_TOP_HAS_RIGHT as libc::c_int) as libc::c_uint
| EDGE_I422_LEFT_HAS_BOTTOM as libc::c_int as libc::c_uint)
as EdgeFlags;
(*nt).split[2] = (edge_flags as libc::c_uint
| EDGE_I444_TOP_HAS_RIGHT as libc::c_int as libc::c_uint)
as EdgeFlags;
(*nt).split[3] = (edge_flags as libc::c_uint
& (EDGE_I420_TOP_HAS_RIGHT as libc::c_int
| EDGE_I420_LEFT_HAS_BOTTOM as libc::c_int
| EDGE_I422_LEFT_HAS_BOTTOM as libc::c_int) as libc::c_uint)
as EdgeFlags;

if bl == BL_8X8 {
let nt = &mut *(node as *mut EdgeTip);
let node = &mut nt.node;

node.h[0] = edge_flags
| (EDGE_I444_LEFT_HAS_BOTTOM | EDGE_I422_LEFT_HAS_BOTTOM | EDGE_I420_LEFT_HAS_BOTTOM);
node.h[1] = edge_flags
& ((EDGE_I444_LEFT_HAS_BOTTOM | EDGE_I422_LEFT_HAS_BOTTOM | EDGE_I420_LEFT_HAS_BOTTOM)
| EDGE_I420_TOP_HAS_RIGHT);

node.v[0] = edge_flags
| (EDGE_I444_TOP_HAS_RIGHT | EDGE_I422_TOP_HAS_RIGHT | EDGE_I420_TOP_HAS_RIGHT);
node.v[1] = edge_flags
& ((EDGE_I444_TOP_HAS_RIGHT | EDGE_I422_TOP_HAS_RIGHT | EDGE_I420_TOP_HAS_RIGHT)
| EDGE_I420_LEFT_HAS_BOTTOM
| EDGE_I422_LEFT_HAS_BOTTOM);

nt.split[0] = (EDGE_I444_TOP_HAS_RIGHT | EDGE_I422_TOP_HAS_RIGHT | EDGE_I420_TOP_HAS_RIGHT)
| (EDGE_I444_LEFT_HAS_BOTTOM | EDGE_I422_LEFT_HAS_BOTTOM | EDGE_I420_LEFT_HAS_BOTTOM);
nt.split[1] = (edge_flags
& (EDGE_I444_TOP_HAS_RIGHT | EDGE_I422_TOP_HAS_RIGHT | EDGE_I420_TOP_HAS_RIGHT))
| EDGE_I422_LEFT_HAS_BOTTOM;
nt.split[2] = edge_flags | EDGE_I444_TOP_HAS_RIGHT;
nt.split[3] = edge_flags
& (EDGE_I420_TOP_HAS_RIGHT | EDGE_I420_LEFT_HAS_BOTTOM | EDGE_I422_LEFT_HAS_BOTTOM);
} else {
let nwc: *mut EdgeBranch = node as *mut EdgeBranch;
(*node).h[0] = (edge_flags as libc::c_uint
| (EDGE_I444_LEFT_HAS_BOTTOM as libc::c_int
| EDGE_I422_LEFT_HAS_BOTTOM as libc::c_int
| EDGE_I420_LEFT_HAS_BOTTOM as libc::c_int) as libc::c_uint)
as EdgeFlags;
(*node).h[1] = (edge_flags as libc::c_uint
& (EDGE_I444_LEFT_HAS_BOTTOM as libc::c_int
| EDGE_I422_LEFT_HAS_BOTTOM as libc::c_int
| EDGE_I420_LEFT_HAS_BOTTOM as libc::c_int) as libc::c_uint)
as EdgeFlags;
(*node).v[0] = (edge_flags as libc::c_uint
| (EDGE_I444_TOP_HAS_RIGHT as libc::c_int
| EDGE_I422_TOP_HAS_RIGHT as libc::c_int
| EDGE_I420_TOP_HAS_RIGHT as libc::c_int) as libc::c_uint)
as EdgeFlags;
(*node).v[1] = (edge_flags as libc::c_uint
& (EDGE_I444_TOP_HAS_RIGHT as libc::c_int
| EDGE_I422_TOP_HAS_RIGHT as libc::c_int
| EDGE_I420_TOP_HAS_RIGHT as libc::c_int) as libc::c_uint)
as EdgeFlags;
(*nwc).h4[0] = (edge_flags as libc::c_uint
| (EDGE_I444_LEFT_HAS_BOTTOM as libc::c_int
| EDGE_I422_LEFT_HAS_BOTTOM as libc::c_int
| EDGE_I420_LEFT_HAS_BOTTOM as libc::c_int) as libc::c_uint)
as EdgeFlags;
(*nwc).h4[2] = (EDGE_I444_LEFT_HAS_BOTTOM as libc::c_int
| EDGE_I422_LEFT_HAS_BOTTOM as libc::c_int
| EDGE_I420_LEFT_HAS_BOTTOM as libc::c_int) as EdgeFlags;
(*nwc).h4[1] = (*nwc).h4[2];
(*nwc).h4[3] = (edge_flags as libc::c_uint
& (EDGE_I444_LEFT_HAS_BOTTOM as libc::c_int
| EDGE_I422_LEFT_HAS_BOTTOM as libc::c_int
| EDGE_I420_LEFT_HAS_BOTTOM as libc::c_int) as libc::c_uint)
as EdgeFlags;
if bl as libc::c_uint == BL_16X16 as libc::c_int as libc::c_uint {
(*nwc).h4[1] = (*nwc).h4[1] | edge_flags & EDGE_I420_TOP_HAS_RIGHT;
let nwc = &mut *(node as *mut EdgeBranch);
let node = &mut nwc.node;

node.h[0] = edge_flags
| (EDGE_I444_LEFT_HAS_BOTTOM | EDGE_I422_LEFT_HAS_BOTTOM | EDGE_I420_LEFT_HAS_BOTTOM);
node.h[1] = edge_flags
& (EDGE_I444_LEFT_HAS_BOTTOM | EDGE_I422_LEFT_HAS_BOTTOM | EDGE_I420_LEFT_HAS_BOTTOM);

node.v[0] = edge_flags
| (EDGE_I444_TOP_HAS_RIGHT | EDGE_I422_TOP_HAS_RIGHT | EDGE_I420_TOP_HAS_RIGHT);
node.v[1] = edge_flags
& (EDGE_I444_TOP_HAS_RIGHT | EDGE_I422_TOP_HAS_RIGHT | EDGE_I420_TOP_HAS_RIGHT);

nwc.h4[0] = edge_flags
| (EDGE_I444_LEFT_HAS_BOTTOM | EDGE_I422_LEFT_HAS_BOTTOM | EDGE_I420_LEFT_HAS_BOTTOM);
nwc.h4[1] =
EDGE_I444_LEFT_HAS_BOTTOM | EDGE_I422_LEFT_HAS_BOTTOM | EDGE_I420_LEFT_HAS_BOTTOM;
nwc.h4[2] = nwc.h4[1];
nwc.h4[3] = edge_flags
& (EDGE_I444_LEFT_HAS_BOTTOM | EDGE_I422_LEFT_HAS_BOTTOM | EDGE_I420_LEFT_HAS_BOTTOM);
if bl == BL_16X16 {
nwc.h4[1] |= edge_flags & EDGE_I420_TOP_HAS_RIGHT;
}
(*nwc).v4[0] = (edge_flags as libc::c_uint
| (EDGE_I444_TOP_HAS_RIGHT as libc::c_int
| EDGE_I422_TOP_HAS_RIGHT as libc::c_int
| EDGE_I420_TOP_HAS_RIGHT as libc::c_int) as libc::c_uint)
as EdgeFlags;
(*nwc).v4[2] = (EDGE_I444_TOP_HAS_RIGHT as libc::c_int
| EDGE_I422_TOP_HAS_RIGHT as libc::c_int
| EDGE_I420_TOP_HAS_RIGHT as libc::c_int) as EdgeFlags;
(*nwc).v4[1] = (*nwc).v4[2];
(*nwc).v4[3] = (edge_flags as libc::c_uint
& (EDGE_I444_TOP_HAS_RIGHT as libc::c_int
| EDGE_I422_TOP_HAS_RIGHT as libc::c_int
| EDGE_I420_TOP_HAS_RIGHT as libc::c_int) as libc::c_uint)
as EdgeFlags;
if bl as libc::c_uint == BL_16X16 as libc::c_int as libc::c_uint {
(*nwc).v4[1] =
(*nwc).v4[1] | edge_flags & (EDGE_I420_LEFT_HAS_BOTTOM | EDGE_I422_LEFT_HAS_BOTTOM);

nwc.v4[0] = edge_flags
| (EDGE_I444_TOP_HAS_RIGHT | EDGE_I422_TOP_HAS_RIGHT | EDGE_I420_TOP_HAS_RIGHT);
nwc.v4[1] = EDGE_I444_TOP_HAS_RIGHT | EDGE_I422_TOP_HAS_RIGHT | EDGE_I420_TOP_HAS_RIGHT;
nwc.v4[2] = nwc.v4[1];
nwc.v4[3] = edge_flags
& (EDGE_I444_TOP_HAS_RIGHT | EDGE_I422_TOP_HAS_RIGHT | EDGE_I420_TOP_HAS_RIGHT);
if bl == BL_16X16 {
nwc.v4[1] |= edge_flags & (EDGE_I420_LEFT_HAS_BOTTOM | EDGE_I422_LEFT_HAS_BOTTOM);
}
(*nwc).tls[0] = (EDGE_I444_TOP_HAS_RIGHT as libc::c_int
| EDGE_I422_TOP_HAS_RIGHT as libc::c_int
| EDGE_I420_TOP_HAS_RIGHT as libc::c_int
| (EDGE_I444_LEFT_HAS_BOTTOM as libc::c_int
| EDGE_I422_LEFT_HAS_BOTTOM as libc::c_int
| EDGE_I420_LEFT_HAS_BOTTOM as libc::c_int)) as EdgeFlags;
(*nwc).tls[1] = (edge_flags as libc::c_uint
& (EDGE_I444_LEFT_HAS_BOTTOM as libc::c_int
| EDGE_I422_LEFT_HAS_BOTTOM as libc::c_int
| EDGE_I420_LEFT_HAS_BOTTOM as libc::c_int) as libc::c_uint)
as EdgeFlags;
(*nwc).tls[2] = (edge_flags as libc::c_uint
& (EDGE_I444_TOP_HAS_RIGHT as libc::c_int
| EDGE_I422_TOP_HAS_RIGHT as libc::c_int
| EDGE_I420_TOP_HAS_RIGHT as libc::c_int) as libc::c_uint)
as EdgeFlags;
(*nwc).trs[0] = (edge_flags as libc::c_uint
| (EDGE_I444_TOP_HAS_RIGHT as libc::c_int
| EDGE_I422_TOP_HAS_RIGHT as libc::c_int
| EDGE_I420_TOP_HAS_RIGHT as libc::c_int) as libc::c_uint)
as EdgeFlags;
(*nwc).trs[1] = (edge_flags as libc::c_uint
| (EDGE_I444_LEFT_HAS_BOTTOM as libc::c_int
| EDGE_I422_LEFT_HAS_BOTTOM as libc::c_int
| EDGE_I420_LEFT_HAS_BOTTOM as libc::c_int) as libc::c_uint)
as EdgeFlags;
(*nwc).trs[2] = 0 as EdgeFlags;
(*nwc).tts[0] = (EDGE_I444_TOP_HAS_RIGHT as libc::c_int
| EDGE_I422_TOP_HAS_RIGHT as libc::c_int
| EDGE_I420_TOP_HAS_RIGHT as libc::c_int
| (EDGE_I444_LEFT_HAS_BOTTOM as libc::c_int
| EDGE_I422_LEFT_HAS_BOTTOM as libc::c_int
| EDGE_I420_LEFT_HAS_BOTTOM as libc::c_int)) as EdgeFlags;
(*nwc).tts[1] = (edge_flags as libc::c_uint
& (EDGE_I444_TOP_HAS_RIGHT as libc::c_int
| EDGE_I422_TOP_HAS_RIGHT as libc::c_int
| EDGE_I420_TOP_HAS_RIGHT as libc::c_int) as libc::c_uint)
as EdgeFlags;
(*nwc).tts[2] = (edge_flags as libc::c_uint
& (EDGE_I444_LEFT_HAS_BOTTOM as libc::c_int
| EDGE_I422_LEFT_HAS_BOTTOM as libc::c_int
| EDGE_I420_LEFT_HAS_BOTTOM as libc::c_int) as libc::c_uint)
as EdgeFlags;
(*nwc).tbs[0] = (edge_flags as libc::c_uint
| (EDGE_I444_LEFT_HAS_BOTTOM as libc::c_int
| EDGE_I422_LEFT_HAS_BOTTOM as libc::c_int
| EDGE_I420_LEFT_HAS_BOTTOM as libc::c_int) as libc::c_uint)
as EdgeFlags;
(*nwc).tbs[1] = (edge_flags as libc::c_uint
| (EDGE_I444_TOP_HAS_RIGHT as libc::c_int
| EDGE_I422_TOP_HAS_RIGHT as libc::c_int
| EDGE_I420_TOP_HAS_RIGHT as libc::c_int) as libc::c_uint)
as EdgeFlags;
(*nwc).tbs[2] = 0 as EdgeFlags;

nwc.tls[0] = (EDGE_I444_TOP_HAS_RIGHT | EDGE_I422_TOP_HAS_RIGHT | EDGE_I420_TOP_HAS_RIGHT)
| (EDGE_I444_LEFT_HAS_BOTTOM | EDGE_I422_LEFT_HAS_BOTTOM | EDGE_I420_LEFT_HAS_BOTTOM);
nwc.tls[1] = edge_flags
& (EDGE_I444_LEFT_HAS_BOTTOM | EDGE_I422_LEFT_HAS_BOTTOM | EDGE_I420_LEFT_HAS_BOTTOM);
nwc.tls[2] = edge_flags
& (EDGE_I444_TOP_HAS_RIGHT | EDGE_I422_TOP_HAS_RIGHT | EDGE_I420_TOP_HAS_RIGHT);

nwc.trs[0] = edge_flags
| (EDGE_I444_TOP_HAS_RIGHT | EDGE_I422_TOP_HAS_RIGHT | EDGE_I420_TOP_HAS_RIGHT);
nwc.trs[1] = edge_flags
| (EDGE_I444_LEFT_HAS_BOTTOM | EDGE_I422_LEFT_HAS_BOTTOM | EDGE_I420_LEFT_HAS_BOTTOM);
nwc.trs[2] = 0 as EdgeFlags;

nwc.tts[0] = (EDGE_I444_TOP_HAS_RIGHT | EDGE_I422_TOP_HAS_RIGHT | EDGE_I420_TOP_HAS_RIGHT)
| (EDGE_I444_LEFT_HAS_BOTTOM | EDGE_I422_LEFT_HAS_BOTTOM | EDGE_I420_LEFT_HAS_BOTTOM);
nwc.tts[1] = edge_flags
& (EDGE_I444_TOP_HAS_RIGHT | EDGE_I422_TOP_HAS_RIGHT | EDGE_I420_TOP_HAS_RIGHT);
nwc.tts[2] = edge_flags
& (EDGE_I444_LEFT_HAS_BOTTOM | EDGE_I422_LEFT_HAS_BOTTOM | EDGE_I420_LEFT_HAS_BOTTOM);

nwc.tbs[0] = edge_flags
| (EDGE_I444_LEFT_HAS_BOTTOM | EDGE_I422_LEFT_HAS_BOTTOM | EDGE_I420_LEFT_HAS_BOTTOM);
nwc.tbs[1] = edge_flags
| (EDGE_I444_TOP_HAS_RIGHT | EDGE_I422_TOP_HAS_RIGHT | EDGE_I420_TOP_HAS_RIGHT);
nwc.tbs[2] = 0 as EdgeFlags;
};
}
unsafe extern "C" fn init_mode_node(
Expand Down

0 comments on commit f3bcfb5

Please sign in to comment.