package GT
Install
Dune Dependency
Authors
Maintainers
Sources
sha256=55f8249e780b9a1891d9d4bb5bf2f4f7fdc619a06d9f6f04961afe193cbaaac4
sha512=3a9422aafb7a4d22c484d03950603e7f05c10512ddeb7675fe5dce73f0ef8f3537eabad1d5ebfb99c6b2e952a6203c793a1cd9d62d2863cef31616a4256b99d2
doc/GT.common/GTCommon/Plugin_intf/class-typ_g/index.html
Class Plugin_intf.typ_g
Source
Base class type for all plugins.
Is parametrized by output AST types for convenience. All plugins receive input data as OCaml AST and return pieces specific for backend.
Methods that are specific for a concrete plugin implementation
Name of a trait (and of plugin too). It is used for constructing new classes and * functions related to plugin.
method virtual inh_of_main : loc:'loc -> Ppxlib.type_declaration -> 'typ
Inherited attribute for whole type declaration. Is is defined by plugin kind.
method virtual syn_of_main : loc:'loc ->
?in_class:bool ->
Ppxlib.type_declaration ->
'typ
Synthesized attribute for whole type declaration. Is is defined by plugin kind.
syn_of_param ~loc name
constructs synthethized attribute for type paramter name
.
method virtual inh_of_param : loc:'loc ->
Ppxlib.type_declaration ->
string ->
'typ
inh_of_param ~loc tdecl name
constructs inherited attribute for type parameter name
.
method virtual plugin_class_params : loc:'loc ->
Ppxlib.core_type list ->
typname:string ->
'typ list
The parameters that the plugin class will have in its definition. * Add 'extra
manually if needed.
method virtual alias_inherit_type_params : loc:'loc ->
Ppxlib.type_declaration ->
Ppxlib.core_type list ->
'typ list
Arguments of inherit class field that will be generated using the types applied in the RHS of type definition.
method virtual extra_class_sig_members : Ppxlib.type_declaration -> 'ctf list
Adds a few extra members to a plugin class. Could be some constraints that are difficult to add in place where type parameters are declared.
method virtual extra_class_str_members : Ppxlib.type_declaration -> 'cf list
The same as extra_class_sig_members
but for structures.
Methods that are specific for all plugins and unlikely will need to be override
method virtual do_single_sig : loc:'loc ->
is_rec:bool ->
Ppxlib.type_declaration ->
'sign list
Generate signature items for single type definition.
method virtual do_single : loc:'loc ->
is_rec:bool ->
Ppxlib.type_declaration ->
'str list
Generate structure items for single type definition.
method virtual do_typ_gen : loc:'loc ->
mutual_decls:Ppxlib.type_declaration list ->
is_self_rec:(Ppxlib.core_type -> [ `Nonrecursive | `Nonregular | `Regular ]) ->
Ppxlib.type_declaration ->
Ppxlib.core_type ->
'exp
Generate transformation expression from specified core_type.
method virtual make_trans_function_name : Ppxlib.type_declaration -> string
Generate name for transformation function.
method virtual make_trans_function_typ : loc:'loc ->
Ppxlib.type_declaration ->
'typ
Generate type of a transformation function.
method virtual do_mutuals : loc:'loc ->
is_rec:bool ->
Ppxlib.type_declaration list ->
'str list
Generate structure items for mutally recursive type declarations.
method virtual eta_and_exp : center:'exp -> Ppxlib.type_declaration -> 'exp
method virtual prepare_fa_args : 'a. loc:'loc ->
(loc:'loc -> flg:Ppxlib.rec_flag -> pat:'pat -> expr:'exp -> 'a -> 'a) ->
Ppxlib.type_declaration ->
'pat list * ('a -> 'a)
method virtual make_final_trans_function_typ : loc:'loc ->
Ppxlib.type_declaration ->
'typ