This file is indexed.

/usr/lib/ocaml/lablgl/glut.mli is in liblablgl-ocaml-dev 1:1.05-2.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

  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
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
(*

   glut.mli: interface for the lablglut GLUT binding.

*)

type button_t =
  | LEFT_BUTTON
  | MIDDLE_BUTTON
  | RIGHT_BUTTON
  | OTHER_BUTTON of int

type mouse_button_state_t =
  | DOWN
  | UP

type special_key_t =
  | KEY_F1
  | KEY_F2
  | KEY_F3
  | KEY_F4
  | KEY_F5
  | KEY_F6
  | KEY_F7
  | KEY_F8
  | KEY_F9
  | KEY_F10
  | KEY_F11
  | KEY_F12
      (* directional keys *)
  | KEY_LEFT
  | KEY_UP
  | KEY_RIGHT
  | KEY_DOWN
  | KEY_PAGE_UP
  | KEY_PAGE_DOWN
  | KEY_HOME
  | KEY_END
  | KEY_INSERT
     (* for undefined keys *)
  | KEY_OTHER of int

type entry_exit_state_t =
  | LEFT
  | ENTERED

type menu_state_t =
  | MENU_NOT_IN_USE
  | MENU_IN_USE

type visibility_state_t =
  | NOT_VISIBLE
  | VISIBLE

type window_status_t =
  | HIDDEN
  | FULLY_RETAINED
  | PARTIALLY_RETAINED
  | FULLY_COVERED

type color_index_component_t =
  | RED
  | GREEN
  | BLUE

type layer_t =
  | NORMAL
  | OVERLAY

type font_t =
  | STROKE_ROMAN
  | STROKE_MONO_ROMAN
  | BITMAP_9_BY_15
  | BITMAP_8_BY_13
  | BITMAP_TIMES_ROMAN_10
  | BITMAP_TIMES_ROMAN_24
  | BITMAP_HELVETICA_10
  | BITMAP_HELVETICA_12
  | BITMAP_HELVETICA_18

type glut_get_t =
  | WINDOW_X
  | WINDOW_Y
  | WINDOW_WIDTH
  | WINDOW_HEIGHT
  | WINDOW_BUFFER_SIZE
  | WINDOW_STENCIL_SIZE
  | WINDOW_DEPTH_SIZE
  | WINDOW_RED_SIZE
  | WINDOW_GREEN_SIZE
  | WINDOW_BLUE_SIZE
  | WINDOW_ALPHA_SIZE
  | WINDOW_ACCUM_RED_SIZE
  | WINDOW_ACCUM_GREEN_SIZE
  | WINDOW_ACCUM_BLUE_SIZE
  | WINDOW_ACCUM_ALPHA_SIZE
  | WINDOW_DOUBLEBUFFER
  | WINDOW_RGBA
  | WINDOW_PARENT
  | WINDOW_NUM_CHILDREN
  | WINDOW_COLORMAP_SIZE
  | WINDOW_NUM_SAMPLES
  | WINDOW_STEREO
  | WINDOW_CURSOR
  | SCREEN_WIDTH
  | SCREEN_HEIGHT
  | SCREEN_WIDTH_MM
  | SCREEN_HEIGHT_MM
  | MENU_NUM_ITEMS
      (* | DISPLAY_MODE_POSSIBLE : use getBool *)
  | INIT_WINDOW_X
  | INIT_WINDOW_Y
  | INIT_WINDOW_WIDTH
  | INIT_WINDOW_HEIGHT
  | INIT_DISPLAY_MODE
  | ELAPSED_TIME
  | WINDOW_FORMAT_ID

type glut_get_bool_t =
  | DISPLAY_MODE_POSSIBLE

(* display mode bit masks *)
val rgb:int
val rgba:int
val index:int
val single:int
val double:int
val accum:int
val alpha:int
val depth:int
val stencil:int
val multisample:int
val stereo:int
val luminance:int

type device_get_t =
  | HAS_KEYBOARD
  | HAS_MOUSE
  | HAS_SPACEBALL
  | HAS_DIAL_AND_BUTTON_BOX
  | HAS_TABLET
  | NUM_MOUSE_BUTTONS
  | NUM_SPACEBALL_BUTTONS
  | NUM_BUTTON_BOX_BUTTONS
  | NUM_DIALS
  | NUM_TABLET_BUTTONS
  | DEVICE_IGNORE_KEY_REPEAT
  | DEVICE_KEY_REPEAT
  | HAS_JOYSTICK
  | OWNS_JOYSTICK
  | JOYSTICK_BUTTONS
  | JOYSTICK_AXES
  | JOYSTICK_POLL_RATE

type layerget_t =
  | OVERLAY_POSSIBLE
      (* | LAYER_IN_USE : use layerGetInUse *)
  | HAS_OVERLAY
      (* | TRANSPARENT_INDEX : use layerGetTransparentIndex *)
  | NORMAL_DAMAGED
  | OVERLAY_DAMAGED

