Main Page   Namespace List   Class Hierarchy   Alphabetical List   Compound List   File List   Namespace Members   Compound Members  

ost::ScriptInterp Class Reference

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

#include <script.h>

Inheritance diagram for ost::ScriptInterp::

ost::ScriptSymbol SharedMemPager List of all members.

Public Methods

scriptsymbol_tgetLocal (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. More...

bool Attach (const char *scrname)
 Attempt to attach script engine to active session and specify a starting script. More...

void Detach (void)
 Detach the current script image. More...

bool Redirect (const char *scrname)
 Script redirection support. More...

bool Step (const char *trapname=NULL)
 Execute the next pending script statement. More...

bool isActive (void)
 Test if script interpreter is currently active. More...

char * getOption (const char *def=NULL)
 Fetch next logical option but do not evaluate. More...

char * getKeyword (const char *keyword)
 Fetch an embedded attribute keyword argument. More...

int initKeywords (int size)
 Initialize symbols from the keyword list. More...

char * getValue (const char *def=NULL)
 Fetch and evaluate next logical option. More...

char * getContent (char *sym)
 Evaluate the content of an option retrieved with getOption. More...

scriptline_tgetScript (void)
 Return the current script line object so it may be debugged. More...

const char * getMember (void)
 Return the member id of a script command. More...

scriptname_tgetObject (void)
 Return the master script object for resource context. More...

ScriptImagegetImage (void)
 Return the script image holding this application's context. More...

void autoloop (bool enable)
 Enable or disable autolooping of statements. More...


Protected Methods

 ScriptInterp (ScriptCommand *cmd, size_t symsize, size_t pgsize=1024)
 Derive a new instance of the system script interpreter. More...

void getTrigger (bool use)
 Get a local and/or global trigger. More...

bool getOnce (void)
 Fetch unique "once" flag and set. More...

void Notify (unsigned long mask)
 Notify signal mask for "on" handlers. More...

void Notify (const char *str)
 Notify signal by symbolic name. More...

unsigned long getMask (void)
 Fetch the current interpreter mask bits directly. More...

ScriptCommandgetCommand (void)
 Fetch the active command interpreter subsystem. More...

bool Conditional (void)
 Used to process "conditional" arguments such as for IF/DO/LOOP statements. More...

bool scrExit (void)
 Some systems can derive alternative "exit" commands which can call this routine after performing other operations. More...

bool scrGoto (void)
 This is often called to process branching requests. More...

bool scrData (void)
 Method used to encode "data" lines. More...

virtual unsigned getId (void)
 Used to return channel identifiers in some systems. More...

virtual bool getGlobalTrap (unsigned id)
 Used to fetch a global trap execution context branch. More...

scriptsymbol_tgetVariable (size_t size=0)
 Fetch a variable (symbol) that will be used to store data. More...

virtual scriptsymbol_tgetIndirect (char *sym)
 May be used to override processing of indirect content requests. More...

void Advance (void)
 Advance program to the next script statement. More...

void Error (const char *error)
 Set error variable and advance to either the error handler or next script statement. More...

void Trap (unsigned id)
 Set the execution interpreter to a trap identifier. More...

void Trap (const char *trapname)
 Select trap by symbolic name and execute if found, else advance to next script step (unless exit trap). More...

bool Push (void)
 Attempt to push a value onto the stack. More...

bool Pull (void)
 Attempt to recall a previous stack level. More...

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. More...

bool Signal (unsigned trapid)
 Signals can be referenced by numeric id as well as by symbolic name. More...

virtual bool Execute (scriptmethod_t method)
 Runtime execution of script handler. More...

virtual void Stop (unsigned long mask)
 Stop request handler. More...

virtual void Exit (void)=0
 Exit request handler. More...

virtual scriptname_tgetScriptImage (const char *label)
 Runtime branch point for label selection. More...

scriptname_tgetScriptCopy (const char *src)
 Fetch duplicative script image as needed. More...

virtual void sleepScheduler (timeout_t timeout)
 Patch point for sleep delay notification. More...

virtual void stepScheduler (const char *trapname)
 Step scheduler callback to force step execution. More...


Friends

class ScriptImage
class ScriptSession
class ScriptModule
class ScriptCommand

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

ost::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.


Member Function Documentation

void ost::ScriptInterp::Advance void   [protected]
 

Advance program to the next script statement.

bool ost::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.

bool ost::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 ost::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 ost::ScriptInterp::Error const char *   error [protected]
 

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

Parameters:
error   message.

virtual bool ost::ScriptInterp::Execute scriptmethod_t   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 ost::ScriptInterp::Exit void   [protected, pure virtual]
 

Exit request handler.

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

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

Notify signal by symbolic name.

Parameters:
mask   name.

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

Notify signal mask for "on" handlers.

Parameters:
mask   value.

bool ost::ScriptInterp::Pull void   [protected]
 

Attempt to recall a previous stack level.

Returns:
false if stack underflow.

bool ost::ScriptInterp::Push void   [protected]
 

Attempt to push a value onto the stack.

Returns:
false if stack overflow.

bool ost::ScriptInterp::Redirect const char *   scrname
 

Script redirection support.

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

bool ost::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 ost::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.

bool ost::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 ost::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 ost::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 ost::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.

void ost::ScriptInterp::autoloop bool   enable [inline]
 

Enable or disable autolooping of statements.

Parameters:
true   to enable autoloop (default).

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

Fetch the active command interpreter subsystem.

Returns:
script interpreter.

char* ost::ScriptInterp::getContent char *   sym
 

Evaluate the content of an option retrieved with getOption.

Returns:
value of evaluation.
Parameters:
option   string.

virtual bool ost::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 ost::ScriptInterp::getId void   [inline, protected, virtual]
 

Used to return channel identifiers in some systems.

Returns:
channel id or 0 for none.

ScriptImage* ost::ScriptInterp::getImage void   [inline]
 

Return the script image holding this application's context.

Returns:
script image.

virtual scriptsymbol_t* ost::ScriptInterp::getIndirect char *   sym [inline, protected, 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.

char* ost::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.

scriptsymbol_t* ost::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 ost::ScriptInterp::getMask void   [inline, protected]
 

Fetch the current interpreter mask bits directly.

Returns:
interpreter mask.

const char* ost::ScriptInterp::getMember void  
 

Return the member id of a script command.

Returns:
member id or NULL if none.

scriptname_t* ost::ScriptInterp::getObject void   [inline]
 

Return the master script object for resource context.

Returns:
script object being executed.

bool ost::ScriptInterp::getOnce void   [protected]
 

Fetch unique "once" flag and set.

Returns:
true if once.

char* ost::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.

scriptline_t* ost::ScriptInterp::getScript void   [inline]
 

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

Returns:
script image record being executed.

scriptname_t* ost::ScriptInterp::getScriptCopy const char *   src [protected]
 

Fetch duplicative script image as needed.

Returns:
script object.
Parameters:
label   to dup.

virtual scriptname_t* ost::ScriptInterp::getScriptImage const char *   label [protected, virtual]
 

Runtime branch point for label selection.

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

void ost::ScriptInterp::getTrigger bool   use [protected]
 

Get a local and/or global trigger.

Parameters:
use   or clear.

char* ost::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.

scriptsymbol_t* ost::ScriptInterp::getVariable size_t   size = 0 [protected]
 

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.

int ost::ScriptInterp::initKeywords int   size
 

Initialize symbols from the keyword list.

bool ost::ScriptInterp::isActive void   [inline]
 

Test if script interpreter is currently active.

Returns:
true if active.

bool ost::ScriptInterp::scrData void   [protected]
 

Method used to encode "data" lines.

bool ost::ScriptInterp::scrExit void   [protected]
 

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

bool ost::ScriptInterp::scrGoto void   [protected]
 

This is often called to process branching requests.

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

Patch point for sleep delay notification.

Parameters:
sleep   timeout expected.

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

Step scheduler callback to force step execution.

Parameters:
trap   name to use.


Friends And Related Function Documentation

friend class ScriptCommand [friend]
 

friend class ScriptImage [friend]
 

friend class ScriptModule [friend]
 

friend class ScriptSession [friend]
 


The documentation for this class was generated from the following file:
Generated at Fri Nov 2 09:22:25 2001 for ccscript by doxygen1.2.10 written by Dimitri van Heesch, © 1997-2001