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)
 AstNode (const AstNode &)=default
AstNodeoperator= (const AstNode &)=default
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 508 of file inja.hpp.

Member Typedef Documentation

◆ Op

Definition at line 509 of file inja.hpp.

Member Enumeration Documentation

◆ Associativity

Enumerator
Left 
Right 

Definition at line 512 of file inja.hpp.

512 {
513 Left,
514 Right,
515 };

Constructor & Destructor Documentation

◆ FunctionNode() [1/2]

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

Definition at line 527 of file inja.hpp.

529 , precedence(8)
531 , operation(Op::Callback)
532 , name(name)
533 , number_args(0) {
534 }
size_t pos
Definition inja.hpp:418
ExpressionNode(size_t pos)
Definition inja.hpp:458
Associativity associativity
Definition inja.hpp:518
std::string name
Definition inja.hpp:522
unsigned int precedence
Definition inja.hpp:517

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 535 of file inja.hpp.

538 , number_args(1) {
539 switch (operation) {
540 case Op::Not: {
541 number_args = 1;
542 precedence = 4;
544 } break;
545 case Op::And: {
546 number_args = 2;
547 precedence = 1;
549 } break;
550 case Op::Or: {
551 number_args = 2;
552 precedence = 1;
554 } break;
555 case Op::In: {
556 number_args = 2;
557 precedence = 2;
559 } break;
560 case Op::Equal: {
561 number_args = 2;
562 precedence = 2;
564 } break;
565 case Op::NotEqual: {
566 number_args = 2;
567 precedence = 2;
569 } break;
570 case Op::Greater: {
571 number_args = 2;
572 precedence = 2;
574 } break;
575 case Op::GreaterEqual: {
576 number_args = 2;
577 precedence = 2;
579 } break;
580 case Op::Less: {
581 number_args = 2;
582 precedence = 2;
584 } break;
585 case Op::LessEqual: {
586 number_args = 2;
587 precedence = 2;
589 } break;
590 case Op::Add: {
591 number_args = 2;
592 precedence = 3;
594 } break;
595 case Op::Subtract: {
596 number_args = 2;
597 precedence = 3;
599 } break;
600 case Op::Multiplication: {
601 number_args = 2;
602 precedence = 4;
604 } break;
605 case Op::Division: {
606 number_args = 2;
607 precedence = 4;
609 } break;
610 case Op::Power: {
611 number_args = 2;
612 precedence = 5;
614 } break;
615 case Op::Modulo: {
616 number_args = 2;
617 precedence = 4;
619 } break;
620 case Op::AtId: {
621 number_args = 2;
622 precedence = 8;
624 } break;
625 default: {
626 precedence = 1;
628 }
629 }
630 }

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 632 of file inja.hpp.

632 {
633 v.visit(*this);
634 }

References inja::NodeVisitor::visit().

Here is the call graph for this function:

Member Data Documentation

◆ arguments

◆ associativity

Associativity inja::FunctionNode::associativity

Definition at line 518 of file inja.hpp.

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

◆ callback

CallbackFunction inja::FunctionNode::callback

Definition at line 525 of file inja.hpp.

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

◆ name

std::string inja::FunctionNode::name

Definition at line 522 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 517 of file inja.hpp.

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


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