This file is indexed.

/usr/include/CLAM/Filename.hxx is in libclam-dev 1.4.0-5build1.

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
/*
 * Copyright (c) 2001-2004 MUSIC TECHNOLOGY GROUP (MTG)
 *                         UNIVERSITAT POMPEU FABRA
 *
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 of the License, or
 * (at your option) any later version.
 *
 * This program 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 General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 *
 */

#ifndef _FILENAME_H_
#define _FILENAME_H_
#include <exception>
#include <iosfwd>
#include "Text.hxx"
#include "Assert.hxx"
#include "Component.hxx"
#include "TypeInfo.hxx"
#include <string>

namespace CLAM {

/**
 * This class is a base class for configuration fields representing file names.
 * By deriving from Text you have most of the std::string operations available
 * and input serialization supporting spaces on reading.
 * 
 * Use InFilename and OutFilename subclasses to discriminate the serialization
 * direction
 * and subclass them to specify concrete filters and file type family names.
 * @sa DirectoryName
 */
class Filename : public Text
{
public:
		/// Item of a Filename filter definition
		struct Filter {
			const char * description;
			const char * wildcard;
		};
		Filename() {}
		Filename(const std::string & s) : Text(s) {} 
		Filename(const char * s) : Text(s) {}
		virtual ~Filename() {}

		/// Rewrite this method to set a name for the type family name.
		/// It is used to build messages such as 'Open the audio file'
		/// where 'audio' is the type family.
		virtual const char * TypeFamily() const { return ""; }
		/// Rewrite this method to define the set of filters that subclasses
		/// bounds to. See the examples on how to return it.
		/// Last item should be {0,0} for class users to stop iterating.
		virtual const Filter * Filters() const {
			static const Filter filters[] = {
				{0, 0}
			}; 
			return filters;
		}
};

/**
 * Input file name configuration field.
 *
 * Common operations on std::string are available to this field.
 * Specialize this class for concrete input file formats
 * by redefining Filename::Filter and Filename::TypeFamily.
 *
@code
class InImageFilename : public InFilename
{
public:
	InImageFilename(const std::string & s="") : InFilename(s) {}
	InImageFilename(const char * s) : InFilename(s) {}
	virtual const char * TypeFamily() const { return "Image"; }
	virtual const Filter * Filters() const
	{
		static const Filter filters[] = {
			{"Portable Network Graphics", "*.png"},
			{"JPEG Image", "*.jpg"},
			{"Scalable Vector Graphics", "*.svg"},
			{0,0}
		};
		return filters;
	}
};
CLAM_TYPEINFOGROUP(BasicCTypeInfo, InImageFilename);
@endcode
@see OutFilename
 */

class InFilename : public Filename
{
public:
		InFilename(const std::string & s="") : Filename(s) {} 
		InFilename(const char * s) : Filename(s) {}
};

/**
 * Output file name configuration field.
 *
 * Common operations on std::string are available to this field.
 * Specialize this class for concrete input file formats
 * by redefining Filename::Filter and Filename::TypeFamily.
 *
@code
class OutImageFilename : public OutFilename
{
public:
	OutImageFilename(const std::string & s="") : OutFilename(s) {}
	OutImageFilename(const char * s) : OutFilename(s) {}
	virtual const char * TypeFamily() const { return "Image"; }
	virtual const Filter * Filters() const
	{
		static const Filter filters[] = {
			{"Portable Network Graphics", "*.png"},
			{"JPEG Image", "*.jpg"},
			{0,0}
		};
		return filters;
	}
};
CLAM_TYPEINFOGROUP(BasicCTypeOutfo, OutImageFilename);
@endcode
@see InFilename
 */

class OutFilename : public Filename
{
public:
		OutFilename(const std::string & s="") : Filename(s) {} 
		OutFilename(const char * s) : Filename(s) {}
};

CLAM_TYPEINFOGROUP(BasicCTypeInfo, Filename);
CLAM_TYPEINFOGROUP(BasicCTypeInfo, InFilename);
CLAM_TYPEINFOGROUP(BasicCTypeInfo, OutFilename);

}

#endif // _FILENAME_H_