示例#1
0
static void io_read (void)
{
  lua_Object o = lua_getparam (1);
  if (o == LUA_NOOBJECT) 	/* free format */
    read_free();
  else				/* formatted */
  {
    int m, dummy1, dummy2;
    switch (getformat(lua_check_string(1, "read"), &dummy1, &m, &dummy2))
    {
      case 's':
        if (m < 0)
          read_until_blank();
        else
          read_m(m);
        lua_pushstring(add_char(0));
        break;

      case 'i':  /* can read as float, since it makes no difference to Lua */
      case 'f':
      {
        double d;
        int result;
        if (m < 0)
          result = fscanf(in, "%lf", &d);
        else
        {
          read_m(m);
          result = sscanf(add_char(0), "%lf", &d);
        }
        if (result == 1)
          lua_pushnumber(d);
        else
          lua_pushnil();
        break;
      }
    }
  }
}
示例#2
0
int main(int argc, char **argv)
{
    if (argc != 3) {
        fprintf(stderr, "*** Invalid number of parameters\n");
        exit(1);
    }

    const char *const filename_sg1= argv[1];
    const char *const filename_ft= argv[2];

    struct sgraph1_reader_a r;

    if (0 > sgraph1_open_read_a(filename_sg1, &r, 2)) {
        exit(1);
    }

    if (0 > sgraph1_advise_a(&r, MADV_SEQUENTIAL)) {
        perror(filename_sg1);
        exit(1);
    }

    struct feature_a f;

    if (0 > feature_open_write_a(filename_ft, &f, r.h->n1
#if FEATURE_N2
                                 , r.h->n2
#endif
                                )) {
        exit(1);
    }

    if (0 > feature_advise_a(&f, MADV_SEQUENTIAL)) {
        perror(filename_ft);
        exit(1);
    }

    for (ua_ft u= 0;  u < r.h->n1;  ++u) {
        const ma_ft beg= read_ma(r.adj_to, u);
        const ma_ft end= u == r.h->n1 - 1 ? r.len_m : read_ma(r.adj_to, u + 1);
        assert(beg <= end);
        assert((ma_ft)(end - beg) < fa_max);
        writeonzero_fa(f.f1, u, end - beg);
    }

#if FEATURE_N2
    for (u_ft v= 0;  v < r.h->n2;  ++v) {
        const m_ft beg= read_m(r.adj_from, v);
        const m_ft end= v == r.h->n2 - 1 ? r.len_m : read_m(r.adj_from, v + 1);
        assert(end - beg < f_max);
        writeonzero_f(f.f2, v, end - beg);
    }
#endif

    if (0 > feature_close_write_a(&f)) {
        perror(filename_ft);
        if (0 > unlink(filename_ft)) {
            perror(filename_ft);
        }
        exit(1);
    }

    exit(0);
}