+ def datatype(self):
+ """Returns the datatype corresponding to a format's channel type and size"""
+ if self.layout == PACKED:
+ if self.block_size() == 8:
+ return 'uint8_t'
+ if self.block_size() == 16:
+ return 'uint16_t'
+ if self.block_size() == 32:
+ return 'uint32_t'
+ else:
+ assert False
+ else:
+ return _get_datatype(self.channel_type(), self.channel_size())
+
+def _get_datatype(type, size):
+ if type == FLOAT:
+ if size == 32:
+ return 'float'
+ elif size == 16:
+ return 'uint16_t'
+ else:
+ assert False
+ elif type == UNSIGNED:
+ if size <= 8:
+ return 'uint8_t'
+ elif size <= 16:
+ return 'uint16_t'
+ elif size <= 32:
+ return 'uint32_t'
+ else:
+ assert False
+ elif type == SIGNED:
+ if size <= 8:
+ return 'int8_t'
+ elif size <= 16:
+ return 'int16_t'
+ elif size <= 32:
+ return 'int32_t'
+ else:
+ assert False
+ else:
+ assert False
+