Esempio n. 1
0
File: con.c Progetto: mnemnion/urbit
/* functions
*/
  u2_weak                                                         //  transfer
  j2_mbc(Pt3, con)(u2_wire wir_r, 
                   u2_atom a,                                     //  retain
                   u2_atom b)                                     //  retain
  {
    c3_w lna_w = u2_met(5, a);
    c3_w lnb_w = u2_met(5, b);

    if ( (lna_w == 0) && (lnb_w == 0) ) {
      return _0;
    } else {
      c3_w   len_w = c3_max(lna_w, lnb_w);
      u2_ray sal_r = u2_rl_slab(wir_r, len_w);

      if ( 0 == sal_r ) {
        return u2_none;
      }
      else {
        c3_w i_w;

        u2_chop(5, 0, lna_w, 0, sal_r, a);

        for ( i_w = 0; i_w < lnb_w; i_w++ ) {
          *u2_at_ray(sal_r + i_w) |= u2_atom_word(b, i_w);
        }
        return u2_rl_moot(wir_r, sal_r);
      }
    }
  }
Esempio n. 2
0
File: bail.c Progetto: MacTop/urbit
/* u2_bn_slab():
**
**   Create an atomic slab of `len` words.
*/
u2_ray
u2_bn_slab(u2_wire wir_r,
           c3_w    len_w)
{
  return u2_bl_some(wir_r, u2_rl_slab(wir_r, len_w));
}