28 const size_t key_len = strlen(name);
30 const char *val = NULL;
31 for (
size_t i = 0; argp[i]; i++)
33 const char *entry = argp[i];
34 if (strncmp(entry, name, key_len) == 0 && entry[key_len] ==
'=')
36 val = entry + key_len + 1;
46 out = std::string(val);
51 bool allowMoreArguments)
53 if (args.size() < minimumArguments)
55 throw std::runtime_error(
"Function '" + name +
"' expects at least " + std::to_string(minimumArguments) +
56 " arguments, but got " + std::to_string(args.size()));
58 if (!allowMoreArguments && args.size() > minimumArguments)
60 throw std::runtime_error(
"Function '" + name +
"' expects exactly " + std::to_string(minimumArguments) +
61 " arguments, but got " + std::to_string(args.size()));
static Value registerIOFunctions(const std::vector< Value > &args, VM *vm)
static void registerFunctions(VM &vm)
Register all standard library functions.
static char ** argv
Command line arguments.
static Value registerMathFunctions(const std::vector< Value > &args, VM *vm)
static void checkArgCount(const std::vector< Value > &args, size_t minimumArguments, const std::string &name, bool allowMoreArguments=false)
static int argc
Number of command line arguments.
static Value registerTypeConvFunctions(const std::vector< Value > &args, VM *vm)
static Value registerSysFunctions(const std::vector< Value > &args, VM *vm)
static char ** envp
Environment variables.
static Value registerStringFunctions(const std::vector< Value > &args, VM *vm)
static int dupenv(std::string &out, const char *name, char *const argp[])
static Value registerRegexFunctions(const std::vector< Value > &args, VM *vm)
static Value registerFileFunctions(const std::vector< Value > &args, VM *vm)
void registerNativeFunction(const std::string &name, NativeFunction fn)
Register a native function.
The Phasor Programming Language and Runtime.