This file is indexed.

/usr/include/unity-2d-private/gscopedpointer.h is in libunity-2d-private-dev 5.12.0-0ubuntu1.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
/*
 * This file is part of unity-2d
 *
 * Copyright 2011 Canonical Ltd.
 *
 * Authors:
 * - Aurélien Gâteau <aurelien.gateau@canonical.com>
 *
 * License: GPL v3
 */
#ifndef GSCOPEDPOINTER_H
#define GSCOPEDPOINTER_H

// Local

// Qt
#include <QScopedPointer>

// GLib
#include <glib-object.h>

/**
 * Helper class for GScopedPointer
 */
template <class T, void (*cleanup_fcn)(T*)>
class GScopedPointerDeleter
{
public:
    static void cleanup(T* ptr)
    {
        if (ptr) {
            cleanup_fcn(ptr);
        }
    }
};

/**
 * A GScopedPointer works like a QScopedPointer, except the cleanup static
 * method is replaced with a cleanup function, making it useful to handle C
 * structs whose cleanup function prototype is "void cleanup(T*)"
 *
 * Best way to use it is to define a typedef for your C struct, like this:
 *
 * typedef GScopedPointer<Foo, foo_free> GFooPointer;
 */
template <class T, void (*cleanup)(T*)>
class GScopedPointer : public QScopedPointer<T, GScopedPointerDeleter<T, cleanup> >
{
public:
    GScopedPointer(T* ptr = 0)
    : QScopedPointer<T, GScopedPointerDeleter<T, cleanup> >(ptr)
    {}
};


/**
 * Helper class for GObjectScopedPointer
 */
template <class T, void (*cleanup_fcn)(gpointer)>
class GObjectScopedPointerDeleter
{
public:
    static void cleanup(T* ptr)
    {
        if (ptr) {
            cleanup_fcn(ptr);
        }
    }
};

/**
 * A GObjectScopedPointer is similar to a GScopedPointer. The only difference
 * is its cleanup function signature is "void cleanup(gpointer)" and defaults to
 * g_object_unref(), making it useful for GObject-based classes.
 *
 * You can use it directly like this:
 *
 * GObjectScopedPointer<GFoo> foo;
 *
 * Or define a typedef for your class:
 *
 * typedef GObjectScopedPointer<GFoo> GFooPointer;
 *
 * Note: GObjectScopedPointer does *not* call gobject_ref() when assigned a
 * pointer.
 */
template <class T, void (*cleanup)(gpointer) = g_object_unref>
class GObjectScopedPointer : public QScopedPointer<T, GObjectScopedPointerDeleter<T, cleanup> >
{
public:
    GObjectScopedPointer(T* ptr = 0)
    : QScopedPointer<T, GObjectScopedPointerDeleter<T, cleanup> >(ptr)
    {}
};

// A Generic GObject pointer
typedef GObjectScopedPointer<GObject> GObjectPointer;

// Take advantage of the cleanup signature of GObjectScopedPointer to define
// a GCharPointer
typedef GObjectScopedPointer<gchar, g_free> GCharPointer;

#endif /* GSCOPEDPOINTER_H */