25 const std::string &fmt = args[0].
asString();
29 for (
size_t i = 0; i < fmt.size(); ++i) {
30 if (fmt[i] ==
'%' && i + 1 < fmt.size()) {
32 if (argIndex < args.size()) {
33 const Value &v = args[argIndex++];
39 out += std::to_string(v.
asInt());
42 out += std::to_string(v.
asFloat());
72 std::vector<Value> formatArgs(args.begin(), args.end());
81 std::string input = args[0].toString();
90 std::vector<Value> formatArgs(args.begin(), args.end());
108 std::string input = args[0].toString();
116 std::vector<Value> formatArgs(args.begin(), args.end());
static Value registerIOFunctions(const std::vector< Value > &args, VM *vm)
static Value io_printf(const std::vector< Value > &args, VM *vm)
Print formatted string.
static Value io_puts_error(const std::vector< Value > &args, VM *vm)
Print string with newline to error output.
static Value io_puts(const std::vector< Value > &args, VM *vm)
Print string with newline.
static Value io_putf(const std::vector< Value > &args, VM *vm)
Print formatted string with newline.
static Value io_prints(const std::vector< Value > &args, VM *vm)
Print string without newline.
static void checkArgCount(const std::vector< Value > &args, size_t minimumArguments, const std::string &name, bool allowMoreArguments=false)
static Value io_c_format(const std::vector< Value > &args, VM *vm)
Format string.
static Value io_putf_error(const std::vector< Value > &args, VM *vm)
Print formatted string with newline to error output.
static Value io_gets(const std::vector< Value > &args, VM *vm)
Get string.
void registerNativeFunction(const std::string &name, NativeFunction fn)
Register a native function.
Value getRegister(uint8_t index)
Get a register value.
void setRegister(uint8_t index, const Value &value)
Set a register value.
Value operation(const OpCode &op, const int &operand1=0, const int &operand2=0, const int &operand3=0, const int &operand4=0, const int &operand5=0)
Execute a single operation.
A value in the Phasor VM.
std::string toString() const
Convert to string for printing.
double asFloat() const
Get the value as a double.
std::string asString() const
Get the value as a string.
int64_t asInt() const
Get the value as an integer.
The Phasor Programming Language and Runtime.
@ PRINTERROR_R
Print register to stderr: printerror(R[rA]).
@ READLINE_R
Read line into register: readline(R[rA]).
@ PRINT_R
Print register: print(R[rA]).