# HG changeset patch
# Node ID 8dd5cee2eb02
# Parent  befed724fe43
diff --git a/libpurple/circularbuffer.h b/libpurple/circularbuffer.h
--- a/libpurple/circularbuffer.h
+++ b/libpurple/circularbuffer.h
@@ -32,6 +32,8 @@
 G_BEGIN_DECLS
 
 #define PURPLE_TYPE_CIRCULAR_BUFFER (purple_circular_buffer_get_type())
+
+PURPLE_AVAILABLE_IN_3_0
 G_DECLARE_DERIVABLE_TYPE(PurpleCircularBuffer, purple_circular_buffer, PURPLE,
                          CIRCULAR_BUFFER, GObject)
 
diff --git a/libpurple/purpleaccountoption.h b/libpurple/purpleaccountoption.h
--- a/libpurple/purpleaccountoption.h
+++ b/libpurple/purpleaccountoption.h
@@ -46,6 +46,7 @@ typedef struct _PurpleAccountOption		Pur
 
 G_BEGIN_DECLS
 
+PURPLE_AVAILABLE_IN_ALL
 GType purple_account_option_get_type(void);
 
 /**
diff --git a/libpurple/purplechatuser.h b/libpurple/purplechatuser.h
--- a/libpurple/purplechatuser.h
+++ b/libpurple/purplechatuser.h
@@ -36,6 +36,8 @@
  * PurpleChatUser:
  *
  * Structure representing a chat user instance.
+ *
+ * Since: 3.0.0
  */
 
 /**
@@ -49,6 +51,8 @@
  * @PURPLE_CHAT_USER_AWAY:    Currently away.
  *
  * Flags applicable to users in Chats.
+ *
+ * Since: 3.0.0
  */
 typedef enum /*< flags >*/
 {
@@ -62,6 +66,8 @@ typedef enum /*< flags >*/
 } PurpleChatUserFlags;
 
 #define PURPLE_TYPE_CHAT_USER purple_chat_user_get_type()
+
+PURPLE_AVAILABLE_IN_3_0
 G_DECLARE_FINAL_TYPE(PurpleChatUser, purple_chat_user, PURPLE, CHAT_USER,
                      GObject)
 
diff --git a/libpurple/purpleconversation.h b/libpurple/purpleconversation.h
--- a/libpurple/purpleconversation.h
+++ b/libpurple/purpleconversation.h
@@ -26,7 +26,11 @@
 #include <glib.h>
 #include <glib-object.h>
 
+#include "purpleversion.h"
+
 #define PURPLE_TYPE_CONVERSATION (purple_conversation_get_type())
+
+PURPLE_AVAILABLE_IN_ALL
 G_DECLARE_DERIVABLE_TYPE(PurpleConversation, purple_conversation, PURPLE,
                          CONVERSATION, GObject)
 
