ScriptInterp Class Reference

System script interpreter core engine class.Extensible Bayonne Scripting Engine. More...

#include <script.h>

Inheritance diagram for ScriptInterp:

ScriptSymbol Script List of all members.

Public Member Functions

long getIntValue (const char *text, unsigned prec)
int getExpression (long *list, int max, unsigned prec)
bool setData (const char *scrname)
 Set data read pointer to a known data source script.
char getPackToken (void)
 Get pack token.
void clrTransactions (void)
 Clear transaction processing group.
SymbolgetVariable (size_t size=0)
 Fetch a variable (symbol) that will be used to store data.
void rewindTemp (void)
 Rewind temporary buffer for prescan results.
void setTemp (const char *value)
 Set prescan value into temporary buffer.
virtual SymbolgetIndirect (char *sym)
 May be used to override processing of indirect content requests.
SymbolgetLocal (const char *name, size_t size=0)
 Search for symbols either thru the virtual global space or thru local space if a local space has been allocated on the heap.
bool attach (const char *scrname)
 Attempt to attach script engine to active session and specify a starting script.
void detach (void)
 Detach the current script image.
bool redirect (const char *scrname)
 Script redirection support.
bool step (const char *trapname=NULL)
 Execute the next pending script statement.
bool isActive (void)
 Test if script interpreter is currently active.
char * getOption (const char *def=NULL)
 Fetch next logical option but do not evaluate.
char * getKeyword (const char *keyword)
 Fetch an embedded attribute keyword argument.
int initKeywords (int size)
 Initialize symbols from the keyword list.
char * getValue (const char *def=NULL)
 Fetch and evaluate next logical option.
char * getString (void)
 Fetch and concatenate a temporary string expression until either a comma or closing parenthesis.
char * getTempBuffer (void)
 Fetch a temp workspace buffer.
char * getContent (char *sym)
 Evaluate the content of an option retrieved with getOption.
Line * getScript (void)
 Return the current script line object so it may be debugged.
bool hasEvents (void)
 Return if the script has generic event handlers.
Line * getPrescan (void)
 Return if the current line requires prescanning.
const char * getMember (void)
 Return the member id of a script command.
Name * getObject (void)
 Return the master script object for resource context.
ScriptImagegetImage (void)
 Return the script image holding this application's context.
void autoloop (bool enable)
 Enable or disable autolooping of statements.
int mapicmp (const char *s1, const char *s2)
int mapnicmp (const char *s1, const char *s2, size_t n)
unsigned getDecimal (void)
 Get decimal.

Static Public Member Functions

static long getRealValue (double val, unsigned prec)
static double getDouble (long value, unsigned prec)
static long getInteger (long value, unsigned prec)
static long getTens (unsigned prec)

Protected Member Functions

 ScriptInterp (ScriptCommand *cmd, size_t symsize, size_t pgsize=1024)
 Derive a new instance of the system script interpreter.
 ~ScriptInterp ()
void getTrigger (bool use)
 Get a local and/or global trigger.
bool getOnce (void)
 Fetch unique "once" flag and set.
void Notify (unsigned long mask)
 Notify signal mask for "on" handlers.
void Notify (const char *str)
 Notify signal by symbolic name.
unsigned long getMask (void)
 Fetch the current interpreter mask bits directly.
void setLine (Line *line)
 Set the line handler to a new statement.
unsigned long getScriptMask (const char *id)
 Fetch the script mask identifer.
ScriptCommandgetCommand (void)
 Fetch the active command interpreter subsystem.
bool conditional (void)
 Used to process "conditional" arguments such as for IF/DO/LOOP statements.
bool scrExit (void)
 Some systems can derive alternative "exit" commands which can call this routine after performing other operations.
bool scrGoto (void)
 This is often called to process branching requests.
bool scrIf (void)
 override if support.
bool ifGoto (void)
 If version of goto.
bool scrData (void)
 Method used to encode "data" lines.
virtual unsigned getId (void)
 Used to return channel identifiers in some systems.
virtual bool getGlobalTrap (unsigned id)
 Used to fetch a global trap execution context branch.
void advance (void)
 Advance program to the next script statement.
void error (const char *error)
 Set error variable and advance to either the error handler or next script statement.
void trap (unsigned id)
 Set the execution interpreter to a trap identifier.
void trap (const char *trapname)
 Select trap by symbolic name and execute if found, else advance to next script step (unless exit trap).
bool push (void)
 Attempt to push a value onto the stack.
