Definition componentTypeSizeOctets(t : componentTypeT): nat :=
  match t with
  | INTEGER_SIGNED_8 => 1
  | INTEGER_SIGNED_8_VEC2 => 2
  | INTEGER_SIGNED_8_VEC3 => 3
  | INTEGER_SIGNED_8_VEC4 => 4

  | INTEGER_UNSIGNED_8 => 1
  | INTEGER_UNSIGNED_8_VEC2 => 2
  | INTEGER_UNSIGNED_8_VEC3 => 3
  | INTEGER_UNSIGNED_8_VEC4 => 4

  | INTEGER_SIGNED_16 => 2
  | INTEGER_SIGNED_16_VEC2 => 4
  | INTEGER_SIGNED_16_VEC3 => 6
  | INTEGER_SIGNED_16_VEC4 => 8

  | INTEGER_UNSIGNED_16 => 2
  | INTEGER_UNSIGNED_16_VEC2 => 4
  | INTEGER_UNSIGNED_16_VEC3 => 6
  | INTEGER_UNSIGNED_16_VEC4 => 8

  | INTEGER_SIGNED_32 => 4
  | INTEGER_SIGNED_32_VEC2 => 8
  | INTEGER_SIGNED_32_VEC3 => 12
  | INTEGER_SIGNED_32_VEC4 => 16

  | INTEGER_UNSIGNED_32 => 4
  | INTEGER_UNSIGNED_32_VEC2 => 8
  | INTEGER_UNSIGNED_32_VEC3 => 12
  | INTEGER_UNSIGNED_32_VEC4 => 16

  | INTEGER_SIGNED_64 => 8
  | INTEGER_SIGNED_64_VEC2 => 16
  | INTEGER_SIGNED_64_VEC3 => 24
  | INTEGER_SIGNED_64_VEC4 => 32

  | INTEGER_UNSIGNED_64 => 8
  | INTEGER_UNSIGNED_64_VEC2 => 16
  | INTEGER_UNSIGNED_64_VEC3 => 24
  | INTEGER_UNSIGNED_64_VEC4 => 32

  | FLOAT_16 => 2
  | FLOAT_16_VEC2 => 4
  | FLOAT_16_VEC3 => 6
  | FLOAT_16_VEC4 => 8

  | FLOAT_32 => 4
  | FLOAT_32_VEC2 => 8
  | FLOAT_32_VEC3 => 12
  | FLOAT_32_VEC4 => 16

  | FLOAT_64 => 8
  | FLOAT_64_VEC2 => 16
  | FLOAT_64_VEC3 => 24
  | FLOAT_64_VEC4 => 32
  end.
