Beispiel #1
0
  u3_noun
  _cqfu_fire(u3_noun van,
             u3_noun sut,
             u3_noun hag)
  {
    u3_noun vet = u3r_at(u3qfu_van_vet, van);

    c3_assert(!"not live");
    {
      if ( (c3y == u3du(hag)) && (u3_nul == u3t(hag)) ) {
        u3_noun i_hag = u3h(hag);
        u3_noun pi_hag = u3h(i_hag);
        u3_noun qi_hag = u3t(i_hag);

        if ( c3__elm == u3h(qi_hag) ) {
          u3_noun qqi_hag = u3t(qi_hag);

          if ( c3y == u3du(qqi_hag) &&
              (u3_nul == u3h(qqi_hag)) &&
              (1 == u3t(qqi_hag)) )
          {
            return u3k(pi_hag);
          }
        }
      }
    }
    return u3nc(c3__hold, _fire_in(van, vet, hag));
  }
Beispiel #2
0
/* glue
*/
  u3_noun
  _cqe_glue_fun(u3_noun bus,
                u3_noun vex,
                u3_noun sab)
  {
    u3_noun p_vex, q_vex;

    u3x_cell(vex, &p_vex, &q_vex);
    if ( c3n == u3du(q_vex) ) {
      return u3k(vex);
    }
    else {
      u3_noun uq_vex = u3t(q_vex);
      u3_noun puq_vex, quq_vex;
      u3_noun yit, yur;
      u3_noun p_yit, q_yit;
      u3_noun ret;

      u3x_cell(uq_vex, &puq_vex, &quq_vex);
      yit = u3x_good(u3n_slam_on(u3k(bus), u3k(quq_vex)));

      u3x_cell(yit, &p_yit, &q_yit);
      yur = _last(p_vex, p_yit);

      if ( c3n == u3du(q_yit) ) {
        ret = u3nc(yur, u3_nul);
      }
      else {
        u3_noun uq_yit = u3t(q_yit);
        u3_noun puq_yit, quq_yit;
        u3_noun wam, p_wam, q_wam, goy;

        u3x_cell(uq_yit, &puq_yit, &quq_yit);
        wam = u3x_good(u3n_slam_on(u3k(sab), u3k(quq_yit)));

        u3x_cell(wam, &p_wam, &q_wam);
        goy = _last(yur, p_wam);
        u3z(yur);

        if ( c3n == u3du(q_wam) ) {
          ret = u3nc(goy, u3_nul);
        } else {
          u3_noun uq_wam = u3t(q_wam);
          u3_noun puq_wam, quq_wam;

          u3x_cell(uq_wam, &puq_wam, &quq_wam);
          ret = u3nq(goy,
                     u3_nul,
                     u3nc(u3k(puq_vex),
                          u3k(puq_wam)),
                     u3k(quq_wam));
        }
        u3z(wam);
      }
      u3z(yit);
      return ret;
    }
  }
