xo-gc stack: genfacet for Collector + facet registry bugfix

This commit is contained in:
Roland Conybeare 2026-03-27 22:33:21 -04:00
commit 53afef9626
11 changed files with 559 additions and 425 deletions

View file

@ -8,9 +8,7 @@ set(SELF_SRCS
CollectorTypeRegistry.cpp
facet/ICollector2_Any.cpp
ICollector_Any.cpp
facet/ICollector_Any.cpp
IGCObject_Any.cpp
AAllocator.cpp

View file

@ -1,40 +0,0 @@
/** @file ICollector_Any.cpp
*
* @author Roland Conybeare, Dec 2025
**/
#include "gc/ICollector_Any.hpp"
#include <iostream>
#include <exception>
namespace xo {
using xo::facet::DVariantPlaceholder;
using xo::facet::typeseq;
using xo::facet::valid_facet_implementation;
namespace mm {
void
ICollector_Any::_fatal() {
/* control here on uninitialized ICollector_Any.
* Initialized instance will have specific implementation type
* e.g. ICollector_Xfer<DCollector>
*/
std::cerr << "fatal"
<< ": attempt to call uninitialized"
<< " ICollector_Any method"
<< std::endl;
std::terminate();
}
typeseq
ICollector_Any::s_typeseq = typeseq::id<DVariantPlaceholder>();
bool
ICollector_Any::_valid = valid_facet_implementation<ACollector, ICollector_Any>();
} /*namespace mm*/
} /*namespace xo*/
/** end ICollector_Any.cpp */

View file

@ -1,78 +0,0 @@
/** @file ICollector2_Any.cpp
*
**/
#include "gc/ICollector2_Any.hpp"
#include <iostream>
#include <exception>
namespace xo {
namespace mm {
using xo::facet::DVariantPlaceholder;
using xo::facet::typeseq;
using xo::facet::valid_facet_implementation;
void
ICollector2_Any::_fatal()
{
/* control here on uninitialized IAllocator_Any.
* Initialized instance will have specific implementation type
*/
std::cerr << "fatal"
<< ": attempt to call uninitialized"
<< " ICollector2_Any method"
<< std::endl;
std::terminate();
}
typeseq
ICollector2_Any::s_typeseq = typeseq::id<DVariantPlaceholder>();
bool
ICollector2_Any::_valid
= valid_facet_implementation<ACollector2, ICollector2_Any>();
// nonconst methods
auto
ICollector2_Any::install_type(Opaque, const AGCObject &) -> bool
{
_fatal();
}
auto
ICollector2_Any::add_gc_root_poly(Opaque, obj<AGCObject> *) -> void
{
_fatal();
}
auto
ICollector2_Any::remove_gc_root_poly(Opaque, obj<AGCObject> *) -> void
{
_fatal();
}
auto
ICollector2_Any::request_gc(Opaque, Generation) -> void
{
_fatal();
}
auto
ICollector2_Any::assign_member(Opaque, void *, obj<AGCObject> *, obj<AGCObject> &) -> void
{
_fatal();
}
auto
ICollector2_Any::forward_inplace(Opaque, AGCObject *, void **) -> void
{
_fatal();
}
} /*namespace mm*/
} /*namespace xo*/
/* end ICollector2_Any.cpp */

View file

@ -0,0 +1,78 @@
/** @file ICollector_Any.cpp
*
**/
#include "gc/ICollector_Any.hpp"
#include <iostream>
#include <exception>
namespace xo {
namespace mm {
using xo::facet::DVariantPlaceholder;
using xo::facet::typeseq;
using xo::facet::valid_facet_implementation;
void
ICollector_Any::_fatal()
{
/* control here on uninitialized IAllocator_Any.
* Initialized instance will have specific implementation type
*/
std::cerr << "fatal"
<< ": attempt to call uninitialized"
<< " ICollector_Any method"
<< std::endl;
std::terminate();
}
typeseq
ICollector_Any::s_typeseq = typeseq::id<DVariantPlaceholder>();
bool
ICollector_Any::_valid
= valid_facet_implementation<ACollector, ICollector_Any>();
// nonconst methods
auto
ICollector_Any::install_type(Opaque, const AGCObject &) -> bool
{
_fatal();
}
auto
ICollector_Any::add_gc_root_poly(Opaque, obj<AGCObject> *) -> void
{
_fatal();
}
auto
ICollector_Any::remove_gc_root_poly(Opaque, obj<AGCObject> *) -> void
{
_fatal();
}
auto
ICollector_Any::request_gc(Opaque, Generation) -> void
{
_fatal();
}
auto
ICollector_Any::assign_member(Opaque, void *, obj<AGCObject> *, obj<AGCObject> &) -> void
{
_fatal();
}
auto
ICollector_Any::forward_inplace(Opaque, AGCObject *, void **) -> void
{
_fatal();
}
} /*namespace mm*/
} /*namespace xo*/
/* end ICollector_Any.cpp */