This file is indexed.

/usr/include/gstreamermm-1.0/gstreamermm/allocator.h is in libgstreamermm-1.0-dev 1.10.0+dfsg-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
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
// Generated by gmmproc 2.50.1 -- DO NOT MODIFY!
#ifndef _GSTREAMERMM_ALLOCATOR_H
#define _GSTREAMERMM_ALLOCATOR_H


#include <glibmm/ustring.h>
#include <sigc++/sigc++.h>

/* gstreamermm - a C++ wrapper for gstreamer
 *
 * Copyright 2014-2016 The gstreamermm Development Team
 *
 * This library 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 2.1 of the License, or (at your option) any later version.
 *
 * 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 library; if not, write to the Free
 * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
 *
 * Last reviewed on 2016-04-22 (1.8.0)
 */

#include <gstreamermm/object.h>
#include <gstreamermm/memory.h>


#ifndef DOXYGEN_SHOULD_SKIP_THIS
extern "C" { typedef struct _GstAllocationParams GstAllocationParams; }
#endif

#ifndef DOXYGEN_SHOULD_SKIP_THIS
using GstAllocator = struct _GstAllocator;
using GstAllocatorClass = struct _GstAllocatorClass;
#endif /* DOXYGEN_SHOULD_SKIP_THIS */


#ifndef DOXYGEN_SHOULD_SKIP_THIS
namespace Gst
{ class Allocator_Class; } // namespace Gst
#endif //DOXYGEN_SHOULD_SKIP_THIS

namespace Gst
{

/** Parameters to control the allocation of memory.
 */
class AllocationParams
{
  public:
#ifndef DOXYGEN_SHOULD_SKIP_THIS
  using CppObjectType = AllocationParams;
  using BaseObjectType = GstAllocationParams;
#endif /* DOXYGEN_SHOULD_SKIP_THIS */

  /** Get the GType for this class, for use with the underlying GObject type system.
   */
  static GType get_type() G_GNUC_CONST;


  explicit AllocationParams(GstAllocationParams* gobject, bool make_a_copy = true);

  AllocationParams(const AllocationParams& other);
  AllocationParams& operator=(const AllocationParams& other);

  AllocationParams(AllocationParams&& other) noexcept;
  AllocationParams& operator=(AllocationParams&& other) noexcept;

  ~AllocationParams() noexcept;

  void swap(AllocationParams& other) noexcept;

  ///Provides access to the underlying C instance.
  GstAllocationParams*       gobj()       { return gobject_; }

  ///Provides access to the underlying C instance.
  const GstAllocationParams* gobj() const { return gobject_; }

  ///Provides access to the underlying C instance. The caller is responsible for freeing it. Use when directly setting fields in structs.
  GstAllocationParams* gobj_copy() const;

protected:
  GstAllocationParams* gobject_;

private:

  
public:
  

  AllocationParams();

  
  /** Initialize @a params to its default values
   */
  void init();

  MemoryFlags get_flags() const;
  void set_flags(const MemoryFlags& value);

  gsize get_align() const;
  void set_align(const gsize& value);

  gsize get_prefix() const;
  void set_prefix(const gsize& value);

  gsize get_padding() const;
  void set_padding(const gsize& value);


};

/** Allocate memory blocks.
 *
 * Memory is usually created by allocators with a alloc()
 * method call. When nullptr is used as the allocator, the default allocator will
 * be used.
 *
 * New allocators can be registered with register_allocator().
 * Allocators are identified by name and can be retrieved with
 * find(). set_default() can be used to change the
 * default allocator.
 */


class Allocator : public Gst::Object
{
  
#ifndef DOXYGEN_SHOULD_SKIP_THIS

public:
  using CppObjectType = Allocator;
  using CppClassType = Allocator_Class;
  using BaseObjectType = GstAllocator;
  using BaseClassType = GstAllocatorClass;

  // noncopyable
  Allocator(const Allocator&) = delete;
  Allocator& operator=(const Allocator&) = delete;

private:  friend class Allocator_Class;
  static CppClassType allocator_class_;

protected:
  explicit Allocator(const Glib::ConstructParams& construct_params);
  explicit Allocator(GstAllocator* castitem);

#endif /* DOXYGEN_SHOULD_SKIP_THIS */

public:

  Allocator(Allocator&& src) noexcept;
  Allocator& operator=(Allocator&& src) noexcept;

  ~Allocator() noexcept override;

  /** Get the GType for this class, for use with the underlying GObject type system.
   */
  static GType get_type()      G_GNUC_CONST;

#ifndef DOXYGEN_SHOULD_SKIP_THIS


  static GType get_base_type() G_GNUC_CONST;
#endif

