Classes | Public Types | Public Member Functions

el7::scripting::building::Builder Class Reference

#include <Builder.h>

List of all members.

Classes

struct  JumpOut

Public Types

enum  JumpOutType { block, loop }
typedef std::vector< unsigned
long > 
JumpFroms
typedef std::vector< JumpOutJumpOuts

Public Member Functions

 Builder (VirtualMachine *vm, std::vector< unsigned long > *bc_wrap, cl7::logging::Logger *logger=NULL)
 ~Builder (void)
VirtualMachineget_vm () const
bool log_debug_info () const
void log_debug_info (const bool log_debug_info)
unsigned long get_code_ref () const
void set_code_ref (unsigned long code_ref)
void reset ()
void reset (std::vector< unsigned long > *bc_wrap)
void begin_logging ()
void end_logging ()
unsigned long get_ptr () const
size_t get_block_id () const
size_t get_next_block_id () const
void nop ()
void end ()
void push_regs ()
void pop_regs ()
void clear_regs ()
void loadv ()
void loadf (float value)
void loadi (int value)
void loadb (bool value)
void loadc (cl7::char_type value)
void loads (Symbol symbol)
void store ()
void adr (const cl7::string_type &identifier)
void adri (const cl7::string_type &identifier)
void gadr (const cl7::string_type &identifier)
void gadri (const cl7::string_type &identifier)
void dir (const cl7::string_type &identifier)
void diri (const cl7::string_type &identifier)
void ind ()
void indi ()
void table ()
void func (const InternFunction *function)
void ref ()
void deref ()
void add ()
void sub ()
void mul ()
void div ()
void mod ()
void and ()
void or ()
void xor ()
void concat ()
void neg ()
void not ()
void eq ()
void neq ()
void ls ()
void gr ()
void leq ()
void geq ()
void jmp (unsigned long jump_to)
void jz (unsigned long jump_to)
void jnz (unsigned long jump_to)
void param ()
void call ()
void ret ()
void extrn (const cl7::string_type &lib_name, const cl7::string_type &identifier)
void typeof ()
void cast ()
void actyped (unsigned long flags)
void acconst (unsigned long flags)
void who (const cl7::string_type &identifier)
void clear (const cl7::string_type &identifier)
unsigned long block_in (const bool loop_in=false, size_t *block_id=NULL)
void block_out (const bool loop_out=false)
void jmp_out (const bool loop_out=false, size_t block_id=-1)
void jz_out (const bool loop_out=false, size_t block_id=-1)
void jnz_out (const bool loop_out=false, size_t block_id=-1)
void reloop ()
void build (parsing::Node *node)

Detailed Description

The builder provides functions for adding opcodes to generate a full stream of bytecode.


Member Typedef Documentation

typedef std::vector<unsigned long> el7::scripting::building::Builder::JumpFroms

Member Enumeration Documentation

Enumerator:
block 
loop 

Constructor & Destructor Documentation

el7::scripting::building::Builder::Builder ( VirtualMachine vm,
std::vector< unsigned long > *  bc_wrap,
cl7::logging::Logger logger = NULL 
)

Explicit constructor.

el7::scripting::building::Builder::~Builder ( void   ) 

Destructor.


Member Function Documentation

void el7::scripting::building::Builder::acconst ( unsigned long  flags  ) 
void el7::scripting::building::Builder::actyped ( unsigned long  flags  ) 
void el7::scripting::building::Builder::add (  ) 
void el7::scripting::building::Builder::adr ( const cl7::string_type identifier  ) 
void el7::scripting::building::Builder::adri ( const cl7::string_type identifier  ) 
void el7::scripting::building::Builder::and (  ) 
void el7::scripting::building::Builder::begin_logging (  ) 
unsigned long el7::scripting::building::Builder::block_in ( const bool  loop_in = false,
size_t *  block_id = NULL 
)
void el7::scripting::building::Builder::block_out ( const bool  loop_out = false  ) 
void el7::scripting::building::Builder::build ( parsing::Node node  ) 
void el7::scripting::building::Builder::call (  ) 
void el7::scripting::building::Builder::cast (  ) 
void el7::scripting::building::Builder::clear ( const cl7::string_type identifier  ) 
void el7::scripting::building::Builder::clear_regs (  ) 
void el7::scripting::building::Builder::concat (  ) 
void el7::scripting::building::Builder::deref (  ) 
void el7::scripting::building::Builder::dir ( const cl7::string_type identifier  ) 
void el7::scripting::building::Builder::diri ( const cl7::string_type identifier  ) 
void el7::scripting::building::Builder::div (  ) 
void el7::scripting::building::Builder::end (  ) 
void el7::scripting::building::Builder::end_logging (  ) 
void el7::scripting::building::Builder::eq (  ) 
void el7::scripting::building::Builder::extrn ( const cl7::string_type lib_name,
const cl7::string_type identifier 
)
void el7::scripting::building::Builder::func ( const InternFunction function  ) 
void el7::scripting::building::Builder::gadr ( const cl7::string_type identifier  ) 
void el7::scripting::building::Builder::gadri ( const cl7::string_type identifier  ) 
void el7::scripting::building::Builder::geq (  ) 
size_t el7::scripting::building::Builder::get_block_id (  )  const [inline]
unsigned long el7::scripting::building::Builder::get_code_ref (  )  const [inline]

