+class static_length_blob_type : public type {
+public:
+ enum class role {
+ /* Packet header field class specific role. */
+ TRACE_CLASS_UUID,
+ };
+
+ using roles = std::vector<role>;
+
+ static_length_blob_type(unsigned int alignment, uint64_t in_length_bytes, roles roles = {});
+
+ virtual void accept(type_visitor& visitor) const override final;
+
+ const uint64_t length_bytes;
+ const roles roles_;
+
+private:
+ virtual bool _is_equal(const type& base_other) const noexcept override final;
+};
+
+class dynamic_length_blob_type : public type {
+public:
+ dynamic_length_blob_type(unsigned int alignment, std::string length_field_name);
+
+ virtual void accept(type_visitor& visitor) const override final;
+
+ const std::string length_field_name;
+
+private:
+ virtual bool _is_equal(const type& base_other) const noexcept override final;
+};
+