+ if (type->frozen) {
+ BT_LOGW("Invalid parameter: field type is frozen: addr=%p",
+ type);
+ ret = -1;
+ goto end;
+ }
+
+ if (type->id != BT_FIELD_TYPE_ID_INTEGER) {
+ BT_LOGW("Invalid parameter: field type is not an integer field type: "
+ "addr=%p, ft-id=%s", type,
+ bt_field_type_id_string(type->id));
+ ret = -1;
+ goto end;
+ }
+
+ if (size == 0 || size > 64) {
+ BT_LOGW("Invalid parameter: size must be between 1 and 64: "
+ "addr=%p, size=%u", type, size);
+ ret = -1;
+ goto end;
+ }
+
+ integer = container_of(type, struct bt_field_type_integer, parent);
+ integer->size = size;
+ BT_LOGV("Set integer field type's size: addr=%p, size=%u",
+ type, size);
+end:
+ return ret;
+}
+
+enum bt_integer_base bt_field_type_integer_get_base(
+ struct bt_field_type *type)
+{
+ enum bt_integer_base ret = BT_INTEGER_BASE_UNKNOWN;
+ struct bt_field_type_integer *integer;
+
+ if (!type) {
+ BT_LOGW_STR("Invalid parameter: field type is NULL.");
+ goto end;
+ }
+
+ if (type->id != BT_FIELD_TYPE_ID_INTEGER) {
+ BT_LOGW("Invalid parameter: field type is not an integer field type: "
+ "addr=%p, ft-id=%s", type,
+ bt_field_type_id_string(type->id));
+ goto end;
+ }
+
+ integer = container_of(type, struct bt_field_type_integer, parent);