package camomile

  1. Overview
  2. Docs
Legend:
Page
Library
Module
Module type
Parameter
Class
Class type
Source

Source file version_type.ml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
type t = [
  | `Nc
  | `v1_1
  | `v2_0
  | `v2_1
  | `v3_0
  | `v3_1
  | `v3_2
  | `v4_0
  | `v4_1
  | `v5_0
  | `v5_1
  | `v5_2
  | `v6_0
  | `v6_1
  | `v6_2
  | `v6_3
  | `v7_0
  | `v8_0
  | `v9_0
  | `v10_0
  | `v11_0
  | `v12_0
  | `v12_1
  | `v13_0
  | `v14_0
  | `v15_0
  | `v15_1
  | `v16_0
  | `v17_0
]

let undefined = '\xff'

let char_of_version = function
  | `v1_1 -> '\x00'
  | `v2_0 -> '\x01'
  | `v2_1 -> '\x02'
  | `v3_0 -> '\x03'
  | `v3_1 -> '\x04'
  | `v3_2 -> '\x05'
  | `v4_0 -> '\x06'
  | `v4_1 -> '\x07'
  | `v5_0 -> '\x08'
  | `v5_1 -> '\x09'
  | `v5_2 -> '\x0a'
  | `v6_0 -> '\x0b'
  | `v6_1 -> '\x0c'
  | `v6_2 -> '\x0d'
  | `v6_3 -> '\x0e'
  | `v7_0 -> '\x0f'
  | `v8_0 -> '\x10'
  | `v9_0 -> '\x11'
  | `v10_0 -> '\x12'
  | `v11_0 -> '\x13'
  | `v12_0 -> '\x14'
  | `v12_1 -> '\x15'
  | `v13_0 -> '\x16'
  | `v14_0 -> '\x17'
  | `v15_0 -> '\x18'
  | `v15_1 -> '\x19'
  | `v16_0 -> '\x1a'
  | `v17_0 -> '\x1b'
  | `Nc -> undefined

let version_of_char = function
  | '\x00' -> `v1_1
  | '\x01' -> `v2_0
  | '\x02' -> `v2_1
  | '\x03' -> `v3_0
  | '\x04' -> `v3_1
  | '\x05' -> `v3_2
  | '\x06' -> `v4_0
  | '\x07' -> `v4_1
  | '\x08' -> `v5_0
  | '\x09' -> `v5_1
  | '\x0a' -> `v5_2
  | '\x0b' -> `v6_0
  | '\x0c' -> `v6_1
  | '\x0d' -> `v6_2
  | '\x0e' -> `v6_3
  | '\x0f' -> `v7_0
  | '\x10' -> `v8_0
  | '\x11' -> `v9_0
  | '\x12' -> `v10_0
  | '\x13' -> `v11_0
  | '\x14' -> `v12_0
  | '\x15' -> `v12_1
  | '\x16' -> `v13_0
  | '\x17' -> `v14_0
  | '\x18' -> `v15_0
  | '\x19' -> `v15_1
  | '\x1a' -> `v16_0
  | '\x1b' -> `v17_0
  | c when c = undefined -> `Nc
  | c -> failwith (Printf.sprintf "unknown version v%x" (Char.code c))

let char_of_major_minor = function
  | 1, 1 -> '\x00'
  | 2, 0 -> '\x01'
  | 2, 1 -> '\x02'
  | 3, 0 -> '\x03'
  | 3, 1 -> '\x04'
  | 3, 2 -> '\x05'
  | 4, 0 -> '\x06'
  | 4, 1 -> '\x07'
  | 5, 0 -> '\x08'
  | 5, 1 -> '\x09'
  | 5, 2 -> '\x0a'
  | 6, 0 -> '\x0b'
  | 6, 1 -> '\x0c'
  | 6, 2 -> '\x0d'
  | 6, 3 -> '\x0e'
  | 7, 0 -> '\x0f'
  | 8, 0 -> '\x10'
  | 9, 0 -> '\x11'
  | 10, 0 -> '\x12'
  | 11, 0 -> '\x13'
  | 12, 0 -> '\x14'
  | 12, 1 -> '\x15'
  | 13, 0 -> '\x16'
  | 14, 0 -> '\x17'
  | 15, 0 -> '\x18'
  | 15, 1 -> '\x19'
  | 16, 0 -> '\x1a'
  | 17, 0 -> '\x1b'
  | major, minor -> failwith (Printf.sprintf "unknown version v%d.%d" major minor)