273 {
274 if (
N > 0 && inputs.size() !=
N) {
275 error<std::invalid_argument>(
276 Journal::Component::Nodes, Journal::Context::Init,
277 std::source_location::current(),
278 "CompositeOpNode<{}> requires exactly {} inputs, got {}",
279 N,
N, inputs.size());
280 }
281
282 if (inputs.size() < 2) {
283 error<std::invalid_argument>(
284 Journal::Component::Nodes, Journal::Context::Init,
285 std::source_location::current(),
286 "CompositeOpNode requires at least 2 inputs, got {}",
287 inputs.size());
288 }
289
290 for (size_t i = 0; i < inputs.size(); ++i) {
291 if (!inputs[i]) {
292 error<std::invalid_argument>(
293 Journal::Component::Nodes, Journal::Context::Init,
294 std::source_location::current(),
295 "CompositeOpNode input at index {} is null", i);
296 }
297 }
298 }
#define N(method_name, full_type_name)