Since clang21 is a lot more strict about what phase things are
available in, declare the `intrusive_ptr` free functions in
`MessageRef.h` and make definitions available in `Message.h`.
Signed-off-by: Adam C. Emerson <aemerson@redhat.com>
void encode(uint64_t features, int crcflags, bool skip_header_crc = false);
};
+inline void intrusive_ptr_add_ref(Message* m)
+{
+ m->get();
+}
+
+inline void intrusive_ptr_release(Message* m)
+{
+ m->put();
+}
+
extern Message *decode_message(CephContext *cct,
int crcflags,
ceph_msg_header& header,
template<typename T>
using MURef = std::unique_ptr<T, TOPNSPC::common::UniquePtrDeleter>;
-using MessageRef = MRef<class Message>;
-using MessageConstRef = MConstRef<class Message>;
-using MessageURef = MURef<class Message>;
+class Message;
+
+void intrusive_ptr_add_ref(Message* m);
+void intrusive_ptr_release(Message* m);
+
+using MessageRef = MRef<Message>;
+using MessageConstRef = MConstRef<Message>;
+using MessageURef = MURef<Message>;
/* cd src/messages/ && for f in *; do printf 'class '; basename "$f" .h | tr -d '\n'; printf ';\n'; done >> ../msg/MessageRef.h */