This file is indexed.

/usr/include/bse/bsesource.hh is in libbse-dev 0.7.8-1.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
// Licensed GNU LGPL v2.1 or later: http://www.gnu.org/licenses/lgpl.html
#ifndef __BSE_SOURCE_H__
#define __BSE_SOURCE_H__
#include <bse/bseitem.hh>
#include <bse/gsldefs.hh>
#include <sfi/gbsearcharray.hh>
G_BEGIN_DECLS
/* --- BseSource type macros --- */
#define BSE_TYPE_SOURCE              (BSE_TYPE_ID (BseSource))
#define BSE_SOURCE(object)           (G_TYPE_CHECK_INSTANCE_CAST ((object), BSE_TYPE_SOURCE, BseSource))
#define BSE_SOURCE_CLASS(class)      (G_TYPE_CHECK_CLASS_CAST ((class), BSE_TYPE_SOURCE, BseSourceClass))
#define BSE_IS_SOURCE(object)        (G_TYPE_CHECK_INSTANCE_TYPE ((object), BSE_TYPE_SOURCE))
#define BSE_IS_SOURCE_CLASS(class)   (G_TYPE_CHECK_CLASS_TYPE ((class), BSE_TYPE_SOURCE))
#define BSE_SOURCE_GET_CLASS(object) (G_TYPE_INSTANCE_GET_CLASS ((object), BSE_TYPE_SOURCE, BseSourceClass))
/* --- BseSource member macros --- */
#define BSE_SOURCE_PREPARED(src)	  ((BSE_OBJECT_FLAGS (src) & BSE_SOURCE_FLAG_PREPARED) != 0)
#define BSE_SOURCE_COLLECTED(src)	  ((BSE_OBJECT_FLAGS (src) & BSE_SOURCE_FLAG_COLLECTED) != 0)
#define BSE_SOURCE_N_ICHANNELS(src)	  (BSE_SOURCE (src)->channel_defs->n_ichannels)
#define BSE_SOURCE_ICHANNEL_IDENT(src,id) (BSE_SOURCE (src)->channel_defs->ichannel_idents[(id)])
#define BSE_SOURCE_ICHANNEL_LABEL(src,id) (BSE_SOURCE (src)->channel_defs->ichannel_labels[(id)])
#define BSE_SOURCE_ICHANNEL_BLURB(src,id) (BSE_SOURCE (src)->channel_defs->ichannel_blurbs[(id)])
#define BSE_SOURCE_IS_JOINT_ICHANNEL(s,i) ((BSE_SOURCE (s)->channel_defs->ijstreams[(i)] & BSE_SOURCE_JSTREAM_FLAG) != 0)
#define BSE_SOURCE_N_JOINT_ICHANNELS(src) (BSE_SOURCE (src)->channel_defs->n_jstreams)
#define BSE_SOURCE_N_OCHANNELS(src)	  (BSE_SOURCE (src)->channel_defs->n_ochannels)
#define BSE_SOURCE_OCHANNEL_IDENT(src,id) (BSE_SOURCE (src)->channel_defs->ochannel_idents[(id)])
#define BSE_SOURCE_OCHANNEL_LABEL(src,id) (BSE_SOURCE (src)->channel_defs->ochannel_labels[(id)])
#define BSE_SOURCE_OCHANNEL_BLURB(src,id) (BSE_SOURCE (src)->channel_defs->ochannel_blurbs[(id)])
/* BseSourceClass */
#define BSE_SOURCE_CLASS_N_ICHANNELS(sc)  (BSE_SOURCE_CLASS (sc)->channel_defs.n_ichannels)
#define BSE_SOURCE_CLASS_N_OCHANNELS(sc)  (BSE_SOURCE_CLASS (sc)->channel_defs.n_ochannels)
/*< private >*/
#define	BSE_SOURCE_INPUT(src,id)	  (BSE_SOURCE (src)->inputs + (guint) (id))
#define	BSE_SOURCE_OCHANNEL_OSTREAM(s,oc) ((oc) < BSE_SOURCE_N_OCHANNELS (s) ? (oc) : 0xffffffff)
#define	BSE_SOURCE_ICHANNEL_ISTREAM(s,ic) ((ic) < BSE_SOURCE_N_ICHANNELS (s) \
                                           && !BSE_SOURCE_IS_JOINT_ICHANNEL ((s), (ic)) ? \
                                           BSE_SOURCE (s)->channel_defs->ijstreams[(ic)] & ~BSE_SOURCE_JSTREAM_FLAG : \
                                           0xffffffff)
#define	BSE_SOURCE_ICHANNEL_JSTREAM(s,ic) ((ic) < BSE_SOURCE_N_ICHANNELS (s) \
                                           && BSE_SOURCE_IS_JOINT_ICHANNEL ((s), (ic)) ? \
                                           BSE_SOURCE (s)->channel_defs->ijstreams[(ic)] & ~BSE_SOURCE_JSTREAM_FLAG : \
                                           0xffffffff)
