BEAST/BSE - Better Audio System and Sound Engine  0.8.2
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines
bsedatapocket.hh
Go to the documentation of this file.
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__ */
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines