/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
|