123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172(*****************************************************************************
Liquidsoap, a programmable stream generator.
Copyright 2003-2024 Savonet team
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details, fully stated in the COPYING
file at the root of the liquidsoap distribution.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*****************************************************************************)letnull=leta=Lang.univ_t()inLang.add_builtin"null"~category:`Programming~descr:"Create a nullable value."[("",Lang.nullable_ta,SomeLang.null,Some"Value to make nullable.")](Lang.nullable_ta)(funp->matchLang.to_option(List.assoc""p)with|Somex->x|None->Lang.null)let_=leta=Lang.univ_t()inletb=Lang.univ_t()inLang.add_builtin~base:null"case"~category:`Programming~descr:"Return a result dending on whether a value is nothing or not."[("",Lang.nullable_ta,None,Some"Value to reason by case analysis on.");("",Lang.fun_t[]b,None,Some"Value to return in case we have nothing.");("",Lang.fun_t[(false,"",a)]b,None,Some"Value to return in case we have something.");]b(funp->letx=Lang.assoc""1pinletd=Lang.to_fun(Lang.assoc""2p)inletf=Lang.to_fun(Lang.assoc""3p)inmatchLang.to_optionxwithNone->d[]|Somex->f[("",x)])let_=leta=Lang.univ_t()inLang.add_builtin~base:null"default"~category:`Programming~descr:"Return a result dending on whether a value is nothing or not."[("",Lang.nullable_ta,None,Some"Value to reason by case analysis on.");("",Lang.fun_t[]a,None,Some"Value to return in case we have nothing.");]a(funp->letx=Lang.assoc""1pinletd=Lang.assoc""2pinmatchLang.to_optionxwithNone->Lang.applyd[]|Somex->x)