type video_resize_t =
  | VIDEO_RESIZE_POSSIBLE
  | VIDEO_RESIZE_IN_USE
  | VIDEO_RESIZE_X_DELTA
  | VIDEO_RESIZE_Y_DELTA
  | VIDEO_RESIZE_WIDTH_DELTA
  | VIDEO_RESIZE_HEIGHT_DELTA
  | VIDEO_RESIZE_X
  | VIDEO_RESIZE_Y
  | VIDEO_RESIZE_WIDTH
  | VIDEO_RESIZE_HEIGHT

(* key modifier bit masks *)
val active_shift:int
val active_ctrl:int
val active_alt:int

type cursor_t =
    (* Basic arrows. *)
  | CURSOR_RIGHT_ARROW
  | CURSOR_LEFT_ARROW
      (* Symbolic cursor shapes. *)
  | CURSOR_INFO
  | CURSOR_DESTROY
  | CURSOR_HELP
  | CURSOR_CYCLE
  | CURSOR_SPRAY
  | CURSOR_WAIT
  | CURSOR_TEXT
  | CURSOR_CROSSHAIR
      (* Directional cursors. *)
  | CURSOR_UP_DOWN
  | CURSOR_LEFT_RIGHT
      (* Sizing cursors. *)
  | CURSOR_TOP_SIDE
  | CURSOR_BOTTOM_SIDE
  | CURSOR_LEFT_SIDE
  | CURSOR_RIGHT_SIDE
  | CURSOR_TOP_LEFT_CORNER
  | CURSOR_TOP_RIGHT_CORNER
  | CURSOR_BOTTOM_RIGHT_CORNER
  | CURSOR_BOTTOM_LEFT_CORNER
  | CURSOR_INHERIT                (* inherit cursor from parent window *)
  | CURSOR_NONE               (* blank cursor *)
  | CURSOR_FULL_CROSSHAIR   (* full-screen crosshair (if available) *)

type game_mode_t =
  | GAME_MODE_ACTIVE
  | GAME_MODE_POSSIBLE
  | GAME_MODE_WIDTH
  | GAME_MODE_HEIGHT
  | GAME_MODE_PIXEL_DEPTH
  | GAME_MODE_REFRESH_RATE
  | GAME_MODE_DISPLAY_CHANGED

type key_repeat_t =
  | KEY_REPEAT_OFF
  | KEY_REPEAT_ON
  | KEY_REPEAT_DEFAULT

exception BadEnum of string
exception InvalidState of string

    (* GLUT initialization sub-API. *)
val init: argv:(string array)->string array (* returns new argv *)
val initDisplayMode: (* The last argument must be () *)
    ?double_buffer:bool->
    ?index:bool->
    ?accum:bool->
    ?alpha:bool->
    ?depth:bool->
    ?stencil:bool->
    ?multisample:bool->
    ?stereo:bool->
    ?luminance:bool->
    unit->
    unit
val initWindowPosition: x:int->y:int->unit
val initWindowSize: w:int->h:int->unit
val mainLoop: unit->unit

    (* GLUT window sub-API. *)
val createWindow: title:string->int (* returns window id *)
val postRedisplay: unit->unit
val swapBuffers: unit->unit
val createSubWindow: win:int->x:int->y:int->w:int->h:int->int
val destroyWindow: win:int->unit
val getWindow: unit->int
val setWindow: win:int->unit
val setWindowTitle: title:string->unit
val setIconTitle: title:string->unit
val positionWindow: x:int->y:int->unit
val reshapeWindow: w:int->h:int->unit
val popWindow: unit->unit
val pushWindow: unit->unit
val iconifyWindow: unit->unit
val showWindow: unit->unit
val hideWindow: unit->unit
val fullScreen: unit->unit
val setCursor: cursor_t->unit

    (* GLUT overlay sub-API. *)
val establishOverlay: unit->unit
val removeOverlay: unit->unit
val useLayer: layer_t->unit
val postOverlayRedisplay: unit->unit
val showOverlay: unit->unit
val hideOverlay: unit->unit

    (* GLUT menu sub-API. *)
val createMenu: cb:(value:int->unit)->int
val destroyMenu: menu:int->unit
val getMenu: unit->int
val setMenu: menu:int->unit
val addMenuEntry: label:string->value:int->unit
val addSubMenu: label:string->submenu:int->unit
val changeToMenuEntry: item:int->label:string->value:int->unit
val changeToSubMenu: item:int->label:string->submenu:int->unit
val removeMenuItem: item:int->unit
val attachMenu: button:button_t->unit
val detachMenu: button:button_t->unit

    (* GLUT window callback sub-API. *)
val displayFunc: cb:(unit->unit)->unit
val reshapeFunc: cb:(w:int->h:int->unit)->unit
val keyboardFunc: cb:(key:int->x:int->y:int->unit)->unit
val mouseFunc: cb:(button:button_t->state:mouse_button_state_t->
  x:int->y:int->unit)->unit
