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

Class for builtin functions and user-defined callbacks. More...

#include <inja.hpp>

Collaboration diagram for inja::FunctionStorage:

Classes

struct  FunctionData

Public Types

enum class  Operation {
  Not , And , Or , In ,
  Equal , NotEqual , Greater , GreaterEqual ,
  Less , LessEqual , Add , Subtract ,
  Multiplication , Division , Power , Modulo ,
  AtId , At , Default , DivisibleBy ,
  Even , Exists , ExistsInObject , First ,
  Float , Int , IsArray , IsBoolean ,
  IsFloat , IsInteger , IsNumber , IsObject ,
  IsString , Last , Length , Lower ,
  Max , Min , Odd , Range ,
  Round , Sort , Upper , Super ,
  Join , Callback , None
}

Public Member Functions

void add_builtin (std::string_view name, int num_args, Operation op)
void add_callback (std::string_view name, int num_args, const CallbackFunction &callback)
FunctionData find_function (std::string_view name, int num_args) const

Private Attributes

const int VARIADIC {-1}
std::map< std::pair< std::string, int >, FunctionDatafunction_storage

Detailed Description

Class for builtin functions and user-defined callbacks.

Definition at line 105 of file inja.hpp.

Member Enumeration Documentation

◆ Operation

Enumerator
Not 
And 
Or 
In 
Equal 
NotEqual 
Greater 
GreaterEqual 
Less 
LessEqual 
Add 
Subtract 
Multiplication 
Division 
Power 
Modulo 
AtId 
At 
Default 
DivisibleBy 
Even 
Exists 
ExistsInObject 
First 
Float 
Int 
IsArray 
IsBoolean 
IsFloat 
IsInteger 
IsNumber 
IsObject 
IsString 
Last 
Length 
Lower 
Max 
Min 
Odd 
Range 
Round 
Sort 
Upper 
Super 
Join 
Callback 
None 

Definition at line 107 of file inja.hpp.

107 {
108 Not,
109 And,
110 Or,
111 In,
112 Equal,
113 NotEqual,
114 Greater,
115 GreaterEqual,
116 Less,
117 LessEqual,
118 Add,
119 Subtract,
120 Multiplication,
121 Division,
122 Power,
123 Modulo,
124 AtId,
125 At,
126 Default,
127 DivisibleBy,
128 Even,
129 Exists,
130 ExistsInObject,
131 First,
132 Float,
133 Int,
134 IsArray,
135 IsBoolean,
136 IsFloat,
137 IsInteger,
138 IsNumber,
139 IsObject,
140 IsString,
141 Last,
142 Length,
143 Lower,
144 Max,
145 Min,
146 Odd,
147 Range,
148 Round,
149 Sort,
150 Upper,
151 Super,
152 Join,
153 Callback,
154 None,
155 };

Member Function Documentation

◆ add_builtin()

void inja::FunctionStorage::add_builtin ( std::string_view name,
int num_args,
Operation op )
inline

Definition at line 202 of file inja.hpp.

202 {
203 function_storage.emplace(std::make_pair(static_cast<std::string>(name), num_args), FunctionData{op});
204 }
std::map< std::pair< std::string, int >, FunctionData > function_storage
Definition inja.hpp:169

References function_storage.

◆ add_callback()

void inja::FunctionStorage::add_callback ( std::string_view name,
int num_args,
const CallbackFunction & callback )
inline

Definition at line 206 of file inja.hpp.

206 {
207 function_storage.emplace(std::make_pair(static_cast<std::string>(name), num_args), FunctionData{Operation::Callback, callback});
208 }

References Callback, and function_storage.

◆ find_function()

FunctionData inja::FunctionStorage::find_function ( std::string_view name,
int num_args ) const
inline

Definition at line 210 of file inja.hpp.

210 {
211 auto it = function_storage.find(std::make_pair(static_cast<std::string>(name), num_args));
212 if (it != function_storage.end()) {
213 return it->second;
214
215 // Find variadic function
216 } else if (num_args > 0) {
217 it = function_storage.find(std::make_pair(static_cast<std::string>(name), VARIADIC));
218 if (it != function_storage.end()) {
219 return it->second;
220 }
221 }
222
224 }
const int VARIADIC
Definition inja.hpp:167

References function_storage, None, and VARIADIC.

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

Here is the caller graph for this function:

Member Data Documentation

◆ function_storage

std::map<std::pair<std::string, int>, FunctionData> inja::FunctionStorage::function_storage
private

Definition at line 169 of file inja.hpp.

169 {
170 {std::make_pair("at", 2), FunctionData{Operation::At}},
171 {std::make_pair("default", 2), FunctionData{Operation::Default}},
172 {std::make_pair("divisibleBy", 2), FunctionData{Operation::DivisibleBy}},
173 {std::make_pair("even", 1), FunctionData{Operation::Even}},
174 {std::make_pair("exists", 1), FunctionData{Operation::Exists}},
175 {std::make_pair("existsIn", 2), FunctionData{Operation::ExistsInObject}},
176 {std::make_pair("first", 1), FunctionData{Operation::First}},
177 {std::make_pair("float", 1), FunctionData{Operation::Float}},
178 {std::make_pair("int", 1), FunctionData{Operation::Int}},
179 {std::make_pair("isArray", 1), FunctionData{Operation::IsArray}},
180 {std::make_pair("isBoolean", 1), FunctionData{Operation::IsBoolean}},
181 {std::make_pair("isFloat", 1), FunctionData{Operation::IsFloat}},
182 {std::make_pair("isInteger", 1), FunctionData{Operation::IsInteger}},
183 {std::make_pair("isNumber", 1), FunctionData{Operation::IsNumber}},
184 {std::make_pair("isObject", 1), FunctionData{Operation::IsObject}},
185 {std::make_pair("isString", 1), FunctionData{Operation::IsString}},
186 {std::make_pair("last", 1), FunctionData{Operation::Last}},
187 {std::make_pair("length", 1), FunctionData{Operation::Length}},
188 {std::make_pair("lower", 1), FunctionData{Operation::Lower}},
189 {std::make_pair("max", 1), FunctionData{Operation::Max}},
190 {std::make_pair("min", 1), FunctionData{Operation::Min}},
191 {std::make_pair("odd", 1), FunctionData{Operation::Odd}},
192 {std::make_pair("range", 1), FunctionData{Operation::Range}},
193 {std::make_pair("round", 2), FunctionData{Operation::Round}},
194 {std::make_pair("sort", 1), FunctionData{Operation::Sort}},
195 {std::make_pair("upper", 1), FunctionData{Operation::Upper}},
196 {std::make_pair("super", 0), FunctionData{Operation::Super}},
197 {std::make_pair("super", 1), FunctionData{Operation::Super}},
198 {std::make_pair("join", 2), FunctionData{Operation::Join}},
199 };

Referenced by add_builtin(), add_callback(), and find_function().

◆ VARIADIC

const int inja::FunctionStorage::VARIADIC {-1}
private

Definition at line 167 of file inja.hpp.

167{-1};

Referenced by find_function().


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