BEAST/BSE - Better Audio System and Sound Engine  0.8.2
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines
sfiprimitives.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 __SFI_PRIMITIVES_H__
00003 #define __SFI_PRIMITIVES_H__
00004 
00005 #include <sfi/sfivalues.hh>
00006 
00007 G_BEGIN_DECLS
00008 
00009 
00010 /* --- SfiBBlock primitive type --- */
00011 struct _SfiBBlock {
00012   guint   ref_count;
00013   guint   n_bytes;
00014   guint8 *bytes;
00015 };
00016 SfiBBlock* sfi_bblock_new          (void);
00017 SfiBBlock* sfi_bblock_new_sized    (guint            size);
00018 SfiBBlock* sfi_bblock_ref          (SfiBBlock       *bblock);
00019 void       sfi_bblock_unref        (SfiBBlock       *bblock);
00020 void       sfi_bblock_resize       (SfiBBlock       *bblock,
00021                                     guint            size);
00022 SfiBBlock* sfi_bblock_copy_deep    (const SfiBBlock *bblock);
00023 #define    sfi_bblock_copy_shallow sfi_bblock_ref
00024 void       sfi_bblock_append       (SfiBBlock       *bblock,
00025                                     guint            n_bytes,
00026                                     const guint8    *bytes);
00027 void       sfi_bblock_append1      (SfiBBlock       *bblock,
00028                                     guint8           byte0);
00029 guint      sfi_bblock_length       (const SfiBBlock *bblock);
00030 guint8*    sfi_bblock_get          (const SfiBBlock *bblock);
00031 
00032 
00033 /* --- SfiFBlock primitive type --- */
00034 struct _SfiFBlock {
00035   guint     ref_count;
00036   guint     n_values;
00037   gfloat   *values;
00038   GFreeFunc freefunc;
00039 };
00040 SfiFBlock* sfi_fblock_new          (void);
00041 SfiFBlock* sfi_fblock_new_sized    (guint            size);
00042 SfiFBlock* sfi_fblock_new_foreign  (guint            n_values,
00043                                     gfloat          *values,
00044                                     GFreeFunc        freefunc);
00045 SfiFBlock* sfi_fblock_ref          (SfiFBlock       *fblock);
00046 void       sfi_fblock_unref        (SfiFBlock       *fblock);
00047 void       sfi_fblock_resize       (SfiFBlock       *fblock,
00048                                     guint            size);
00049 SfiFBlock* sfi_fblock_copy_deep    (const SfiFBlock *fblock);
00050 #define    sfi_fblock_copy_shallow sfi_fblock_ref
00051 void       sfi_fblock_append       (SfiFBlock       *fblock,
00052                                     guint            n_values,
00053                                     const gfloat    *values);
00054 void       sfi_fblock_append1      (SfiFBlock       *fblock,
00055                                     gfloat           float0);
00056 guint      sfi_fblock_length       (const SfiFBlock *fblock);
00057 gfloat*    sfi_fblock_get          (const SfiFBlock *fblock);
00058 
00059 
00060 /* --- SfiSeq primitive type --- */
00061 struct _SfiSeq {
00062   guint   ref_count;
00063   guint   n_elements;
00064   GValue *elements;
00065 };
00066 SfiSeq*  sfi_seq_new            (void);
00067 SfiSeq*  sfi_seq_ref            (SfiSeq          *seq);
00068 void     sfi_seq_unref          (SfiSeq          *seq);
00069 SfiSeq*  sfi_seq_copy_deep      (const SfiSeq    *seq);
00070 #define  sfi_seq_copy_shallow   sfi_seq_ref
00071 void     sfi_seq_append         (SfiSeq          *seq,
00072                                  const GValue    *value);
00073 GValue*  sfi_seq_append_empty   (SfiSeq          *seq,
00074                                  GType            value_type);
00075 void     sfi_seq_clear          (SfiSeq          *seq);
00076 guint    sfi_seq_length         (const SfiSeq    *seq);
00077 GValue*  sfi_seq_get            (const SfiSeq    *seq,
00078                                  guint            index);
00079 gboolean sfi_seq_check          (SfiSeq          *seq,
00080                                  GType            element_type);
00081 gboolean sfi_seq_validate       (SfiSeq          *seq,
00082                                  GParamSpec      *pspec);
00083 /* convenience */
00084 void     sfi_seq_append_bool    (SfiSeq          *seq,
00085                                  SfiBool          v_bool);
00086 void     sfi_seq_append_int     (SfiSeq          *seq,
00087                                  SfiInt           v_int);
00088 void     sfi_seq_append_num     (SfiSeq          *seq,
00089                                  SfiNum           v_num);
00090 void     sfi_seq_append_real    (SfiSeq          *seq,
00091                                  SfiReal          v_real);
00092 void     sfi_seq_append_string  (SfiSeq          *seq,
00093                                  const gchar     *string);
00094 void     sfi_seq_append_choice  (SfiSeq          *seq,
00095                                  const gchar     *choice);
00096 void     sfi_seq_append_bblock  (SfiSeq          *seq,
00097                                  SfiBBlock       *bblock);
00098 void     sfi_seq_append_fblock  (SfiSeq          *seq,
00099                                  SfiFBlock       *fblock);
00100 void     sfi_seq_append_pspec   (SfiSeq          *seq,
00101                                  GParamSpec      *pspec);
00102 void     sfi_seq_append_seq     (SfiSeq          *seq,
00103                                  SfiSeq          *v_seq);
00104 void     sfi_seq_append_rec     (SfiSeq          *seq,
00105                                  SfiRec          *rec);
00106 void     sfi_seq_append_proxy   (SfiSeq          *seq,
00107                                  SfiProxy         proxy);
00108 SfiBool      sfi_seq_get_bool   (SfiSeq         *seq,
00109                                  guint           index);
00110 SfiInt       sfi_seq_get_int    (SfiSeq         *seq,
00111                                  guint           index);
00112 SfiNum       sfi_seq_get_num    (SfiSeq         *seq,
00113                                  guint           index);
00114 SfiReal      sfi_seq_get_real   (SfiSeq         *seq,
00115                                  guint           index);
00116 const gchar* sfi_seq_get_string (SfiSeq         *seq,
00117                                  guint           index);
00118 const gchar* sfi_seq_get_choice (SfiSeq         *seq,
00119                                  guint           index);
00120 SfiBBlock*   sfi_seq_get_bblock (SfiSeq         *seq,
00121                                  guint           index);
00122 SfiFBlock*   sfi_seq_get_fblock (SfiSeq         *seq,
00123                                  guint           index);
00124 GParamSpec*  sfi_seq_get_pspec  (SfiSeq         *seq,
00125                                  guint           index);
00126 SfiSeq*      sfi_seq_get_seq    (SfiSeq         *seq,
00127                                  guint           index);
00128 SfiRec*      sfi_seq_get_rec    (SfiSeq         *seq,
00129                                  guint           index);
00130 SfiProxy     sfi_seq_get_proxy  (SfiSeq         *seq,
00131                                  guint           index);
00132 /* conversion convenience */
00133 gchar**      sfi_seq_to_strv    (SfiSeq         *seq);
00134 SfiSeq*      sfi_seq_from_strv  (gchar         **strv);
00135 SfiSeq*      sfi_seq_from_cstrv (const gchar   **strv);
00136 
00137 
00138 /* --- SfiRec primitive type --- */
00139 struct _SfiRec {
00140   guint    ref_count;
00141   guint    n_fields;
00142   guint    sorted : 1;
00143   GValue  *fields;
00144   gchar  **field_names;
00145 };
00146 SfiRec*    sfi_rec_new          (void);
00147 SfiRec*    sfi_rec_ref          (SfiRec          *rec);
00148 void       sfi_rec_unref        (SfiRec          *rec);
00149 SfiRec*    sfi_rec_copy_deep    (SfiRec          *rec);
00150 #define    sfi_rec_copy_shallow sfi_rec_ref
00151 void       sfi_rec_swap_fields  (SfiRec          *rec,
00152                                  SfiRec          *swapper);
00153 gboolean   sfi_rec_validate     (SfiRec          *rec,
00154                                  SfiRecFields     fields);
00155 void       sfi_rec_clear        (SfiRec          *rec);
00156 void       sfi_rec_set          (SfiRec          *rec,
00157                                  const gchar     *field_name,
00158                                  const GValue    *value);
00159 GValue*    sfi_rec_get          (SfiRec          *rec,
00160                                  const gchar     *field_name);
00161 GValue*    sfi_rec_forced_get   (SfiRec          *rec,
00162                                  const gchar     *field_name,
00163                                  GType            gtype);
00164 guint      sfi_rec_n_fields     (const SfiRec    *rec);
00165 GValue*    sfi_rec_field        (const SfiRec    *rec,
00166                                  guint            index);
00167 gboolean   sfi_rec_check        (SfiRec          *rec,
00168                                  SfiRecFields     rfields);
00169 void       sfi_rec_sort         (SfiRec          *rec);
00170 /* convenience */
00171 void       sfi_rec_set_bool     (SfiRec          *rec,
00172                                  const gchar     *field_name,
00173                                  SfiBool          v_bool);
00174 void       sfi_rec_set_int      (SfiRec          *rec,
00175                                  const gchar     *field_name,
00176                                  SfiInt           v_int);
00177 void       sfi_rec_set_num      (SfiRec          *rec,
00178                                  const gchar     *field_name,
00179                                  SfiNum           v_num);
00180 void       sfi_rec_set_real     (SfiRec          *rec,
00181                                  const gchar     *field_name,
00182                                  SfiReal          v_real);
00183 void       sfi_rec_set_string   (SfiRec          *rec,
00184                                  const gchar     *field_name,
00185                                  const gchar     *string);
00186 void       sfi_rec_set_choice   (SfiRec          *rec,
00187                                  const gchar     *field_name,
00188                                  const gchar     *choice);
00189 void       sfi_rec_set_bblock   (SfiRec          *rec,
00190                                  const gchar     *field_name,
00191                                  SfiBBlock       *bblock);
00192 void       sfi_rec_set_fblock   (SfiRec          *rec,
00193                                  const gchar     *field_name,
00194                                  SfiFBlock       *fblock);
00195 void       sfi_rec_set_pspec    (SfiRec          *rec,
00196                                  const gchar     *field_name,
00197                                  GParamSpec      *pspec);
00198 void       sfi_rec_set_seq      (SfiRec          *rec,
00199                                  const gchar     *field_name,
00200                                  SfiSeq          *seq);
00201 void       sfi_rec_set_rec      (SfiRec          *rec,
00202                                  const gchar     *field_name,
00203                                  SfiRec          *v_rec);
00204 void       sfi_rec_set_proxy    (SfiRec          *rec,
00205                                  const gchar     *field_name,
00206                                  SfiProxy         proxy);
00207 SfiBool      sfi_rec_get_bool   (SfiRec         *rec,
00208                                  const gchar    *field_name);
00209 SfiInt       sfi_rec_get_int    (SfiRec         *rec,
00210                                  const gchar    *field_name);
00211 SfiNum       sfi_rec_get_num    (SfiRec         *rec,
00212                                  const gchar    *field_name);
00213 SfiReal      sfi_rec_get_real   (SfiRec         *rec,
00214                                  const gchar    *field_name);
00215 const gchar* sfi_rec_get_string (SfiRec         *rec,
00216                                  const gchar    *field_name);
00217 const gchar* sfi_rec_get_choice (SfiRec         *rec,
00218                                  const gchar    *field_name);
00219 SfiBBlock*   sfi_rec_get_bblock (SfiRec         *rec,
00220                                  const gchar    *field_name);
00221 SfiFBlock*   sfi_rec_get_fblock (SfiRec         *rec,
00222                                  const gchar    *field_name);
00223 GParamSpec*  sfi_rec_get_pspec  (SfiRec         *rec,
00224                                  const gchar    *field_name);
00225 SfiSeq*      sfi_rec_get_seq    (SfiRec         *rec,
00226                                  const gchar    *field_name);
00227 SfiRec*      sfi_rec_get_rec    (SfiRec         *rec,
00228                                  const gchar    *field_name);
00229 SfiProxy     sfi_rec_get_proxy  (SfiRec         *rec,
00230                                  const gchar    *field_name);
00231 
00232 G_END_DECLS
00233 
00234 #endif /* __SFI_PRIMITIVES_H__ */
00235 
00236 /* vim:set ts=8 sts=2 sw=2: */
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines