aboutsummaryrefslogtreecommitdiff
path: root/lens_default.c
diff options
context:
space:
mode:
authorPetr Machata <pmachata@redhat.com>2012-01-09 04:28:46 +0100
committerPetr Machata <pmachata@redhat.com>2012-08-29 19:02:07 +0200
commit38fb49b852374d749bc91f1b8d91a2b5b2a57a10 (patch)
treeffc2d1ed96044c4b0cac1045c4f2d2d94b6b6f6b /lens_default.c
parent541cdc7736ffa770958208995fae71cbd1d50bcf (diff)
downloadltrace-38fb49b852374d749bc91f1b8d91a2b5b2a57a10.tar.gz
Add a "bool" lens
Diffstat (limited to 'lens_default.c')
-rw-r--r--lens_default.c38
1 files changed, 38 insertions, 0 deletions
diff --git a/lens_default.c b/lens_default.c
index f4e2bd8..75b8abe 100644
--- a/lens_default.c
+++ b/lens_default.c
@@ -419,6 +419,44 @@ struct lens guess_lens = {
static int
+bool_lens_format_cb(struct lens *lens, FILE *stream,
+ struct value *value, struct value_dict *arguments)
+{
+ switch (value->type->type) {
+ case ARGTYPE_VOID:
+ case ARGTYPE_FLOAT:
+ case ARGTYPE_DOUBLE:
+ case ARGTYPE_STRUCT:
+ case ARGTYPE_POINTER:
+ case ARGTYPE_ARRAY:
+ return toplevel_format_lens(lens, stream, value,
+ arguments, INT_FMT_i);
+
+ int zero;
+ case ARGTYPE_ENUM:
+ case ARGTYPE_SHORT:
+ case ARGTYPE_INT:
+ case ARGTYPE_LONG:
+ case ARGTYPE_USHORT:
+ case ARGTYPE_UINT:
+ case ARGTYPE_ULONG:
+ case ARGTYPE_CHAR:
+ if ((zero = value_is_zero(value, arguments)) < 0)
+ return -1;
+ if (zero)
+ return fprintf(stream, "false");
+ else
+ return fprintf(stream, "true");
+ }
+ abort();
+}
+
+struct lens bool_lens = {
+ .format_cb = bool_lens_format_cb,
+};
+
+
+static int
string_lens_format_cb(struct lens *lens, FILE *stream,
struct value *value, struct value_dict *arguments)
{