Exemplo n.º 1
0
Arquivo: unix.c Projeto: Gruelty/urbit
/* _unix_scan(): scan noun from file.
*/
static u2_noun
_unix_scan(u2_wire wir_r,
           FILE*   fil)
{
  c3_i c = fgetc(fil);

  if ( c == '[' ) {
    return _unix_scan_cell(wir_r, fil);
  } 
  else if ( c == '%' )  {
    c3_c buf[1025];

    fscanf(fil, "%1024[a-z-]", buf);
    return u2_bn_string(wir_r, buf);
  }
  else {
    mpz_t amp;

    ungetc(c, fil);
    mpz_init(amp);
    gmp_fscanf(fil, "%Zd", amp);

    return u2_bn_mp(wir_r, amp);
  }
}
Exemplo n.º 2
0
Arquivo: bail.c Projeto: MacTop/urbit
/* u2_bn_decimal():
**
**   On (wir_r), write (list), a list of digits, as a decimal.
*/
u2_noun
u2_bn_decimal(u2_ray  wir_r,
              u2_list lit)
{
  mpz_t mp;

  mpz_init(mp);
  while ( u2_nul != lit ) {
    c3_w byt_w = u2_bi_byte(wir_r, 0, u2_h(lit));

    mpz_mul_ui(mp, mp, 10);
    mpz_add_ui(mp, mp, (byt_w - '0'));

    lit = u2_t(lit);
  }
  return u2_bn_mp(wir_r, mp);
}
Exemplo n.º 3
0
Arquivo: bail.c Projeto: MacTop/urbit
/* u2_bn_heximal():
**
**   On (wir_r), write (lit), a list of digits, as a hexadecimal.
*/
u2_noun
u2_bn_heximal(u2_ray  wir_r,
              u2_list lit)
{
  mpz_t mp;

  mpz_init(mp);
  while ( u2_nul != lit ) {
    c3_w byt_w = u2_bi_byte(wir_r, 0, u2_h(lit));

    mpz_mul_ui(mp, mp, 16);
    if ( (byt_w >= 'a') && (byt_w <= 'f') ) {
      mpz_add_ui(mp, mp, (byt_w + 10 - 'a'));
    }
    else {
      mpz_add_ui(mp, mp, (byt_w - '0'));
    }
    lit = u2_t(lit);
  }
  return u2_bn_mp(wir_r, mp);
}