00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017 #ifndef __XMMS_COLL_H__
00018 #define __XMMS_COLL_H__
00019
00020 #include "xmmsc/xmmsc_stdint.h"
00021 #include "xmmsc/xmmsc_idnumbers.h"
00022
00023 #ifdef __cplusplus
00024 extern "C" {
00025 #endif
00026
00027 typedef struct xmmsc_coll_St xmmsc_coll_t;
00028
00029 typedef void (*xmmsc_coll_attribute_foreach_func) (const char *key, const char *value, void *udata);
00030
00031 xmmsc_coll_t* xmmsc_coll_new (xmmsc_coll_type_t type);
00032 xmmsc_coll_t *xmmsc_coll_ref (xmmsc_coll_t *coll);
00033 void xmmsc_coll_unref (xmmsc_coll_t *coll);
00034
00035 void xmmsc_coll_set_idlist (xmmsc_coll_t *coll, unsigned int ids[]);
00036 void xmmsc_coll_add_operand (xmmsc_coll_t *coll, xmmsc_coll_t *op);
00037 void xmmsc_coll_remove_operand (xmmsc_coll_t *coll, xmmsc_coll_t *op);
00038
00039 int xmmsc_coll_idlist_append (xmmsc_coll_t *coll, unsigned int id);
00040 int xmmsc_coll_idlist_insert (xmmsc_coll_t *coll, unsigned int index, unsigned int id);
00041 int xmmsc_coll_idlist_move (xmmsc_coll_t *coll, unsigned int index, unsigned int newindex);
00042 int xmmsc_coll_idlist_remove (xmmsc_coll_t *coll, unsigned int index);
00043 int xmmsc_coll_idlist_clear (xmmsc_coll_t *coll);
00044 int xmmsc_coll_idlist_get_index (xmmsc_coll_t *coll, unsigned int index, uint32_t *val);
00045 int xmmsc_coll_idlist_set_index (xmmsc_coll_t *coll, unsigned int index, uint32_t val);
00046 size_t xmmsc_coll_idlist_get_size (xmmsc_coll_t *coll);
00047
00048 xmmsc_coll_type_t xmmsc_coll_get_type (xmmsc_coll_t *coll);
00049 uint32_t* xmmsc_coll_get_idlist (xmmsc_coll_t *coll);
00050 int xmmsc_coll_operand_list_first (xmmsc_coll_t *coll);
00051 int xmmsc_coll_operand_list_valid (xmmsc_coll_t *coll);
00052 int xmmsc_coll_operand_list_entry (xmmsc_coll_t *coll, xmmsc_coll_t **operand);
00053 int xmmsc_coll_operand_list_next (xmmsc_coll_t *coll);
00054 int xmmsc_coll_operand_list_save (xmmsc_coll_t *coll);
00055 int xmmsc_coll_operand_list_restore (xmmsc_coll_t *coll);
00056 void xmmsc_coll_operand_list_clear (xmmsc_coll_t *coll);
00057
00058 void xmmsc_coll_attribute_list_first (xmmsc_coll_t *coll);
00059 int xmmsc_coll_attribute_list_valid (xmmsc_coll_t *coll);
00060 void xmmsc_coll_attribute_list_entry (xmmsc_coll_t *coll, const char **k, const char **v);
00061 void xmmsc_coll_attribute_list_next (xmmsc_coll_t *coll);
00062
00063
00064 void xmmsc_coll_attribute_set (xmmsc_coll_t *coll, const char *key, const char *value);
00065 int xmmsc_coll_attribute_remove (xmmsc_coll_t *coll, const char *key);
00066 int xmmsc_coll_attribute_get (xmmsc_coll_t *coll, const char *key, char **value);
00067 void xmmsc_coll_attribute_foreach (xmmsc_coll_t *coll, xmmsc_coll_attribute_foreach_func func, void *user_data);
00068
00069 xmmsc_coll_t* xmmsc_coll_universe (void);
00070
00071 #ifdef __cplusplus
00072 }
00073 #endif
00074
00075 #endif