Returns the current source code reference position newly added instructions get associated with.

size_t el7::scripting::building::Builder::get_next_block_id (  )  const [inline]
unsigned long el7::scripting::building::Builder::get_ptr (  )  const [inline]
VirtualMachine* el7::scripting::building::Builder::get_vm (  )  const [inline]

Returns the virtual machine.

void el7::scripting::building::Builder::gr (  ) 
void el7::scripting::building::Builder::ind (  ) 
void el7::scripting::building::Builder::indi (  ) 
void el7::scripting::building::Builder::jmp ( unsigned long  jump_to  ) 
void el7::scripting::building::Builder::jmp_out ( const bool  loop_out = false,
size_t  block_id = -1 
)
void el7::scripting::building::Builder::jnz ( unsigned long  jump_to  ) 
void el7::scripting::building::Builder::jnz_out ( const bool  loop_out = false,
size_t  block_id = -1 
)
void el7::scripting::building::Builder::jz ( unsigned long  jump_to  ) 
void el7::scripting::building::Builder::jz_out ( const bool  loop_out = false,
size_t  block_id = -1 
)
void el7::scripting::building::Builder::leq (  ) 
void el7::scripting::building::Builder::loadb ( bool  value  ) 
void el7::scripting::building::Builder::loadc ( cl7::char_type  value  ) 
void el7::scripting::building::Builder::loadf ( float  value  ) 
void el7::scripting::building::Builder::loadi ( int  value  ) 
void el7::scripting::building::Builder::loads ( Symbol  symbol  ) 
void el7::scripting::building::Builder::loadv (  ) 
bool el7::scripting::building::Builder::log_debug_info (  )  const [inline]

Returns the flag specifying whether some debug messages should be logged.

void el7::scripting::building::Builder::log_debug_info ( const bool  log_debug_info  )  [inline]

Returns the flag specifying whether some debug messages should be logged.

void el7::scripting::building::Builder::ls (  ) 
void el7::scripting::building::Builder::mod (  ) 
void el7::scripting::building::Builder::mul (  ) 
void el7::scripting::building::Builder::neg (  ) 
void el7::scripting::building::Builder::neq (  ) 
void el7::scripting::building::Builder::nop (  ) 
void el7::scripting::building::Builder::not (  ) 
void el7::scripting::building::Builder::or (  ) 
void el7::scripting::building::Builder::param (  ) 
void el7::scripting::building::Builder::pop_regs (  ) 
void el7::scripting::building::Builder::push_regs (  ) 
void el7::scripting::building::Builder::ref (  ) 
void el7::scripting::building::Builder::reloop (  ) 
void el7::scripting::building::Builder::reset ( std::vector< unsigned long > *  bc_wrap  ) 

Resets itself by taking a new wrapped bytecode stream.

void el7::scripting::building::Builder::reset (  ) 

Resets the wrapped bytecode stream.

void el7::scripting::building::Builder::ret (  ) 
void el7::scripting::building::Builder::set_code_ref ( unsigned long  code_ref  )  [inline]

Sets the current source code reference position newly added instructions get associated with.

void el7::scripting::building::Builder::store (  ) 
void el7::scripting::building::Builder::sub (  ) 
void el7::scripting::building::Builder::table (  ) 
void el7::scripting::building::Builder::typeof (  ) 
void el7::scripting::building::Builder::who ( const cl7::string_type identifier  ) 
void el7::scripting::building::Builder::xor (  ) 

The documentation for this class was generated from the following files:
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines