282 {
283 if (
N > 0 && inputs.size() !=
N) {
284 error<std::invalid_argument>(
285 Journal::Component::Nodes, Journal::Context::Init,
286 std::source_location::current(),
287 "CompositeOpNode<{}> requires exactly {} inputs, got {}",
288 N,
N, inputs.size());
289 }
290
291 if (inputs.size() < 2) {
292 error<std::invalid_argument>(
293 Journal::Component::Nodes, Journal::Context::Init,
294 std::source_location::current(),
295 "CompositeOpNode requires at least 2 inputs, got {}",
296 inputs.size());
297 }
298
299 for (size_t i = 0; i < inputs.size(); ++i) {
300 if (!inputs[i]) {
301 error<std::invalid_argument>(
302 Journal::Component::Nodes, Journal::Context::Init,
303 std::source_location::current(),
304 "CompositeOpNode input at index {} is null", i);
305 }
306 }
307 }
#define N(method_name, full_type_name)