Header File
Code:
auto ptr = T::remove_resource(idx);
assert(ptr.has_value());
T::Dtor(*ptr);
auto objptr = T::remove_resource(arg0);
assert(objptr.has_value());
func(T::Owned(*objptr));
extern "C" int32_t X5BexportX5DfooX3AfooX2FresourcesX00X5Bresource_newX5Dr(uint8_t* rep) {
return exports::foo::foo::resources::R::store_resource(std::move(rep));
}
extern "C" void X5BexportX5DfooX3AfooX2FresourcesX00X5Bresource_dropX5Dr(int32_t idx) {
exports::foo::foo::resources::R::remove_resource(idx);
}
auto rep = o.take_rep();
R::remove_resource(o.get_handle());
consume(rep);
Header File
R::OwnedR::Owned&&argsCode:
X00X5Bresource_dropX5Dreturn result0.release()->get_handle();(**T::lookup_resource(arg0))Dtorshould become a normal dtor withif (this->rep) X5BdtorX5Dr(this->rep);this->index = ret; this->rep = *lookup_resource(ret);wit::ResourceExportBase.get()and use get_rep()&&ResourceExportBasebased move ctors