The BLOCKS SDK
littlefoot::Program Struct Reference

Description

A reference to a block of memory which contains a complete program.

Data format: 2 bytes - program checksum 2 bytes - program size 2 bytes - num functions 2 bytes - num globals 2 bytes - amount of heap space needed (bytes) 2 bytes - ID of function 1 2 bytes - byte offset of function 1 code 2 bytes - ID of function 2 2 bytes - byte offset of function 2 code etc.. ...function code...

Public Member Functions

 Program (const void *data, uint32 totalMemorySize) noexcept
 
uint16 getStoredChecksum () const noexcept
 
uint16 calculateChecksum () const noexcept
 
bool checksumMatches () const noexcept
 
uint32 getNumFunctions () const noexcept
 
FunctionID getFunctionID (uint32 functionIndex) const noexcept
 
const uint8getFunctionStartAddress (uint32 functionIndex) const noexcept
 
const uint8getFunctionEndAddress (uint32 functionIndex) const noexcept
 
uint32 getProgramSize () const noexcept
 
uint16 getHeapSizeBytes () const noexcept
 Returns the number of bytes of heap space the program needs. More...
 
uint16 getNumGlobals () const noexcept
 Returns the number of global variables the program uses. More...
 
uint32 getTotalSpaceNeeded () const noexcept
 

Static Public Member Functions

static uint8 getNumExtraBytesForOpcode (OpCode op) noexcept
 For a given op code, this returns the number of program bytes that follow it. More...
 
static float intToFloat (int32 value) noexcept
 
static int32 floatToInt (float value) noexcept
 
static int16 readInt16 (const uint8 *d) noexcept
 
static int32 readInt32 (const uint8 *d) noexcept
 
static void writeInt16 (uint8 *d, int16 v) noexcept
 
static void writeInt32 (uint8 *d, int32 v) noexcept
 

Public Attributes

const uint8programStart = nullptr
 
const uint32 maxProgramSize
 

Static Public Attributes

static constexpr uint32 programHeaderSize = 10
 

Constructor & Destructor Documentation

◆ Program()

littlefoot::Program::Program ( const void *  data,
uint32  totalMemorySize 
)
noexcept

Member Function Documentation

◆ getStoredChecksum()

uint16 littlefoot::Program::getStoredChecksum ( ) const
noexcept

References programStart, and readInt16().

Referenced by checksumMatches().

◆ calculateChecksum()

uint16 littlefoot::Program::calculateChecksum ( ) const
noexcept

References getProgramSize(), and programStart.

Referenced by checksumMatches().

◆ checksumMatches()

bool littlefoot::Program::checksumMatches ( ) const
noexcept

◆ getNumFunctions()

uint32 littlefoot::Program::getNumFunctions ( ) const
noexcept

References programStart, and readInt16().

Referenced by getFunctionEndAddress().

◆ getFunctionID()

FunctionID littlefoot::Program::getFunctionID ( uint32  functionIndex) const
noexcept

References readInt16().

◆ getFunctionStartAddress()

const uint8* littlefoot::Program::getFunctionStartAddress ( uint32  functionIndex) const
noexcept

◆ getFunctionEndAddress()

const uint8* littlefoot::Program::getFunctionEndAddress ( uint32  functionIndex) const
noexcept

◆ getProgramSize()

◆ getHeapSizeBytes()

uint16 littlefoot::Program::getHeapSizeBytes ( ) const
noexcept

Returns the number of bytes of heap space the program needs.

References programStart, and readInt16().

Referenced by getTotalSpaceNeeded().

◆ getNumGlobals()

uint16 littlefoot::Program::getNumGlobals ( ) const
noexcept

Returns the number of global variables the program uses.

References programStart, and readInt16().

◆ getTotalSpaceNeeded()

uint32 littlefoot::Program::getTotalSpaceNeeded ( ) const
noexcept

◆ getNumExtraBytesForOpcode()

static uint8 littlefoot::Program::getNumExtraBytesForOpcode ( OpCode  op)
staticnoexcept

For a given op code, this returns the number of program bytes that follow it.

References littlefoot::endOfOpcodes, LITTLEFOOT_OP, LITTLEFOOT_OP_INT16, LITTLEFOOT_OP_INT32, LITTLEFOOT_OP_INT8, and LITTLEFOOT_OPCODES.

◆ intToFloat()

static float littlefoot::Program::intToFloat ( int32  value)
staticnoexcept

◆ floatToInt()

static int32 littlefoot::Program::floatToInt ( float  value)
staticnoexcept

◆ readInt16()

static int16 littlefoot::Program::readInt16 ( const uint8 d)
staticnoexcept

◆ readInt32()

static int32 littlefoot::Program::readInt32 ( const uint8 d)
staticnoexcept

◆ writeInt16()

static void littlefoot::Program::writeInt16 ( uint8 d,
int16  v 
)
staticnoexcept

◆ writeInt32()

static void littlefoot::Program::writeInt32 ( uint8 d,
int32  v 
)
staticnoexcept

Member Data Documentation

◆ programHeaderSize

constexpr uint32 littlefoot::Program::programHeaderSize = 10
staticconstexpr

Referenced by getProgramSize().

◆ programStart

◆ maxProgramSize

const uint32 littlefoot::Program::maxProgramSize

Referenced by getProgramSize().


The documentation for this struct was generated from the following file: