Legend:
Page
Library
Module
Module type
Parameter
Class
Class type
Source
Page
Library
Module
Module type
Parameter
Class
Class type
Source
loader.ml
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
(************************************************************************) (* * The Coq Proof Assistant / The Coq Development Team *) (* v * INRIA, CNRS and contributors - Copyright 1999-2018 *) (* <O___,, * (see CREDITS file for the list of authors) *) (* \VV/ **************************************************************) (* // * This file is distributed under the terms of the *) (* * GNU Lesser General Public License Version 2.1 *) (* * (see LICENSE file for the text of the license) *) (************************************************************************) (************************************************************************) (* Coq serialization API/Plugin *) (* Copyright 2016-2019 MINES ParisTech *) (* Copyright 2019-2022 Inria *) (* Written by Emilio J. Gallego Arias *) (************************************************************************) [@@@ocamlformat "disable"] let list_last l = List.(nth l (length l - 1)) (* Should improve *) let map_serlib fl_pkg = let supported = match fl_pkg with (* Supported by serlib *) (* directory *) | "coq-core.plugins.ltac" (* ltac *) | "coq-core.plugins.firstorder" (* firstorder *) | "coq-core.plugins.funind" (* funind *) | "coq-core.plugins.ring" (* ring *) | "coq-core.plugins.extraction" (* extraction *) | "coq-core.plugins.ssrmatching" (* ssrmatching *) | "coq-core.plugins.ssreflect" (* ssr *) -> true | _ -> Feedback.msg_warning Pp.(str "Missing serlib plugin: " ++ str fl_pkg); false in if supported then let plugin_name = String.split_on_char '.' fl_pkg |> list_last in Some ("coq-serapi.serlib." ^ plugin_name) else None let plugin_handler user_loader = let loader = Option.default (Fl_dynload.load_packages ~debug:false) user_loader in fun fl_pkg -> let _, fl_pkg = Mltop.PluginSpec.repr fl_pkg in match map_serlib fl_pkg with | Some serlib_pkg -> loader [serlib_pkg] | None -> loader [fl_pkg]