forked from lix-project/lix
a0c4d58549
The remaining constructor RegisterPrimOp::RegisterPrimOp(Info && info)
allows specifying the documentation in .args and .doc members of the
Info structure.
Commit 8ec1ba0210
removed all uses of the removed constructor in the
nix binary. Here, we remove the constructor completely as well as its
use in a plugin test. According to #8515, we didn't promis to maintain
compatibility with external plugins.
Fixes #8515
49 lines
1.1 KiB
C++
49 lines
1.1 KiB
C++
#pragma once
|
|
///@file
|
|
|
|
#include "eval.hh"
|
|
|
|
#include <tuple>
|
|
#include <vector>
|
|
|
|
namespace nix {
|
|
|
|
struct RegisterPrimOp
|
|
{
|
|
struct Info
|
|
{
|
|
std::string name;
|
|
std::vector<std::string> args;
|
|
size_t arity = 0;
|
|
const char * doc;
|
|
PrimOpFun fun;
|
|
std::optional<ExperimentalFeature> experimentalFeature;
|
|
};
|
|
|
|
typedef std::vector<Info> PrimOps;
|
|
static PrimOps * primOps;
|
|
|
|
/**
|
|
* You can register a constant by passing an arity of 0. fun
|
|
* will get called during EvalState initialization, so there
|
|
* may be primops not yet added and builtins is not yet sorted.
|
|
*/
|
|
RegisterPrimOp(Info && info);
|
|
};
|
|
|
|
/* These primops are disabled without enableNativeCode, but plugins
|
|
may wish to use them in limited contexts without globally enabling
|
|
them. */
|
|
|
|
/**
|
|
* Load a ValueInitializer from a DSO and return whatever it initializes
|
|
*/
|
|
void prim_importNative(EvalState & state, const PosIdx pos, Value * * args, Value & v);
|
|
|
|
/**
|
|
* Execute a program and parse its output
|
|
*/
|
|
void prim_exec(EvalState & state, const PosIdx pos, Value * * args, Value & v);
|
|
|
|
}
|