bool pull (void)
 Attempt to recall a previous stack level.
bool signal (const char *trapname)
 Signals are used during "delayed" execution steps when a signal event has occured aynchronously with the execution of a script controlled state event handler.
bool event (const char *evtname)
 Events reference to named handlers which have been attached to a script.
bool signal (unsigned trapid)
 Signals can be referenced by numeric id as well as by symbolic name.
virtual bool execute (Method method)
 Runtime execution of script handler.
virtual void stop (unsigned long mask)
 Stop request handler.
virtual void exit (void)=0
 Exit request handler.
virtual Name * getScriptImage (const char *label)
 Runtime branch point for label selection.
Name * getScriptCopy (const char *src)
 Fetch duplicative script image as needed.
virtual void sleepScheduler (timeout_t timeout)
 Patch point for sleep delay notification.
virtual void stepScheduler (const char *trapname)
 Step scheduler callback to force step execution.
virtual void setExclusive (bool enable)
 Set exclusive sync locking for interpreter.

Protected Attributes

unsigned char lckcount

Friends

class ScriptImage
class Script::Session
class Script::Locks
class ScriptModule
class ScriptCommand
void addFunction (const char *name, unsigned count, Function i)
void addConditional (const char *name, Cond test)
void addAttribute (const char *name, Meta meta)

Classes

class  Context

Detailed Description

System script interpreter core engine class.Extensible Bayonne Scripting Engine.

This class is further derived to impliment application specific language dialects.

Author:
David Sugar <dyfet@ostel.com>


Constructor & Destructor Documentation

ScriptInterp::ScriptInterp ScriptCommand cmd,
size_t  symsize,
size_t  pgsize = 1024
[protected]
 

Derive a new instance of the system script interpreter.

Parameters:
symsize for default symbol sizing.
pgsize for memory fragmentation.

ScriptInterp::~ScriptInterp  )  [protected]
 


Member Function Documentation

void ScriptInterp::advance void   )  [protected]
 

Advance program to the next script statement.

bool ScriptInterp::attach const char *  scrname  ) 
 

Attempt to attach script engine to active session and specify a starting script.

Returns:
false if failed to attach.
Parameters:
name of script entry.

void ScriptInterp::autoloop bool  enable  )  [inline]
 

Enable or disable autolooping of statements.

Parameters:
true to enable autoloop (default).

void ScriptInterp::clrTransactions void   )  [inline]
 

Clear transaction processing group.

bool ScriptInterp::conditional void   )  [protected]
 

Used to process "conditional" arguments such as for IF/DO/LOOP statements.

The index is kept at the next logical argument so a goto can be performed if needed.

Returns:
true if conditional test is true.

void ScriptInterp::detach void   ) 
 

Detach the current script image.

If it is the last ref count and the exit flag is set, then delete it.

void ScriptInterp::error const char *  error  )  [protected]
 

Set error variable and advance to either the error handler or next script statement.

Parameters:
error message.

bool ScriptInterp::event const char *  evtname  )  [protected]
 

Events reference to named handlers which have been attached to a script.

This allows low level applications to invoke an event handler much the way a signal handler occurs.

Returns:
true if event handler exists.
Parameters:
name of event handler.

virtual bool ScriptInterp::execute Method  method  )  [inline, protected, virtual]
 

Runtime execution of script handler.

This can be called in the current or derived class to invoke extensible methods.

Returns:
true if immediately ready for next step.
Parameters:
derived method to call.

virtual void ScriptInterp::exit void   )  [protected, pure virtual]
 

Exit request handler.

This is called when no script line exists. No default behavior is known.

ScriptCommand* ScriptInterp::getCommand void   )  [inline, protected]
 

Fetch the active command interpreter subsystem.

Returns:
script interpreter.

char* ScriptInterp::getContent char *  sym  ) 
 

Evaluate the content of an option retrieved with getOption.

Returns:
value of evaluation.
Parameters:
option string.

unsigned ScriptInterp::getDecimal void   )  [inline]
 

Get decimal.

Returns:
decimal value.

static double ScriptInterp::getDouble long  value,
unsigned  prec
[static]
 

int ScriptInterp::getExpression long *  list,
int  max,
unsigned  prec
 

virtual bool ScriptInterp::getGlobalTrap unsigned  id  )  [inline, protected, virtual]
 

Used to fetch a global trap execution context branch.

Returns:
true if external global trap handler found.
Parameters:
trap identifier.

