This file is indexed.

/usr/include/paragui/pgsurfacecache.h is in libparagui1.1-dev 1.1.8-3.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
/*
    ParaGUI - crossplatform widgetset
    Copyright (C) 2000,2001,2002  Alexander Pipelka
 
    This library is free software; you can redistribute it and/or
    modify it under the terms of the GNU Library General Public
    License as published by the Free Software Foundation; either
    version 2 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
    Library General Public License for more details.
 
    You should have received a copy of the GNU Library General Public
    License along with this library; if not, write to the Free
    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 
    Alexander Pipelka
    pipelka@teleweb.at
 
    Last Update:      $Author: braindead $
    Update Date:      $Date: 2004/03/12 18:46:38 $
    Source File:      $Source: /cvsroot/paragui/paragui/include/pgsurfacecache.h,v $
    CVS/RCS Revision: $Revision: 1.3.6.1.2.4 $
    Status:           $State: Exp $
*/

/** \file pgsurfacecache.h
    Headerfile for for the PG_SurfaceCache class.
  */

#ifndef PG_SURFACECACHE_H
#define PG_SURFACECACHE_H

#include "paragui.h"
#include "pgcolor.h"
#include <string>

typedef struct {
	int refcount;
	SDL_Surface* surface;
	std::string key;
}
pg_surface_cache_t;


/** @short A class for caching SDL_Surface images.
    
    To reduce memory consumption, paragui classes use this class to cache
    their surfaces. The class stores an internal counter for each surface that
    is decreased every time the surface is deleted. It is proposed to use this
    interface if you add a new class to ParaGui.
  */

class DECLSPEC PG_SurfaceCache {
public:

	PG_SurfaceCache();
	virtual ~PG_SurfaceCache();

    /** Create a fairly unique key for a given surface.
        
      @param    key         the key will be returned here
      @param    w           width of the surface
      @param    h           height of the surface
      @param    gradient    is added to the key if non-zero
      @param    background  the surface for the key
      @param    bkmode      see explanation
      @param    blend       see explanation

      This function has the task of creating a unique key to a given
      surface. This is done by simply writing all parameters one after
      the other, but the implementation may change in future versions.
      Therefore, the parameters are not really neccessary. However, to ensure
      that the created keys are unique, you should use the parameters.
      */
	void CreateKey(std::string &key, Uint16 w, Uint16 h,
	               PG_Gradient* gradient, SDL_Surface* background,
	               Sint8 bkmode, Uint8 blend);

    /** Find the surface to a given key .

        @param  key the key whose surface is searched
        @return the surface or NULL if no surfac was found
      */
	SDL_Surface* FindSurface(const std::string &key);

    /** Add a surface to the list.
        
        @param  key     the key associated with the surface
        @param  surface the surface you want to add to the cache
        @return the surface from the cache

        \warning If you add a surface whose key already exists and which is
        different from the surface in the cache, your surface will be quietly
        deleted. So NEVER touch a surface again after you have added it to the
        cache. ALWAYS use the returned pointer instead.

        This behaviour has a slight drawback if you add a surface the
        second time, because then the surface is not deleted...
      */
	SDL_Surface* AddSurface(const std::string &key, SDL_Surface* surface);

    /** Deletes a surface from the list

        @param  surface             the surface to be deleted
        @param  bDeleteIfNotExists  if set to true, the surface is deleted
                                    when the reference counter reaches 0

        This function reduces the reference counter of the surface. If the
        counter reaches 0 and the bool parameter is set, the surface is freed.
      */
	void DeleteSurface(SDL_Surface* surface, bool bDeleteIfNotExists = true);

    /** Increase the reference counter of a surface
        
        @param  key the key of the surface
      */
	void IncRef(const std::string &key);

    /** Removes all surfaces from the cache */
	void Cleanup();

private:

	pg_surface_cache_t* FindByKey(const std::string &key);
	pg_surface_cache_t* FindBySurface(SDL_Surface* surface);

	void* my_surfacemap;
	void* my_surfacemap_index;
};

#endif	// SURFACECACHE_H