Beispiel #3
0
/* _unix_sync_change(): sync single change to unix
*/
static void
_unix_sync_change(u3_udir* dir_u, u3_noun pax, u3_noun mim)
{
    c3_assert( c3y == dir_u->dir );

    if ( c3n == u3du(pax) ) {
        if ( u3_nul == pax ) {
            uL(fprintf(uH,"can't sync out file as top-level, strange\r\n"));
        }
        else {
            uL(fprintf(uH,"sync out: bad path\r\n"));
        }
        u3z(pax);
        u3z(mim);
        return;
    }
    else if ( c3n == u3du(u3t(pax)) ) {
        uL(fprintf(uH,"can't sync out file as top-level, strangely\r\n"));
        u3z(pax);
        u3z(mim);
    }
    else {
        u3_noun i_pax = u3h(pax);
        u3_noun t_pax = u3t(pax);
        u3_noun it_pax = u3h(t_pax);
        u3_noun tt_pax = u3t(t_pax);

        if ( u3_nul == tt_pax ) {
            _unix_sync_file(dir_u, u3k(i_pax), u3k(it_pax), mim);
        }
        else {
            c3_c* nam_c = u3r_string(i_pax);
            c3_w pax_w = strlen(dir_u->pax_c);
            u3_unod* nod_u;

            for ( nod_u = dir_u->kid_u;
                    ( nod_u &&
                      ( c3n == nod_u->dir ||
                        0 != strcmp(nod_u->pax_c + pax_w + 1, nam_c) ) );
                    nod_u = nod_u->nex_u )
            { }

            if ( !nod_u ) {
                nod_u = c3_malloc(sizeof(u3_udir));
                _unix_create_dir((u3_udir*) nod_u, dir_u, u3k(i_pax));
            }

            if ( c3n == nod_u->dir ) {
                uL(fprintf(uH,
                           "weird, we got a file when we weren't expecting to\r\n"));
                c3_assert(0);
            }

            _unix_sync_change((u3_udir*) nod_u, u3k(t_pax), mim);
        }
    }
    u3z(pax);
}
Beispiel #4
0
  u3_noun
  _cqe_stew_fun(u3_noun hel,
                u3_noun tub)
  {
    u3_noun p_tub, q_tub;

    u3x_cell(tub, &p_tub, &q_tub);
    if ( c3n == u3du(q_tub) ) {
      return _fail(tub);
    }
    else {
      u3_noun iq_tub = u3h(q_tub);

      if ( !_(u3a_is_cat(iq_tub)) ) {
        return u3m_bail(c3__fail);
      }
      else while ( 1 ) {
        if ( c3n == u3du(hel) ) {
          return _fail(tub);
        }
        else {
          u3_noun n_hel, l_hel, r_hel;
          u3_noun pn_hel, qn_hel;
          c3_o    bit_o;

          u3x_trel(hel, &n_hel, &l_hel, &r_hel);
          u3x_cell(n_hel, &pn_hel, &qn_hel);

          if ( (c3n == u3du(pn_hel)) ) {
            bit_o = __((iq_tub == pn_hel));
          }
          else {
            u3_noun hpn_hel = u3h(pn_hel);
            u3_noun tpn_hel = u3t(pn_hel);

            if ( !_(u3a_is_cat(hpn_hel)) ||
                 !_(u3a_is_cat(tpn_hel)) ) {
              return _fail(tub);
            }
            else bit_o = __((iq_tub >= hpn_hel) && (iq_tub <= tpn_hel));
          }

          if ( c3y == bit_o ) {
            return u3x_good
              (u3n_slam_on(u3k(qn_hel), u3k(tub)));
          } else {
            if ( c3y == _stew_wor(iq_tub, pn_hel) ) {
              hel = l_hel;
            }
            else hel = r_hel;
          }
        }
      }
    }
  }
Beispiel #5
0
/* bend
*/
  u3_noun
  _cqe_bend_fun(u3_noun raq,
                u3_noun vex,
                u3_noun sab)
  {
    u3_noun p_vex, q_vex;

    u3x_cell(vex, &p_vex, &q_vex);
    if ( c3n == u3du(q_vex) ) {
      return u3k(vex);
    } else {
      u3_noun uq_vex = u3t(q_vex);
      u3_noun puq_vex, quq_vex;
      u3_noun yit, yur;
      u3_noun p_yit, q_yit;
      u3_noun ret;

      u3x_cell(uq_vex, &puq_vex, &quq_vex);
      yit = u3x_good(u3n_slam_on(u3k(sab), u3k(quq_vex)));

      u3x_cell(yit, &p_yit, &q_yit);
      yur = _last(p_vex, p_yit);

      if ( c3n == u3du(q_yit) ) {
        ret = u3nc(yur, u3k(q_vex));
      }
      else {
        u3_noun uq_yit = u3t(q_yit);
        u3_noun puq_yit, quq_yit;
        u3_noun vux;

        u3x_cell(uq_yit, &puq_yit, &quq_yit);

        vux = u3x_good(u3n_slam_on(u3k(raq),
                                   u3nc(u3k(puq_vex),
                                   u3k(puq_yit))));
        if ( u3_nul == vux ) {
          ret = u3nc(yur, u3k(q_vex));
        }
        else {
          ret = u3nq(yur,
                     u3_nul,
                     u3k(u3t(vux)),
                     u3k(quq_yit));
          u3z(vux);
        }
      }
      u3z(yit);
      return ret;
    }
  }
