1
0
Fork 0
mirror of https://github.com/NixOS/nix synced 2025-06-26 20:01:15 +02:00

Allow external code using libnixexpr to add types

Code that links to libnixexpr (e.g. plugins loaded with importNative, or
nix-exec) may want to provide custom value types and operations on
values of those types. For example, nix-exec is currently using sets
where a custom IO value type would be more appropriate. This commit
provides a generic hook for such types in the form of tExternal and the
ExternalBase virtual class, which contains all functions necessary for
libnixexpr's type-polymorphic functions (e.g. `showType`) to be
implemented.
This commit is contained in:
Shea Levy 2014-11-30 13:16:19 -05:00
parent 5f04da905f
commit 320659b0cd
5 changed files with 108 additions and 0 deletions

View file

@ -187,6 +187,9 @@ static void prim_typeOf(EvalState & state, const Pos & pos, Value * * args, Valu
case tPrimOpApp:
t = "lambda";
break;
case tExternal:
t = args[0]->external->typeOf();
break;
default: abort();
}
mkString(v, state.symbols.create(t));