module Package:sig
..end
type
plugin =
| |
Kernel |
| |
Plugin of |
type
ident = private {
|
plugin : |
|
package : |
|
name : |
}
type
jtype =
| |
Jany |
|||
| |
Jnull |
|||
| |
Jboolean |
|||
| |
Jnumber |
|||
| |
Jstring |
|||
| |
Jalpha |
(* | string primarily compared without case | *) |
| |
Jtag of |
(* | single constant string | *) |
| |
Jkey of |
(* | kind of a string used for indexing | *) |
| |
Jindex of |
(* | kind of an integer used for indexing | *) |
| |
Joption of |
|||
| |
Jdict of |
(* | dictionaries | *) |
| |
Jlist of |
(* | order does not matter | *) |
| |
Jarray of |
(* | order matters | *) |
| |
Jtuple of |
|||
| |
Junion of |
|||
| |
Jrecord of |
|||
| |
Jdata of |
|||
| |
Jenum of |
(* | data that is an enum | *) |
| |
Jself |
(* | for (simply) recursive types | *) |
type
fieldInfo = {
|
fd_name : |
|
fd_type : |
|
fd_descr : |
}
type
tagInfo = {
|
tg_name : |
|
tg_label : |
|
tg_descr : |
}
type
paramInfo =
| |
P_value of |
| |
P_named of |
type
requestInfo = {
|
rq_kind : |
|
rq_input : |
|
rq_output : |
|
rq_signals : |
}
type
arrayInfo = {
|
arr_key : |
|
arr_kind : |
}
type
declKindInfo =
| |
D_signal |
| |
D_type of |
| |
D_enum of |
| |
D_record of |
| |
D_request of |
| |
D_value of |
| |
D_state of |
| |
D_array of |
| |
D_safe of |
| |
D_loose of |
| |
D_order of |
type
declInfo = {
|
d_ident : |
|
d_descr : |
|
d_kind : |
}
type
packageInfo = {
|
p_plugin : |
|
p_package : |
|
p_title : |
|
p_descr : |
|
p_readme : |
|
p_content : |
}
val pp_plugin : Stdlib.Format.formatter -> plugin -> unit
val pp_pkgname : Stdlib.Format.formatter -> packageInfo -> unit
val pp_ident : Stdlib.Format.formatter -> ident -> unit
val pp_jtype : Stdlib.Format.formatter -> jtype -> unit
val derived : ?prefix:string ->
?suffix:string -> ident -> ident
module Derived:sig
..end
module IdMap:Map.S
with type key = ident
module Scope:sig
..end
val isRecursive : jtype -> bool
val visit_jtype : (ident -> unit) -> jtype -> unit
val visit_field : (ident -> unit) -> fieldInfo -> unit
val visit_param : (ident -> unit) -> paramInfo -> unit
val visit_request : (ident -> unit) -> requestInfo -> unit
val visit_dkind : (ident -> unit) -> declKindInfo -> unit
val visit_decl : (ident -> unit) -> declInfo -> unit
val visit_package_decl : (ident -> unit) -> packageInfo -> unit
val visit_package_used : (ident -> unit) -> packageInfo -> unit
type
package
val package : ?plugin:string ->
?name:string ->
title:string ->
?descr:Markdown.text -> ?readme:string -> unit -> package
val declare : package:package ->
name:string -> ?descr:Markdown.text -> declKindInfo -> unit
Register the declaration in the Server API. This is only way to obtain identifiers. This ensures identifiers are declared before being used.
val declare_id : package:package ->
name:string ->
?descr:Markdown.text -> declKindInfo -> ident
Same as declare
but returns the associated identifier.
val update : package:package ->
name:string -> declKindInfo -> unit
Replace the declaration for the given name in the package.
val iter : (packageInfo -> unit) -> unit
val resolve : ?keywords:string list ->
packageInfo -> string IdMap.t
Assigns non-classing names for each identifier.
val field : fieldInfo -> string * jtype
val name_of_pkg : ?sep:string -> plugin -> string list -> string
val name_of_pkginfo : ?sep:string -> packageInfo -> string
val name_of_package : ?sep:string -> package -> string
val name_of_ident : ?sep:string -> ident -> string
type
pp = {
|
self : |
|
ident : |
}
val litteral : string -> Markdown.text
Quoted string
val md_jtype : pp -> jtype -> Markdown.text
?title:string -> tagInfo list -> Markdown.table
: val md_fields : ?title:string ->
pp -> fieldInfo list -> Markdown.table