rsspice/generated/spicelib/
zzektrsb.rs1use super::*;
6use f2rust_std::*;
7
8const MXKIDC: i32 = 63;
9const MXKEYC: i32 = (MXKIDC - 1);
10const MNKIDC: i32 = (((2 * MXKIDC) + 1) / 3);
11const MNKEYC: i32 = (MNKIDC - 1);
12const MXKIDR: i32 = ((2 * (((2 * MXKIDC) - 2) / 3)) + 1);
13const MXKEYR: i32 = (MXKIDR - 1);
14const MNKIDR: i32 = 2;
15const TRTYPE: i32 = 1;
16const TRVERS: i32 = 1;
17const TRNNOD: i32 = (TRTYPE + 1);
18const TRNKEY: i32 = (TRNNOD + 1);
19const TRDPTH: i32 = (TRNKEY + 1);
20const TRNKR: i32 = (TRDPTH + 1);
21const TRKEYR: i32 = TRNKR;
22const TRKIDR: i32 = ((TRKEYR + MXKEYR) + 1);
23const TRDATR: i32 = ((TRKIDR + MXKIDR) + 1);
24const TRSIZR: i32 = ((TRDATR + MXKEYR) + 1);
25const TRNKC: i32 = 1;
26const TRKEYC: i32 = TRNKC;
27const TRKIDC: i32 = ((TRKEYC + MXKEYC) + 1);
28const TRDATC: i32 = ((TRKIDC + MXKIDC) + 1);
29const TRSIZC: i32 = ((TRDATC + MXKEYC) + 1);
30const TRMXDP: i32 = 10;
31
32pub fn ZZEKTRSB(
34 HANDLE: i32,
35 TREE: i32,
36 KEY: i32,
37 LSIB: &mut i32,
38 LKEY: &mut i32,
39 RSIB: &mut i32,
40 RKEY: &mut i32,
41 ctx: &mut Context,
42) -> f2rust_std::Result<()> {
43 let mut ADDRSS: i32 = 0;
44 let mut BASE: i32 = 0;
45 let mut KEYBAS: i32 = 0;
46 let mut KIDBAS: i32 = 0;
47 let mut LOFFST: i32 = 0;
48 let mut LLPIDX: i32 = 0;
49 let mut LPIDX: i32 = 0;
50 let mut LPKEY: i32 = 0;
51 let mut NKBAS: i32 = 0;
52 let mut PARENT: i32 = 0;
53 let mut PKEY: i32 = 0;
54 let mut POFFST: i32 = 0;
55 let mut ROFFST: i32 = 0;
56 let mut RPIDX: i32 = 0;
57 let mut RPKEY: i32 = 0;
58
59 ZZEKTRPI(
76 HANDLE,
77 TREE,
78 KEY,
79 &mut PARENT,
80 &mut PKEY,
81 &mut POFFST,
82 &mut LPIDX,
83 &mut LPKEY,
84 LSIB,
85 &mut RPIDX,
86 &mut RPKEY,
87 RSIB,
88 ctx,
89 )?;
90
91 if FAILED(ctx) {
92 return Ok(());
93 }
94
95 if (PARENT == TREE) {
100 KEYBAS = TRKEYR;
101 KIDBAS = TRKIDR;
102 NKBAS = TRNKR;
103 } else {
104 KEYBAS = TRKEYC;
105 KIDBAS = TRKIDC;
106 NKBAS = TRNKC;
107 }
108
109 if (LPIDX > 1) {
116 LLPIDX = (LPIDX - 1);
121 BASE = ZZEKTRBS(PARENT, ctx)?;
122 ADDRSS = ((BASE + KEYBAS) + LLPIDX);
123
124 DASRDI(
125 HANDLE,
126 ADDRSS,
127 ADDRSS,
128 std::slice::from_mut(&mut LOFFST),
129 ctx,
130 )?;
131
132 LOFFST = (LOFFST + POFFST);
133
134 BASE = ZZEKTRBS(*LSIB, ctx)?;
139 ADDRSS = ((BASE + TRKEYC) + 1);
140
141 DASRDI(HANDLE, ADDRSS, ADDRSS, std::slice::from_mut(LKEY), ctx)?;
142
143 *LKEY = (*LKEY + LOFFST);
144 } else if (LPIDX == 1) {
145 BASE = ZZEKTRBS(*LSIB, ctx)?;
153 ADDRSS = ((BASE + TRKEYC) + 1);
154
155 DASRDI(HANDLE, ADDRSS, ADDRSS, std::slice::from_mut(LKEY), ctx)?;
156
157 *LKEY = (*LKEY + POFFST);
158 } else {
159 *LKEY = 0;
164 }
165
166 if (RPIDX > 0) {
171 ROFFST = (RPKEY + POFFST);
176
177 BASE = ZZEKTRBS(*RSIB, ctx)?;
182 ADDRSS = ((BASE + TRKEYC) + 1);
183
184 DASRDI(HANDLE, ADDRSS, ADDRSS, std::slice::from_mut(RKEY), ctx)?;
185
186 *RKEY = (*RKEY + ROFFST);
187 } else {
188 *RKEY = 0;
193 }
194 Ok(())
199}