mlt_consumer.[hc]: added new functions mlt_repository_consumers, mlt_repository_filters,
[melted] / src / framework / mlt_repository.h
index 5332c57..6517030 100644 (file)
 #define _MLT_REPOSITORY_H_
 
 #include "mlt_types.h"
+#include "mlt_profile.h"
 
 /** Repository structure forward reference.
 */
 
 typedef struct mlt_repository_s *mlt_repository;
 
+/** This macro can be used to register services if the function is declared as 
+*   void mlt_register( mlt_repository )
+*/
+#define MLT_REPOSITORY void mlt_register( mlt_repository repository )
+#define MLT_REGISTER( type, service, symbol  ) ( mlt_repository_register( repository, (type), (service), (symbol) ) )
+#define MLT_REGISTER_METADATA( type, service, properties  ) ( mlt_repository_register_metadata( repository, (type), (service), (properties) ) )
+
 /** Public functions.
 */
 
-extern mlt_repository mlt_repository_init( mlt_properties object_list, const char *prefix, const char *file, const char *symbol );
-extern void *mlt_repository_fetch( mlt_repository self, const char *service, void *input );
+extern mlt_repository mlt_repository_init( const char *directory );
+extern void mlt_repository_register( mlt_repository self, mlt_service_type service_type, const char *service, void *symbol );
+extern void *mlt_repository_create( mlt_repository self, mlt_profile profile, mlt_service_type type, const char *service, void *arg ); 
 extern void mlt_repository_close( mlt_repository self );
+extern mlt_properties mlt_repository_consumers( mlt_repository self );
+extern mlt_properties mlt_repository_filters( mlt_repository self );
+extern mlt_properties mlt_repository_producers( mlt_repository self );
+extern mlt_properties mlt_repository_transitions( mlt_repository self );
+extern void mlt_repository_register_metadata( mlt_repository self, mlt_service_type type, const char *service, mlt_properties metadata );
+extern mlt_properties mlt_repository_metadata( mlt_repository self, mlt_service_type type, const char *service );
 
 #endif