1CamlinternalOO(3) OCaml library CamlinternalOO(3)
2
3
4
6 CamlinternalOO - Run-time support for objects and classes.
7
9 Module CamlinternalOO
10
12 Module CamlinternalOO
13 : sig end
14
15
16 Run-time support for objects and classes. All functions in this module
17 are for system use only, not for the casual user.
18
19
20
21
22
23
24
25
26 === Classes ===
27
28 type tag
29
30
31
32
33 type label
34
35
36
37
38 type table
39
40
41
42
43 type meth
44
45
46
47
48 type t
49
50
51
52
53 type obj
54
55
56
57
58 type closure
59
60
61
62
63
64 val public_method_label : string -> tag
65
66
67
68
69 val new_method : table -> label
70
71
72
73
74 val new_variable : table -> string -> int
75
76
77
78
79 val new_methods_variables : table -> string array -> string array ->
80 label array
81
82
83
84
85 val get_variable : table -> string -> int
86
87
88
89
90 val get_variables : table -> string array -> int array
91
92
93
94
95 val get_method_label : table -> string -> label
96
97
98
99
100 val get_method_labels : table -> string array -> label array
101
102
103
104
105 val get_method : table -> label -> meth
106
107
108
109
110 val set_method : table -> label -> meth -> unit
111
112
113
114
115 val set_methods : table -> label array -> unit
116
117
118
119
120 val narrow : table -> string array -> string array -> string array ->
121 unit
122
123
124
125
126 val widen : table -> unit
127
128
129
130
131 val add_initializer : table -> (obj -> unit) -> unit
132
133
134
135
136 val dummy_table : table
137
138
139
140
141 val create_table : string array -> table
142
143
144
145
146 val init_class : table -> unit
147
148
149
150
151 val inherits : table -> string array -> string array -> string array ->
152 t * (table -> obj -> Obj.t) * t * obj -> bool -> Obj.t * int array *
153 closure array
154
155
156
157
158 val make_class : string array -> (table -> Obj.t -> t) -> t * (table ->
159 Obj.t -> t) * (Obj.t -> t) * Obj.t
160
161
162
163 type init_table
164
165
166
167
168
169 val make_class_store : string array -> (table -> t) -> init_table ->
170 unit
171
172
173
174
175 val dummy_class : string * int * int -> t * (table -> Obj.t -> t) *
176 (Obj.t -> t) * Obj.t
177
178
179
180
181
182 === Objects ===
183
184
185 val copy : (< .. > as 'a) -> 'a
186
187
188
189
190 val create_object : table -> obj
191
192
193
194
195 val create_object_opt : obj -> table -> obj
196
197
198
199
200 val run_initializers : obj -> table -> unit
201
202
203
204
205 val run_initializers_opt : obj -> obj -> table -> obj
206
207
208
209
210 val create_object_and_run_initializers : obj -> table -> obj
211
212
213
214
215 val send : obj -> tag -> t
216
217
218
219
220 val sendcache : obj -> tag -> t -> int -> t
221
222
223
224
225 val sendself : obj -> label -> t
226
227
228
229
230 val get_public_method : obj -> tag -> closure
231
232
233
234
235
236 === Table cache ===
237
238 type tables
239
240
241
242
243
244 val lookup_tables : tables -> closure array -> tables
245
246
247
248
249
250 === Builtins to reduce code size ===
251
252
253 val get_const : t -> closure
254
255
256
257
258 val get_var : int -> closure
259
260
261
262
263 val get_env : int -> int -> closure
264
265
266
267
268 val get_meth : label -> closure
269
270
271
272
273 val set_var : int -> closure
274
275
276
277
278 val app_const : (t -> t) -> t -> closure
279
280
281
282
283 val app_var : (t -> t) -> int -> closure
284
285
286
287
288 val app_env : (t -> t) -> int -> int -> closure
289
290
291
292
293 val app_meth : (t -> t) -> label -> closure
294
295
296
297
298 val app_const_const : (t -> t -> t) -> t -> t -> closure
299
300
301
302
303 val app_const_var : (t -> t -> t) -> t -> int -> closure
304
305
306
307
308 val app_const_env : (t -> t -> t) -> t -> int -> int -> closure
309
310
311
312
313 val app_const_meth : (t -> t -> t) -> t -> label -> closure
314
315
316
317
318 val app_var_const : (t -> t -> t) -> int -> t -> closure
319
320
321
322
323 val app_env_const : (t -> t -> t) -> int -> int -> t -> closure
324
325
326
327
328 val app_meth_const : (t -> t -> t) -> label -> t -> closure
329
330
331
332
333 val meth_app_const : label -> t -> closure
334
335
336
337
338 val meth_app_var : label -> int -> closure
339
340
341
342
343 val meth_app_env : label -> int -> int -> closure
344
345
346
347
348 val meth_app_meth : label -> label -> closure
349
350
351
352
353 val send_const : tag -> obj -> int -> closure
354
355
356
357
358 val send_var : tag -> int -> int -> closure
359
360
361
362
363 val send_env : tag -> int -> int -> int -> closure
364
365
366
367
368 val send_meth : tag -> label -> int -> closure
369
370
371
372 type impl =
373 | GetConst
374 | GetVar
375 | GetEnv
376 | GetMeth
377 | SetVar
378 | AppConst
379 | AppVar
380 | AppEnv
381 | AppMeth
382 | AppConstConst
383 | AppConstVar
384 | AppConstEnv
385 | AppConstMeth
386 | AppVarConst
387 | AppEnvConst
388 | AppMethConst
389 | MethAppConst
390 | MethAppVar
391 | MethAppEnv
392 | MethAppMeth
393 | SendConst
394 | SendVar
395 | SendEnv
396 | SendMeth
397 | Closure of closure
398
399
400
401
402
403
404 === Parameters ===
405
406 type params = {
407
408 mutable compact_table : bool ;
409
410 mutable copy_parent : bool ;
411
412 mutable clean_when_copying : bool ;
413
414 mutable retry_count : int ;
415
416 mutable bucket_small_size : int ;
417 }
418
419
420
421
422
423 val params : params
424
425
426
427
428
429 === Statistics ===
430
431 type stats = {
432 classes : int ;
433 methods : int ;
434 inst_vars : int ;
435 }
436
437
438
439
440
441 val stats : unit -> stats
442
443
444
445
446
447
448OCamldoc 2007-05-24 CamlinternalOO(3)