flatbuffers

Форк
0
/
value-type-util.ts 
64 строки · 2.1 Кб
1
import { ValueType } from './value-type.js'
2

3
export function isInline(value: ValueType): boolean {
4
  return value === ValueType.BOOL
5
    || value <= ValueType.FLOAT;
6
}
7

8
export function isNumber(value: ValueType): boolean {
9
  return value >= ValueType.INT
10
    && value <= ValueType.FLOAT;
11
}
12

13
export function isIndirectNumber(value: ValueType): boolean {
14
  return value >= ValueType.INDIRECT_INT
15
    && value <= ValueType.INDIRECT_FLOAT;
16
}
17

18
export function isTypedVectorElement(value: ValueType): boolean {
19
  return value === ValueType.BOOL
20
    || (value >= ValueType.INT
21
      && value <= ValueType.STRING);
22
}
23

24
export function isTypedVector(value: ValueType): boolean {
25
  return value === ValueType.VECTOR_BOOL
26
    || (value >= ValueType.VECTOR_INT
27
      && value <= ValueType.VECTOR_STRING_DEPRECATED);
28
}
29

30
export function isFixedTypedVector(value: ValueType): boolean {
31
  return value >= ValueType.VECTOR_INT2
32
    && value <= ValueType.VECTOR_FLOAT4;
33
}
34

35
export function isAVector(value: ValueType): boolean {
36
  return isTypedVector(value)
37
    || isFixedTypedVector(value)
38
    || value === ValueType.VECTOR;
39
}
40

41
export function toTypedVector(valueType: ValueType, length: number): ValueType {
42
  if (length === 0) return valueType - ValueType.INT + ValueType.VECTOR_INT;
43
  if (length === 2) return valueType - ValueType.INT + ValueType.VECTOR_INT2;
44
  if (length === 3) return valueType - ValueType.INT + ValueType.VECTOR_INT3;
45
  if (length === 4) return valueType - ValueType.INT + ValueType.VECTOR_INT4;
46
  throw "Unexpected length " + length;
47
}
48

49
export function typedVectorElementType(valueType: ValueType): ValueType {
50
  return valueType - ValueType.VECTOR_INT + ValueType.INT;
51
}
52

53
export function fixedTypedVectorElementType(valueType: ValueType): ValueType {
54
  return ((valueType - ValueType.VECTOR_INT2) % 3) + ValueType.INT;
55
}
56

57
export function fixedTypedVectorElementSize(valueType: ValueType): ValueType {
58
  // The x / y >> 0 trick is to have an int division. Suppose to be faster than Math.floor()
59
  return (((valueType - ValueType.VECTOR_INT2) / 3) >> 0) + 2;
60
}
61

62
export function packedType(valueType: ValueType, bitWidth: number): ValueType {
63
  return bitWidth | (valueType << 2);
64
}

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.