@@ -29,11 +29,26 @@ let mk_record cols =
2929(* * it can exist without prefix only when you do not need
3030 any runtime --
3131 *)
32- let gen_eqobj =
33- Derive_obj. mk ~kind: Iter ~mk_record
34- ~base: " eqbase" ~class_name: " eq"
35- ~mk_variant: mk_variant
36- ~arity: 2 ~default: % exp- {false } () ;;
32+ let gen_eqobj =
33+ Derive_obj. register {
34+ arity= 2 ;
35+ names= [] ;
36+ plugin_name= " OEq" ;
37+ mk_record = Some mk_record;
38+ mk_variant = Some mk_variant;
39+ default = Some (Atom % exp- {false });
40+ excludes = [] ;
41+ kind = Iter ;
42+ base = " eqbase" ;
43+ class_name = " eq" ;
44+ }
45+ (* List.iter Typehook.register *)
46+ (* [ ("OEq", some gen_eqobj ) ] *)
47+
48+ (* Derive_obj.mk ~kind:Iter ~mk_record *)
49+ (* ~base:"eqbase" ~class_name:"eq" *)
50+ (* ~mk_variant:mk_variant *)
51+ (* ~arity:2 ~default:%exp-{false} () ;; *)
3752
3853let some f = fun x -> Some (f x)
3954
@@ -101,8 +116,6 @@ let _ = begin
101116 ]
102117 };
103118
104- List. iter Typehook. register
105- [ (" OEq" , some gen_eqobj ) ]
106119end
107120
108121
113126
114127
115128(* [Fold2] unused *)
116- let (gen_fold,gen_fold2) =
129+ let (* ( gen_fold,gen_fold2) *) ( ) =
117130 let mk_variant _cons params =
118131 params
119132 |> List. map (fun (x :Ctyp.ty_info ) -> x.info_exp)
@@ -123,19 +136,45 @@ let (gen_fold,gen_fold2) =
123136 Listf. reduce_right (fun v acc -> % exp- { let self = $ v in $ acc }) ls ) in
124137 let mk_record cols =
125138 cols |> List. map (fun (x :Ctyp.record_col ) -> x.info )
126- |> mk_variant None in
127- (Derive_obj. mk ~kind: Fold ~mk_record
128- ~base: " foldbase" ~class_name: " fold" ~mk_variant () ,
129- Derive_obj. mk ~kind: Fold ~mk_record
130- ~base: " foldbase2" ~class_name: " fold2"
131- ~mk_variant
132- ~arity: 2 ~default: % exp- {invalid_arg " fold2 failure" } () )
133-
134- let _ =
135- begin
136- List. iter Typehook. register
137- [(" Fold" ,some gen_fold); (" Fold2" ,some gen_fold2);]
139+ |> mk_variant None in
140+ begin
141+ Derive_obj. register {
142+ kind = Fold ;
143+ mk_record = Some mk_record;
144+ mk_variant = Some mk_variant;
145+ default = None ;
146+ excludes = [] ;
147+ base = " foldbase" ;
148+ class_name = " fold" ;
149+ plugin_name = " FOld" ;
150+ arity = 1 ;
151+ names = [] ;
152+ };
153+ Derive_obj. register {
154+ kind = Fold ;
155+ mk_record = Some mk_record;
156+ mk_variant = Some mk_variant;
157+ default = Some (Atom % exp- {invalid_arg " fold2 failure" });
158+ excludes = [] ;
159+ base = " foldbase" ;
160+ class_name = " fold" ;
161+ plugin_name = " FOld2" ;
162+ arity = 2 ;
163+ names = [] ;
164+ }
138165 end
166+ (* (Derive_obj.mk ~kind:Fold ~mk_record *)
167+ (* ~base:"foldbase" ~class_name:"fold" ~mk_variant (), *)
168+ (* Derive_obj.mk ~kind:Fold ~mk_record *)
169+ (* ~base:"foldbase2" ~class_name:"fold2" *)
170+ (* ~mk_variant *)
171+ (* ~arity:2 ~default:%exp-{invalid_arg "fold2 failure" } () ) *)
172+
173+ (* let _ = *)
174+ (* begin *)
175+ (* List.iter Typehook.register *)
176+ (* [("Fold",some gen_fold); ("Fold2",some gen_fold2);] *)
177+ (* end *)
139178
140179
141180(* ***********************************)
@@ -146,7 +185,7 @@ let _ =
146185 [self#unkown] -- or more compatible way
147186 dumping ast level do the transformation [__Tokenf_ant_]
148187 *)
149- let (gen_map,gen_map2 ) =
188+ let () =
150189 let mk_variant cons params =
151190 let result =
152191 match cons with
@@ -172,18 +211,46 @@ let (gen_map,gen_map2) =
172211 List. fold_right
173212 (fun ({info ={info_exp =exp ;ep0;_} ;_} : Ctyp.record_col ) res ->
174213 % exp- {let $ pat{ep0} = $ exp in $ res }) cols result in
175- (Derive_obj. mk ~kind: Map ~mk_record
176- ~base: " mapbase" ~class_name: " map"
177- ~mk_variant () ,
178- Derive_obj. mk ~kind: Map ~mk_record
179- ~base: " mapbase2" ~class_name: " map2" ~mk_variant
180- ~arity: 2 ~default: % exp- { invalid_arg " map2 failure" } () );;
181-
182- begin
183- [(" Map" ,some gen_map);
184- (" Map2" ,some gen_map2);]
185- |> List. iter Typehook. register;
186- end ;;
214+ begin
215+ Derive_obj. register
216+ {
217+ kind = Map ;
218+ mk_record = Some mk_record;
219+ mk_variant = Some mk_variant;
220+ base = " mapbase" ;
221+ class_name = " map" ;
222+ default = None ;
223+ excludes = [] ;
224+ names = [] ;
225+ arity = 1 ;
226+ plugin_name = " Map" ;
227+ };
228+ Derive_obj. register
229+ {
230+ kind = Map ;
231+ mk_record = Some mk_record;
232+ mk_variant = Some mk_variant;
233+ base = " mapbase" ;
234+ class_name = " map2" ;
235+ default = None ;
236+ excludes = [] ;
237+ names = [] ;
238+ arity = 2 ;
239+ plugin_name = " Map2" ;
240+ }
241+ end
242+ (* (Derive_obj.mk ~kind:Map ~mk_record *)
243+ (* ~base:"mapbase" ~class_name:"map" *)
244+ (* ~mk_variant (), *)
245+ (* Derive_obj.mk ~kind:Map ~mk_record *)
246+ (* ~base:"mapbase2" ~class_name:"map2" ~mk_variant *)
247+ (* ~arity:2 ~default: %exp-{ invalid_arg "map2 failure" } ());; *)
248+
249+ (* begin *)
250+ (* [("Map",some gen_map); *)
251+ (* ("Map2",some gen_map2);] *)
252+ (* |> List.iter Typehook.register; *)
253+ (* end;; *)
187254
188255(* ***********************************)
189256(* Strip generator *)
@@ -350,36 +417,49 @@ let gen_meta =
350417 excludes = [" loc" ; " ant" ; " quot" ];
351418 } ;
352419
353- Derive_obj. mk ~kind: (Concrete % ctyp- {Astf. ep})
354- ~mk_record
355- ~base: " primitive" ~class_name: " meta" ~mk_variant: mk_variant
356- ~names: [" _loc" ]
357- ()
420+ Derive_obj. register
421+ {
422+ kind = Concrete % ctyp- {Astf. ep};
423+ mk_record = Some mk_record;
424+ mk_variant = Some mk_variant;
425+ base = " primitive" ;
426+ class_name = " meta" ;
427+ names = [" _loc" ];
428+ default = None ;
429+ excludes = [" loc" ;" ant" ;" quot" ];
430+ arity = 1 ;
431+ plugin_name = " MetaObj"
432+ }
358433 end ;;
359-
360- (* %{}[@ *)
361- (* meta_loc : loc *)
362- (* ] *)
363-
364- Typehook. register
365- ~filter: (fun s -> not (List. mem s [" loc" ;" ant" ;" quot" ]))
366- (" MetaObj" , some gen_meta);;
367434
368435
369436
370437
371438
372- let gen_print_obj =
373- Derive_obj. mk ~kind: (Concrete % ctyp- {unit }) (* ~mk_tuple:mk_tuple_print *)
374- ~base: " printbase" ~class_name: " print"
375- ~names: [" fmt" ] ~mk_record: Gen_print. mk_record
376- ~mk_variant: Gen_print. mk_variant () ;;
377-
378439let () =
379- begin
380- Derive_stru. register Gen_print. default;
381- [ (" OPrint" ,some gen_print_obj)] |> List. iter Typehook. register;
382- end
440+ Derive_obj. register {
441+ kind = Concrete % ctyp- {unit };
442+ mk_record = Some Gen_print. mk_record;
443+ mk_variant = Some Gen_print. mk_variant;
444+ base = " printbase" ;
445+ class_name = " print" ;
446+ arity = 1 ;
447+ names = [" fmt" ];
448+ plugin_name = " Oprint" ;
449+ default = None ;
450+ excludes = [] ;
451+ }
452+ (* Derive_obj.mk ~kind:(Concrete %ctyp-{unit}) (\* ~mk_tuple:mk_tuple_print *\) *)
453+ (* ~base:"printbase" ~class_name:"print" *)
454+ (* ~names:["fmt"] ~mk_record:Gen_print.mk_record *)
455+ (* ~mk_variant:Gen_print.mk_variant ();; *)
456+
457+ (* let () = *)
458+ (* begin *)
459+
460+ (* Derive_stru.register Gen_print.default; *)
461+ (* [ ("OPrint",some gen_print_obj)] |> List.iter Typehook.register; *)
462+ (* end *)
383463
384464
385465
@@ -406,17 +486,30 @@ let mk_record_iter cols =
406486 |> seq_sem
407487
408488
409-
410- let gen_iter =
411- Derive_obj. mk ~kind: Iter
412- ~base: " iterbase"
413- ~class_name: " iter"
414- ~names: []
415- ~mk_record: mk_record_iter
416- ~mk_variant: mk_variant_iter
417- () ;;
418-
419- (" OIter" ,some gen_iter) |> Typehook. register;;
489+ let () =
490+ Derive_obj. register
491+ {
492+ kind = Iter ;
493+ base = " iterbase" ;
494+ class_name = " iter" ;
495+ names = [] ;
496+ mk_record = Some mk_record_iter;
497+ mk_variant = Some mk_variant_iter;
498+ arity = 1 ;
499+ default = None ;
500+ excludes = [] ;
501+ plugin_name = " OIter"
502+ }
503+ (* let gen_iter = *)
504+ (* Derive_obj.mk ~kind:Iter *)
505+ (* ~base:"iterbase" *)
506+ (* ~class_name:"iter" *)
507+ (* ~names:[] *)
508+ (* ~mk_record:mk_record_iter *)
509+ (* ~mk_variant:mk_variant_iter *)
510+ (* ();; *)
511+
512+ (* ("OIter",some gen_iter) |> Typehook.register;; *)
420513
421514(* ******************************)
422515(* [Locof] generator *)
0 commit comments