This file is indexed.

/usr/include/libinstpatch-1.0/libinstpatch/IpatchContainer.h is in libinstpatch-dev 1.0.0-6.

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
/*
 * libInstPatch
 * Copyright (C) 1999-2010 Joshua "Element" Green <jgreen@users.sourceforge.net>
 *
 * This program is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public License
 * as published by the Free Software Foundation; version 2.1
 * of the License only.
 *
 * This library is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
 * 02110-1301, USA or on the web at http://www.gnu.org.
 */
/**
 * SECTION: IpatchContainer
 * @short_description: Abstract object type used for items containing other
 *   child items.
 * @see_also: 
 * @stability: Stable
 *
 * Objects which are derived from this abstract type can contain other items,
 * thus forming a tree of items in an instrument file for example.
 */
#ifndef __IPATCH_CONTAINER_H__
#define __IPATCH_CONTAINER_H__

#include <stdarg.h>
#include <glib.h>
#include <glib-object.h>

/* forward type declarations */

typedef struct _IpatchContainer IpatchContainer;
typedef struct _IpatchContainerClass IpatchContainerClass;

#include <libinstpatch/IpatchItem.h>
#include <libinstpatch/IpatchIter.h>
#include <libinstpatch/IpatchList.h>

#define IPATCH_TYPE_CONTAINER   (ipatch_container_get_type ())
#define IPATCH_CONTAINER(obj) \
  (G_TYPE_CHECK_INSTANCE_CAST ((obj), IPATCH_TYPE_CONTAINER, IpatchContainer))
#define IPATCH_CONTAINER_CLASS(klass) \
  (G_TYPE_CHECK_CLASS_CAST ((klass), IPATCH_TYPE_CONTAINER, \
  IpatchContainerClass))
#define IPATCH_IS_CONTAINER(obj) \
  (G_TYPE_CHECK_INSTANCE_TYPE ((obj), IPATCH_TYPE_CONTAINER))
#define IPATCH_IS_CONTAINER_CLASS(klass) \
  (G_TYPE_CHECK_CLASS_TYPE ((klass), IPATCH_TYPE_CONTAINER))
#define IPATCH_CONTAINER_GET_CLASS(obj) \
  (G_TYPE_INSTANCE_GET_CLASS ((obj), IPATCH_TYPE_CONTAINER, \
  IpatchContainerClass))

/**
 * IpatchContainerCallback:
 * @container: Container item
 * @item: Item that was added/removed to/from @container
 * @user_data: User defined pointer assigned when callback connected
 *
 * A function prototype callback which is called for container adds or removes
 * (after adds, before removes).
 */
typedef void (*IpatchContainerCallback)(IpatchContainer *container,
					IpatchItem *item,
					gpointer user_data);
/**
 * IpatchContainerDisconnect:
 * @container: Container item
 * @child: Match child item of original connect
 *   (ipatch_container_remove_connect() only, always NULL for
 *    ipatch_container_add_connect()).
 * @user_data: User defined pointer assigned when callback connected
 *
 * A function prototype which is called when a callback gets disconnected.
 */
typedef void (*IpatchContainerDisconnect)(IpatchContainer *container,
					  IpatchItem *child,
					  gpointer user_data);

/* Base patch container object */
struct _IpatchContainer
{
  IpatchItem parent_instance;
};

struct _IpatchContainerClass
{
  IpatchItemClass parent_class;

  /*< public >*/

  /* methods */
  const GType * (*child_types)(void);
  const GType * (*virtual_types)(void);
  gboolean (*init_iter)(IpatchContainer *container, IpatchIter *iter,
			GType type);
  void (*make_unique)(IpatchContainer *container, IpatchItem *item);
  gboolean (*get_dups)(IpatchContainer *container, IpatchItem *item,
		       IpatchList **list);
};

/* container uses no item flags */
#define IPATCH_CONTAINER_UNUSED_FLAG_SHIFT  IPATCH_ITEM_UNUSED_FLAG_SHIFT

#define IPATCH_CONTAINER_ERRMSG_INVALID_CHILD_2 \
    "Invalid child type '%s' for parent type '%s'"

GType ipatch_container_get_type (void);

IpatchList *ipatch_container_get_children (IpatchContainer *container,
					   GType type);
const GType *ipatch_container_get_child_types (IpatchContainer *container);
const GType *ipatch_container_get_virtual_types (IpatchContainer *container);
const GType *ipatch_container_type_get_child_types (GType container_type);
void ipatch_container_insert (IpatchContainer *container,
			      IpatchItem *item, int pos);
void ipatch_container_append (IpatchContainer *container, IpatchItem *item);

// An alias for ipatch_container_append
#define ipatch_container_add  ipatch_container_append

void ipatch_container_prepend (IpatchContainer *container, IpatchItem *item);
void ipatch_container_remove (IpatchContainer *container, IpatchItem *item);
void ipatch_container_remove_all (IpatchContainer *container);
guint ipatch_container_count (IpatchContainer *container, GType type);
void ipatch_container_make_unique (IpatchContainer *container,
				   IpatchItem *item);
void ipatch_container_add_unique (IpatchContainer *container,
				  IpatchItem *item);
gboolean ipatch_container_init_iter (IpatchContainer *container,
				     IpatchIter *iter, GType type);
void ipatch_container_insert_iter (IpatchContainer *container,
				   IpatchItem *item, IpatchIter *iter);
void ipatch_container_remove_iter (IpatchContainer *container,
				   IpatchIter *iter);

/* defined in IpatchContainer_notify.c */

void ipatch_container_add_notify (IpatchContainer *container, IpatchItem *child);
void ipatch_container_remove_notify (IpatchContainer *container, IpatchItem *child);
guint ipatch_container_add_connect (IpatchContainer *container,
				    IpatchContainerCallback callback,
				    IpatchContainerDisconnect disconnect,
				    gpointer user_data);
guint ipatch_container_remove_connect (IpatchContainer *container,
				       IpatchItem *child,
				       IpatchContainerCallback callback,
				       IpatchContainerDisconnect disconnect,
				       gpointer user_data);
void ipatch_container_add_disconnect (guint handler_id);
void ipatch_container_add_disconnect_matched (IpatchContainer *container,
					      IpatchContainerCallback callback,
					      gpointer user_data);
void ipatch_container_remove_disconnect (guint handler_id);
void ipatch_container_remove_disconnect_matched (IpatchContainer *container,
						 IpatchItem *child,
						 IpatchContainerCallback callback,
						 gpointer user_data);
#endif