MCPcopy Create free account
hub / github.com/ReversecLabs/C3 / MakeFormElement

Function MakeFormElement

Src/ChannelLinter/FormElement.cpp:203–243  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

201 );
202
203 std::unique_ptr<FormElement> MakeFormElement(json& element)
204 {
205 if (!element.is_object())
206 throw std::invalid_argument { "Form element must be a json object." };
207 if (!element.contains("name"))
208 throw std::invalid_argument{ "Form element must contain 'name' property. \nInvalid element:\n" + element.dump(4) };
209 if (!element.contains("type"))
210 throw std::invalid_argument{ "Form element '" + element["name"].get<std::string>() + "' must contain 'type' property." };
211
212 switch (element["type"].get<FormElement::Type>())
213 {
214 case FormElement::Type::Uint8:
215 return std::make_unique<NumericFormElement<uint8_t>>(element);
216 case FormElement::Type::Uint16:
217 return std::make_unique<NumericFormElement<uint16_t>>(element);
218 case FormElement::Type::Uint32:
219 return std::make_unique<NumericFormElement<uint32_t>>(element);
220 case FormElement::Type::Uint64:
221 return std::make_unique<NumericFormElement<uint64_t>>(element);
222 case FormElement::Type::Int8:
223 return std::make_unique<NumericFormElement<int8_t>>(element);
224 case FormElement::Type::Int16:
225 return std::make_unique<NumericFormElement<int16_t>>(element);
226 case FormElement::Type::Int32:
227 return std::make_unique<NumericFormElement<int32_t>>(element);
228 case FormElement::Type::Int64:
229 return std::make_unique<NumericFormElement<int64_t>>(element);
230 case FormElement::Type::Float:
231 return std::make_unique<NumericFormElement<float>>(element);
232 case FormElement::Type::Boolean:
233 return std::make_unique<BooleanFormElement>(element);
234 case FormElement::Type::String:
235 return std::make_unique<StringFormElement>(element);
236 case FormElement::Type::Ip:
237 return std::make_unique<IpFormElement>(element);
238 case FormElement::Type::Binary:
239 return std::make_unique<BinaryFormElement>(element);
240 default:
241 throw std::runtime_error("Unknown form argument type: \"" + element["type"].get<std::string>() + '"');
242 }
243 }
244}

Callers 1

FormMethod · 0.85

Calls 2

containsMethod · 0.80
dumpMethod · 0.80

Tested by

no test coverage detected