35 for (
ptr i (
next()); i; i = i->next())
37 pi->impl().assignAnnotations(
impl());
52 ptr rv (packet->appendClone(&
impl(), *r));
53 rv->data().resize(packet->data().size());
54 std::copy(packet->data().begin(), packet->data().end(), rv->data().begin());
56 for (
ptr p (packet->next()) ; p ; p = p->next())
57 p->appendClone(&
impl(), packet->data().
begin(), rv->data().begin());
74 detail::AnnotationRegistry::instance().
begin() != detail::AnnotationRegistry::instance().
end()) {
75 os <<
"Annotations:\n";
79 for (
ptr i (
next()); i; i = i->next())
83 os <<
"[Exception: " << e.
message() <<
"]\n";
89 os <<
" interpreter @" <<
this <<
" refcount=" <<
refcount() << std::endl;
102 for (
ptr i (other); i.get() !=
this && i.get(); i = i->prev())
109 prefix_ void senf::PacketInterpreterBase::add_ref()
116 prefix_ void senf::PacketInterpreterBase::release()
void truncateInterpreters(PacketInterpreterBase *p)
Internal: Keep PacketImpl instance alive.
void dump(std::ostream &os, DumpPacketAnnotations_t dumpAnnotationsSwitch)
void copy(ListParser< ListPolicy > const &listParser, OutputIterator result)
detail::PacketImpl & impl() const
PacketInterpreterBase * nextP()
void dumpAnnotations(std::ostream &os)
detail::PacketImpl * impl_
Need to make this protected so we can change it in the derived class.
iterator begin() const
Return iterator to beginning.
Internal: Base packet interpreter class.
void finalizeTo(ptr other)
iterator end() const
Return iterator to end.
Invalid packet chain operation.
Internal: Packet data storage.
senf::detail::packet::smart_pointer< PacketInterpreterBase >::ptr_t ptr
ptr appendClone(detail::PacketImpl *impl, iterator base, iterator new_base)
#define SENF_ASSERT(x, comment)
boost::optional< range > optional_range
std::string message() const
void memDebug(std::ostream &os)
refcount_t refcount() const
optional_range nextPacketRange()