docs: convert NULL, TRUE, and FALSE to %NULL, %TRUE, and %FALSE
[platform/upstream/gstreamer.git] / gst / gstplugin.h
index c946041..500be30 100644 (file)
@@ -16,8 +16,8 @@
  *
  * You should have received a copy of the GNU Library General Public
  * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
+ * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
  */
 
 
 
 #include <gst/gstconfig.h>
 
-#include <time.h> /* time_t */
-#include <sys/types.h> /* off_t */
-#include <sys/stat.h> /* off_t */
-#include <gmodule.h>
 #include <gst/gstobject.h>
 #include <gst/gstmacros.h>
 #include <gst/gststructure.h>
 
 G_BEGIN_DECLS
 
+/**
+ * GstPlugin:
+ *
+ * The opaque plugin object
+ */
 typedef struct _GstPlugin GstPlugin;
 typedef struct _GstPluginClass GstPluginClass;
-typedef struct _GstPluginPrivate GstPluginPrivate;
 typedef struct _GstPluginDesc GstPluginDesc;
 
 /**
@@ -80,8 +80,8 @@ typedef enum
  */
 typedef enum
 {
-  GST_PLUGIN_FLAG_CACHED = (1<<0),
-  GST_PLUGIN_FLAG_BLACKLISTED = (1<<1)
+  GST_PLUGIN_FLAG_CACHED      = (GST_OBJECT_FLAG_LAST << 0),
+  GST_PLUGIN_FLAG_BLACKLISTED = (GST_OBJECT_FLAG_LAST << 1)
 } GstPluginFlags;
 
 /**
@@ -95,8 +95,6 @@ typedef enum
  *         the directory
  *
  * Flags used in connection with gst_plugin_add_dependency().
- *
- * Since: 0.10.22
  */
 typedef enum {
   GST_PLUGIN_DEPENDENCY_FLAG_NONE = 0,
@@ -131,9 +129,6 @@ typedef gboolean (*GstPluginInitFunc) (GstPlugin *plugin);
  * user data to be passed to init function (useful for bindings).
  *
  * Returns: %TRUE if plugin initialised successfully
- *
- * Since: 0.10.24
- *
  */
 /* FIXME 0.11: Merge with GstPluginInitFunc */
 typedef gboolean (*GstPluginInitFullFunc) (GstPlugin *plugin, gpointer user_data);
@@ -151,10 +146,10 @@ typedef gboolean (*GstPluginInitFullFunc) (GstPlugin *plugin, gpointer user_data
  * @package: shipped package plugin belongs to
  * @origin: URL to provider of plugin
  * @release_datetime: date time string in ISO 8601 format (or rather, a
- *     subset thereof), or NULL. Allowed are the following formats:
+ *     subset thereof), or %NULL. Allowed are the following formats:
  *     "YYYY-MM-DD" and "YYY-MM-DDTHH:MMZ" (with 'T' a separator and 'Z'
  *     indicating UTC/Zulu time). This field should be set via the
- *     GST_PACKAGE_RELEASE_DATETIME preprocessor macro (Since: 0.10.31)
+ *     GST_PACKAGE_RELEASE_DATETIME preprocessor macro.
  *
  * A plugin should export a variable of this type called plugin_desc. The plugin
  * loader will use the data provided there to initialize the plugin.
@@ -187,43 +182,6 @@ struct _GstPluginDesc {
 #define GST_PLUGIN_CLASS(klass)        (G_TYPE_CHECK_CLASS_CAST ((klass), GST_TYPE_PLUGIN, GstPluginClass))
 #define GST_PLUGIN_CAST(obj)           ((GstPlugin*)(obj))
 
-/**
- * GstPlugin:
- *
- * The plugin object
- */
-struct _GstPlugin {
-  GstObject       object;
-
-  /*< private >*/
-  GstPluginDesc        desc;
-
-  GstPluginDesc *orig_desc;
-
-  unsigned int  flags;
-
-  gchar *      filename;
-  gchar *      basename;       /* base name (non-dir part) of plugin path */
-
-  GModule *    module;         /* contains the module if plugin is loaded */
-
-  off_t         file_size;
-  time_t        file_mtime;
-  gboolean      registered;     /* TRUE when the registry has seen a filename
-                                 * that matches the plugin's basename */
-
-  GstPluginPrivate *priv;
-
-  gpointer _gst_reserved[GST_PADDING];
-};
-
-struct _GstPluginClass {
-  GstObjectClass  object_class;
-
-  /*< private >*/
-  gpointer _gst_reserved[GST_PADDING];
-};
-
 #ifdef GST_PACKAGE_RELEASE_DATETIME
 #define __GST_PACKAGE_RELEASE_DATETIME GST_PACKAGE_RELEASE_DATETIME
 #else
@@ -231,6 +189,34 @@ struct _GstPluginClass {
 #endif
 
 /**
+ * GST_PLUGIN_STATIC_DECLARE:
+ * @name: short, but unique name of the plugin
+ *
+ * This macro can be used to initialize statically linked plugins. It is
+ * necessary to call this macro before the plugin can be used.
+ * It has to be used in combination with GST_PLUGIN_STATIC_REGISTER
+ * and must be placed outside any block to declare the plugin initialization
+ * function.
+ *
+ * Since: 1.2
+ */
+#define GST_PLUGIN_STATIC_DECLARE(name) \
+  extern void G_PASTE(gst_plugin_, G_PASTE(name, _register)) (void)
+
+/**
+ * GST_PLUGIN_STATIC_REGISTER:
+ * @name: short, but unique name of the plugin
+ *
+ * This macro can be used to initialize statically linked plugins. It is
+ * necessary to call this macro before the plugin can be used.
+ * It has to be used in combination with GST_PLUGIN_STATIC_DECLARE and
+ * calls the plugin initialization function.
+ *
+ * Since: 1.2
+ */
+#define GST_PLUGIN_STATIC_REGISTER(name) G_PASTE(gst_plugin_, G_PASTE(name, _register)) ()
+
+/**
  * GST_PLUGIN_DEFINE:
  * @major: major version number of the gstreamer-core that plugin was compiled for
  * @minor: minor version number of the gstreamer-core that plugin was compiled for
@@ -255,12 +241,26 @@ struct _GstPluginClass {
  * If defined, the GST_PACKAGE_RELEASE_DATETIME will also be used for the
  * #GstPluginDesc,release_datetime field.
  */
+#ifdef GST_PLUGIN_BUILD_STATIC
+#define GST_PLUGIN_DEFINE(major,minor,name,description,init,version,license,package,origin)    \
+G_BEGIN_DECLS                                          \
+GST_PLUGIN_EXPORT void G_PASTE(gst_plugin_, G_PASTE(name, _register)) (void);                  \
+                                                       \
+void                                                   \
+G_PASTE(gst_plugin_, G_PASTE(name, _register)) (void)  \
+{                                                      \
+  gst_plugin_register_static (major, minor, G_STRINGIFY(name), \
+      description, init, version, license,             \
+      PACKAGE, package, origin);                       \
+}                                                      \
+G_END_DECLS
+#else /* !GST_PLUGIN_BUILD_STATIC */
 #define GST_PLUGIN_DEFINE(major,minor,name,description,init,version,license,package,origin)    \
 G_BEGIN_DECLS \
 GST_PLUGIN_EXPORT GstPluginDesc gst_plugin_desc = {    \
   major,                                               \
   minor,                                               \
-  name,                                                        \
+  G_STRINGIFY(name),                                    \
   (gchar *) description,                               \
   init,                                                        \
   version,                                             \
@@ -272,12 +272,12 @@ GST_PLUGIN_EXPORT GstPluginDesc gst_plugin_desc = {       \
   GST_PADDING_INIT                                     \
 }; \
 G_END_DECLS
+#endif /* GST_PLUGIN_BUILD_STATIC */
 
 /**
  * GST_LICENSE_UNKNOWN:
  *
- * To be used in GST_PLUGIN_DEFINE or GST_PLUGIN_DEFINE_STATIC if usure about
- * the licence.
+ * To be used in GST_PLUGIN_DEFINE if unsure about the licence.
  */
 #define GST_LICENSE_UNKNOWN "unknown"
 
@@ -291,7 +291,7 @@ G_END_DECLS
  * A function that can be used with e.g. gst_registry_plugin_filter()
  * to get a list of plugins that match certain criteria.
  *
- * Returns: TRUE for a positive match, FALSE otherwise
+ * Returns: %TRUE for a positive match, %FALSE otherwise
  */
 typedef gboolean        (*GstPluginFilter)              (GstPlugin *plugin,
                                                          gpointer user_data);
@@ -329,14 +329,12 @@ const gchar*              gst_plugin_get_license          (GstPlugin *plugin);
 const gchar*           gst_plugin_get_source           (GstPlugin *plugin);
 const gchar*           gst_plugin_get_package          (GstPlugin *plugin);
 const gchar*           gst_plugin_get_origin           (GstPlugin *plugin);
+const gchar*           gst_plugin_get_release_date_string (GstPlugin *plugin);
 const GstStructure*    gst_plugin_get_cache_data       (GstPlugin * plugin);
 void                   gst_plugin_set_cache_data       (GstPlugin * plugin, GstStructure *cache_data);
 
-GModule *              gst_plugin_get_module           (GstPlugin *plugin);
 gboolean               gst_plugin_is_loaded            (GstPlugin *plugin);
 
-gboolean               gst_plugin_name_filter          (GstPlugin *plugin, const gchar *name);
-
 GstPlugin *            gst_plugin_load_file            (const gchar *filename, GError** error);
 
 GstPlugin *             gst_plugin_load                 (GstPlugin *plugin);