JUCE
|
Loads a program, and lets the user execute its functions. More...
#include <juce_LittleFootRunner.h>
Classes | |
struct | FunctionExecutionContext |
Public Types | |
enum class | ErrorCode : uint8 { ok = 0 , executionTimedOut , unknownInstruction , stackOverflow , stackUnderflow , illegalAddress , divisionByZero , unknownFunction } |
Return codes from a function call. More... | |
Public Member Functions | |
Runner () noexcept | |
void | setNativeFunctions (const NativeFunction *functions, int numFunctions, void *userDataForCallback) noexcept |
Installs an array of native functions that the code can use. | |
int | getNumNativeFunctions () const noexcept |
Returns the number of native functions available. | |
const NativeFunction & | getNativeFunction (int index) const noexcept |
Returns one of the native functions available. | |
void | reset () noexcept |
Clears the memory state. | |
void | clearHeapAndGlobals () noexcept |
Clears all the non-program data. | |
ErrorCode | callFunction (const char *functionSignature) noexcept |
Calls one of the functions in the program, by its textual signature. | |
ErrorCode | callFunction (FunctionID function) noexcept |
Calls one of the functions in the program, by its function ID. | |
uint8 * | getProgramAndDataStart () const noexcept |
uint8 * | getProgramAndDataEnd () const noexcept |
uint32 | getProgramAndDataSize () const noexcept |
uint8 * | getProgramHeapStart () const noexcept |
uint8 * | getProgramHeapEnd () const noexcept |
uint16 | getProgramHeapSize () const noexcept |
bool | isProgramValid () const noexcept |
void | setDataByte (uint32 index, uint8 value) noexcept |
Sets a byte of data. | |
void | setHeapByte (uint32 index, uint8 value) noexcept |
uint8 | getHeapByte (uint32 index) const noexcept |
uint32 | getHeapBits (uint32 startBit, uint32 numBits) const noexcept |
int32 | setHeapInt (uint32 byteOffset, uint32 value) noexcept |
int32 | getHeapInt (uint32 byteOffset) const noexcept |
Static Public Member Functions | |
static const char * | getErrorDescription (ErrorCode e) noexcept |
Returns a text description for an error code. | |
static uint32 | getMaximumProgramSize () noexcept |
Public Attributes | |
uint8 | allMemory [(size_t)(((programAndHeapSpace+stackAndGlobalsSpace)+3) &~3)] |
Program | program |
Static Public Attributes | |
static constexpr uint32 | totalProgramAndHeapSpace = programAndHeapSpace |
static constexpr uint32 | totalStackAndGlobalsSpace = stackAndGlobalsSpace |
Loads a program, and lets the user execute its functions.
The programAndHeapSpace is the number of bytes allocated for program + heap. stackAndGlobalsSpace is the size of the globals + stack area.
Memory layout:
Program code goes at address 0, followed by any shared data the program needs globals are at the top end of the buffer stack space stretches downwards from the start of the globals
|
strong |
|
noexcept |
|
noexcept |
Installs an array of native functions that the code can use.
Note that this doesn't take ownership of any memory involved, so the caller mustn't pass any dangling pointers
|
noexcept |
Returns the number of native functions available.
|
noexcept |
Returns one of the native functions available.
The index must not be out of range.
References jassert.
|
noexcept |
|
noexcept |
Clears all the non-program data.
References allMemory, end(), getProgramAndDataStart(), and program.
|
staticnoexcept |
Returns a text description for an error code.
References divisionByZero, executionTimedOut, illegalAddress, ok, stackOverflow, stackUnderflow, unknownFunction, and unknownInstruction.
|
noexcept |
Calls one of the functions in the program, by its textual signature.
References littlefoot::Runner< programAndHeapSpace, stackAndGlobalsSpace >::FunctionExecutionContext::run().
|
noexcept |
Calls one of the functions in the program, by its function ID.
References littlefoot::Runner< programAndHeapSpace, stackAndGlobalsSpace >::FunctionExecutionContext::run().
|
staticnoexcept |
|
noexcept |
References allMemory.
Referenced by clearHeapAndGlobals(), getProgramAndDataSize(), and setDataByte().
|
noexcept |
Referenced by getProgramAndDataSize(), and getProgramHeapEnd().
|
noexcept |
References getProgramAndDataEnd(), and getProgramAndDataStart().
|
noexcept |
Referenced by getHeapBits(), getHeapByte(), getHeapInt(), setHeapByte(), and setHeapInt().
|
noexcept |
References getProgramAndDataEnd().
Referenced by getHeapByte(), and setHeapByte().
|
noexcept |
Referenced by getHeapBits(), getHeapInt(), and setHeapInt().
|
noexcept |
|
noexcept |
Sets a byte of data.
References getProgramAndDataStart(), and program.
|
noexcept |
References getProgramHeapEnd(), and getProgramHeapStart().
|
noexcept |
References getProgramHeapEnd(), and getProgramHeapStart().
|
noexcept |
References getProgramHeapSize(), getProgramHeapStart(), jassertfalse, and readLittleEndianBitsInBuffer().
|
noexcept |
References getProgramHeapSize(), getProgramHeapStart(), and littlefoot::Program::writeInt32().
|
noexcept |
References getProgramHeapSize(), getProgramHeapStart(), and littlefoot::Program::readInt32().
|
staticconstexpr |
|
staticconstexpr |
uint8 littlefoot::Runner< programAndHeapSpace, stackAndGlobalsSpace >::allMemory[(size_t)(((programAndHeapSpace+stackAndGlobalsSpace)+3) &~3)] |
Referenced by clearHeapAndGlobals(), getProgramAndDataStart(), reset(), and Runner().
Program littlefoot::Runner< programAndHeapSpace, stackAndGlobalsSpace >::program |
Referenced by clearHeapAndGlobals(), Runner(), and setDataByte().