#pragma once #include #include #include #include struct UUIDGeneratorI { virtual std::vector operator()(void) = 0; }; // TODO: templates? struct UUIDGenerator_128_128 final : public UUIDGeneratorI { private: std::array _uuid_namespace; std::minstd_rand _rng{std::random_device{}()}; public: UUIDGenerator_128_128(void); // default randomly initializes namespace UUIDGenerator_128_128(const std::array& uuid_namespace); std::vector operator()(void) override; };