Skip to content

Commit 3fea588

Browse files
committed
refactorize check point�
1 parent ff87771 commit 3fea588

File tree

1 file changed

+160
-67
lines changed

1 file changed

+160
-67
lines changed

src/main/plugins.ml

Lines changed: 160 additions & 67 deletions
Original file line numberDiff line numberDiff line change
@@ -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

3853
let 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 ) ]
106119
end
107120

108121

@@ -113,7 +126,7 @@ end
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-
378439
let () =
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

Comments
 (0)