#define	BSE_SOURCE_JSTREAM_FLAG		  ((guint) 1 << 31)
#define BSE_SOURCE_PRIVATE_INPUTS(src)    ((BSE_OBJECT_FLAGS (src) & BSE_SOURCE_FLAG_PRIVATE_INPUTS) != 0)
/* --- BseSource flags --- */
typedef enum	/*< skip >*/
{
  BSE_SOURCE_FLAG_PRIVATE_INPUTS	= 1 << (BSE_ITEM_FLAGS_USHIFT + 0),
  BSE_SOURCE_FLAG_PREPARED		= 1 << (BSE_ITEM_FLAGS_USHIFT + 1),
  BSE_SOURCE_FLAG_COLLECTED		= 1 << (BSE_ITEM_FLAGS_USHIFT + 2)
} BseSourceFlags;
#define BSE_SOURCE_FLAGS_USHIFT        (BSE_ITEM_FLAGS_USHIFT + 3)
/* --- typedefs & structures --- */
typedef union  _BseSourceInput		BseSourceInput;
typedef struct _BseSourceOutput		BseSourceOutput;
typedef struct _BseSourceChannelDefs	BseSourceChannelDefs;
typedef struct _BseSourceProbes		BseSourceProbes;
typedef void (*BseSourceFreeContextData) (BseSource *source,
					  gpointer   data,
					  BseTrans  *trans);
struct _BseSourceOutput
{
  BseSource *osource;
  guint      ochannel;
};
union _BseSourceInput
{
  BseSourceOutput    idata;
  struct {
    guint	     n_joints;
    BseSourceOutput *joints;
  }                  jdata;
};
struct _BseSource
{
  BseItem               parent_object;
  BseSourceChannelDefs *channel_defs;
  BseSourceInput       *inputs;	/* [n_ichannels] */
  GSList	       *outputs;
  GBSearchArray        *contexts; /* bsearch array of type BseSourceContext */
  SfiReal		pos_x, pos_y;
  BseSourceProbes      *probes;
};
struct _BseSourceChannelDefs
{
  guint   n_ichannels;
  gchar **ichannel_idents;
  gchar **ichannel_labels;
  gchar **ichannel_blurbs;
  guint  *ijstreams;
  guint	  n_jstreams;
  guint   n_ochannels;
  gchar **ochannel_idents;
  gchar **ochannel_labels;
  gchar **ochannel_blurbs;
};
struct _BseSourceClass
{
  BseItemClass		 parent_class;
  BseSourceChannelDefs	 channel_defs;
  void          (*property_updated)     (BseSource      *source,        /* overridable method */
                                         guint           property_id,
                                         guint64         tick_stamp,
                                         double          value,
                                         GParamSpec     *pspec);
  void		(*prepare)		(BseSource	*source);
  void		(*context_create)	(BseSource	*source,
					 guint		 context_handle,
					 BseTrans	*trans);
  void		(*context_connect)	(BseSource	*source,
					 guint		 context_handle,
					 BseTrans	*trans);
  void		(*context_dismiss)	(BseSource	*source,
					 guint		 context_handle,
					 BseTrans	*trans);
  void		(*reset)		(BseSource	*source);
  /*< private >*/
  void	(*add_input)	(BseSource	*source,
			 guint		 ichannel,
			 BseSource	*osource,
			 guint		 ochannel);
  void	(*remove_input)	(BseSource	*source,
			 guint		 ichannel,
			 BseSource	*osource,
			 guint		 ochannel);
  BseModuleClass *engine_class;
  gboolean        filtered_properties;
  SfiRing        *unprepared_properties;
  SfiRing        *automation_properties;
};
/* --- prototypes -- */
guint		bse_source_find_ichannel	(BseSource	*source,
						 const gchar    *ichannel_ident);
guint		bse_source_find_ochannel	(BseSource	*source,
						 const gchar    *ochannel_ident);
BseErrorType	bse_source_set_input		(BseSource	*source,
						 guint		 ichannel,
						 BseSource	*osource,
						 guint		 ochannel);
BseErrorType	bse_source_unset_input		(BseSource	*source,
						 guint		 ichannel,
						 BseSource	*osource,
						 guint		 ochannel);
gboolean        bse_source_get_input            (BseSource      *source,
                                                 guint           ichannel,
                                                 BseSource     **osourcep,
                                                 guint          *ochannelp);
void           	bse_source_must_set_input_loc	(BseSource	*source,
						 guint		 ichannel,
						 BseSource	*osource,
						 guint		 ochannel,
                                                 const gchar    *strloc);
#define bse_source_must_set_input(is,ic,os,oc)  \
  bse_source_must_set_input_loc (is, ic, os, oc, G_STRLOC)
/* --- source implementations --- */
guint	    bse_source_class_add_ichannel      	(BseSourceClass	*source_class,
						 const gchar	*ident,
						 const gchar	*label,
						 const gchar	*blurb);
guint	    bse_source_class_add_jchannel      	(BseSourceClass	*source_class,
						 const gchar	*ident,
						 const gchar	*label,
						 const gchar	*blurb);
guint	    bse_source_class_add_ochannel      	(BseSourceClass	*source_class,
						 const gchar	*ident,
						 const gchar	*label,
						 const gchar	*blurb);
