Add plugin (user) version information
[babeltrace.git] / include / babeltrace / plugin / plugin-dev.h
index 5224d466b607d0d8e6442abbe2b4ef15efb0d05d..d65ccce5d07ced2f67e69d3aa4b98374b80e9ab8 100644 (file)
@@ -83,6 +83,15 @@ enum __bt_plugin_descriptor_attribute_type {
        BT_PLUGIN_DESCRIPTOR_ATTRIBUTE_TYPE_AUTHOR              = 2,
        BT_PLUGIN_DESCRIPTOR_ATTRIBUTE_TYPE_LICENSE             = 3,
        BT_PLUGIN_DESCRIPTOR_ATTRIBUTE_TYPE_DESCRIPTION         = 4,
+       BT_PLUGIN_DESCRIPTOR_ATTRIBUTE_TYPE_VERSION             = 5,
+};
+
+/* Plugin (user) version */
+struct __bt_plugin_descriptor_version {
+       uint32_t major;
+       uint32_t minor;
+       uint32_t patch;
+       const char *extra;
 };
 
 /* Plugin attribute (internal use) */
@@ -112,6 +121,9 @@ struct __bt_plugin_descriptor_attribute {
 
                /* BT_PLUGIN_DESCRIPTOR_ATTRIBUTE_TYPE_DESCRIPTION */
                const char *description;
+
+               /* BT_PLUGIN_DESCRIPTOR_ATTRIBUTE_TYPE_VERSION */
+               struct __bt_plugin_descriptor_version version;
        } value;
 } __attribute__((packed));
 
@@ -309,6 +321,21 @@ struct __bt_plugin_component_class_descriptor_attribute {
 #define BT_PLUGIN_DESCRIPTION_WITH_ID(_id, _x) \
        __BT_PLUGIN_DESCRIPTOR_ATTRIBUTE(description, BT_PLUGIN_DESCRIPTOR_ATTRIBUTE_TYPE_DESCRIPTION, _id, _x)
 
+#define __BT_PLUGIN_VERSION_STRUCT_VALUE(_major, _minor, _patch, _extra) \
+       {.major = _major, .minor = _minor, .patch = _patch, .extra = _extra,}
+
+/*
+ * Defines a version attribute attached to a specific plugin descriptor.
+ *
+ * _id:    Plugin descriptor ID (C identifier).
+ * _major: Plugin's major version (uint32_t).
+ * _minor: Plugin's minor version (uint32_t).
+ * _patch: Plugin's patch version (uint32_t).
+ * _extra: Plugin's version extra information (C string).
+ */
+#define BT_PLUGIN_VERSION_WITH_ID(_id, _major, _minor, _patch, _extra) \
+       __BT_PLUGIN_DESCRIPTOR_ATTRIBUTE(version, BT_PLUGIN_DESCRIPTOR_ATTRIBUTE_TYPE_VERSION, _id, __BT_PLUGIN_VERSION_STRUCT_VALUE(_major, _minor, _patch, _extra))
+
 /*
  * Declaration of start and stop symbols of component class descriptors
  * section.
@@ -573,6 +600,17 @@ struct __bt_plugin_component_class_descriptor_attribute {
  */
 #define BT_PLUGIN_DESCRIPTION(_x)      BT_PLUGIN_DESCRIPTION_WITH_ID(auto, _x)
 
+/*
+ * Defines a version attribute attached to the automatic plugin
+ * descriptor.
+ *
+ * _major: Plugin's major version (uint32_t).
+ * _minor: Plugin's minor version (uint32_t).
+ * _patch: Plugin's patch version (uint32_t).
+ * _extra: Plugin's version extra information (C string).
+ */
+#define BT_PLUGIN_VERSION(_major, _minor, _patch, _extra) BT_PLUGIN_VERSION_WITH_ID(auto, _major, _minor, _patch, _extra)
+
 /*
  * Defines a source component class attached to the automatic plugin
  * descriptor. Its ID is the same as its name, hence its name must be a
This page took 0.02684 seconds and 4 git commands to generate.