up_qor_put.c (3133B)
1 #include "all.h" 2 3 u3_noun 4 u3qdu_qor_put(u3_noun a, u3_noun k, u3_noun p, u3_noun v) 5 { 6 if (u3_nul == a) { 7 return u3nt(u3nt(u3k(k), u3k(p), u3k(v)), u3_nul, u3k(k)); 8 } 9 10 u3_noun n_a, t_a, m_a; 11 u3_noun k_n_a, p_n_a, v_n_a; 12 u3x_trel(a, &n_a, &t_a, &m_a); 13 u3x_trel(n_a, &k_n_a, &p_n_a, &v_n_a); 14 15 if (u3_nul == t_a) { 16 if (c3y == u3r_sing(k, m_a)) { 17 return u3nt(u3nt(u3k(k), u3k(p), u3k(v)), u3_nul, u3k(k)); 18 } 19 else if (c3y == u3qc_gor(k, m_a)) { 20 u3_noun fel = u3nt(u3nt(u3k(k), u3k(p), u3k(v)), u3_nul, u3k(k)); 21 u3_noun fer = u3nt(u3k(n_a), u3_nul, u3k(k_n_a)); 22 23 u3_noun pro = u3qdu_qor_toy(fel, fer); 24 25 u3z(fel); 26 u3z(fer); 27 28 return pro; 29 } 30 else { 31 u3_noun fel = u3nt(u3nt(u3k(k_n_a), u3k(p_n_a), u3k(v_n_a)), 32 u3_nul, 33 u3k(k_n_a)); 34 u3_noun fer = u3nt(u3nt(u3k(k), u3k(p), u3k(v)), u3_nul, u3k(k)); 35 u3_noun pro = u3qdu_qor_toy(fel, fer); 36 37 u3z(fel); 38 u3z(fer); 39 40 return pro; 41 } 42 } 43 44 u3_noun hot = u3h(t_a); 45 46 if (c3n == u3ud(hot)) { 47 return u3m_bail(c3__exit); 48 } 49 else switch ( hot ) { 50 default: 51 return u3m_bail(c3__exit); 52 53 case c3__rlos: { 54 u3_noun b = u3t(u3t(t_a)); 55 56 u3_noun n_b, l_b, m_b, r_b; 57 u3x_qual(b, &n_b, &l_b, &m_b, &r_b); 58 59 if ( (c3y == u3r_sing(k, m_b)) || (c3y == u3qc_gor(k, m_b)) ) { 60 u3_noun fel = u3nt(u3k(n_a), u3k(l_b), u3k(m_b)); 61 u3_noun fer = u3nt(u3k(n_b), u3k(r_b), u3k(m_a)); 62 u3_noun pre = u3qdu_qor_put(fel, k, p, v); 63 u3_noun pro = u3qdu_qor_toy(pre, fer); 64 65 u3z(pre); 66 u3z(fel); 67 u3z(fer); 68 69 return pro; 70 } else { 71 u3_noun fel = u3nt(u3k(n_b), u3k(r_b), u3k(m_a)); 72 u3_noun fer = u3nt(u3k(n_a), u3k(l_b), u3k(m_b)); 73 u3_noun pre = u3qdu_qor_put(fel, k, p, v); 74 u3_noun pro = u3qdu_qor_toy(fer, pre); 75 76 u3z(pre); 77 u3z(fel); 78 u3z(fer); 79 80 return pro; 81 } 82 } 83 84 case c3__llos: { 85 u3_noun b = u3t(u3t(t_a)); 86 87 u3_noun n_b, l_b, m_b, r_b; 88 u3x_qual(b, &n_b, &l_b, &m_b, &r_b); 89 90 if ( (c3y == u3r_sing(k, m_b)) || (c3y == u3qc_gor(k, m_b)) ) { 91 u3_noun fel = u3nt(u3k(n_b), u3k(l_b), u3k(m_b)); 92 u3_noun fer = u3nt(u3k(n_a), u3k(r_b), u3k(m_a)); 93 u3_noun pre = u3qdu_qor_put(fel, k, p, v); 94 95 u3_noun pro = u3qdu_qor_toy(pre, fer); 96 97 u3z(pre); 98 u3z(fel); 99 u3z(fer); 100 101 return pro; 102 } else { 103 u3_noun fel = u3nt(u3k(n_a), u3k(r_b), u3k(m_a)); 104 u3_noun fer = u3nt(u3k(n_b), u3k(l_b), u3k(m_b)); 105 u3_noun pre = u3qdu_qor_put(fel, k, p, v); 106 u3_noun pro = u3qdu_qor_toy(fer, pre); 107 108 u3z(pre); 109 u3z(fel); 110 u3z(fer); 111 112 return pro; 113 } 114 } 115 } 116 } 117 118 u3_noun 119 u3wdu_qor_put(u3_noun cor) 120 { 121 u3_noun a, k, p, v; 122 123 if ( (c3n == u3r_mean(cor, u3x_sam_2, &a, u3x_sam_6, &k, 124 u3x_sam_14, &p, u3x_sam_15, &v, 0)) || 125 (c3n == u3ud(p)) ) 126 { 127 return u3m_bail(c3__exit); 128 } else { 129 return u3qdu_qor_put(a, k, p, v); 130 } 131 } 132 133