void        bse_source_class_inherit_channels   (BseSourceClass *source_class);
void		bse_source_set_context_imodule	(BseSource	*source,
						 guint		 context_handle,
						 BseModule	*imodule);
void		bse_source_set_context_omodule	(BseSource	*source,
						 guint		 context_handle,
						 BseModule	*omodule);
BseModule*	bse_source_get_context_imodule	(BseSource	*source,
						 guint		 context_handle);
BseModule*	bse_source_get_context_omodule	(BseSource	*source,
						 guint		 context_handle);
void		bse_source_flow_access_module	(BseSource	*source,
						 guint		 context_handle,
						 guint64	 tick_stamp,
						 BseEngineAccessFunc   access_func,
						 gpointer	 data,
						 BseFreeFunc	 data_free_func,
						 BseTrans	*trans);
void		bse_source_flow_access_modules	(BseSource	*source,
						 guint64	 tick_stamp,
						 BseEngineAccessFunc   access_func,
						 gpointer	 data,
						 BseFreeFunc	 data_free_func,
						 BseTrans	*trans);
void		bse_source_access_modules	(BseSource	*source,
						 BseEngineAccessFunc   access_func,
						 gpointer	 data,
						 BseFreeFunc	 data_free_func,
						 BseTrans	*trans);
BseErrorType    bse_source_check_input          (BseSource      *source,
                                                 guint           ichannel,
                                                 BseSource      *osource,
                                                 guint           ochannel);
gboolean        bse_source_has_output           (BseSource      *source,
                                                 guint           ochannel);
void       bse_source_backup_ichannels_to_undo  (BseSource      *source);
void       bse_source_backup_ochannels_to_undo  (BseSource      *source);
void       bse_source_input_backup_to_undo      (BseSource      *source,
                                                 guint           ichannel,
                                                 BseSource      *osource,
                                                 guint           ochannel);
/* convenience */
void   	   bse_source_class_cache_engine_class  (BseSourceClass	*source_class,
						 const BseModuleClass *engine_class);
void	   bse_source_set_context_module	(BseSource	*source,
						 guint		 context_handle,
						 BseModule	*module);
void	   bse_source_update_modules	        (BseSource	*source,
						 guint		 member_offset,
						 gpointer	 member_data,
						 guint		 member_size,
						 BseTrans	*trans);
void	   bse_source_clear_ichannels	        (BseSource	*source);
void	   bse_source_clear_ochannels	        (BseSource	*source);
BseMusicalTuningType bse_source_prepared_musical_tuning (BseSource *source);
/* automation */
typedef struct {
  GParamSpec       *pspec;
  guint             midi_channel;
  BseMidiSignalType signal_type;
} BseAutomationProperty;
BseErrorType                 bse_source_set_automation_property   (BseSource         *source,
                                                                   const gchar       *prop_name,
                                                                   guint              midi_channel,
                                                                   BseMidiSignalType  signal_type);
void                         bse_source_get_automation_property   (BseSource         *source,
                                                                   const gchar       *prop_name,
                                                                   guint             *pmidi_channel,
                                                                   BseMidiSignalType *psignal_type);
BseAutomationProperty*       bse_source_get_automation_properties (BseSource         *source,
                                                                   guint             *n_props);
/* --- internal --- */
SfiRing* bse_source_collect_inputs_flat 	(BseSource	*source);       /* sets mark */
SfiRing* bse_source_collect_inputs_recursive	(BseSource	*source);       /* sets mark */
void     bse_source_free_collection		(SfiRing	*ring);         /* unsets mark */
gboolean bse_source_test_input_recursive        (BseSource      *source,        /* sets+unsets mark */
                                                 BseSource      *test);
gpointer bse_source_get_context_data		(BseSource	*source,
						 guint		 context_handle);
void	 bse_source_create_context_with_data	(BseSource	*source,
						 guint		 context_handle,
						 gpointer	 data,
						 BseSourceFreeContextData free_data,
						 BseTrans	*trans);
void		bse_source_create_context	(BseSource	*source,
						 guint		 context_handle,
						 BseTrans	*trans);
void		bse_source_connect_context	(BseSource	*source,
						 guint		 context_handle,
						 BseTrans	*trans);
void		bse_source_dismiss_context	(BseSource	*source,
						 guint		 context_handle,
						 BseTrans	*trans);
void		bse_source_recreate_context	(BseSource	*source,
						 guint		 context_handle,
						 BseTrans	*trans);
void		bse_source_prepare		(BseSource	*source);
void		bse_source_reset		(BseSource	*source);
guint*		bse_source_context_ids		(BseSource	*source,
						 guint		*n_ids);
gboolean	bse_source_has_context		(BseSource	*source,
						 guint		 context_handle);
SfiRing*        bse_source_list_omodules        (BseSource      *source);
/* implemented in bseprobe.cc */
void    bse_source_clear_probes                 (BseSource      *source);
void    bse_source_class_add_probe_signals      (BseSourceClass *klass);
void    bse_source_probes_modules_changed       (BseSource      *source);
G_END_DECLS
#endif /* __BSE_SOURCE_H__ */