virtual unsigned ScriptInterp::getId void   )  [inline, protected, virtual]
 

Used to return channel identifiers in some systems.

Returns:
channel id or 0 for none.

ScriptImage* ScriptInterp::getImage void   )  [inline]
 

Return the script image holding this application's context.

Returns:
script image.

virtual Symbol* ScriptInterp::getIndirect char *  sym  )  [inline, virtual]
 

May be used to override processing of indirect content requests.

This is used in the Bayonne IVR to fetch content constants based on language and country settings.

Returns:
symbol for indirect content.
Parameters:
indirect fetch request.

static long ScriptInterp::getInteger long  value,
unsigned  prec
[static]
 

long ScriptInterp::getIntValue const char *  text,
unsigned  prec
 

char* ScriptInterp::getKeyword const char *  keyword  ) 
 

Fetch an embedded attribute keyword argument.

This allows embedded tag=value keywords to be extracted.

Returns:
option or NULL if not found.
Parameters:
keyword to find.

Symbol* ScriptInterp::getLocal const char *  name,
size_t  size = 0
 

Search for symbols either thru the virtual global space or thru local space if a local space has been allocated on the heap.

Returns:
symbol found.
Parameters:
script symbol to look for or create.
size of symbol to allocate.

unsigned long ScriptInterp::getMask void   )  [protected]
 

Fetch the current interpreter mask bits directly.

Returns:
interpreter mask.

const char* ScriptInterp::getMember void   ) 
 

Return the member id of a script command.

Returns:
member id or NULL if none.

Name* ScriptInterp::getObject void   )  [inline]
 

Return the master script object for resource context.

Returns:
script object being executed.

bool ScriptInterp::getOnce void   )  [protected]
 

Fetch unique "once" flag and set.

Returns:
true if once.

char* ScriptInterp::getOption const char *  def = NULL  ) 
 

Fetch next logical option but do not evaluate.

The index is advanced.

Returns:
option or NULL if end of list.
Parameters:
optional default.

char ScriptInterp::getPackToken void   ) 
 

Get pack token.

Line* ScriptInterp::getPrescan void   ) 
 

Return if the current line requires prescanning.

Returns:
line object if prescanned line else NULL.

static long ScriptInterp::getRealValue double  val,
unsigned  prec
[static]
 

Line* ScriptInterp::getScript void   )  [inline]
 

Return the current script line object so it may be debugged.

Returns:
script image record being executed.

Name* ScriptInterp::getScriptCopy const char *  src  )  [protected]
 

Fetch duplicative script image as needed.

Returns:
script object.
Parameters:
label to dup.

virtual Name* ScriptInterp::getScriptImage const char *  label  )  [protected, virtual]
 

Runtime branch point for label selection.

Returns:
script found.
Parameters:
label to locate.
script line associated.

unsigned long ScriptInterp::getScriptMask const char *  id  )  [inline, protected]
 

Fetch the script mask identifer.

Returns:
script mask.

char* ScriptInterp::getString void   ) 
 

Fetch and concatenate a temporary string expression until either a comma or closing parenthesis.

Returns:
pointer to temp string buffer.

char* ScriptInterp::getTempBuffer void   ) 
 

Fetch a temp workspace buffer.

Returns:
workspace pointer.

static long ScriptInterp::getTens unsigned  prec  )  [static]
 

void ScriptInterp::getTrigger bool  use  )  [protected]
 

Get a local and/or global trigger.

Parameters:
use or clear.

char* ScriptInterp::getValue const char *  def = NULL  ) 
 

Fetch and evaluate next logical option.

If a symbol ref. then the symbol is also expressed. The index is advanced.

Returns:
option value or NULL if end of list.
Parameters:
optional default value.

Symbol* ScriptInterp::getVariable size_t  size = 0  ) 
 

Fetch a variable (symbol) that will be used to store data.

This advances the index.

Returns:
symbol found if any.
Parameters:
optional size to allocate if new symbol.

bool ScriptInterp::hasEvents void   )  [inline]
 

Return if the script has generic event handlers.

..

Returns:
true if generic handlers.

bool ScriptInterp::ifGoto void   )  [protected]
 

If version of goto.

int ScriptInterp::initKeywords int  size  ) 
 

Initialize symbols from the keyword list.

bool ScriptInterp::isActive void   )  [inline]
 

Test if script interpreter is currently active.

Returns:
true if active.

int ScriptInterp::mapicmp const char *  s1,
const char *  s2
[inline]
 

