Module Mc2_core__Plugin.Factory

type plugin = t
type t =
| Factory : {
name : string;
priority : int;

how prioritary this plugin is. The lower, the earlier this plugin is loaded. NOTE: if plugin b requires services provided by plugin a, then we need to ensure a.priority < b.priority

requires : 'a service_key_list;

list of required services

build : Mc2_core__.Solver_types.plugin_id -> 'a service_list -> plugin;

builder, taking:

  • the unique ID of the plugin
  • the list of services required by requires
} -> t

A plugin factory, i.e. the method to build a plugin with a given ID.

val compare : t -> t -> int
val make : ?⁠priority:int -> name:string -> requires:'a service_key_list -> build:(Mc2_core__.Solver_types.plugin_id -> 'a service_list -> plugin) -> unit -> t