namespace senf {
template <class PacketType> class PacketInterpreter;
+
+ void intrusive_ptr_add_ref(PacketInterpreterBase const * p);
+ void intrusive_ptr_release(PacketInterpreterBase const * p);
+
/** \brief Internal: Base packet interpreter class
\internal
template <class Type> typename PacketInterpreter<Type>::ptr parseNextAs();
ptr parseNextAs(factory_t factory, PacketInterpreterBase::optional_range const & range);
- template <class Type> bool is();
template <class Type> typename PacketInterpreter<Type>::ptr as();
ptr append(ptr packet);
friend class detail::PacketImpl;
friend class intrusive_refcount_base;
template <class PacketType> friend class PacketInterpreter;
- friend class detail::packet::test::TestDriver;
+ friend struct detail::packet::test::TestDriver;
friend class PacketParserBase;
friend void senf::intrusive_ptr_add_ref(PacketInterpreterBase const *);
friend void senf::intrusive_ptr_release(PacketInterpreterBase const *);
};
- void intrusive_ptr_add_ref(PacketInterpreterBase const * p);
- void intrusive_ptr_release(PacketInterpreterBase const * p);
-
/** \brief Internal: Concrete packet interpreter
\internal
static const FactoryImpl factory_;
- friend class detail::packet::test::TestDriver;
+ friend struct detail::packet::test::TestDriver;
friend class PacketInterpreterBase;
- friend class FactoryImpl;
+ friend struct FactoryImpl;
};
/** \brief Invalid packet chain operation