This file is indexed.

/usr/include/CLAM/XMLComponentAdapter.hxx is in libclam-dev 1.4.0-7.

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
/*
 * 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
 *
 */

//////////////////////////////////////////////////////////////////////
// Class XMLComponentAdapter
// 

#ifndef _XMLComponentAdapter_h
#define _XMLComponentAdapter_h
#include "BasicXMLable.hxx"
#include "Component.hxx"
#include "Assert.hxx"

namespace CLAM {

/**
 * @ingroup XmlAdapters
 * @brief
 * This class adapts to the XMLable interface any object that is 
 * a CLAM::Component.
 *
 * The XMLComponent adapter implements both the XMLable
 * and the Component interface. So, implements the retrieval of
 * XML properties (naming, being Element, Atribute or Simple 
 * content...) and implements the StoreOn function that is called
 * by the XMLStorage to allow the component store its subitems.
 * The StoreOn is implemented in XMLComponentAdapter simply by
 * forwarding the call to de Adaptee.
 * 
 * You should use XMLComponentAdapter when: 
 * - You have a Component that you don't want always to overload
 *   with the XML stuff, but in some cases you need to store it as
 *   XML content.
 * 
 * Note: Simple content, (XMLable::XMLContent() implementation)
 * returns an empty string.
 * 
 * <B>Pay attention to the management of the name memory</B>
 * (see CLAM::BasicXMLable).
 * 
 * @see XMLable
 * @see Component
 */
class XMLComponentAdapter : public BasicXMLable , public Component {
// Internal Types
public:
	typedef BasicXMLable super;
// Attributes
private:
	Component &myAdaptee;
// Construction/Destruction
public:
	/**
	 * Constructs a XMLComponentAdapter
	 * <p><b>Note:</b> You cannot use this adapter as attribute
	 * because the content adapter does not know how to extract
	 * the XML content. Alternatives: Implement &lt;&lt; and
	 * &gt;&gt; and adapt it with a simple XMLAdapter.
	 * @param adaptee The Component to be adapted (where 
	 * subitem will be located)
	 * @param name A pointer to a 0 terminated string 
	 * containing the xml name (for elements and attributes)
	 * or 0 (the default) if the element is neither an 
	 * element nor an attribute (@see #BasicXMLable for
	 * important details about memory managing).
	 * <B>Because no internal copy of the string is done, the 
	 * 0 terminated string pointed by <EM>name</EM> must 
	 * exist during the BasicXMLable life as is directly used.</B>
	 * @param isXMLElement Tells whether the object is an
	 * element or an attribute when the name is defined.
	 * <b>If a name is given, this must be true because a component
	 * adapter cannot adapt as attribute.</b>
	 */
	template <class T> XMLComponentAdapter (const T & adaptee, const char * name=NULL, bool isXMLElement=false)
		: BasicXMLable(name, isXMLElement), myAdaptee(const_cast<T&>(adaptee))
	{
		CLAM_ASSERT(!name||isXMLElement,"Adapting a component as attribute is useless");
	}
	virtual ~XMLComponentAdapter() {};

// Accessors (for XMLable interface)
public:
	//* @return The XML content: an empty string.
	virtual std::string XMLContent() const
	{
		return "";
	}

	//* Extracts the content from the stream.
	virtual bool XMLContent(std::istream & str) 
	{
		return true;
	}

	//* Returns the class name
	const char * GetClassName() const {return "XMLComponentAdapter";}

// Operators (for Component interface)
public:
	/** 
	 * Stores subitems on the given Storage
	 * @param store The given storage where the subitem will be stored
	 * @see Storage
	 */
	virtual void StoreOn (Storage & store) const {
		myAdaptee.StoreOn(store);
	};
	/**
	 * Loads component's subitems from the given Storage
	 * @param store The given storage where the subitem will be loaded from
	 * @see Storage
	 */
	virtual void LoadFrom (Storage & store) {
		myAdaptee.LoadFrom(store);
	};
// Testing
public:
	//* Check the internal status for a class instance is valid
	bool FulfilsInvariant();
};

}

#endif//_XMLComponentAdapter_h