BEAST/BSE - Better Audio System and Sound Engine
0.8.2
|
00001 // Licensed GNU LGPL v2.1 or later: http://www.gnu.org/licenses/lgpl.html 00002 #ifndef __BSE_DATA_POCKET_H__ 00003 #define __BSE_DATA_POCKET_H__ 00004 00005 #include <bse/bsesuper.hh> 00006 00007 G_BEGIN_DECLS 00008 00009 /* --- object type macros --- */ 00010 #define BSE_TYPE_DATA_POCKET (BSE_TYPE_ID (BseDataPocket)) 00011 #define BSE_DATA_POCKET(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), BSE_TYPE_DATA_POCKET, BseDataPocket)) 00012 #define BSE_DATA_POCKET_CLASS(class) (G_TYPE_CHECK_CLASS_CAST ((class), BSE_TYPE_DATA_POCKET, BseDataPocketClass)) 00013 #define BSE_IS_DATA_POCKET(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), BSE_TYPE_DATA_POCKET)) 00014 #define BSE_IS_DATA_POCKET_CLASS(class) (G_TYPE_CHECK_CLASS_TYPE ((class), BSE_TYPE_DATA_POCKET)) 00015 #define BSE_DATA_POCKET_GET_CLASS(object) (G_TYPE_INSTANCE_GET_CLASS ((object), BSE_TYPE_DATA_POCKET, BseDataPocketClass)) 00016 00017 00018 /* --- data types --- */ 00019 typedef enum /*< skip >*/ 00020 { 00021 BSE_DATA_POCKET_INT = 'i', 00022 BSE_DATA_POCKET_INT64 = 'q', 00023 BSE_DATA_POCKET_FLOAT = 'f', 00024 /* BSE_DATA_POCKET_DOUBLE = 'd', */ 00025 BSE_DATA_POCKET_STRING = 's', 00026 BSE_DATA_POCKET_OBJECT = 'o' 00027 } BseDataPocketType; 00028 00029 00030 /* --- BseDataPocket structs --- */ 00031 struct BseDataPocket; 00032 struct BseDataPocketClass; 00033 union BseDataPocketValue { 00034 guint64 v_int64; 00035 guint v_int; 00036 gfloat v_float; 00037 gchar *v_string; 00038 BseItem *v_object; 00039 }; 00040 struct BseDataPocketEntry { 00041 guint id; 00042 guint n_items; 00043 struct Item { 00044 GQuark quark; 00045 gchar type; 00046 BseDataPocketValue value; 00047 } *items; 00048 }; 00049 struct BseDataPocket : BseItem { 00050 guint need_store; /* for BSE_ITEM_FLAG_AGGREGATE */ 00051 GSList *cr_items; 00052 guint free_id; 00053 guint n_entries; 00054 BseDataPocketEntry *entries; 00055 }; 00056 struct BseDataPocketClass : BseItemClass { 00057 void (*entry_added) (BseDataPocket *pocket, 00058 guint entry_id); 00059 void (*entry_removed) (BseDataPocket *pocket, 00060 guint entry_id); 00061 void (*entry_changed) (BseDataPocket *pocket, 00062 guint entry_id); 00063 }; 00064 00065 /* --- prototypes --- */ 00066 guint _bse_data_pocket_create_entry (BseDataPocket *pocket); 00067 gboolean _bse_data_pocket_delete_entry (BseDataPocket *pocket, 00068 guint entry_id); 00069 gboolean _bse_data_pocket_entry_set (BseDataPocket *pocket, 00070 guint id, 00071 GQuark data_quark, 00072 gchar type, 00073 BseDataPocketValue value); 00074 gchar _bse_data_pocket_entry_get (BseDataPocket *pocket, 00075 guint id, 00076 GQuark data_quark, 00077 BseDataPocketValue *value); 00078 00079 G_END_DECLS 00080 00081 #endif /* __BSE_DATA_POCKET_H__ */