40 lines
1.7 KiB
Text
40 lines
1.7 KiB
Text
/-
|
||
Copyright (c) 2016 Microsoft Corporation. All rights reserved.
|
||
Released under Apache 2.0 license as described in the file LICENSE.
|
||
Authors: Leonardo de Moura
|
||
-/
|
||
prelude
|
||
import init.meta.name init.lean.options
|
||
universe u
|
||
meta constant options : Type
|
||
meta constant options.size : options → nat
|
||
meta constant options.mk : options
|
||
meta constant options.contains : options → name → bool
|
||
meta constant options.set_bool : options → name → bool → options
|
||
meta constant options.set_nat : options → name → nat → options
|
||
meta constant options.set_string : options → name → string → options
|
||
meta constant options.get_bool : options → name → bool → bool
|
||
meta constant options.get_nat : options → name → nat → nat
|
||
meta constant options.get_string : options → name → string → string
|
||
meta constant options.join : options → options → options
|
||
meta constant options.fold {α : Type u} : options → α → (name → α → α) → α
|
||
meta constant options.has_decidable_eq : decidable_eq options
|
||
|
||
attribute [instance] options.has_decidable_eq
|
||
|
||
meta instance : has_add options :=
|
||
⟨options.join⟩
|
||
|
||
meta instance : inhabited options :=
|
||
⟨options.mk⟩
|
||
|
||
meta def options.to_lean_options (opts : options) : lean.options :=
|
||
opts.fold lean.options.mk (λ n lopts,
|
||
if opts.get_bool n tt ≠ opts.get_bool n ff then -- ...
|
||
lopts.set_bool n (opts.get_bool n tt)
|
||
else if opts.get_nat n 0 ≠ opts.get_nat n 1 then
|
||
lopts.set_nat n (opts.get_nat n 0)
|
||
else if opts.get_string n "" ≠ opts.get_string n "foo" then
|
||
lopts.set_string n (opts.get_string n "")
|
||
else
|
||
lopts)
|