20#ifndef ORES_UTILITY_GENERATION_GENERATION_CONTEXT_HPP
21#define ORES_UTILITY_GENERATION_GENERATION_CONTEXT_HPP
24#include "ores.utility/generation/generation_engine.hpp"
25#include "ores.utility/generation/generation_environment.hpp"
27namespace ores::utility::generation {
39 using entries = generation_environment::entries;
67 std::uint64_t seed()
const {
return engine_->seed(); }
68 boost::uuids::uuid generate_uuid() {
return engine_->generate_uuid(); }
69 int random_int(
int min,
int max) {
return engine_->random_int(min, max); }
70 bool random_bool(
double probability = 0.5) {
71 return engine_->random_bool(probability);
73 std::chrono::system_clock::time_point past_timepoint(
int years_back = 3) {
74 return engine_->past_timepoint(years_back);
76 std::string alphanumeric(std::size_t length) {
77 return engine_->alphanumeric(length);
81 const T& pick(
const std::vector<T>& items) {
82 return engine_->pick(items);
85 template<
typename T, std::
size_t N>
86 const T& pick(
const std::array<T, N>& items) {
87 return engine_->pick(items);
92 std::shared_ptr<const generation_environment>
env);
94 std::shared_ptr<generation_engine> engine_;
95 std::shared_ptr<const generation_environment> env_;
Utilities for reading environment variables.
Definition environment.hpp:31
Combines a generation engine with a scoped environment.
Definition generation_context.hpp:37
const generation_environment & env() const
Returns the generation environment.
Definition generation_context.hpp:64
generation_context(std::uint64_t seed, entries initial={})
Constructs a context with a specific seed and optional entries.
Definition generation_context.cpp:24
generation_context child(entries overrides) const
Creates a child context with the same engine but overridden env.
Definition generation_context.cpp:38
generation_engine & engine()
Returns the generation engine.
Definition generation_context.hpp:59
Random generation engine with seed-controlled repeatability.
Definition generation_engine.hpp:41
Scoped key-value store for generation context data.
Definition generation_environment.hpp:37