Beispiel #6
0
/* functions
*/
  u3_noun
  u3qf_comb(u3_noun mal,
            u3_noun buz)
  {
    if ( (u3_none == mal) || (u3_none == buz) ) {
      return u3_none;
    }
    else {
      u3_noun p_mal, q_mal, p_buz, q_buz, pp_buz, pq_buz;

      if ( (c3y == u3r_p(mal, 0, &p_mal)) && (0 != p_mal) ) {
        if ( (c3y == u3r_p(buz, 0, &p_buz)) && (0 != p_buz) ) {
          return u3nc(0,
                      u3qc_peg(p_mal, p_buz));
        }
        else if ( c3y == u3r_pq(buz, 2, &p_buz, &q_buz) &&
                  c3y == u3r_p(p_buz, 0, &pp_buz) &&
                  c3y == u3r_p(q_buz, 0, &pq_buz) )
        {
          return u3nt(2,
                      u3nc(0,
                           u3qc_peg(p_mal, pp_buz)),
                      u3nc(0,
                           u3qc_peg(p_mal, pq_buz)));
        }
        else return u3nt(7, 
                         u3k(mal),
                         u3k(buz));
      }
#if 1
      else if ( (c3y == u3r_bush(mal, &p_mal, &q_mal)) &&
                (c3y == u3du(p_mal)) &&
                (c3y == u3du(q_mal)) &&
                (0 == u3h(q_mal)) &&
                (1 == u3t(q_mal)) )
      {
        return u3nt(8, 
                    u3k(p_mal),
                    u3k(buz));
      }
#endif
      else if ( (c3y == u3r_p(buz, 0, &p_buz)) &&
                (c3y == u3r_sing(1, p_buz)) )
      {
        return u3k(mal);
      }
      else return u3nt(7, 
                       u3k(mal),
                       u3k(buz));
    }
  }
Beispiel #7
0
/* functions
*/
  u3_noun
  u3qb_scag(
                    u3_atom a,
                    u3_noun b)
  {
    if ( !_(u3a_is_cat(a)) ) {
      return u3m_bail(c3__fail);
    }
    else {
      u3_noun acc;
      c3_w i_w = a;

      if ( !i_w )
	return u3_nul;

      while ( i_w ) {
        if ( c3n == u3du(b) ) {
          return u3_nul;
        }
	acc = u3i_cell( u3h(b), acc );
	b = u3t(b);
	i_w--;
      }

      return u3kb_flop(acc);
    }
  }
Beispiel #8
0
  static u3_noun
  _play_edit(u3_noun van,
             u3_noun sut,
             u3_noun mew,
             u3_noun rag)
  {
    while ( 1 ) {
      if ( c3n == u3du(mew) ) {
        return rag;
      } else {
        u3_noun i_mew = u3h(mew);
        u3_noun t_mew = u3t(mew);
        u3_noun pi_mew = u3h(i_mew);
        u3_noun qi_mew = u3t(i_mew);
        u3_noun laf = _play_in(van, sut, qi_mew);
        u3_noun ruz = u3qfu_tock(van, sut, pi_mew, laf, rag);

        u3z(laf);
        u3z(rag);
        rag = u3k(u3t(ruz));
        u3z(ruz);

        mew = t_mew;
      }
    }
  }
Beispiel #9
0
/* stag
*/
  u3_noun
  _cqe_stag_fun(u3_noun gob,
                u3_noun sef,
                u3_noun tub)
  {
    u3_noun vex = u3x_good(u3n_slam_on(u3k(sef), u3k(tub)));
    u3_noun p_vex, q_vex;

    u3x_cell(vex, &p_vex, &q_vex);

    if ( c3n == u3du(q_vex) ) {
      return vex;
    }
    else {
      u3_noun uq_vex = u3t(q_vex);
      u3_noun puq_vex, quq_vex;
      u3_noun wag;
      u3_noun ret;

      u3x_cell(uq_vex, &puq_vex, &quq_vex);
      wag = u3nc(u3k(gob), u3k(puq_vex));
      ret = u3nq(u3k(p_vex),
                 u3_nul,
                 wag,
                 u3k(quq_vex));

      u3z(vex);
      return ret;
    }
  }
