This file is indexed.

/usr/include/d/gtkd-3/gsv/SourceCompletionProposalT.d is in libgtkdsv-3-dev 3.7.5-2build1.

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
/*
 * This file is part of gtkD.
 *
 * gtkD 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; either version 3
 * of the License, or (at your option) any later version, with
 * some exceptions, please read the COPYING file.
 *
 * gtkD 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 gtkD; if not, write to the Free Software
 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110, USA
 */

// generated automatically - do not change
// find conversion definition on APILookup.txt
// implement new conversion functionalities on the wrap.utils pakage


module gsv.SourceCompletionProposalT;

public  import gdkpixbuf.Pixbuf;
public  import gio.IconIF;
public  import glib.Str;
public  import gobject.ObjectG;
public  import gobject.Signals;
public  import gsv.c.functions;
public  import gsv.c.types;
public  import gsvc.gsvtypes;
public  import std.algorithm;


/** */
public template SourceCompletionProposalT(TStruct)
{
	/** Get the main Gtk struct */
	public GtkSourceCompletionProposal* getSourceCompletionProposalStruct(bool transferOwnership = false)
	{
		if (transferOwnership)
			ownedRef = false;
		return cast(GtkSourceCompletionProposal*)getStruct();
	}


	/**
	 * Emits the "changed" signal on @proposal. This should be called by
	 * implementations whenever the name, icon or info of the proposal has
	 * changed.
	 */
	public void changed()
	{
		gtk_source_completion_proposal_changed(getSourceCompletionProposalStruct());
	}

	/**
	 * Get whether two proposal objects are the same.  This is used to (together
	 * with gtk_source_completion_proposal_hash()) to match proposals in the
	 * completion model. By default, it uses direct equality (g_direct_equal()).
	 *
	 * Params:
	 *     other = a #GtkSourceCompletionProposal.
	 *
	 * Returns: %TRUE if @proposal and @object are the same proposal
	 */
	public bool equal(SourceCompletionProposalIF other)
	{
		return gtk_source_completion_proposal_equal(getSourceCompletionProposalStruct(), (other is null) ? null : other.getSourceCompletionProposalStruct()) != 0;
	}

	/**
	 * Gets the #GIcon for the icon of @proposal.
	 *
	 * Returns: A #GIcon with the icon of @proposal.
	 *
	 * Since: 3.18
	 */
	public IconIF getGicon()
	{
		auto p = gtk_source_completion_proposal_get_gicon(getSourceCompletionProposalStruct());

		if(p is null)
		{
			return null;
		}

		return ObjectG.getDObject!(IconIF)(cast(GIcon*) p);
	}

	/**
	 * Gets the #GdkPixbuf for the icon of @proposal.
	 *
	 * Returns: A #GdkPixbuf with the icon of @proposal.
	 */
	public Pixbuf getIcon()
	{
		auto p = gtk_source_completion_proposal_get_icon(getSourceCompletionProposalStruct());

		if(p is null)
		{
			return null;
		}

		return ObjectG.getDObject!(Pixbuf)(cast(GdkPixbuf*) p);
	}

	/**
	 * Gets the icon name of @proposal.
	 *
	 * Returns: The icon name of @proposal.
	 *
	 * Since: 3.18
	 */
	public string getIconName()
	{
		return Str.toString(gtk_source_completion_proposal_get_icon_name(getSourceCompletionProposalStruct()));
	}

	/**
	 * Gets extra information associated to the proposal. This information will be
	 * used to present the user with extra, detailed information about the
	 * selected proposal. The returned string must be freed with g_free().
	 *
	 * Returns: a newly-allocated string containing
	 *     extra information of @proposal or %NULL if no extra information is associated
	 *     to @proposal.
	 */
	public string getInfo()
	{
		auto retStr = gtk_source_completion_proposal_get_info(getSourceCompletionProposalStruct());

		scope(exit) Str.freeString(retStr);
		return Str.toString(retStr);
	}

	/**
	 * Gets the label of @proposal. The label is shown in the list of proposals as
	 * plain text. If you need any markup (such as bold or italic text), you have
	 * to implement gtk_source_completion_proposal_get_markup(). The returned string
	 * must be freed with g_free().
	 *
	 * Returns: a new string containing the label of @proposal.
	 */
	public string getLabel()
	{
		auto retStr = gtk_source_completion_proposal_get_label(getSourceCompletionProposalStruct());

		scope(exit) Str.freeString(retStr);
		return Str.toString(retStr);
	}

	/**
	 * Gets the label of @proposal with markup. The label is shown in the list of
	 * proposals and may contain markup. This will be used instead of
	 * gtk_source_completion_proposal_get_label() if implemented. The returned string
	 * must be freed with g_free().
	 *
	 * Returns: a new string containing the label of @proposal with markup.
	 */
	public string getMarkup()
	{
		auto retStr = gtk_source_completion_proposal_get_markup(getSourceCompletionProposalStruct());

		scope(exit) Str.freeString(retStr);
		return Str.toString(retStr);
	}

	/**
	 * Gets the text of @proposal. The text that is inserted into
	 * the text buffer when the proposal is activated by the default activation.
	 * You are free to implement a custom activation handler in the provider and
	 * not implement this function. For more information, see
	 * gtk_source_completion_provider_activate_proposal(). The returned string must
	 * be freed with g_free().
	 *
	 * Returns: a new string containing the text of @proposal.
	 */
	public string getText()
	{
		auto retStr = gtk_source_completion_proposal_get_text(getSourceCompletionProposalStruct());

		scope(exit) Str.freeString(retStr);
		return Str.toString(retStr);
	}

	/**
	 * Get the hash value of @proposal. This is used to (together with
	 * gtk_source_completion_proposal_equal()) to match proposals in the completion
	 * model. By default, it uses a direct hash (g_direct_hash()).
	 *
	 * Returns: The hash value of @proposal.
	 */
	public uint hash()
	{
		return gtk_source_completion_proposal_hash(getSourceCompletionProposalStruct());
	}

	protected class OnChangedDelegateWrapper
	{
		void delegate(SourceCompletionProposalIF) dlg;
		gulong handlerId;

		this(void delegate(SourceCompletionProposalIF) dlg)
		{
			this.dlg = dlg;
			onChangedListeners ~= this;
		}

		void remove(OnChangedDelegateWrapper source)
		{
			foreach(index, wrapper; onChangedListeners)
			{
				if (wrapper.handlerId == source.handlerId)
				{
					onChangedListeners[index] = null;
					onChangedListeners = std.algorithm.remove(onChangedListeners, index);
					break;
				}
			}
		}
	}
	OnChangedDelegateWrapper[] onChangedListeners;

	/**
	 * Emitted when the proposal has changed. The completion popup
	 * will react to this by updating the shown information.
	 */
	gulong addOnChanged(void delegate(SourceCompletionProposalIF) dlg, ConnectFlags connectFlags=cast(ConnectFlags)0)
	{
		auto wrapper = new OnChangedDelegateWrapper(dlg);
		wrapper.handlerId = Signals.connectData(
			this,
			"changed",
			cast(GCallback)&callBackChanged,
			cast(void*)wrapper,
			cast(GClosureNotify)&callBackChangedDestroy,
			connectFlags);
		return wrapper.handlerId;
	}

	extern(C) static void callBackChanged(GtkSourceCompletionProposal* sourcecompletionproposalStruct, OnChangedDelegateWrapper wrapper)
	{
		wrapper.dlg(wrapper.outer);
	}

	extern(C) static void callBackChangedDestroy(OnChangedDelegateWrapper wrapper, GClosure* closure)
	{
		wrapper.remove(wrapper);
	}
}