@@ -34,7 +38,6 @@ G_DECLARE_DERIVABLE_TYPE(PurpleConversat
 #include "purplecontactinfo.h"
 #include "purpleconversationmember.h"
 #include "purplemessage.h"
-#include "purpleversion.h"
 
 /**
  * PurpleConversationUpdateType:
diff --git a/libpurple/purplemessage.h b/libpurple/purplemessage.h
--- a/libpurple/purplemessage.h
+++ b/libpurple/purplemessage.h
@@ -54,11 +54,14 @@ G_BEGIN_DECLS
  * @PURPLE_MESSAGE_IMAGES: Message contains images.
  * @PURPLE_MESSAGE_NOTIFY: Message is a notification.
  * @PURPLE_MESSAGE_NO_LINKIFY: Message should not be auto-linkified.
+ *                             Since: 2.1.0
  * @PURPLE_MESSAGE_INVISIBLE: Message should not be displayed.
+ *                            Since: 2.2.0
  * @PURPLE_MESSAGE_REMOTE_SEND: Message sent from another location, not an echo
  *                              of a local one.
  *                              Since: 2.12.0
  * @PURPLE_MESSAGE_FORWARDED: The message has been forward to the recipient.
+ *                            Since: 3.0.0
  *
  * Flags applicable to a message. Most will have send, recv or system.
  */
@@ -78,8 +81,8 @@ typedef enum /*< flags >*/
 	PURPLE_MESSAGE_NOTIFY       = 1 << 11,
 	PURPLE_MESSAGE_NO_LINKIFY PURPLE_AVAILABLE_ENUMERATOR_IN_2_1 = 1 << 12,
 	PURPLE_MESSAGE_INVISIBLE PURPLE_AVAILABLE_ENUMERATOR_IN_2_2 = 1 << 13,
-	PURPLE_MESSAGE_REMOTE_SEND  = 1 << 14,
-	PURPLE_MESSAGE_FORWARDED    = 1 << 15,
+	PURPLE_MESSAGE_REMOTE_SEND PURPLE_AVAILABLE_ENUMERATOR_IN_2_12 = 1 << 14,
+	PURPLE_MESSAGE_FORWARDED PURPLE_AVAILABLE_ENUMERATOR_IN_3_0 = 1 << 15,
 } PurpleMessageFlags;
 
 /**
diff --git a/libpurple/purpleprotocol.h b/libpurple/purpleprotocol.h
--- a/libpurple/purpleprotocol.h
+++ b/libpurple/purpleprotocol.h
@@ -84,14 +84,18 @@ G_DECLARE_DERIVABLE_TYPE(PurpleProtocol,
  *           to this protocol.<sbr/>
  *           Used as a hint that unknown commands should not be sent as
  *           messages.
+ *           Since: 2.1.0
  * @OPT_PROTO_INVITE_MESSAGE: Indicates that this protocol supports sending a
  *           user-supplied message along with an invitation.
+ *           Since: 2.8.0
  * @OPT_PROTO_AUTHORIZATION_GRANTED_MESSAGE: Indicates that this protocol
  *           supports sending a user-supplied message along with an
  *           authorization acceptance.
+ *           Since: 3.0.0
  * @OPT_PROTO_AUTHORIZATION_DENIED_MESSAGE: Indicates that this protocol
  *           supports sending a user-supplied message along with an
  *           authorization denial.
+ *           Since: 3.0.0
  *
  * Protocol options
  *
@@ -107,9 +111,9 @@ typedef enum  /*< flags >*/
 	OPT_PROTO_USE_POINTSIZE = 0x00000100,
 	OPT_PROTO_REGISTER_NOSCREENNAME = 0x00000200,
 	OPT_PROTO_SLASH_COMMANDS_NATIVE PURPLE_AVAILABLE_ENUMERATOR_IN_2_1 = 0x00000400,
-	OPT_PROTO_INVITE_MESSAGE = 0x00000800,
-	OPT_PROTO_AUTHORIZATION_GRANTED_MESSAGE = 0x00001000,
-	OPT_PROTO_AUTHORIZATION_DENIED_MESSAGE = 0x00002000,
+	OPT_PROTO_INVITE_MESSAGE PURPLE_AVAILABLE_ENUMERATOR_IN_2_8 = 0x00000800,
+	OPT_PROTO_AUTHORIZATION_GRANTED_MESSAGE PURPLE_AVAILABLE_ENUMERATOR_IN_3_0 = 0x00001000,
+	OPT_PROTO_AUTHORIZATION_DENIED_MESSAGE PURPLE_AVAILABLE_ENUMERATOR_IN_3_0 = 0x00002000,
 } PurpleProtocolOptions;
 
 /**
diff --git a/libpurple/purpleproxyinfo.h b/libpurple/purpleproxyinfo.h
--- a/libpurple/purpleproxyinfo.h
+++ b/libpurple/purpleproxyinfo.h
@@ -53,6 +53,8 @@ typedef enum {
 G_BEGIN_DECLS
 
 #define PURPLE_TYPE_PROXY_INFO (purple_proxy_info_get_type())
+
+PURPLE_AVAILABLE_IN_3_0
 G_DECLARE_FINAL_TYPE(PurpleProxyInfo, purple_proxy_info, PURPLE, PROXY_INFO,
                      GObject)
 
diff --git a/libpurple/purpleversion.h b/libpurple/purpleversion.h
--- a/libpurple/purpleversion.h
+++ b/libpurple/purpleversion.h
@@ -239,8 +239,10 @@
 
 #if PURPLE_VERSION_MAX_ALLOWED < PURPLE_VERSION_2_8
 #define PURPLE_AVAILABLE_IN_2_8 PURPLE_UNAVAILABLE(2, 8)
+#define PURPLE_AVAILABLE_ENUMERATOR_IN_2_8 PURPLE_UNAVAILABLE_ENUMERATOR(2, 8)
 #else
 #define PURPLE_AVAILABLE_IN_2_8 _PURPLE_EXTERN
+#define PURPLE_AVAILABLE_ENUMERATOR_IN_2_8
 #endif
 
 /**
@@ -260,6 +262,24 @@
 #endif
 
 /**
+ * PURPLE_VERSION_2_12:
+ *
+ * A macro that evaluates to the 2.12 version of libpurple, in a format that
+ * can be used by the C pre-processor.
+ *
+ * Since: 3.0.0
+ */
+#define PURPLE_VERSION_2_12 (G_ENCODE_VERSION(2, 12))
+
+#if PURPLE_VERSION_MAX_ALLOWED < PURPLE_VERSION_2_12
+#define PURPLE_AVAILABLE_IN_2_12 PURPLE_UNAVAILABLE(2, 12)
+#define PURPLE_AVAILABLE_ENUMERATOR_IN_2_12 PURPLE_UNAVAILABLE_ENUMERATOR(2, 12)
+#else
+#define PURPLE_AVAILABLE_IN_2_12 _PURPLE_EXTERN
+#define PURPLE_AVAILABLE_ENUMERATOR_IN_2_12
+#endif
+
+/**
  * PURPLE_VERSION_2_14:
  *
  * A macro that evaluates to the 2.14 version of libpurple, in a format that
@@ -338,7 +358,7 @@ const char *purple_version_check(guint r
  * #PURPLE_MAJOR_VERSION, which expands at compile time to the major version of
  * libpurple being compiled against.
  */
