hobbes
a language, embedded compiler, and runtime for efficient dynamic expression evaluation, data storage and analysis
Classes | Public Types | Public Member Functions | Static Public Attributes | Private Attributes | List of all members
hobbes::Case Class Reference

#include <expr.H>

Inheritance diagram for hobbes::Case:
Inheritance graph
Collaboration diagram for hobbes::Case:
Collaboration graph

Classes

struct  Binding
 

Public Types

typedef std::vector< BindingBindings
 
- Public Types inherited from hobbes::ExprCase< Case >
typedef ExprCase< CaseBase
 

Public Member Functions

 Case (const ExprPtr &v, const Bindings &bs, const LexicalAnnotation &)
 
 Case (const ExprPtr &v, const Bindings &bs, const ExprPtr &def, const LexicalAnnotation &)
 
bool operator== (const Case &) const
 
const ExprPtrvariant () const
 
const Bindingsbindings () const
 
const ExprPtrdefaultExpr () const
 
void variant (const ExprPtr &)
 
Bindingsbindings ()
 
void defaultExpr (const ExprPtr &)
 
bool hasBinding (const std::string &) const
 
void addBinding (const std::string &selector, const std::string &vname, const ExprPtr &exp)
 
Exprclone () const
 
void show (std::ostream &out) const
 
void showAnnotated (std::ostream &out) const
 
- Public Member Functions inherited from hobbes::ExprCase< Case >
 ExprCase (const LexicalAnnotation &)
 
bool operator== (const Expr &rhs) const
 
- Public Member Functions inherited from hobbes::Expr
virtual ~Expr ()
 
const QualTypePtrtype () const
 
void type (const QualTypePtr &ty)
 
int case_id () const
 
- Public Member Functions inherited from hobbes::LexicallyAnnotated
 LexicallyAnnotated (const LexicallyAnnotated &)
 
 LexicallyAnnotated (const LexicalAnnotation &)
 
 LexicallyAnnotated (const LexRange &)
 
 LexicallyAnnotated (const Pos &, const Pos &)
 
const LexicalAnnotationla () const
 

Static Public Attributes

static const int type_case_id = 19
 

Private Attributes

ExprPtr v
 
Bindings bs
 
ExprPtr def
 

Additional Inherited Members

- Static Public Member Functions inherited from hobbes::LexicallyAnnotated
static void pushFileContext (const std::string &)
 
static void pushLiteralContext (const std::string &)
 
static void popContext ()
 
static LexicalAnnotation make (const Pos &, const Pos &)
 
- Protected Member Functions inherited from hobbes::Expr
 Expr (int cid, const LexicalAnnotation &)
 

Member Typedef Documentation

◆ Bindings

typedef std::vector<Binding> hobbes::Case::Bindings

Constructor & Destructor Documentation

◆ Case() [1/2]

hobbes::Case::Case ( const ExprPtr v,
const Bindings bs,
const LexicalAnnotation la 
)

◆ Case() [2/2]

hobbes::Case::Case ( const ExprPtr v,
const Bindings bs,
const ExprPtr def,
const LexicalAnnotation la 
)

Member Function Documentation

◆ addBinding()

void hobbes::Case::addBinding ( const std::string &  selector,
const std::string &  vname,
const ExprPtr exp 
)

◆ bindings() [1/2]

const Case::Bindings & hobbes::Case::bindings ( ) const

◆ bindings() [2/2]

Case::Bindings & hobbes::Case::bindings ( )

◆ clone()

Expr * hobbes::Case::clone ( ) const
virtual

Implements hobbes::Expr.

◆ defaultExpr() [1/2]

const ExprPtr & hobbes::Case::defaultExpr ( ) const

◆ defaultExpr() [2/2]

void hobbes::Case::defaultExpr ( const ExprPtr ndef)

◆ hasBinding()

bool hobbes::Case::hasBinding ( const std::string &  bn) const

◆ operator==()

bool hobbes::Case::operator== ( const Case rhs) const
virtual

◆ show()

void hobbes::Case::show ( std::ostream &  out) const
virtual

Implements hobbes::Expr.

◆ showAnnotated()

void hobbes::Case::showAnnotated ( std::ostream &  out) const
virtual

Implements hobbes::Expr.

◆ variant() [1/2]

const ExprPtr & hobbes::Case::variant ( ) const

◆ variant() [2/2]

void hobbes::Case::variant ( const ExprPtr nv)

Member Data Documentation

◆ bs

Bindings hobbes::Case::bs
private

◆ def

ExprPtr hobbes::Case::def
private

◆ type_case_id

const int hobbes::Case::type_case_id = 19
static

◆ v

ExprPtr hobbes::Case::v
private

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