示例#1
0
文件: roll.c 项目: OCForks/urbit
/* 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;
      }
    }
  }
示例#2
0
文件: ap.c 项目: OCForks/urbit
    u3_noun
    u3wfp_hack(u3_noun cor)
    {
      u3_noun gen;

      if ( u3_none == (gen = u3r_at(u3x_sam, cor)) ) {
        return u3m_bail(c3__fail);
      } else {
        u3_noun ter = u3r_at(u3x_con, cor);

        return u3qfp_hack(ter, gen);
      }
    }
示例#3
0
文件: rexp.c 项目: dcow/urbit
  u3_noun
  u3we_rexp(u3_noun cor)
  {
    u3_noun lub;
    u3_noun rad;

    if ( (u3_none == (lub = u3r_at(u3x_sam_2, cor))) ||
         (u3_none == (rad = u3r_at(u3x_sam_3, cor))) )
    {
      return u3m_bail(c3__fail);
    } else {
      return u3qe_rexp(lub, rad);
    }
  }
示例#4
0
文件: loss.c 项目: alecbrick/urbit
  u3_noun
  u3we_loss(u3_noun cor)
  {
    u3_noun hel, hev;

    if ( (u3_none == (hel = u3r_at(u3x_sam_2, cor))) ||
         (u3_none == (hev = u3r_at(u3x_sam_3, cor))) ||
         (c3n == _listp(hel)) ||
         (c3n == _listp(hev)) )
    {
      return u3m_bail(c3__fail);
    } else {
      return u3qe_loss(hel, hev);
    }
  }
示例#5
0
文件: shax.c 项目: urbit/urbit
  u3_noun
  u3we_shas(u3_noun cor)
  {
    u3_noun sal, ruz;

    if ( (u3_none == (sal = u3r_at(u3x_sam_2, cor))) ||
         (u3_none == (ruz = u3r_at(u3x_sam_3, cor))) ||
         (c3n == u3ud(sal)) ||
         (c3n == u3ud(ruz)) )
    {
      return u3m_bail(c3__exit);
    } else {
      return u3qe_shas(sal, ruz);
    }
  }
示例#6
0
文件: ut_fire.c 项目: OCForks/urbit
  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));
  }
示例#7
0
文件: slot.c 项目: Gunga/urbit
/* functions
*/
  u3_noun
  u3qf_slot(u3_atom axe,
            u3_noun vax)
  {
    u3_noun f*g = u3r_at(axe, u3t(vax));

    fprintf(stderr, "slot axe %d\r\n", axe);

    if ( u3_none == f*g ) {
      return u3m_bail(c3__exit);
    }
    else {
      u3_noun typ = u3qfu_peek(
    }
    c3_w i_w, met_w = c3_min(u3r_met(3, axe), u3r_met(3, vax));

    if ( c3n == _slot_fiz(axe, vax) ) {
      return c3n;
    }
    for ( i_w = 0; i_w < met_w; i_w++ ) {
      c3_y axe_y = u3r_byte(i_w, axe);
      c3_y vax_y = u3r_byte(i_w, vax);

      if ( (axe_y >= 'A') && (axe_y <= 'Z') ) axe_y = 0;
      if ( (vax_y >= 'A') && (vax_y <= 'Z') ) vax_y = 0;

      if ( axe_y && vax_y && (axe_y != vax_y) ) {
        return c3n;
      }
    }
    return c3y;
  }
示例#8
0
文件: ut_fire.c 项目: OCForks/urbit
  static u3_noun
  _fire_mull(u3_noun van,
             u3_noun sut,
             u3_noun dox,
             u3_noun gen)
  {
    u3_noun rib = u3r_at(u3qfu_van_rib, van);
    u3_noun key = u3nt(u3k(sut),
                       u3k(dox),
                       u3k(gen));
    u3_noun ret;

    if ( c3n == _fire_vet(van) ) {
      ret = c3y;
    }
    if ( c3y == u3qdi_has(rib, key) ) {
      ret = c3y;
    }
    else {
      u3_noun rob = u3qdi_put(rib, key);
      u3_noun von = u3i_molt(u3k(van),
                             u3qfu_van_rib,
                             u3k(rob),
                             0);
      u3_noun mul = u3qfu_mull(von, sut, c3__noun, dox, gen);

      ret = c3y;
  
      u3z(mul);
      u3z(von);
      u3z(rob);
    }
    u3z(key);
    return ret;
  }
示例#9
0
文件: shax.c 项目: urbit/urbit
  u3_noun
  u3we_shal(u3_noun cor)
  {
    u3_noun a, b;

    if ( (u3_none == (a = u3r_at(u3x_sam_2, cor))) ||
         (u3_none == (b = u3r_at(u3x_sam_3, cor))) ||
         (c3n == u3ud(a)) ||
         (c3n == u3a_is_cat(a)) ||
         (c3n == u3ud(b)) )
    {
      return u3m_bail(c3__exit);
    } else {
      return u3qe_shal(a, b);
    }
  }
示例#10
0
文件: ap.c 项目: OCForks/urbit
    u3_noun
    u3wfp_rake(u3_noun cor)
    {
      u3_noun gen;

      if ( u3_none == (gen = u3r_at(u3x_sam, cor)) ) {
        return u3m_bail(c3__fail);
      } else {
        return u3qfp_rake(gen);
      }
    }
示例#11
0
文件: ut_repo.c 项目: aulux/urbit
  u3_noun
  u3wfu_repo(
                       u3_noun cor)
  {
    u3_noun sut;

    if ( u3_none == (sut = u3r_at(u3x_sam, cor)) ) {
      return u3m_bail(c3__fail);
    } else {
      return u3qfu_repo(cor, sut);
    }
  }
示例#12
0
文件: flip.c 项目: aulux/urbit
  u3_noun
  u3wf_flip(
                   u3_noun cor)
  {
    u3_noun hel;

    if ( u3_none == (hel = u3r_at(u3x_sam, cor)) ) {
      return u3m_bail(c3__fail);
    } else {
      return u3qf_flip(hel);
    }
  }
示例#13
0
文件: ut_conk.c 项目: urbit/urbit
/* logic
*/
  static u3_noun
  _cqfu_conk(u3_noun van,
             u3_noun sut,
             u3_noun got)
  {
    if ( c3y == u3ud(got) ) {
      u3_noun ret = u3qf_face(u3k(got), sut);

      return ret;
    }
    else switch ( u3h(got) ) {
      default: return u3m_bail(c3__fail);

      case 0: {
        return u3k(sut);
      }
      case 1: {
        u3_noun c*k = _cqfu_conk(van, sut, u3t(u3t(got)));
        u3_noun nux = u3k(u3h(u3t(got)));
        u3_noun ret = u3qf_face(nux, c*k);

        u3z(nux);
        u3z(c*k);
        return ret;
      }
      case 2: {
        u3_noun vet = u3r_at(u3qfu_van_vet, van);
        u3_noun hed, tal, deh, lat, ret;

        if ( c3y == vet ) {
          u3_noun cel = u3nt(c3__cell, c3__noun, c3__noun);

          if ( c3n == u3qfu_nest(van, cel, c3y, sut) ) {
            return u3m_bail(c3__fail);
          }
          u3z(cel);
        }
        hed = u3qfu_peek(van, sut, c3__both, 2);
        tal = u3qfu_peek(van, sut, c3__both, 3);
        deh = _cqfu_conk(van, hed, u3h(u3t(got)));
        lat = _cqfu_conk(van, tal, u3t(u3t(got)));

        ret = u3qf_cell(deh, lat);

        u3z(lat);
        u3z(deh);
        u3z(tal);
        u3z(hed);

        return ret;
      }
    }
  }
示例#14
0
文件: shax.c 项目: urbit/urbit
  u3_noun
  u3we_shay(u3_noun cor)
  {
    u3_noun a, b;
    
//     static int few = 0;
//     if(few == 0) printf("foo\r\n");
//     few++; few %= 1000;
      

    if ( (u3_none == (a = u3r_at(u3x_sam_2, cor))) ||
         (u3_none == (b = u3r_at(u3x_sam_3, cor))) ||
         (c3n == u3ud(a)) ||
         (c3n == u3a_is_cat(a)) ||
         (c3n == u3ud(b)) )
    {
      return u3m_bail(c3__exit);
    } else {
      return u3qe_shay(a, b);
    }
  }
示例#15
0
文件: ut_fire.c 项目: OCForks/urbit
/* logic
*/
  static u3_noun
  _fire_vet(u3_noun van)
  {
    // u3_noun vet = u3j_hook(u3k(van), "vet");
    u3_noun vet = u3r_at(u3qfu_van_vet, van);

    switch ( vet ) {
      case c3n:
      case c3y: return vet;
      default: return u3m_bail(c3__fail);
    }
  }
示例#16
0
文件: cap.c 项目: OCForks/urbit
  u3_noun
  u3wc_cap(u3_noun cor)
  {
    u3_noun a;

    if ( (u3_none == (a = u3r_at(u3x_sam, cor))) ||
         (c3n == u3ud(a)) )
    {
      return u3m_bail(c3__exit);
    } else {
      return u3qc_cap(a);
    }
  }
示例#17
0
文件: parse.c 项目: Gunga/urbit
  u3_noun
 u3we_shim_fun(u3_noun cor)
  {
    u3_noun van, zep, tub;

    if ( (c3n == u3r_mean(cor, u3x_sam, &tub, u3x_con, &van, 0)) ||
         (u3_none == (zep = u3r_at(u3x_sam, van))) )
    {
      return u3m_bail(c3__fail);
    } else {
      return _cqe_shim_fun(zep, tub);
    }
  }
示例#18
0
文件: parse.c 项目: Gunga/urbit
 u3_noun
 u3we_stew_fun(u3_noun cor)
  {
    u3_noun con, hel, tub;

    if ( (c3n == u3r_mean(cor, u3x_sam, &tub, u3x_con, &con, 0)) ||
         (u3_none == (hel = u3r_at(2, con))) )
    {
      return u3m_bail(c3__fail);
    } else {
      return _cqe_stew_fun(hel, tub);
    }
  }
示例#19
0
文件: ut_play.c 项目: Gunga/urbit
/* boilerplate
*/
  u3_noun
  u3wfu_play(u3_noun cor)
  {
    u3_noun sut, gen, van;

    if ( (c3n == u3r_mean(cor, u3x_sam, &gen, u3x_con, &van, 0)) ||
         (u3_none == (sut = u3r_at(u3x_sam, van))) )
    {
      return u3m_bail(c3__fail);
    } else {
      return _cqfu_play(van, sut, gen);
    }
  }
示例#20
0
文件: ut_fire.c 项目: OCForks/urbit
/* boilerplate
*/
  u3_noun
  u3wfu_fire(u3_noun cor)
  {
    u3_noun sut, hag, van;

    if ( (c3n == u3r_mean(cor, u3x_sam, &hag, u3x_con, &van, 0)) ||
         (u3_none == (sut = u3r_at(u3x_sam, van))) )
    {
      return u3m_bail(c3__fail);
    } else {
      return _cqfu_fire(van, sut, hag);
    }
  }
示例#21
0
文件: ut_fish.c 项目: OCForks/urbit
/* boilerplate
*/
  u3_noun
  u3wfu_fish(u3_noun cor)
  {
    u3_noun sut, axe, van;

    if ( (c3n == u3r_mean(cor, u3x_sam, &axe, u3x_con, &van, 0)) ||
         (c3n == u3ud(axe)) ||
         (u3_none == (sut = u3r_at(u3x_sam, van))) )
    {
      return u3m_bail(c3__fail);
    } else {
      return _cqfu_fish(van, sut, axe);
    }
  }
示例#22
0
/* boilerplate
*/
  u3_noun
  u3wfu_crop(
                       u3_noun cor)
  {
    u3_noun sut, ref, van;

    if ( (c3n == u3r_mean(cor, u3x_sam, &ref, u3x_con, &van, 0)) ||
         (u3_none == (sut = u3r_at(u3x_sam, van))) )
    {
      return u3m_bail(c3__fail);
    } else {
      return _cqfu_crop(van, sut, ref);
    }
  }
示例#23
0
文件: parse.c 项目: Gunga/urbit
  u3_noun
 u3we_glue_fun(u3_noun cor)
  {
    u3_noun van, bus, vex, sab;

    if ( (c3n == u3r_mean(cor, u3x_sam_2, &vex,
                                u3x_sam_3, &sab,
                                u3x_con, &van, 0)) ||
         (u3_none == (bus = u3r_at(u3x_sam, van))) )
    {
      return u3m_bail(c3__fail);
    } else {
      return _cqe_glue_fun(bus, vex, sab);
    }
  }
示例#24
0
文件: ut_busk.c 项目: Gunga/urbit
/* boilerplate
*/
  u3_noun
  u3wfu_busk(u3_noun cor)
  {
    u3_noun sut, cog, hyp, van;

    if ( (c3n == u3r_mean(cor, u3x_sam_2, &cog,
                               u3x_sam_3, &hyp,
                               u3x_con, &van,
                               0)) ||
         (c3n == u3ud(cog)) ||
         (u3_none == (sut = u3r_at(u3x_sam, van))) )
    {
      return u3m_bail(c3__fail);
    } else {
      return _cqfu_busk(van, sut, cog, hyp);
    }
  }
示例#25
0
文件: ut_cull.c 项目: Gunga/urbit
/* boilerplate
*/
  u3_noun
  u3wfu_cull(u3_noun cor)
  {
    u3_noun sut, axe, pol, ref, van;

    if ( (c3n == u3r_mean(cor, u3x_sam_2, &pol,
                               u3x_sam_6, &axe,
                               u3x_sam_7, &ref,
                               u3x_con, &van, 0)) ||
         (c3n == u3ud(axe)) ||
         (u3_none == (sut = u3r_at(u3x_sam, van))) )
    {
      return u3m_bail(c3__fail);
    } else {
      return _cqfu_cull(van, sut, pol, axe, ref);
    }
  }
示例#26
0
文件: ut_fuse.c 项目: bd/urbit
  u3_noun
  u3qfu_fuse(u3_noun van,
             u3_noun sut,
             u3_noun ref)
  {
    c3_m    fun_m = 144 + c3__fuse + ((!!u3r_at(u3qfu_van_vet, van)) << 8);
    u3_noun pro   = u3z_find_2(fun_m, sut, ref);

    if ( u3_none != pro ) {
      return pro;
    }
    else {
      pro = _cqfu_fuse(van, sut, ref);

      return u3z_save_2(fun_m, sut, ref, pro);
    }
  }
示例#27
0
文件: ut_fish.c 项目: OCForks/urbit
  u3_noun
  u3qfu_fish(u3_noun van,
             u3_noun sut,
             u3_noun axe)
  {
    c3_m    fun_m = c3__fish + !!u3r_at(u3qfu_van_vet, van);
    u3_noun pro   = u3z_find_2(fun_m, sut, axe);

    if ( u3_none != pro ) {
      return pro;
    }
    else {
      pro = _cqfu_fish(van, sut, axe);

      return u3z_save_2(fun_m, sut, axe, pro);
    }
  }
示例#28
0
文件: ut_nest.c 项目: alecbrick/urbit
/* boilerplate
*/
  u3_noun
  u3wfu_nest(u3_noun cor)
  {
    u3_noun sut, tel, ref, van;

    if ( (c3n == u3r_mean(cor, u3x_sam_2, &tel,
                                u3x_sam_3, &ref,
                                u3x_con, &van,
                                0)) ||
         (c3n == u3ud(tel)) || (tel > 1) ||
         (u3_none == (sut = u3r_at(u3x_sam, van))) )
    {
      return u3m_bail(c3__fail);
    } else {
      return _cqfu_nest(van, sut, tel, ref);
    }
  }
示例#29
0
  u3_noun
  u3qfu_peek(u3_noun van,
             u3_noun sut,
             u3_noun way,
             u3_noun axe)
  {
    c3_m    fun_m = c3__peek + !!u3r_at(u3qfu_van_vet, van);
    u3_noun pro   = u3z_find_3(fun_m, sut, way, axe);

    if ( u3_none != pro ) {
      return pro;
    }
    else {
      pro = _cqfu_peek(van, sut, way, axe);

      return u3z_save_3(fun_m, sut, way, axe, pro);
    }
  }
示例#30
0
  u3_noun
  u3qfu_mint(u3_noun van,
                        u3_noun sut,
                        u3_noun gol,
                        u3_noun gen)
  {
    c3_m    fun_m = c3__mint;
    u3_noun vrf   = u3r_at(u3qfu_van_vrf, van);
    u3_noun pro   = u3z_find_4(fun_m, vrf, sut, gol, gen);

    if ( u3_none != pro ) {
      return pro;
    }
    else {
      pro = _cqfu_mint(van, sut, gol, gen);

      return u3z_save_4(fun_m, vrf, sut, gol, gen, pro);
    }
  }