Fix: array and sequence field's 'elems' members can be left NULL
[babeltrace.git] / types / integer.c
index 73d4f2a40116141e173b4cea0532b4cfd0b7b433..90525f5d8af48ea5233e3c58a88aed3451cfa1b5 100644 (file)
@@ -56,7 +56,7 @@ struct declaration_integer *
 {
        struct declaration_integer *integer_declaration;
 
-       integer_declaration = g_new(struct declaration_integer, 1);
+       integer_declaration = g_new0(struct declaration_integer, 1);
        integer_declaration->p.id = CTF_TYPE_INTEGER;
        integer_declaration->p.alignment = alignment;
        integer_declaration->p.declaration_free = _integer_declaration_free;
@@ -84,7 +84,7 @@ struct bt_definition *
        struct definition_integer *integer;
        int ret;
 
-       integer = g_new(struct definition_integer, 1);
+       integer = g_new0(struct definition_integer, 1);
        bt_declaration_ref(&integer_declaration->p);
        integer->p.declaration = declaration;
        integer->declaration = integer_declaration;
@@ -201,3 +201,19 @@ int64_t bt_get_signed_int(const struct bt_definition *field)
                g_quark_to_string(field->name));
        return (int64_t)integer_definition->value._unsigned;
 }
+
+bool bt_int_is_char(const struct bt_declaration *field)
+{
+       bool ret;
+       struct declaration_integer *integer_declaration =
+               container_of(field, struct declaration_integer, p);
+
+       /* Integer must be ASCII or encoded as UTF-8. */
+       ret = integer_declaration->encoding == CTF_STRING_UTF8 ||
+                       integer_declaration->encoding == CTF_STRING_ASCII;
+       /* Integer must be aligned on a byte boundary and be byte-sized. */
+       ret &= integer_declaration->len == CHAR_BIT &&
+                       integer_declaration->p.alignment == CHAR_BIT;
+
+       return ret;
+}
This page took 0.025914 seconds and 4 git commands to generate.