yast2-core
|
#include <ExecutionEnvironment.h>
Public Types | |
typedef vector< const CallFrame * > | CallStack |
Public Member Functions | |
ExecutionEnvironment () | |
~ExecutionEnvironment () | |
int | linenumber () const |
void | setLinenumber (int line) |
const string & | filename () const |
void | setFilename (const string &filename) |
YStatementPtr | statement () const |
void | setStatement (YStatementPtr s) |
bool | endlessRecursion () |
void | pushframe (YECallPtr called_function, YCPValue params[]) |
void | popframe () |
void | backtrace (loglevel_t level, uint skip=0) const |
CallStack | callstack () const |
Private Attributes | |
int | m_linenumber |
string | m_filename |
bool | m_forced_filename |
YStatementPtr | m_statement |
CallStack | m_backtrace |
size_t | m_recursion_limit |
Class to track current execution environment. Typically used for logging and debugging.
m_forced_filename is a way to enforce a given filename until another block is entered (or the current one is left). Used for include statements, where top level block does not exist.
typedef vector<const CallFrame*> YaST::ExecutionEnvironment::CallStack |
YaST::ExecutionEnvironment::ExecutionEnvironment | ( | ) |
References m_backtrace, m_recursion_limit, and WARN_RECURSION.
void YaST::ExecutionEnvironment::backtrace | ( | loglevel_t | level, |
uint | skip = 0 |
||
) | const |
Report the current backtrace to log.
skip | number of the top call frames to be omitted from the backtrace |
References m_backtrace, y2logger, and ycp2log.
Referenced by Y2FDebug(), Y2FError(), Y2FInternal(), Y2FMilestone(), Y2FSecurity(), and Y2FWarning().
ExecutionEnvironment::CallStack YaST::ExecutionEnvironment::callstack | ( | ) | const |
Returns a copy of the call stack for debugging etc.
The stack itself may safely be modified. The pointers it contains, however, may not.
References m_backtrace.
Referenced by Debugger::findSymbol(), and Debugger::generateBacktrace().
bool YaST::ExecutionEnvironment::endlessRecursion | ( | ) |
Report error if there are too many stack frames
References m_backtrace, m_recursion_limit, and y2error.
const string & YaST::ExecutionEnvironment::filename | ( | ) | const |
Get the current file name.
References m_filename.
Referenced by Y2WFMComponent::CallFunction(), YBlock::evaluate(), YEFunction::evaluate(), YEFunctionPointer::evaluate(), Y2YCPFunction::evaluateCall(), YBlock::evaluateFrom(), pushframe(), and setFilename().
int YaST::ExecutionEnvironment::linenumber | ( | ) | const |
Get the current line number.
References m_linenumber.
Referenced by Y2WFMComponent::CallFunction(), YEFunction::evaluate(), YEFunctionPointer::evaluate(), Y2YCPFunction::evaluateCall(), and pushframe().
void YaST::ExecutionEnvironment::popframe | ( | ) |
Pop the top call frame from the backtrace stack.
References m_backtrace, and y2debug.
Referenced by YEFunction::evaluate().
void YaST::ExecutionEnvironment::pushframe | ( | YECallPtr | called_function, |
YCPValue | params[] | ||
) |
Push another call frame to the backtrace stack according to the current information.
called_function | name of the function to be called at this point |
References filename(), linenumber(), m_backtrace, and y2debug.
Referenced by YEFunction::evaluate().
void YaST::ExecutionEnvironment::setFilename | ( | const string & | filename | ) |
Set the current file name for error outputs.
References filename(), m_filename, and m_forced_filename.
Referenced by Y2WFMComponent::CallFunction(), YBlock::evaluate(), YSInclude::evaluate(), YEFunction::evaluate(), YEFunctionPointer::evaluate(), YSFilename::evaluate(), Y2YCPFunction::evaluateCall(), YBlock::evaluateFrom(), main(), parsefile(), and switch().
void YaST::ExecutionEnvironment::setLinenumber | ( | int | line | ) |
Set the current line number.
References m_linenumber.
Referenced by attach_parameter(), Y2WFMComponent::CallFunction(), YEFunction::evaluate(), YEFunctionPointer::evaluate(), Y2YCPFunction::evaluateCall(), i_check_binary_op(), i_check_compare_op(), parsefile(), and switch().
void YaST::ExecutionEnvironment::setStatement | ( | YStatementPtr | s | ) |
Set the currently evaluated statement.
References m_linenumber, and m_statement.
Referenced by YBlock::evaluate(), and YBlock::evaluateFrom().
YStatementPtr YaST::ExecutionEnvironment::statement | ( | ) | const |
Return the currently evaluated statement.
References m_statement.
Referenced by Debugger::processInput().
|
private |
Referenced by backtrace(), callstack(), endlessRecursion(), ExecutionEnvironment(), popframe(), and pushframe().
|
private |
Referenced by filename(), and setFilename().
|
private |
Referenced by setFilename().
|
private |
Referenced by linenumber(), setLinenumber(), and setStatement().
|
private |
There is a limit of 1001 call frames (overridable by Y2RECURSIONLIMIT in the environment). After that, a call is skipped and nil is returned instead.
Referenced by endlessRecursion(), and ExecutionEnvironment().
|
private |
Referenced by setStatement(), and statement().