39 vm.
log(std::format(
"StdLib::{}(&VM@{:#x})\n", __func__,
reinterpret_cast<std::uintptr_t
>(&vm)));
51 static void checkArgCount(
const std::vector<Value> &args,
size_t minimumArguments,
const std::string &name,
52 bool allowMoreArguments =
false);
55 static bool std_import(
const std::vector<Value> &args,
VM *vm);
88#pragma endregion stdmeta
90#pragma region stdmemory
110#pragma region stdfile
114 static bool file_write(
const std::vector<Value> &args,
VM *vm);
115 static bool file_exists(
const std::vector<Value> &args,
VM *vm);
118 static bool file_append(
const std::vector<Value> &args,
VM *vm);
119 static bool file_delete(
const std::vector<Value> &args,
VM *vm);
120 static bool file_rename(
const std::vector<Value> &args,
VM *vm);
122 static bool file_copy(
const std::vector<Value> &args,
VM *vm);
123 static bool file_move(
const std::vector<Value> &args,
VM *vm);
126 static bool file_create(
const std::vector<Value> &args,
VM *vm);
147 static i64 sys_pid(
const std::vector<Value> &args,
VM *vm);
161#pragma region stdtype
162 static i64 to_int(
const std::vector<Value> &args,
VM *vm);
165 static bool to_bool(
const std::vector<Value> &args,
VM *vm);
168#pragma region stdarray
175#pragma region stdrand
186 static i64 str_len(
const std::vector<Value> &args,
VM *vm);
195 static i64 sb_new(
const std::vector<Value> &args,
VM *vm);
static Value sb_clear(const std::vector< Value > &args, VM *vm)
Clear string builder.
static f64 to_float(const std::vector< Value > &args, VM *vm)
Convert to float.
static Value str_char_at(const std::vector< Value > &args, VM *vm)
Get character at index.
static i64 sb_new(const std::vector< Value > &args, VM *vm)
Create new string builder.
static void registerStringFunctions(VM *vm)
static PhsString sb_free(const std::vector< Value > &args, VM *vm)
Free string builder.
static bool file_remove_directory(const std::vector< Value > &args, VM *vm)
static Value sys_env(const std::vector< Value > &args, VM *vm)
Get the current environment variables.
static Value array_insert(const std::vector< Value > &args, VM *vm)
Insert into array.
static Value file_current_directory(const std::vector< Value > &args, VM *vm)
Get/set working directory.
static Value math_max(const std::vector< Value > &args, VM *vm)
Maximum.
static Value sys_reset(const std::vector< Value > &args, VM *vm)
Reset the VM.
static i64 str_find(const std::vector< Value > &args, VM *vm)
Find string in string.
static Value io_clear(const std::vector< Value > &args, VM *vm)
Clear the console.
static f64 math_exp(const std::vector< Value > &args, VM *vm)
Exponential.
static f64 math_cos(const std::vector< Value > &args, VM *vm)
Cosine.
static PhsString sys_os(const std::vector< Value > &args, VM *vm)
Get the current OS.
static void registerMemoryFunctions(VM *vm)
static bool file_rename(const std::vector< Value > &args, VM *vm)
Rename file.
static PhsString file_filename(const std::vector< Value > &args, VM *vm)
Get the filename.
static i64 sys_pid(const std::vector< Value > &args, VM *vm)
Get the current process ID.
static char ** argv
Command line arguments.
static void registerFileFunctions(VM *vm)
static PhsString io_prints(const std::vector< Value > &args, VM *vm)
Print string without newline.
static PhsString file_stem(const std::vector< Value > &args, VM *vm)
Get the stem of a path.
static PhsString file_join_path(const std::vector< Value > &args, VM *vm)
static Value array_pop(const std::vector< Value > &args, VM *vm)
Pop from array.
static f64 math_sin(const std::vector< Value > &args, VM *vm)
Sine.
static bool file_move(const std::vector< Value > &args, VM *vm)
Move file.
static i64 meta_operation(const std::vector< Value > &args, VM *vm)
static void registerIOFunctions(VM *vm)
static PhsString file_read_line(const std::vector< Value > &args, VM *vm)
Read a line from file.
static bool file_write(const std::vector< Value > &args, VM *vm)
Write to file.
static i64 file_property_get(const std::vector< Value > &args, VM *vm)
static Value sys_crash(const std::vector< Value > &args, VM *vm)
Crash the VM / Program.
static void registerArrayFunctions(VM *vm)
static bool file_append(const std::vector< Value > &args, VM *vm)
Append to file.
static void registerFunctions(VM &vm)
static f64 math_log(const std::vector< Value > &args, VM *vm)
Natural logarithm.
static i64 sys_fork_detached(const std::vector< Value > &args, VM *vm)
Run a native program detached.
static void registerTypeConvFunctions(VM *vm)
static i64 rand_next_range(const std::vector< Value > &args, VM *vm)
Get a random number in range.
static f64 math_sqrt(const std::vector< Value > &args, VM *vm)
Square root.
static f64 math_pow(const std::vector< Value > &args, VM *vm)
Power.
static bool file_is_directory(const std::vector< Value > &args, VM *vm)
Check if path is directory.
static bool file_exists(const std::vector< Value > &args, VM *vm)
Check if file exists.
static PhsString file_absolute(const std::vector< Value > &args, VM *vm)
Get full path to relative path.
static void checkArgCount(const std::vector< Value > &args, size_t minimumArguments, const std::string &name, bool allowMoreArguments=false)
static Value str_substr(const std::vector< Value > &args, VM *vm)
Get substring.
static void registerMathFunctions(VM *vm)
static bool file_create(const std::vector< Value > &args, VM *vm)
static Value sys_argv(const std::vector< Value > &args, VM *vm)
Get the current command line arguments – deprecated, use sys_args() instead.
static int argc
Number of command line arguments.
static PhsString sb_to_string(const std::vector< Value > &args, VM *vm)
Convert string builder to string.
static Value file_read_directory(const std::vector< Value > &args, VM *vm)
static f64 rand_next_float(const std::vector< Value > &args, VM *vm)
Get a random float (technically a f64 at a low level).
static bool file_write_line(const std::vector< Value > &args, VM *vm)
Write a line to file.
static Value file_read(const std::vector< Value > &args, VM *vm)
Read file.
static bool file_copy(const std::vector< Value > &args, VM *vm)
Copy file.
static Value sys_wait_for_input(const std::vector< Value > &args, VM *vm)
Wait for input.
static PhsString str_upper(const std::vector< Value > &args, VM *vm)
Convert to uppercase.
static Value array_resize(const std::vector< Value > &args, VM *vm)
Resize array.
static PhsString to_string(const std::vector< Value > &args, VM *vm)
Convert to string.
static bool to_bool(const std::vector< Value > &args, VM *vm)
Convert to boolean.
static bool file_property_edit(const std::vector< Value > &args, VM *vm)
static PhsString io_printf(const std::vector< Value > &args, VM *vm)
Print formatted string.
static i64 file_get_size(const std::vector< Value > &args, VM *vm)
static void registerSysFunctions(VM *vm)
static Value meta_stack_run(const std::vector< Value > &args, VM *vm)
static bool file_create_directory(const std::vector< Value > &args, VM *vm)
static Value sys_shutdown(const std::vector< Value > &args, VM *vm)
Shutdown the VM.
static void registerRandomFunctions(VM *vm)
static f64 math_round(const std::vector< Value > &args, VM *vm)
Round.
static Value sys_shell(const std::vector< Value > &args, VM *vm)
Run a shell command.
static void registerMetaFunctions(VM *vm)
static PhsString str_lower(const std::vector< Value > &args, VM *vm)
Convert to lowercase.
static Value sys_sleep(const std::vector< Value > &args, VM *vm)
Sleep for a specified amount of time.
static Value sys_args(const std::vector< Value > &args, VM *vm)
Get args array.
static i64 sys_argc(const std::vector< Value > &args, VM *vm)
Get the current number of command line arguments – deprecated, use len(sys_args()) instead.
static PhsString io_putf_error(const std::vector< Value > &args, VM *vm)
Print formatted string with newline to error output.
static Value var_free(const std::vector< Value > &args, VM *vm)
Free a variable.
static PhsString io_puts(const std::vector< Value > &args, VM *vm)
Print string with newline.
static i64 sys_get_free_memory(const std::vector< Value > &args, VM *vm)
Get current free memory.
static i64 to_int(const std::vector< Value > &args, VM *vm)
Convert to integer.
static Value std_assert(const std::vector< Value > &args, VM *vm)
static Value math_abs(const std::vector< Value > &args, VM *vm)
Absolute value.
static Value sys_isatty(const std::vector< Value > &args, VM *vm)
Check if the current output is a terminal.
static PhsString meta_get_version(const std::vector< Value > &args, VM *vm)
static bool file_delete(const std::vector< Value > &args, VM *vm)
Delete file.
static i64 str_len(const std::vector< Value > &args, VM *vm)
Get string length.
static Value sb_append(const std::vector< Value > &args, VM *vm)
Append to string builder.
static Value sys_time_formatted(const std::vector< Value > &args, VM *vm)
Current time formatted.
static f64 math_tan(const std::vector< Value > &args, VM *vm)
Tangent.
static dupenv_ret dupenv(PhsString &out, const char *name)
static PhsString file_extension(const std::vector< Value > &args, VM *vm)
Get the extension of a path.
static f64 sys_time(const std::vector< Value > &args, VM *vm)
Current time.
static Value rand_seed(const std::vector< Value > &args, VM *vm)
Seed the random number generator.
static i64 array_length(const std::vector< Value > &args, VM *vm)
Get array length.
static PhsString io_putf(const std::vector< Value > &args, VM *vm)
Print formatted string with newline.
static PhsString file_parent(const std::vector< Value > &args, VM *vm)
Get the parent of a path.
static f64 math_ceil(const std::vector< Value > &args, VM *vm)
Ceiling.
static Value array_push(const std::vector< Value > &args, VM *vm)
Push to array.
static PhsString io_c_format(const std::vector< Value > &args, VM *vm)
Format string.
static Value io_gets(const std::vector< Value > &args, VM *vm)
Get string.
static Value str_ends_with(const std::vector< Value > &args, VM *vm)
Check if string ends with.
static bool std_import(const std::vector< Value > &args, VM *vm)
static i64 sys_fork(const std::vector< Value > &args, VM *vm)
Run a native program.
static f64 math_floor(const std::vector< Value > &args, VM *vm)
Floor.
static Value math_min(const std::vector< Value > &args, VM *vm)
Minimum.
static Value str_starts_with(const std::vector< Value > &args, VM *vm)
Check if string starts with.
static PhsString io_puts_error(const std::vector< Value > &args, VM *vm)
Print string with newline to error output.
static PhsString str_concat(const std::vector< Value > &args, VM *vm)
Concatenate strings.
void registerNativeFunction(const std::string &name, NativeFunction fn)
Register a native function.
void log(const Value &msg)
Log a Value to stdout.
void flush()
Flush stdout.
A value in the Phasor VM.
The Phasor Programming Language and Runtime.
std::function< Value(const std::vector< Value > &args, VM *vm)> NativeFunction
Native function signature.