+ raise bt2._MemoryError('cannot create {} field class'.format(type_name))
+
+ @staticmethod
+ def _set_field_class_user_attrs(fc, user_attributes):
+ if user_attributes is not None:
+ fc._user_attributes = user_attributes
+
+ def create_bool_field_class(self, user_attributes=None):
+ field_class_ptr = native_bt.field_class_bool_create(self._ptr)
+ self._check_field_class_create_status(field_class_ptr, 'boolean')
+ fc = bt2_field_class._BoolFieldClass._create_from_ptr(field_class_ptr)
+ self._set_field_class_user_attrs(fc, user_attributes)
+ return fc
+
+ def create_bit_array_field_class(self, length, user_attributes=None):
+ utils._check_uint64(length)
+
+ if length < 1 or length > 64:
+ raise ValueError(
+ 'invalid length {}: expecting a value in the [1, 64] range'.format(
+ length
+ )
+ )
+
+ field_class_ptr = native_bt.field_class_bit_array_create(self._ptr, length)
+ self._check_field_class_create_status(field_class_ptr, 'bit array')
+ fc = bt2_field_class._BitArrayFieldClass._create_from_ptr(field_class_ptr)
+ self._set_field_class_user_attrs(fc, user_attributes)
+ return fc