  ///Provides access to the underlying C GObject.
  GstAllocator*       gobj()       { return reinterpret_cast<GstAllocator*>(gobject_); }

  ///Provides access to the underlying C GObject.
  const GstAllocator* gobj() const { return reinterpret_cast<GstAllocator*>(gobject_); }

  ///Provides access to the underlying C instance. The caller is responsible for unrefing it. Use when directly setting fields in structs.
  GstAllocator* gobj_copy();

private:


public:
  
  /** Find a previously registered allocator with @a name. When @a name is <tt>nullptr</tt>, the
   * default allocator will be returned.
   * 
   * @param name The name of the allocator.
   * @return A Gst::Allocator or <tt>nullptr</tt> when
   * the allocator with @a name was not registered. Use Gst::Object::unref()
   * to release the allocator after usage.
   */
  static Glib::RefPtr<Gst::Allocator> find(const Glib::ustring& name);
  
  /** Registers the memory @a allocator with @a name. This function takes ownership of
   *  @a allocator.
   * 
   * @param name The name of the allocator.
   * @param allocator Gst::Allocator.
   */
  static void register_allocator(const Glib::ustring& name, Glib::RefPtr<Gst::Allocator>&& allocator);
  
  /** Free @a memory that was previously allocated with alloc().
   * 
   * @param memory The memory to free.
   */
  void free(Glib::RefPtr<Gst::Memory>&& memory);
  
  /** Use @a allocator to allocate a new memory block with memory that is at least
   *  @a size big.
   * 
   * The optional @a params can specify the prefix and padding for the memory. If
   * <tt>nullptr</tt> is passed, no flags, no extra prefix/padding and a default alignment is
   * used.
   * 
   * The prefix/padding will be filled with 0 if flags contains
   * Gst::MEMORY_FLAG_ZERO_PREFIXED and Gst::MEMORY_FLAG_ZERO_PADDED respectively.
   * 
   * When @a allocator is <tt>nullptr</tt>, the default allocator will be used.
   * 
   * The alignment in @a params is given as a bitmask so that @a align + 1 equals
   * the amount of bytes to align to. For example, to align to 8 bytes,
   * use an alignment of 7.
   * 
   * @param size Size of the visible memory area.
   * @param params Optional parameters.
   * @return A new Gst::Memory.
   */
  Glib::RefPtr<Gst::Memory> alloc(gsize size, const Gst::AllocationParams& params);

  /// A alloc() convenience overload.
  Glib::RefPtr<Gst::Memory> alloc(gsize size);

  
  /** Set the default allocator. This function takes ownership of @a allocator.
   */

  void set_default();

  /**
   * Find default allocator.
   *
   * @return: default allocator.
   */
  static Glib::RefPtr<Gst::Allocator> get_default_allocator();

    virtual Glib::RefPtr<Gst::Memory> alloc_vfunc(gsize size, const Gst::AllocationParams& params);


  // This vfunc is hand-coded because it takes reference to a memory.
  // In generally, arguments are passed to a function by copy, so
  // custom wrapper is necessary.
  virtual void free_vfunc(Glib::RefPtr<Gst::Memory>&& memory);

protected:

  
public:

public:
  //C++ methods used to invoke GTK+ virtual functions:

protected:
  //GTK+ Virtual Functions (override these to change behaviour):

  //Default Signal Handlers::


};
}


namespace Gst
{

/** @relates Gst::AllocationParams
 * @param lhs The left-hand side
 * @param rhs The right-hand side
 */
inline void swap(AllocationParams& lhs, AllocationParams& rhs) noexcept
  { lhs.swap(rhs); }

} // namespace Gst

namespace Glib
{

/** A Glib::wrap() method for this object.
 *
 * @param object The C instance.
 * @param take_copy False if the result should take ownership of the C instance. True if it should take a new copy or ref.
 * @result A C++ instance that wraps this C instance.
 *
 * @relates Gst::AllocationParams
 */
Gst::AllocationParams wrap(GstAllocationParams* object, bool take_copy = false);

#ifndef DOXYGEN_SHOULD_SKIP_THIS
template <>
class Value<Gst::AllocationParams> : public Glib::Value_Boxed<Gst::AllocationParams>
{};
#endif /* DOXYGEN_SHOULD_SKIP_THIS */

} // namespace Glib


namespace Glib
{
  /** A Glib::wrap() method for this object.
   *
   * @param object The C instance.
   * @param take_copy False if the result should take ownership of the C instance. True if it should take a new copy or ref.
   * @result A C++ instance that wraps this C instance.
   *
   * @relates Gst::Allocator
   */
  Glib::RefPtr<Gst::Allocator> wrap(GstAllocator* object, bool take_copy = false);
}


#endif /* _GSTREAMERMM_ALLOCATOR_H */