int ScriptInterp::mapnicmp const char *  s1,
const char *  s2,
size_t  n
[inline]
 

void ScriptInterp::Notify const char *  str  )  [inline, protected]
 

Notify signal by symbolic name.

Parameters:
mask name.

void ScriptInterp::Notify unsigned long  mask  )  [inline, protected]
 

Notify signal mask for "on" handlers.

Parameters:
mask value.

bool ScriptInterp::pull void   )  [protected]
 

Attempt to recall a previous stack level.

Returns:
false if stack underflow.

bool ScriptInterp::push void   )  [protected]
 

Attempt to push a value onto the stack.

Returns:
false if stack overflow.

bool ScriptInterp::redirect const char *  scrname  ) 
 

Script redirection support.

Returns:
false if redirect failed.
Parameters:
name of script entry.

void ScriptInterp::rewindTemp void   ) 
 

Rewind temporary buffer for prescan results.

bool ScriptInterp::scrData void   )  [protected]
 

Method used to encode "data" lines.

bool ScriptInterp::scrExit void   )  [protected]
 

Some systems can derive alternative "exit" commands which can call this routine after performing other operations.

bool ScriptInterp::scrGoto void   )  [protected]
 

This is often called to process branching requests.

bool ScriptInterp::scrIf void   )  [protected]
 

override if support.

bool ScriptInterp::setData const char *  scrname  ) 
 

Set data read pointer to a known data source script.

Parameters:
name of script.
Returns:
true on success.

virtual void ScriptInterp::setExclusive bool  enable  )  [inline, protected, virtual]
 

Set exclusive sync locking for interpreter.

Parameters:
turn exclusive on or off.

Reimplemented from ScriptSymbol.

void ScriptInterp::setLine Line *  line  )  [protected]
 

Set the line handler to a new statement.

Parameters:
line value.

void ScriptInterp::setTemp const char *  value  ) 
 

Set prescan value into temporary buffer.

Parameters:
value to set into temp.

bool ScriptInterp::signal unsigned  trapid  )  [protected]
 

Signals can be referenced by numeric id as well as by symbolic name.

Returns:
true if signal handler is not blocked.
Parameters:
trap number of handler.

bool ScriptInterp::signal const char *  trapname  )  [protected]
 

Signals are used during "delayed" execution steps when a signal event has occured aynchronously with the execution of a script controlled state event handler.

This mechanism can be used in place of calling implicit "Step" traps.

Returns:
true if signal handler is not blocked.
Parameters:
name of signal identifier.

virtual void ScriptInterp::sleepScheduler timeout_t  timeout  )  [inline, protected, virtual]
 

Patch point for sleep delay notification.

Parameters:
sleep timeout expected.

bool ScriptInterp::step const char *  trapname = NULL  ) 
 

Execute the next pending script statement.

If no statement is selected, then we execute the exit handler instead. We can also force feed a trap identifier.

Returns:
true if advanced to next script statement already.
Parameters:
optional trap branch point (also checks mask).

virtual void ScriptInterp::stepScheduler const char *  trapname  )  [inline, protected, virtual]
 

Step scheduler callback to force step execution.

Parameters:
trap name to use.

virtual void ScriptInterp::stop unsigned long  mask  )  [inline, protected, virtual]
 

Stop request handler.

Used for handling external trap requests during a "Signal". This is needed in some state engines when the current state is being abandoned because of a signaled trap.

Parameters:
signal mask forcing stop.

void ScriptInterp::trap const char *  trapname  )  [protected]
 

Select trap by symbolic name and execute if found, else advance to next script step (unless exit trap).

Parameters:
name of trap to select.

void ScriptInterp::trap unsigned  id  )  [protected]
 

Set the execution interpreter to a trap identifier.

If no trap id exists, then advance to next script statement (unless exit trap).

Parameters:
id of trap to select numerically.


Friends And Related Function Documentation

void addAttribute const char *  name,
Meta  meta
[friend]
 

void addConditional const char *  name,
Cond  test
[friend]
 

void addFunction const char *  name,
unsigned  count,
Function  i
[friend]
 

friend class Script::Locks [friend]
 

friend class Script::Session [friend]
 

friend class ScriptCommand [friend]
 

friend class ScriptImage [friend]
 

friend class ScriptModule [friend]
 


Member Data Documentation

unsigned char ScriptInterp::lckcount [protected]
 


The documentation for this class was generated from the following file:
Generated on Thu Dec 22 04:52:54 2005 for ccScript by  doxygen 1.4.5