コード例 #1
0
ファイル: bcon-col-view.c プロジェクト: SeisComP3/seiscomp3
bson_t *
col_view_create (const char *stub, ...)
{
   bson_t *bson;
   va_list ap;
   ele_t type;
   int keep_going = 1;

   bcon_append_ctx_t ctx;
   bcon_append_ctx_init (&ctx);

   va_start (ap, stub);

   bson = bson_new ();

   while (keep_going) {
      type = va_arg (ap, ele_t);

      switch (type) {
      case ELE_SORT:
         BCON_APPEND_CTX (bson, &ctx, "sort", "{");
         bcon_append_ctx_va (bson, &ctx, &ap);
         BCON_APPEND_CTX (bson, &ctx, "}");
         break;
      case ELE_LIMIT: {
         int i = va_arg (ap, int);
         BCON_APPEND_CTX (bson, &ctx, "limit", BCON_INT32 (i));
         break;
      }
      case ELE_QUERY:
         BCON_APPEND_CTX (bson, &ctx, "query", "{");
         bcon_append_ctx_va (bson, &ctx, &ap);
         BCON_APPEND_CTX (bson, &ctx, "}");
         break;
      case ELE_END:
         keep_going = 0;
         break;
      default:
         BSON_ASSERT (0);
         break;
      }
   }

   va_end (ap);

   return bson;
}
コード例 #2
0
ファイル: test-bcon-basic.c プロジェクト: Cabriter/abelkhan
static void test_append_ctx_helper (bson_t * bson, ...)
{
   va_list ap;
   bcon_append_ctx_t ctx;
   bcon_append_ctx_init(&ctx);

   va_start(ap, bson);

   bcon_append_ctx_va(bson, &ctx, &ap);

   va_arg(ap, char *);

   BCON_APPEND_CTX (bson, &ctx, "c", "d");

   bcon_append_ctx_va(bson, &ctx, &ap);

   va_end(ap);
}