Beispiel #10
0
/* shim
*/
  u3_noun
  _cqe_shim_fun(u3_noun zep,
                u3_noun tub)
  {
    u3_noun p_tub, q_tub;

    u3x_cell(tub, &p_tub, &q_tub);

    if ( c3n == u3du(q_tub) ) {
      return _fail(tub);
    }
    else {
      u3_noun p_zep, q_zep;
      u3_noun iq_tub = u3h(q_tub);

      u3x_cell(zep, &p_zep, &q_zep);
      if ( _(u3a_is_cat(p_zep)) &&
           _(u3a_is_cat(q_zep)) &&
           _(u3a_is_cat(iq_tub)) )
      {
        if ( (iq_tub >= p_zep) && (iq_tub <= q_zep) ) {
          return _next(tub);
        }
        else return _fail(tub);
      }
      else {
        return u3m_bail(c3__fail);
      }
    }
  }
Beispiel #11
0
/* pfix
*/
  u3_noun
  _cqe_pfix(u3_noun vex,
            u3_noun sab)
  {
    u3_noun p_vex, q_vex;

    u3x_cell(vex, &p_vex, &q_vex);
    if ( c3n == u3du(q_vex) ) {
      return u3k(vex);
    }
    else {
      u3_noun uq_vex = u3t(q_vex);
      u3_noun puq_vex, quq_vex;
      u3_noun yit, p_yit, q_yit;
      u3_noun ret;

      u3x_cell(uq_vex, &puq_vex, &quq_vex);
      yit = u3x_good(u3n_slam_on(u3k(sab), u3k(quq_vex)));

      u3x_cell(yit, &p_yit, &q_yit);
      ret = u3nc(_last(p_vex, p_yit),
                 u3k(q_yit));

      u3z(yit);
      return ret;
    }
  }
Beispiel #12
0
/* cold
*/
  u3_noun
  _cqe_cold_fun(u3_noun cus,
                u3_noun sef,
                u3_noun tub)
  {
    u3_noun vex = u3x_good(u3n_slam_on(u3k(sef), u3k(tub)));
    u3_noun p_vex, q_vex;

    u3x_cell(vex, &p_vex, &q_vex);

    if ( c3n == u3du(q_vex) ) {
      return vex;
    }
    else {
      u3_noun uq_vex = u3t(q_vex);
      u3_noun quq_vex;
      u3_noun ret;

      u3x_cell(uq_vex, 0, &quq_vex);
      ret = u3nq(u3k(p_vex),
                 u3_nul,
                 u3k(cus),
                 u3k(quq_vex));

      u3z(vex);
      return ret;
    }
  }
Beispiel #13
0
/* functions
*/
  u3_noun
  u3qdi_gas(u3_noun a,
            u3_noun b)
  {
    if ( u3_nul == b ) {
      return u3k(a);
    }
    else {
      if ( c3n == u3du(b) ) {
        return u3m_bail(c3__exit);
      } else {
        u3_noun i_b = u3h(b);
        u3_noun t_b = u3t(b);
        u3_noun c;

        if ( u3_none == (c = u3qdi_put(a, i_b)) ) {
          return u3m_bail(c3__exit);
        } else {
          u3_noun d = u3qdi_gas(c, t_b);

          u3z(c);
          return d;
        }
      }
    }
  }
Beispiel #14
0
  static u3_noun
  _skid_in(u3j_site* sit_u, u3_noun a)
  {
    if ( 0 == a ) {
      return u3nc(u3_nul, u3_nul);
    }
    else if ( c3n == u3du(a) ) {
      return u3m_bail(c3__exit);
    } else {
      u3_noun acc = _skid_in(sit_u, u3t(a));
      u3_noun hoz = u3j_gate_slam(sit_u, u3k(u3h(a)));
      u3_noun nex;

      if ( c3y == hoz ) {
        nex = u3nc(u3nc(u3k(u3h(a)), u3k(u3h(acc))), u3k(u3t(acc)));
      } 
      else {
        nex = u3nc(u3k(u3h(acc)), u3nc(u3k(u3h(a)), u3k(u3t(acc))));
      }
      u3z(hoz);
      u3z(acc);

      return nex;
    }
  }
