yast2-core
Public Member Functions | Private Member Functions | Private Attributes
YFunction Class Reference

#include <YCode.h>

Inheritance diagram for YFunction:
YCode Rep

List of all members.

Public Member Functions

 YFunction (YBlockPtr parameterblock, const SymbolEntryPtr entry=0)
 YFunction (bytecodeistream &str)
 ~YFunction ()
virtual ykind kind () const
unsigned int parameterCount () const
YBlockPtr declaration () const
SymbolEntryPtr parameter (unsigned int position) const
YCodePtr definition () const
void setDefinition (YBlockPtr body)
void setDefinition (YBreakpointPtr body)
void setDefinition (bytecodeistream &str)
string toStringDeclaration () const
string toString () const
std::ostream & toStreamDefinition (std::ostream &str) const
std::ostream & toXmlDefinition (std::ostream &str, int indent) const
std::ostream & toStream (std::ostream &str) const
std::ostream & toXml (std::ostream &str, int indent) const
virtual YCPValue evaluate (bool cse=false)
constTypePtr type () const
- Public Member Functions inherited from YCode
 YCode ()
virtual ~YCode ()
virtual bool isConstant () const
bool isError () const
virtual bool isStatement () const
virtual bool isBlock () const
virtual bool isReferenceable () const
- Public Member Functions inherited from Rep
 Rep ()
 Rep (const Rep &)
Repoperator= (const Rep &)
virtual ~Rep ()
void ref () const
void unref () const
unsigned refCount () const
virtual const char * repName () const
virtual std::ostream & dumpOn (std::ostream &str) const

Private Member Functions

 REP_BODY (YFunction)

Private Attributes

YBlockPtr m_declaration
YCodePtr m_definition
bool m_is_global

Additional Inherited Members

- Public Types inherited from YCode
enum  ykind {
  yxError = 0, ycVoid, ycBoolean, ycInteger,
  ycFloat, ycString, ycByteblock, ycPath,
  ycSymbol, ycList, ycMap, ycTerm,
  ycEntry, ycConstant, ycLocale, ycFunction,
  yePropagate, yeUnary, yeBinary, yeTriple,
  yeCompare, yeLocale, yeList, yeMap,
  yeTerm, yeIs, yeBracket, yeBlock,
  yeReturn, yeVariable, yeBuiltin, yeFunction,
  yeReference, yeFunctionPointer, yeExpression, ysTypedef,
  ysVariable, ysFunction, ysAssign, ysBracket,
  ysIf, ysWhile, ysDo, ysRepeat,
  ysExpression, ysReturn, ysBreak, ysContinue,
  ysTextdomain, ysInclude, ysFilename, ysImport,
  ysBlock, ysSwitch, ysStatement, yiBreakpoint
}
- Static Public Member Functions inherited from YCode
static string toString (ykind kind)
- Static Public Member Functions inherited from Rep
static void ref (const Rep *obj_r)
static void unref (const Rep *obj_r)

Detailed Description

function declaration (m_body == 0) or definition (m_body != 0) it's anonymouse here ! The code() member of the corresponding SymbolEntry points to YFunction.


Constructor & Destructor Documentation

YFunction::YFunction ( YBlockPtr  parameterblock,
const SymbolEntryPtr  entry = 0 
)
YFunction::YFunction ( bytecodeistream str)
YFunction::~YFunction ( )

Member Function Documentation

YBlockPtr YFunction::declaration ( ) const

References m_declaration.

YCodePtr YFunction::definition ( ) const

References m_definition.

Referenced by setDefinition().

YCPValue YFunction::evaluate ( bool  cse = false)
virtual

Execute YCP code to get the resulting YCPValue. Every inherited class of YCode should reimplement this method.

Returns:
YCPValue after executing the code
Parameters:
cseshould the evaluation be done for parse time evaluation (i.e. constant subexpression elimination)

Reimplemented from YCode.

References toString(), and y2debug.

virtual ykind YFunction::kind ( ) const
inlinevirtual

Kind of this YCode. This method must be reimplemented in the inherited classes.

Returns:
the YCode kind

Implements YCode.

References YCode::ycFunction.

SymbolEntryPtr YFunction::parameter ( unsigned int  position) const

References m_declaration.

Referenced by toStringDeclaration(), and type().

unsigned int YFunction::parameterCount ( void  ) const

References m_declaration.

Referenced by toStringDeclaration(), and type().

YFunction::REP_BODY ( YFunction  )
private
void YFunction::setDefinition ( YBlockPtr  body)
void YFunction::setDefinition ( YBreakpointPtr  body)

References definition(), and m_definition.

void YFunction::setDefinition ( bytecodeistream str)
std::ostream & YFunction::toStream ( std::ostream &  str) const
virtual

Write YCP code to a byte stream (bytecode implementation). Every class inheriting from YCode must reimplement this method.

Parameters:
strbyte stream to store into
Returns:
byte stream for chaining writing bytecode (str)

Implements YCode.

References m_declaration, str, Bytecode::writeBool(), and y2debug.

std::ostream & YFunction::toStreamDefinition ( std::ostream &  str) const
string YFunction::toString ( void  ) const
virtual

Return ASCII represtation of this YCP code.

Returns:
ASCII string representation

Reimplemented from YCode.

References m_definition, and toStringDeclaration().

Referenced by evaluate().

string YFunction::toStringDeclaration ( ) const

References parameter(), and parameterCount().

Referenced by toString().

std::ostream & YFunction::toXml ( std::ostream &  str,
int  indent 
) const
virtual

Write YCP code as XML representation. Every class inheriting from YCode must reimplement this method.

Parameters:
strstring stream to store into
indendindentation level for pretty print
Returns:
string stream for chaining writing XML (str)

Implements YCode.

References m_declaration, m_definition, Xmlcode::popNamespace(), Xmlcode::pushNamespace(), Xmlcode::spaces(), and str.

std::ostream & YFunction::toXmlDefinition ( std::ostream &  str,
int  indent 
) const

References str.

constTypePtr YFunction::type ( ) const
virtual

Return type of this YCP code (interesting mostly for function calls).

Returns:
type of the value to be returned after calling evaluate

Reimplemented from YCode.

References parameter(), parameterCount(), and Type::Unspec.


Member Data Documentation

YBlockPtr YFunction::m_declaration
private
YCodePtr YFunction::m_definition
private
bool YFunction::m_is_global
private

The documentation for this class was generated from the following files:

Generated on a sunny day for yast2-core by doxygen 1.8.1