MQTTSuite
Loading...
Searching...
No Matches
inja::FunctionNode Class Reference

#include <inja.hpp>

Inheritance diagram for inja::FunctionNode:
Collaboration diagram for inja::FunctionNode:

Public Types

enum class  Associativity { Left , Right }

Public Member Functions

 FunctionNode (std::string_view name, size_t pos)
 FunctionNode (Op operation, size_t pos)
void accept (NodeVisitor &v) const override
Public Member Functions inherited from inja::ExpressionNode
 ExpressionNode (size_t pos)
Public Member Functions inherited from inja::AstNode
 AstNode (size_t pos)
virtual ~AstNode ()

Public Attributes

unsigned int precedence
Associativity associativity
Op operation
std::string name
int number_args
std::vector< std::shared_ptr< ExpressionNode > > arguments
CallbackFunction callback
Public Attributes inherited from inja::AstNode
size_t pos

Private Types

using Op = FunctionStorage::Operation

Detailed Description

Definition at line 535 of file inja.hpp.

Member Typedef Documentation

◆ Op

Definition at line 536 of file inja.hpp.

Member Enumeration Documentation

◆ Associativity

Enumerator
Left 
Right 

Definition at line 539 of file inja.hpp.

539 {
540 Left,
541 Right,
542 };

Constructor & Destructor Documentation

◆ FunctionNode() [1/2]

inja::FunctionNode::FunctionNode ( std::string_view name,
size_t pos )
inlineexplicit

Definition at line 554 of file inja.hpp.

556 , precedence(8)
558 , operation(Op::Callback)
559 , name(name)
560 , number_args(0) {
561 }
size_t pos
Definition inja.hpp:447
ExpressionNode(size_t pos)
Definition inja.hpp:485
Associativity associativity
Definition inja.hpp:545
std::string name
Definition inja.hpp:549
unsigned int precedence
Definition inja.hpp:544

References associativity, inja::FunctionStorage::Callback, inja::ExpressionNode::ExpressionNode(), Left, name, number_args, operation, and precedence.

Here is the call graph for this function:

◆ FunctionNode() [2/2]

inja::FunctionNode::FunctionNode ( Op operation,
size_t pos )
inlineexplicit

Definition at line 562 of file inja.hpp.

565 , number_args(1) {
566 switch (operation) {
567 case Op::Not: {
568 number_args = 1;
569 precedence = 4;
571 } break;
572 case Op::And: {
573 number_args = 2;
574 precedence = 1;
576 } break;
577 case Op::Or: {
578 number_args = 2;
579 precedence = 1;
581 } break;
582 case Op::In: {
583 number_args = 2;
584 precedence = 2;
586 } break;
587 case Op::Equal: {
588 number_args = 2;
589 precedence = 2;
591 } break;
592 case Op::NotEqual: {
593 number_args = 2;
594 precedence = 2;
596 } break;
597 case Op::Greater: {
598 number_args = 2;
599 precedence = 2;
601 } break;
602 case Op::GreaterEqual: {
603 number_args = 2;
604 precedence = 2;
606 } break;
607 case Op::Less: {
608 number_args = 2;
609 precedence = 2;
611 } break;
612 case Op::LessEqual: {
613 number_args = 2;
614 precedence = 2;
616 } break;
617 case Op::Add: {
618 number_args = 2;
619 precedence = 3;
621 } break;
622 case Op::Subtract: {
623 number_args = 2;
624 precedence = 3;
626 } break;
627 case Op::Multiplication: {
628 number_args = 2;
629 precedence = 4;
631 } break;
632 case Op::Division: {
633 number_args = 2;
634 precedence = 4;
636 } break;
637 case Op::Power: {
638 number_args = 2;
639 precedence = 5;
641 } break;
642 case Op::Modulo: {
643 number_args = 2;
644 precedence = 4;
646 } break;
647 case Op::AtId: {
648 number_args = 2;
649 precedence = 8;
651 } break;
652 default: {
653 precedence = 1;
655 }
656 }
657 }

References inja::FunctionStorage::Add, inja::FunctionStorage::And, associativity, inja::FunctionStorage::AtId, inja::FunctionStorage::Division, inja::FunctionStorage::Equal, inja::ExpressionNode::ExpressionNode(), inja::FunctionStorage::Greater, inja::FunctionStorage::GreaterEqual, inja::FunctionStorage::In, Left, inja::FunctionStorage::Less, inja::FunctionStorage::LessEqual, inja::FunctionStorage::Modulo, inja::FunctionStorage::Multiplication, inja::FunctionStorage::Not, inja::FunctionStorage::NotEqual, number_args, operation, inja::FunctionStorage::Or, inja::FunctionStorage::Power, precedence, Right, and inja::FunctionStorage::Subtract.

Here is the call graph for this function:

Member Function Documentation

◆ accept()

void inja::FunctionNode::accept ( NodeVisitor & v) const
inlineoverridevirtual

Reimplemented from inja::ExpressionNode.

Definition at line 659 of file inja.hpp.

659 {
660 v.visit(*this);
661 }

References inja::NodeVisitor::visit().

Here is the call graph for this function:

Member Data Documentation

◆ arguments

◆ associativity

Associativity inja::FunctionNode::associativity

Definition at line 545 of file inja.hpp.

Referenced by FunctionNode(), FunctionNode(), and inja::Parser::parse_expression().

◆ callback

CallbackFunction inja::FunctionNode::callback

Definition at line 552 of file inja.hpp.

Referenced by inja::Parser::parse_expression(), and inja::Renderer::visit().

◆ name

std::string inja::FunctionNode::name

Definition at line 549 of file inja.hpp.

Referenced by FunctionNode(), and inja::Parser::parse_expression().

◆ number_args

int inja::FunctionNode::number_args

◆ operation

Op inja::FunctionNode::operation

◆ precedence

unsigned int inja::FunctionNode::precedence

Definition at line 544 of file inja.hpp.

Referenced by FunctionNode(), FunctionNode(), and inja::Parser::parse_expression().


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