Initial commit of OpenSPARC T2 architecture model.
[OpenSPARC-T2-SAM] / sam-t2 / devtools / amd64 / share / swig / 1.3.26 / ocaml / class.swg
CommitLineData
920dae64
AT
1(*Stream:class_ctors*)
2let create_$classname_from_ptr raw_ptr =
3 C_obj
4begin
5 let h = Hashtbl.create 20 in
6 List.iter (fun (nm,fn) -> Hashtbl.replace h nm fn)
7 [ "nop", (fun args -> C_void) ;
8 $classbody
9 "&", (fun args -> raw_ptr) ;
10 ":parents",
11 (fun args ->
12 C_list
13 (let out = ref [] in
14 Hashtbl.iter (fun x y -> out := (x,y) :: !out) h ;
15 (List.map
16 (fun (x,y) ->
17 C_string (String.sub x 2 ((String.length x) - 2)))
18 (List.filter
19 (fun (x,y) ->
20 ((String.length x) > 2)
21 && x.[0] == ':' && x.[1] == ':') !out)))) ;
22 ":classof", (fun args -> C_string "$realname") ;
23 ":methods", (fun args ->
24 C_list (let out = ref [] in
25 Hashtbl.iter (fun x y -> out := (C_string x) :: !out) h ; !out))
26 ] ;
27 let rec invoke_inner raw_ptr mth arg =
28 begin
29 try
30 let application = Hashtbl.find h mth in
31 application
32 (match arg with
33 C_list l -> (C_list (raw_ptr :: l))
34 | C_void -> (C_list [ raw_ptr ])
35 | v -> (C_list [ raw_ptr ; v ]))
36 with Not_found ->
37 (* Try parent classes *)
38 begin
39 let parent_classes = [
40 $baselist
41 ] in
42 let rec try_parent plist raw_ptr =
43 match plist with
44 p :: tl ->
45 begin
46 try
47 (invoke (p raw_ptr)) mth arg
48 with (BadMethodName (p,m,s)) ->
49 try_parent tl raw_ptr
50 end
51 | [] ->
52 raise (BadMethodName (raw_ptr,mth,"$realname"))
53 in try_parent parent_classes raw_ptr
54 end
55 end in
56 (fun mth arg -> invoke_inner raw_ptr mth arg)
57end
58
59let _ = Callback.register
60 "create_$normalized_from_ptr"
61 create_$classname_from_ptr
62
63
64(*Stream:mli*)
65val create_$classname_from_ptr : c_obj -> c_obj
66