示例#1
0
static int bser_array(const bser_ctx_t *ctx, const json_t *array, void *data)
{
  size_t n = json_array_size(array);
  size_t i;
  json_t *templ;

  if (!is_bser_version_supported(ctx)) {
    return -1;
  }

  templ = json_array_get_template(array);
  if (templ) {
    return bser_template(ctx, array, templ, data);
  }

  if (ctx->dump(&bser_array_hdr, sizeof(bser_array_hdr), data)) {
    return -1;
  }

  if (bser_int(ctx, n, data)) {
    return -1;
  }

  for (i = 0; i < n; i++) {
    json_t *val = json_array_get(array, i);

    if (w_bser_dump(ctx, val, data)) {
      return -1;
    }
  }

  return 0;
}
示例#2
0
文件: bser.c 项目: relrod/watchman
static int bser_array(const json_t *array,
                      json_dump_callback_t dump, void *data)
{
    int n = json_array_size(array);
    int i;
    json_t *templ;

    templ = json_array_get_template(array);
    if (templ) {
        return bser_template(array, templ, dump, data);
    }

    if (dump(&bser_array_hdr, sizeof(bser_array_hdr), data)) {
        return -1;
    }

    if (bser_int(n, dump, data)) {
        return -1;
    }

    for (i = 0; i < n; i++) {
        json_t *val = json_array_get(array, i);

        if (w_bser_dump(val, dump, data)) {
            return -1;
        }
    }

    return 0;
}