49
49
while (bson_cursor_next (c))
60
_indent (ilevel, verbose);
61
printf ("/* type='%s'; */\n",
62
bson_cursor_type_as_string (c) + 10);
60
_indent (ilevel, verbose);
61
printf ("/* type='%s'; */\n",
62
bson_cursor_type_as_string (c) + 10);
64
64
_indent (ilevel, verbose);
67
printf ("\"%s\" : ", bson_cursor_key (c));
67
printf ("\"%s\" : ", bson_cursor_key (c));
69
69
switch (bson_cursor_type (c))
71
case BSON_TYPE_DOUBLE:
74
bson_cursor_get_double (c, &d);
78
case BSON_TYPE_STRING:
82
bson_cursor_get_string (c, &s);
83
s2 = g_strescape (s, NULL);
84
printf ("\"%s\"", s2);
92
bson_cursor_get_oid (c, &oid);
93
printf ("ObjectId( \"");
94
for (j = 0; j < 12; j++)
95
printf ("%02x", oid[j]);
99
case BSON_TYPE_BOOLEAN:
102
bson_cursor_get_boolean (c, &b);
103
printf ((b) ? "true" : "false");
106
case BSON_TYPE_REGEXP:
110
bson_cursor_get_regex (c, &r, &o);
111
r2 = g_strescape (r, NULL);
112
o2 = g_strescape (o, NULL);
113
printf ("Regex(\"/%s/%s\")", r2, o2);
123
case BSON_TYPE_JS_CODE:
127
bson_cursor_get_javascript (c, &js);
128
js2 = g_strescape (js, NULL);
133
case BSON_TYPE_SYMBOL:
137
bson_cursor_get_symbol (c, &s);
138
s2 = g_strescape (s, NULL);
143
case BSON_TYPE_INT32:
146
bson_cursor_get_int32 (c, &l32);
150
case BSON_TYPE_INT64:
153
bson_cursor_get_int64 (c, &l64);
154
printf ("%" G_GINT64_FORMAT, l64);
157
case BSON_TYPE_DOCUMENT:
160
bson_cursor_get_document (c, &sd);
163
printf ("/* size='%d' */\n", bson_size (sd));
164
bson_dump (sd, ilevel + 1, verbose, FALSE);
168
_indent (ilevel, verbose);
176
case BSON_TYPE_ARRAY:
180
bson_cursor_get_array (c, &sa);
183
printf ("/* size='%d' */\n", bson_size (sa));
184
bson_dump (sa, ilevel + 1, verbose, TRUE);
188
_indent (ilevel, verbose);
196
case BSON_TYPE_BINARY:
200
bson_binary_subtype t;
203
bson_cursor_get_binary (c, &t, &data, &size);
204
b64 = g_base64_encode (data, size);
208
printf ("/* size='%d' */\n", size);
209
_indent (ilevel + 1, verbose);
211
printf ("\"$binary\" : \"%s\",", b64);
215
_indent (ilevel + 1, verbose);
219
printf ("\"$type\" : \"%02d\"", t);
223
_indent (ilevel, verbose);
231
case BSON_TYPE_JS_CODE_W_SCOPE:
232
case BSON_TYPE_UNDEFINED:
233
case BSON_TYPE_UTC_DATETIME:
234
case BSON_TYPE_DBPOINTER:
235
case BSON_TYPE_TIMESTAMP:
239
printf ("\"<unimplemented>\"");
71
case BSON_TYPE_DOUBLE:
74
bson_cursor_get_double (c, &d);
78
case BSON_TYPE_STRING:
82
bson_cursor_get_string (c, &s);
83
s2 = g_strescape (s, NULL);
84
printf ("\"%s\"", s2);
92
bson_cursor_get_oid (c, &oid);
93
printf ("ObjectId( \"");
94
for (j = 0; j < 12; j++)
95
printf ("%02x", oid[j]);
99
case BSON_TYPE_BOOLEAN:
102
bson_cursor_get_boolean (c, &b);
103
printf ((b) ? "true" : "false");
106
case BSON_TYPE_REGEXP:
110
bson_cursor_get_regex (c, &r, &o);
111
r2 = g_strescape (r, NULL);
112
o2 = g_strescape (o, NULL);
113
printf ("Regex(\"/%s/%s\")", r2, o2);
123
case BSON_TYPE_JS_CODE:
127
bson_cursor_get_javascript (c, &js);
128
js2 = g_strescape (js, NULL);
133
case BSON_TYPE_SYMBOL:
137
bson_cursor_get_symbol (c, &s);
138
s2 = g_strescape (s, NULL);
143
case BSON_TYPE_INT32:
146
bson_cursor_get_int32 (c, &l32);
150
case BSON_TYPE_INT64:
153
bson_cursor_get_int64 (c, &l64);
154
printf ("%" G_GINT64_FORMAT, l64);
157
case BSON_TYPE_DOCUMENT:
160
bson_cursor_get_document (c, &sd);
163
printf ("/* size='%d' */\n", bson_size (sd));
164
bson_dump (sd, ilevel + 1, verbose, FALSE);
168
_indent (ilevel, verbose);
176
case BSON_TYPE_ARRAY:
180
bson_cursor_get_array (c, &sa);
183
printf ("/* size='%d' */\n", bson_size (sa));
184
bson_dump (sa, ilevel + 1, verbose, TRUE);
188
_indent (ilevel, verbose);
196
case BSON_TYPE_BINARY:
200
bson_binary_subtype t;
203
bson_cursor_get_binary (c, &t, &data, &size);
204
b64 = g_base64_encode (data, size);
208
printf ("/* size='%d' */\n", size);
209
_indent (ilevel + 1, verbose);
211
printf ("\"$binary\" : \"%s\",", b64);
215
_indent (ilevel + 1, verbose);
219
printf ("\"$type\" : \"%02d\"", t);
223
_indent (ilevel, verbose);
231
case BSON_TYPE_JS_CODE_W_SCOPE:
232
case BSON_TYPE_UNDEFINED:
233
case BSON_TYPE_UTC_DATETIME:
234
case BSON_TYPE_DBPOINTER:
235
case BSON_TYPE_TIMESTAMP:
239
printf ("\"<unimplemented>\"");
243
243
bson_cursor_free (c);