xo-umbrella2/xo-alloc/include/xo/alloc/generation.hpp
Roland Conybeare 2c8faf6e43 git subrepo clone git@github.com:Rconybea/xo-alloc.git xo-alloc
subrepo:
  subdir:   "xo-alloc"
  merged:   "fc656313"
upstream:
  origin:   "git@github.com:Rconybea/xo-alloc.git"
  branch:   "main"
  commit:   "fc656313"
git-subrepo:
  version:  "0.4.9"
  origin:   "???"
  commit:   "???"
2026-06-06 22:03:21 -04:00

54 lines
1.2 KiB
C++

/* generation.hpp
*
* author: Roland Conybeare, Aug 2025
*/
#pragma once
#include <ostream>
#include <cstdint>
#include <cassert>
namespace xo {
namespace gc {
enum class generation {
nursery,
tenured,
N
};
constexpr std::size_t gen2int(generation x) { return static_cast<std::size_t>(x); }
const char * gen2str(generation x);
inline std::ostream & operator<<(std::ostream & os, generation x) {
os << gen2str(x);
return os;
}
enum class generation_result {
nursery,
tenured,
not_found
};
inline generation valid_genresult2gen(generation_result x) {
assert(x != generation_result::not_found);
if (x == generation_result::nursery)
return generation::nursery;
else
return generation::tenured;
}
const char * genresult2str(generation_result x);
inline std::ostream & operator<<(std::ostream & os, generation_result x) {
os << genresult2str(x);
return os;
}
} /*namespace gc*/
} /*namespace xo*/
/* end generation.hpp */