val motionFunc: cb:(x:int->y:int->unit)->unit
val passiveMotionFunc: cb:(x:int->y:int->unit)->unit
val entryFunc: cb:(state:entry_exit_state_t->unit)->unit
val visibilityFunc: cb:(state:visibility_state_t->unit)->unit
val idleFunc: cb:((unit->unit) option)->unit
(* you can set as many timer as you want simultanesouly *)
val timerFunc: ms:int->cb:(value:'a->unit)->value:'a->unit
val specialFunc: cb:(key:special_key_t->x:int->y:int->unit)->unit
val spaceballMotionFunc: cb:(x:int->y:int->z:int->unit)->unit
val spaceballRotateFunc: cb:(x:int->y:int->z:int->unit)->unit
val spaceballButtonFunc: cb:(button:int->state:int->unit)->unit
val buttonBoxFunc: cb:(button:int->state:int->unit)->unit
val dialsFunc: cb:(dial:int->value:int->unit)->unit
val tabletMotionFunc: cb:(x:int->y:int->unit)->unit
val tabletButtonFunc: cb:(button:int->state:int->x:int->y:int->unit)->unit
val menuStatusFunc: cb:(status:menu_state_t->x:int->y:int->unit)->unit
val overlayDisplayFunc: cb:(unit->unit)->unit

    (* GLUT color index sub-API. *)
val setColor: cell:int->red:float->green:float->blue:float->unit
val getColor: index:int->component:int->float
val copyColormap: win:int->unit

    (* GLUT state retrieval sub-API. *)
val get: gtype:glut_get_t->int
val getBool: gtype:glut_get_bool_t->bool
val deviceGet: dgtype:device_get_t->int

    (* GLUT extension support sub-API *)
val extensionSupported: name:string->bool
val getModifiers: unit->int
val layerGetTransparentIndex: unit->int
val layerGetInUse: unit->layer_t
val layerGet: lgtype:layerget_t->bool

    (* GLUT font sub-API *)
val bitmapCharacter: font:font_t->c:int->unit
val bitmapWidth: font:font_t->c:int->int
val strokeCharacter: font:font_t->c:int->unit
val strokeWidth: font:font_t->c:int->int

    (* GLUT pre-built models sub-API *)
val wireSphere: radius:float->slices:int->stacks:int->unit
val solidSphere: radius:float->slices:int->stacks:int->unit
val wireCone: base:float->height:float->slices:int->stacks:int->unit
val solidCone: base:float->height:float->slices:int->stacks:int->unit
val wireCube: size:float->unit
val solidCube: size:float->unit
val wireTorus: innerRadius:float->outerRadius:float->sides:int->rings:int->unit
val solidTorus: innerRadius:float->outerRadius:float->sides:int->rings:int->unit
val wireDodecahedron: unit->unit
val solidDodecahedron: unit->unit
val wireTeapot: size:float->unit
val solidTeapot: size:float->unit
val wireOctahedron: unit->unit
val solidOctahedron: unit->unit
val wireTetrahedron: unit->unit
val solidTetrahedron: unit->unit
val wireIcosahedron: unit->unit
val solidIcosahedron: unit->unit

    (* GLUT game mode sub-API *)
val gameModeString: str:string->unit
val enterGameMode: unit->unit
val leaveGameMode: unit->unit
val gameModeGet: mode:game_mode_t->int

    (* GLUT version 4 functions included in the GLUT 3.7 distribution *)
val initDisplayString: str:string->unit
val warpPointer: x:int->y:int->unit
val bitmapLength: font:font_t->str:string->int
val strokeLength: font:font_t->str:string->int
val windowStatusFunc: cb:(state:window_status_t->unit)->unit
val postWindowRedisplay: win:int->unit
val postWindowOverlayRedisplay: win:int->unit
val keyboardUpFunc: cb:(key:int->x:int->y:int->unit)->unit
val specialUpFunc: cb:(key:special_key_t->x:int->y:int->unit)->unit
val ignoreKeyRepeat: ignore:bool->unit
val setKeyRepeat: mode:key_repeat_t->unit
val joystickFunc: cb:(buttonMask:int->x:int->y:int->z:int->unit)->
  pollInterval:int->unit
val forceJoystickFunc: unit->unit

  (* GLUT video resize sub-API. *)
val videoResizeGet: video_resize_t->int
val setupVideoResizing: unit->unit
val stopVideoResizing: unit->unit
val videoResize: x:int->y:int->width:int->height:int->unit
val videoPan: x:int->y:int->width:int->height:int->unit

  (* GLUT debugging sub-API. *)
val reportErrors: unit->unit

  (* ocaml-specific *)
val string_of_button: button_t->string
val string_of_button_state: mouse_button_state_t->string
val string_of_special: special_key_t->string
val string_of_window_status: window_status_t->string
val string_of_vis_state: visibility_state_t->string
val string_of_cursor: cursor_t->string
val int_of_cursor: cursor_t->int