CLASSpp Manual
Cosmology reference and developer manual
Loading...
Searching...
No Matches
ncdm_family.h
1#pragma once
2
3#include <memory>
4#include <string>
5#include <vector>
6
7#include "parser.h"
8#include "species/species_build_context.h"
9
18template <class T>
19std::vector<Named> CreateAllNcdmInstances(const SpeciesBuildContext& ctx) {
20 const auto instances = ctx.pfc->instances_with("type", std::string(T::kTypeName));
21
22 std::vector<Named> result;
23 result.reserve(instances.size());
24 for (const auto& name : instances) {
25 // Mark <instance>.type as consumed (instances_with does not mark anything as read)
26 (void) ctx.pfc->get<std::string>(name + ".type");
27
28 auto sp = std::make_unique<T>(ctx.pfc, name, *ctx.ncdm_settings, ctx.pba, ctx.bgm);
29 result.push_back({name, std::move(sp)});
30 }
31 return result;
32}
33
42void SynthesiseNcdmFluidApproximation(FileContent* pfc);
Definition parser.h:21
std::vector< std::string > instances_with(const std::string &field, const std::string &value) const
std::optional< T > get(const std::string &name) const
Definition species_build_context.h:58