-extern const guint purple_major_version;
+PURPLE_VAR const guint purple_major_version;
 
 /**
  * purple_minor_version:
@@ -347,7 +367,7 @@ extern const guint purple_major_version;
  * #PURPLE_MINOR_VERSION, which expands at compile time to the minor version of
  * libpurple being compiled against.
  */
-extern const guint purple_minor_version;
+PURPLE_VAR const guint purple_minor_version;
 
 /**
  * purple_micro_version:
@@ -356,7 +376,7 @@ extern const guint purple_minor_version;
  * #PURPLE_MICRO_VERSION, which expands at compile time to the micro version of
  * libpurple being compiled against.
  */
-extern const guint purple_micro_version;
+PURPLE_VAR const guint purple_micro_version;
 
 G_END_DECLS
 
diff --git a/libpurple/savedstatuses.h b/libpurple/savedstatuses.h
--- a/libpurple/savedstatuses.h
+++ b/libpurple/savedstatuses.h
@@ -80,6 +80,7 @@ G_BEGIN_DECLS
 /* TODO Boxing of PurpleSavedStatus is a temporary solution to having a GType
  *      for saved statuses. This should rather be a GObject instead of a GBoxed.
  */
+PURPLE_AVAILABLE_IN_ALL
 GType purple_savedstatus_get_type(void);
 
 /**
diff --git a/libpurple/status.h b/libpurple/status.h
--- a/libpurple/status.h
+++ b/libpurple/status.h
@@ -503,6 +503,7 @@ GValue *purple_status_attribute_get_valu
  *
  * Returns: The #GType for #PurpleStatus.
  */
+PURPLE_AVAILABLE_IN_ALL
 G_DECLARE_FINAL_TYPE(PurpleStatus, purple_status, PURPLE, STATUS, GObject)
 
 /**
diff --git a/libpurple/xfer.h b/libpurple/xfer.h
--- a/libpurple/xfer.h
+++ b/libpurple/xfer.h
@@ -86,6 +86,7 @@ G_BEGIN_DECLS
 
 #define PURPLE_TYPE_XFER             (purple_xfer_get_type())
 
+PURPLE_AVAILABLE_IN_ALL
 G_DECLARE_DERIVABLE_TYPE(PurpleXfer, purple_xfer, PURPLE, XFER, GObject)
 
 /**
@@ -860,6 +861,8 @@ PurpleXferUiOps *purple_xfers_get_ui_ops
  *****************************************************************************/
 
 #define PURPLE_TYPE_PROTOCOL_XFER (purple_protocol_xfer_get_type())
+
+PURPLE_AVAILABLE_IN_3_0
 G_DECLARE_INTERFACE(PurpleProtocolXfer, purple_protocol_xfer, PURPLE,
                     PROTOCOL_XFER, PurpleProtocol)
 
@@ -872,6 +875,8 @@ G_DECLARE_INTERFACE(PurpleProtocolXfer, 
  * The protocol file transfer interface.
  *
  * This interface provides file transfer callbacks for the protocol.
+ *
+ * Since: 3.0.0
  */
 struct _PurpleProtocolXferInterface {
 	/*< private >*/
