diff options
author | Shea Levy <shea@shealevy.com> | 2014-11-30 13:16:19 -0500 |
---|---|---|
committer | Shea Levy <shea@shealevy.com> | 2014-12-02 10:27:04 -0500 |
commit | 320659b0cd161249c95e736c3fb309b1a73ea728 (patch) | |
tree | f58c49ae4828572d4642a4d02360f8a415a9f0f9 /src/libexpr/primops.cc | |
parent | 5f04da905fcd01ea2d68cdbf7af41c836df5bb4e (diff) |
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.
Diffstat (limited to 'src/libexpr/primops.cc')
-rw-r--r-- | src/libexpr/primops.cc | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/src/libexpr/primops.cc b/src/libexpr/primops.cc index b0596dad9..e7b796046 100644 --- a/src/libexpr/primops.cc +++ b/src/libexpr/primops.cc @@ -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)); |