Module Liquidsoap_lang.Lang_core

include module type of struct include Liquidsoap_lang_values.Value end
type env = (string * Liquidsoap_lang_values.Value.t) list
and dynamic_methods = Liquidsoap_lang_values.Value.dynamic_methods = {
  1. hidden_methods : string list;
  2. methods : string -> Liquidsoap_lang_values.Value.t option;
}

Methods computed on demand rather than stored, used by sources whose method set depends on their content type.

type fun_v = Liquidsoap_lang_values.Value.fun_v = {
  1. fun_args : (string * string * Liquidsoap_lang_values.Value.t option) list;
  2. fun_env : env;
  3. fun_body : Liquidsoap_lang_ast.Term.t;
}
type ffi = Liquidsoap_lang_values.Value.ffi = {
  1. ffi_args : (string * string * Liquidsoap_lang_values.Value.t option) list;
  2. ffi_fn : env -> Liquidsoap_lang_values.Value.t;
}
type in_value = [
  1. | `Bool of bool
  2. | `Custom of Liquidsoap_lang_ast.Term.Custom.t
  3. | `FFI of ffi
  4. | `Float of float
  5. | `Fun of fun_v
  6. | `Int of int
  7. | `List of Liquidsoap_lang_values.Value.t list
  8. | `Null
  9. | `String of string
  10. | `Tuple of Liquidsoap_lang_values.Value.t list
]

A value without its position, methods or flags: what make takes.

val is_unit : Liquidsoap_lang_values.Value.t -> bool
val string_of_int_value : flags:Liquidsoap_lang_data.Flags.flags -> int -> string

Render an integer the way it was written, i.e. honouring the hexadecimal and octal flags.

Retrieve a method. Raises Not_found if it is absent.

invokes v ["a"; "b"] is v.a.b.

remeth v v' is v with the methods of v'.

Comparison used by the language's `==` and by list and sort operations. Functions are compared by identity.

An OCaml type carried by liquidsoap values, e.g. a source or a request.

A liquidsoap type, as a value. Used by the parsers (`json.parse` and friends) which need the expected type at runtime.

type module_name = string

Type construction

val optional_record_t : (string * Liquidsoap_lang_types.Type.t) list -> Liquidsoap_lang_types.Type.t
val univ_t : ?constraints:Liquidsoap_lang_types.Type.constr list -> unit -> Liquidsoap_lang_types.Type.t

Value construction

val octal_int : int -> Liquidsoap_lang_values.Value.t
val hex_int : int -> Liquidsoap_lang_values.Value.t
val float : float -> Liquidsoap_lang_values.Value.t
val string : string -> Liquidsoap_lang_values.Value.t

Helpers for defining builtin functions.

type proto = (string * t * value option * string option) list
val builtin_type : (string * Liquidsoap_lang_types.Type.t * 'a option * 'b) list -> Liquidsoap_lang_types.Type.t -> Liquidsoap_lang_types.Type.t
val mk_module_name : ?base:string -> string -> string
type 'a meth = {
  1. name : string;
  2. scheme : scheme;
  3. descr : string;
  4. value : 'a;
}
val add_builtin : category:Liquidsoap_lang_data.Doc.Value.category -> descr:string -> ?flags:Liquidsoap_lang_data.Doc.Value.flag list -> ?meth:Liquidsoap_lang_values.Value.t meth list -> ?examples:string list -> ?base:string -> string -> (string * Liquidsoap_lang_types.Type_base.t * Liquidsoap_lang_values.Value.t option * string option) list -> Liquidsoap_lang_types.Type.t -> (env -> Liquidsoap_lang_values.Value.t) -> string
val add_builtin_value : category:Liquidsoap_lang_data.Doc.Value.category -> descr:string -> ?flags:Liquidsoap_lang_data.Doc.Value.flag list -> ?base:string -> string -> Liquidsoap_lang_values.Value.t -> Liquidsoap_lang_types.Type.t -> string
val add_builtin_base : category:Liquidsoap_lang_data.Doc.Value.category -> descr:string -> ?flags:Liquidsoap_lang_data.Doc.Value.flag list -> ?base:string -> string -> in_value -> Liquidsoap_lang_types.Type.t -> string
val add_module : ?base:string -> string -> string
val module_name : 'a -> 'a
val apply_fun : (?pos:Liquidsoap_lang_prelude.Pos.t list -> value -> env -> value) Stdlib.ref
val apply : ?pos:Liquidsoap_lang_prelude.Pos.t list -> value -> env -> value

High-level manipulation of values

val to_unit : Liquidsoap_lang_values.Value.t -> unit
val to_bool : Liquidsoap_lang_values.Value.t -> bool
val to_bool_getter : Liquidsoap_lang_values.Value.t -> unit -> bool
val to_fun : value -> env -> value
val is_fun : Liquidsoap_lang_values.Value.t -> bool
val to_string : Liquidsoap_lang_values.Value.t -> string
val to_string_getter : Liquidsoap_lang_values.Value.t -> unit -> string
val to_float : Liquidsoap_lang_values.Value.t -> float
val to_float_getter : Liquidsoap_lang_values.Value.t -> unit -> float
val to_int : Liquidsoap_lang_values.Value.t -> int
val to_int_getter : Liquidsoap_lang_values.Value.t -> unit -> int
val to_num : Liquidsoap_lang_values.Value.t -> [> `Float of float | `Int of int ]
val to_valued_option : (Liquidsoap_lang_values.Value.t -> 'a) -> Liquidsoap_lang_values.Value.t -> 'a option
val to_default_option : default:'a -> (Liquidsoap_lang_values.Value.t -> 'a) -> Liquidsoap_lang_values.Value.t -> 'a
val to_string_list : Liquidsoap_lang_values.Value.t -> string list
val to_int_list : Liquidsoap_lang_values.Value.t -> int list
val to_getter : Liquidsoap_lang_values.Value.t -> unit -> value
val to_valued_ref : (value -> 'a) -> ('b -> Liquidsoap_lang_values.Value.t) -> Liquidsoap_lang_values.Value.t -> (unit -> 'a) * ('b -> unit)
val assoc : 'a -> int -> ('a * 'b) list -> 'b

assoc lbl n l returns the nth element in l of which the first component is lbl.

val raise_error : ?bt:Stdlib.Printexc.raw_backtrace -> ?message:string -> pos:Liquidsoap_lang_prelude.Pos.t list -> string -> 'a
val runtime_error_of_exception : bt:Stdlib.Printexc.raw_backtrace -> kind:string -> exn -> Liquidsoap_lang_data.Runtime_error.runtime_error
val raise_as_runtime : bt:Stdlib.Printexc.raw_backtrace -> kind:string -> exn -> 'a
val environment : unit -> (string * string) list
module Position : sig ... end
module Stacktrace : sig ... end
val pos_var : string