Beispiel #15
0
Datei: temp.c Projekt: josl/urbit
/* u3_temp_io_poll(): update temp IO state.
*/
void
u3_temp_io_poll(void)
{
  u3_temp* teh_u = &u3_Host.teh_u;
  u3_noun  wen   = u3v_keep(u3nt(u3_blip, c3__temp, u3_nul));

  if ( (u3_nul != wen) &&
       (c3y == u3du(wen)) &&
       (c3y == u3ud(u3t(wen))) )
  {
    c3_d gap_d = u3_time_gap_ms(u3k(u3A->now), u3k(u3t(wen)));

#if 0
    fprintf(stderr, "gap_d %llu, plus %llu\r\n", 
        gap_d, gap_d + (c3_d)teh_u->run_w);
#endif
    gap_d += teh_u->run_w;

    if ( c3y == teh_u->alm ) {
      uv_timer_stop(&teh_u->tim_u);
    }
    else teh_u->alm = c3y;

    uv_timer_start(&teh_u->tim_u, _temp_time_cb, gap_d, 0);
  }
  else {
    if ( c3y == teh_u->alm ) {
      uv_timer_stop(&teh_u->tim_u);
    }
    teh_u->alm = c3n;
  }
  u3z(wen);
}
Beispiel #16
0
Datei: skid.c Projekt: bd/urbit
/* functions
*/
  u3_noun
  u3qb_skid(u3_noun a,
            u3_noun b)
  {
    if ( 0 == a ) {
      return u3nc(u3_nul, u3_nul);
    }
    else if ( c3n == u3du(a) ) {
      return u3m_bail(c3__exit);
    } else {
      u3_noun acc = u3qb_skid(u3t(a), b);
      u3_noun hoz = u3n_slam_on(u3k(b), u3k(u3h(a)));
      u3_noun nex;

      if ( c3y == hoz ) {
        nex = u3nc(u3nc(u3k(u3h(a)), u3k(u3h(acc))), u3k(u3t(acc)));
      } 
      else {
        nex = u3nc(u3k(u3h(acc)), u3nc(u3k(u3h(a)), u3k(u3t(acc))));
      }
      u3z(hoz);
      u3z(acc);

      return nex;
    }
  }
Beispiel #17
0
/* functions
*/
  u3_noun
  u3qb_roll(u3_noun a,
            u3_noun b)
  {
    if ( 0 == a ) {
      return u3k(u3r_at(u3x_sam_3, b));
    }
    else if ( c3n == u3du(a) ) {
      return u3m_bail(c3__exit);
    }
    else {
      u3_noun gim = u3k(u3h(a));
      u3_noun zor = u3k(u3r_at(u3x_sam_3, b));
      u3_noun daz = u3n_slam_on(u3k(b), u3nc(gim, zor));
      u3_noun vel = u3i_molt(u3k(b), u3x_sam_3, daz, 0);

      if ( u3_none == vel ) {
        return u3m_bail(c3__exit);
      } else {
        u3_noun hox = u3qb_roll(u3t(a), vel);

        u3z(vel);
        return hox;
      }
    }
  }
Beispiel #18
0
/* functions
*/
  u3_noun
  u3qb_murn(u3_noun a, u3_noun b)
  {
    if ( 0 == a ) {
      return a;
    }
    else if ( c3n == u3du(a) ) {
      return u3m_bail(c3__exit);
    }
    else {
      u3_noun one = u3n_slam_on(u3k(b), u3k(u3h(a)));
      u3_noun two = u3qb_murn(u3t(a), b);
      u3_noun nex;

      switch ( u3ud(one) ) {
        case c3y:  u3z(one);
                   return two;
        case c3n:  nex = u3nc(u3k(u3t(one)), two);
                   u3z(one);
                   return nex;
        default:   u3z(one);
                   u3z(two);
                   return u3_none;
      }
    }
  }
Beispiel #19
0
 static u3_noun
 _listp(u3_noun lix)
 {
   while ( 1 ) {
     if ( u3_nul == lix ) return c3y;
     if ( c3n == u3du(lix) ) return c3n;
     lix = u3t(lix);
   }
 }
