source/model-generator/FieldModelTemplate.cpp (21 lines of code) (raw):
/*
* Copyright (c) Meta Platforms, Inc. and affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/
#include <mariana-trench/JsonValidation.h>
#include <mariana-trench/model-generator/FieldModelTemplate.h>
namespace marianatrench {
FieldModelTemplate::FieldModelTemplate(const FieldModel& field_model)
: field_model_(field_model) {
mt_assert(field_model.field() == nullptr);
}
std::optional<FieldModel> FieldModelTemplate::instantiate(
const Field* field) const {
auto field_model = field_model_.instantiate(field);
return !field_model.empty() ? std::optional<FieldModel>{field_model}
: std::nullopt;
}
FieldModelTemplate FieldModelTemplate::from_json(
const Json::Value& field_model,
Context& context) {
JsonValidation::validate_object(field_model);
return FieldModelTemplate(FieldModel::from_json(
/* field */ nullptr, field_model, context));
}
} // namespace marianatrench