Functional-lang  0.0
An example functional programming language
Public Member Functions | List of all members
StackFrameObj< T > Class Template Reference

Class for adding Expr's to stack frame of Environment. More...

#include <syntax.hpp>

Public Member Functions

 StackFrameObj (Environment &env, T *expr=nullptr) noexcept
 
T * operator -> () const noexcept
 
T * operator * () const noexcept
 
bool operator== (T *expr) const noexcept
 
bool operator== (StackFrameObj< T > &obj) const noexcept
 
bool operator != (T *expr) const noexcept
 
bool operator != (StackFrameObj< T > &obj) const noexcept
 
StackFrameObj< T > & operator= (T *expr) noexcept
 
StackFrameObj< T > & operator= (StackFrameObj< T > &obj) noexcept
 Assigns **this = *obj. Removes old expression from stack frame and adds *obj to stack frame. More...
 
 operator bool () const
 

Detailed Description

template<typename T>
class StackFrameObj< T >

Class for adding Expr's to stack frame of Environment.

Should only be created in stack not heap. The class adds an expression to stack frame on initialization or assignment and removes the expression from stack frame on deconstruction or if new expression assigned.

Member Function Documentation

◆ operator !=() [1/2]

template<typename T>
bool StackFrameObj< T >::operator != ( T *  expr) const
inlinenoexcept
Returns
Returns **this != expr.
Parameters
expr

◆ operator !=() [2/2]

template<typename T>
bool StackFrameObj< T >::operator != ( StackFrameObj< T > &  obj) const
inlinenoexcept
Returns
Returns **this == *obj.
Parameters
obj

◆ operator *()

template<typename T>
T* StackFrameObj< T >::operator * ( ) const
inlinenoexcept
Returns
Returns contained expression.

◆ operator bool()

template<typename T>
StackFrameObj< T >::operator bool ( ) const
inline
Returns
Returns **this != nullptr.

◆ operator=() [1/2]

template<typename T>
StackFrameObj<T>& StackFrameObj< T >::operator= ( T *  expr)
inlinenoexcept
Returns
Assigns expression to expr. Removes old expression from stack frame and adds expr to stack frame.
Parameters
expr

◆ operator=() [2/2]

template<typename T>
StackFrameObj<T>& StackFrameObj< T >::operator= ( StackFrameObj< T > &  obj)
inlinenoexcept

Assigns **this = *obj. Removes old expression from stack frame and adds *obj to stack frame.

Returns
Returns this.
Parameters
obj

◆ operator==() [1/2]

template<typename T>
bool StackFrameObj< T >::operator== ( T *  expr) const
inlinenoexcept
Returns
Returns **this == expr.
Parameters
expr

◆ operator==() [2/2]

template<typename T>
bool StackFrameObj< T >::operator== ( StackFrameObj< T > &  obj) const
inlinenoexcept
Returns
Returns **this == *obj.
Parameters

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