Beispiel #20
0
/* stir
*/
  u3_noun
  _cqe_stir_fun(u3_noun rud,
                u3_noun raq,
                u3_noun fel,
                u3_noun tub)
  {
    u3_noun vex = u3x_good(u3n_slam_on(u3k(fel), u3k(tub)));
    u3_noun p_vex, q_vex;
    u3_noun ret;

    u3x_cell(vex, &p_vex, &q_vex);
    if ( c3n == u3du(q_vex) ) {
      ret = u3nq(u3k(p_vex),
                 u3_nul,
                 u3k(rud),
                 u3k(tub));
    }
    else {
      u3_noun uq_vex = u3t(q_vex);
      u3_noun puq_vex, quq_vex;
      u3_noun wag, p_wag, q_wag, uq_wag, puq_wag, quq_wag;

      u3x_cell(uq_vex, &puq_vex, &quq_vex);
      wag = _cqe_stir_fun(rud, raq, fel, quq_vex);

      u3x_cell(wag, &p_wag, &q_wag);
      if ( c3n == u3du(q_wag) ) {
        return u3m_bail(c3__fail);
      }
      uq_wag = u3t(q_wag);
      u3x_cell(uq_wag, &puq_wag, &quq_wag);

      ret = u3nq(_last(p_vex, p_wag),
                 u3_nul,
                 u3x_good(u3n_slam_on(u3k(raq),
                                      u3nc(u3k(puq_vex),
                                           u3k(puq_wag)))),
                 u3k(quq_wag));
      u3z(wag);
    }
    u3z(vex);
    return ret;
  }
Beispiel #21
0
/* logic
*/
  u3_noun
  u3qfu_repo(
                        u3_noun van,
                        u3_noun sut)
  {
    u3_noun p_sut, q_sut;

    if ( c3n == u3du(sut) ) switch ( sut ) {
      default: return u3k(sut);

      case c3__noun:
        return u3nt(c3__fork,
                            u3nc(c3__atom, u3_blip),
                            u3nt(c3__cell, c3__noun, c3__noun));
    }
    else switch ( u3h(sut) ) {
      default: {
        return u3m_error("repo-flat");
      }

      case c3__bull: {
        if ( c3n == u3r_cell(u3t(sut), &p_sut, &q_sut)) {
          return u3m_bail(c3__fail);
        } else {
          return u3k(q_sut);
        }
      }
      case c3__core: {
        if ( c3n == u3r_cell(u3t(sut), &p_sut, &q_sut) ) {
          return u3m_bail(c3__fail);
        } else {
          return u3nt(c3__cell, c3__noun, u3k(p_sut));
        }
      }
      case c3__cube: {
        if ( c3n == u3r_cell(u3t(sut), &p_sut, &q_sut)) {
          return u3m_bail(c3__fail);
        } else {
          return u3k(q_sut);
        }
      }
      case c3__face: {
        if ( c3n == u3r_cell(u3t(sut), &p_sut, &q_sut)) {
          return u3m_bail(c3__fail);
        } else {
          return u3k(q_sut);
        }
      }
      case c3__hold: {
        p_sut = u3t(sut);
        return u3qfu_rest(van, sut, p_sut);
      }
    }
  }
Beispiel #22
0
/* u3_unix_ef_hill(): enumerate mount points
*/
void
u3_unix_ef_hill(u3_noun hil)
{
    u3_noun mon;
    for ( mon = hil; c3y == u3du(mon); mon = u3t(mon) ) {
        u3_umon* mon_u = _unix_get_mount_point(u3k(u3h(mon)));
        _unix_scan_mount_point(mon_u);
    }
    u3z(hil);
    u3_Host.unx_u.dyr = c3y;
    u3_unix_ef_look(c3y);
}
Beispiel #23
0
  static u3_noun
  _mint_bake(
             u3_noun van,
             u3_noun sut,
             u3_noun dab)
  {
    if ( (u3_nul == dab) ) {
      return 0;
    }
    else {
      u3_noun n_dab, l_dab, r_dab;

      u3r_trel(dab, &n_dab, &l_dab, &r_dab);
      if ( c3n == u3du(n_dab) ) {
        return u3m_bail(c3__fail);
      }
      else {
        u3_noun qn_dab = u3t(n_dab);
        u3_noun vad;

        switch ( u3h(qn_dab) ) {
          default: return u3m_bail(c3__exit);
          case c3__ash: {
            vad = _mint_brew(van, sut, c3y, u3t(qn_dab));
            break;
          }
          case c3__elm: {
            vad = _mint_brew(van, sut, c3n, u3t(qn_dab));
            break;
          }
        }

        if ( (u3_nul == l_dab) && (u3_nul == r_dab) ) {
          return vad;
        }
        else if ( (u3_nul == l_dab) ) {
          return u3nc
            (vad, _mint_bake(van, sut, r_dab));
        }
        else if ( (u3_nul == r_dab) ) {
          return u3nc
            (vad, _mint_bake(van, sut, l_dab));
        }
        else {
          return u3nt
            (vad,
                    _mint_bake(van, sut, l_dab),
                    _mint_bake(van, sut, r_dab));
        }
      }
    }
  }
