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 , Capitalize , Default ,
  DivisibleBy , Even , Exists , ExistsInObject ,
  First , Float , Int , IsArray ,
  IsBoolean , IsFloat , IsInteger , IsNumber ,
  IsObject , IsString , Last , Length ,
  Lower , Max , Min , Odd ,
  Range , Replace , 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 127 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 
Capitalize 
Default 
DivisibleBy 
Even 
Exists 
ExistsInObject 
First 
Float 
Int 
IsArray 
IsBoolean 
IsFloat 
IsInteger 
IsNumber 
IsObject 
IsString 
Last 
Length 
Lower 
Max 
Min 
Odd 
Range 
Replace 
Round 
Sort 
Upper 
Super 
Join 
Callback 
None 

Definition at line 129 of file inja.hpp.

129 {
130 Not,
131 And,
132 Or,
133 In,
134 Equal,
135 NotEqual,
136 Greater,
137 GreaterEqual,
138 Less,
139 LessEqual,
140 Add,
141 Subtract,
142 Multiplication,
143 Division,
144 Power,
145 Modulo,
146 AtId,
147 At,
148 Capitalize,
149 Default,
150 DivisibleBy,
151 Even,
152 Exists,
153 ExistsInObject,
154 First,
155 Float,
156 Int,
157 IsArray,
158 IsBoolean,
159 IsFloat,
160 IsInteger,
161 IsNumber,
162 IsObject,
163 IsString,
164 Last,
165 Length,
166 Lower,
167 Max,
168 Min,
169 Odd,
170 Range,
171 Replace,
172 Round,
173 Sort,
174 Upper,
175 Super,
176 Join,
177 Callback,
178 None,
179 };

Member Function Documentation

◆ add_builtin()

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

Definition at line 228 of file inja.hpp.

228 {
229 function_storage.emplace(std::make_pair(static_cast<std::string>(name), num_args), FunctionData{op});
230 }
std::map< std::pair< std::string, int >, FunctionData > function_storage
Definition inja.hpp:193

References function_storage, and inja::FunctionStorage::FunctionData::FunctionData().

Here is the call graph for this function:

◆ add_callback()

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

Definition at line 232 of file inja.hpp.

232 {
233 function_storage.emplace(std::make_pair(static_cast<std::string>(name), num_args), FunctionData{Operation::Callback, callback});
234 }

References Callback, function_storage, and inja::FunctionStorage::FunctionData::FunctionData().

Referenced by inja::Environment::add_callback(), and inja::Environment::add_void_callback().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ find_function()

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

Definition at line 236 of file inja.hpp.

236 {
237 auto it = function_storage.find(std::make_pair(static_cast<std::string>(name), num_args));
238 if (it != function_storage.end()) {
239 return it->second;
240
241 // Find variadic function
242 } else if (num_args > 0) {
243 it = function_storage.find(std::make_pair(static_cast<std::string>(name), VARIADIC));
244 if (it != function_storage.end()) {
245 return it->second;
246 }
247 }
248
250 }
const int VARIADIC
Definition inja.hpp:191

References function_storage, inja::FunctionStorage::FunctionData::FunctionData(), None, and VARIADIC.

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

Here is the call graph for this function:
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 193 of file inja.hpp.

193 {
194 {std::make_pair("at", 2), FunctionData{Operation::At}},
195 {std::make_pair("capitalize", 1), FunctionData{Operation::Capitalize}},
196 {std::make_pair("default", 2), FunctionData{Operation::Default}},
197 {std::make_pair("divisibleBy", 2), FunctionData{Operation::DivisibleBy}},
198 {std::make_pair("even", 1), FunctionData{Operation::Even}},
199 {std::make_pair("exists", 1), FunctionData{Operation::Exists}},
200 {std::make_pair("existsIn", 2), FunctionData{Operation::ExistsInObject}},
201 {std::make_pair("first", 1), FunctionData{Operation::First}},
202 {std::make_pair("float", 1), FunctionData{Operation::Float}},
203 {std::make_pair("int", 1), FunctionData{Operation::Int}},
204 {std::make_pair("isArray", 1), FunctionData{Operation::IsArray}},
205 {std::make_pair("isBoolean", 1), FunctionData{Operation::IsBoolean}},
206 {std::make_pair("isFloat", 1), FunctionData{Operation::IsFloat}},
207 {std::make_pair("isInteger", 1), FunctionData{Operation::IsInteger}},
208 {std::make_pair("isNumber", 1), FunctionData{Operation::IsNumber}},
209 {std::make_pair("isObject", 1), FunctionData{Operation::IsObject}},
210 {std::make_pair("isString", 1), FunctionData{Operation::IsString}},
211 {std::make_pair("last", 1), FunctionData{Operation::Last}},
212 {std::make_pair("length", 1), FunctionData{Operation::Length}},
213 {std::make_pair("lower", 1), FunctionData{Operation::Lower}},
214 {std::make_pair("max", 1), FunctionData{Operation::Max}},
215 {std::make_pair("min", 1), FunctionData{Operation::Min}},
216 {std::make_pair("odd", 1), FunctionData{Operation::Odd}},
217 {std::make_pair("range", 1), FunctionData{Operation::Range}},
218 {std::make_pair("replace", 3), FunctionData{Operation::Replace}},
219 {std::make_pair("round", 2), FunctionData{Operation::Round}},
220 {std::make_pair("sort", 1), FunctionData{Operation::Sort}},
221 {std::make_pair("upper", 1), FunctionData{Operation::Upper}},
222 {std::make_pair("super", 0), FunctionData{Operation::Super}},
223 {std::make_pair("super", 1), FunctionData{Operation::Super}},
224 {std::make_pair("join", 2), FunctionData{Operation::Join}},
225 };

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

◆ VARIADIC

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

Definition at line 191 of file inja.hpp.

191{-1};

Referenced by find_function().


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