Beispiel #24
0
/* functions
*/
  u3_noun
  u3qb_snag(u3_atom a,
            u3_noun b)
  {
    if ( !_(u3a_is_cat(a)) ) {
      return u3m_bail(c3__fail);
    }
    else {
      c3_w len_w = a;

      while ( len_w ) {
        if ( c3n == u3du(b) ) {
          return u3m_bail(c3__exit);
        }
        b = u3t(b);
        len_w--;
      }
      if ( c3n == u3du(b) ) {
        return u3m_bail(c3__exit);
      }
      return u3k(u3h(b));
    }
  }
Beispiel #25
0
/* mask
*/
  u3_noun
  _cqe_mask_fun(u3_noun bud,
                u3_noun tub)
  {
    u3_noun p_tub, q_tub;

    u3x_cell(tub, &p_tub, &q_tub);

    if ( c3n == u3du(q_tub) ) {
      return _fail(tub);
    }
    else {
      u3_noun iq_tub = u3h(q_tub);

      while ( c3y == u3du(bud) ) {
        if ( c3y == u3r_sing(u3h(bud), iq_tub) ) {
          return _next(tub);
        }
        bud = u3t(bud);
      }
      return _fail(tub);
    }
  }
Beispiel #26
0
/* functions
*/
  u3_noun
  u3qb_weld(u3_noun a,
            u3_noun b)
  {
    if ( 0 == a ) {
      return u3k(b);
    }
    else if ( c3n == u3du(a) ) {
      return u3m_bail(c3__exit);
    }
    else {
      return u3nc(u3k(u3h(a)), u3qb_weld(u3t(a), b));
    }
  }
Beispiel #27
0
  u3_noun
  u3we_slot(u3_noun cor)
  {
    u3_noun axe, vax;

    if ( (c3n == u3r_mean(cor, u3x_sam_2, &axe, u3x_sam_3, &vax, 0)) ||
         (c3n == u3ud(axe)) ||
         (c3n == u3du(vax)) )
    {
      return u3m_bail(c3__fail);
    } else {
      return u3qf_slot(axe, vax);
    }
  }
Beispiel #28
0
Datei: po.c Projekt: Gunga/urbit
  u3_noun
  u3wcp_ind(u3_noun cor)
  {
    u3_noun x, a, buf;

    if ( (c3n == u3r_mean(cor, u3x_sam, &a, u3x_con_sam, &x, 0)) ||
         (c3n == u3du(x)) ||
         (c3n == u3ud(buf = u3t(x))) ||
         (c3n == u3ud(a)) )
    {
      return u3m_bail(c3__exit);
    } else {
      return _po_find(buf, a);
    }
  }
Beispiel #29
0
/* _n_mush_in(): see _n_mush().
*/
static u3_noun
_n_mush_in(u3_noun val)
{
  if ( c3n == u3du(val) ) {
    return u3_nul;
  }
  else {
    u3_noun h_val = u3h(val);
    u3_noun ite;

    if ( c3n == u3ud(h_val) ) {
      ite = u3nc(c3__leaf, u3_nul);
    } else {
      ite = u3nc(c3__leaf, u3qe_trip(h_val));
    }
    return u3nc(ite, _n_mush_in(u3t(val)));
  }
}
Beispiel #30
0
    static u3_noun
    _sgcn_a(u3_noun r_gen,
            u3_noun nob)
    {
      if ( c3n == u3du(r_gen) ) {
        return u3k(nob);
      } else {
        u3_noun ir_gen = u3h(r_gen);
        u3_noun tr_gen = u3t(r_gen);
        u3_noun pir_gen, qir_gen;

        u3x_cell(ir_gen, &pir_gen, &qir_gen);

        return u3nc(u3nc(u3nt(c3__dtzz, u3_blip, u3k(pir_gen)),
                         u3nc(c3__zpts, u3k(qir_gen))),
                    _sgcn_a(tr_gen, nob));
      }
    }