This file is indexed.

/usr/include/magics/XmlNode.h is in libmagics++-dev 3.0.0-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
/*
 * (C) Copyright 1996-2016 ECMWF.
 * 
 * This software is licensed under the terms of the Apache Licence Version 2.0
 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. 
 * In applying this licence, ECMWF does not waive the privileges and immunities 
 * granted to it by virtue of its status as an intergovernmental organisation nor
 * does it submit to any jurisdiction.
 */

/*! \file XmlNode.h
    \brief Definition of the Template class XmlNode.
    
    Magics Team - ECMWF 2005
    
    Started: Fri 10-Jun-2005
    
    Changes:
    
*/

#ifndef XmlNode_H
#define XmlNode_H

#include "magics.h"
#include "VectorOfPointers.h"


namespace magics {
	
class XmlNode;
	
class XmlNodeVisitor
{
public:
	XmlNodeVisitor() {}
	virtual ~XmlNodeVisitor() {}
	virtual void visit(const XmlNode&) = 0;
	
};

class XmlNode {

public:
    typedef vector<XmlNode*>::const_iterator ElementIterator;
    typedef map<string, string>::const_iterator AttributesIterator;
    typedef vector<string>::const_iterator DataIterator;
    
	XmlNode();
	XmlNode(const string&);
	XmlNode(const string&, const map<string, string>&);
	XmlNode(const XmlNode&, const map<string, string>&);
	XmlNode(const XmlNode&);
	
	virtual ~XmlNode();
	void push_back(XmlNode* element) { elements_.push_back(element); }
	void setData(const string& data) { data_.push_back(data); }
	
	
	bool noElement() const { return elements_.empty(); }
	
	ElementIterator firstElement()  const      { return elements_.begin(); }
	ElementIterator lastElement() const        { return elements_.end(); }
	AttributesIterator firstAttributes() const { return attributes_.begin(); }
	AttributesIterator lastAttributes() const  { return attributes_.end(); }
	DataIterator   firstData() const           { return data_.begin(); }
	DataIterator   lastData() const            { return data_.end(); }
	const string& data() const              { static string e = ""; return data_.empty() ? e : *data_.begin(); }
	
	string   getAttribute(const string& attr, const string& def = "") const;
	
	const string&   name() const                       { return name_; } 
	void   name(const string& name)                       { name_ = name; } 
	const map<string, string>&   attributes() const { return attributes_; }
	void addAttribute(const string& param, const string& value) { attributes_.insert(make_pair(param, value)); }
	
	void  visit(XmlNodeVisitor&) const;
	
protected:
     //! Method to print string about this class on to a stream of type ostream (virtual).
	 virtual void print(ostream&) const; 
	 string                  name_;
	 vector<string>          data_;
	 VectorOfPointers<vector<XmlNode*> > elements_;
	 map<string, string>  attributes_;
	 void copy(const XmlNode&); 
private:
 
    //! Overloaded << operator to copy - No copy allowed
	XmlNode& operator=(const XmlNode&);

// -- Friends
    //! Overloaded << operator to call print().
	friend ostream& operator<<(ostream& s,const XmlNode& p)
		{ p.print(s); return s; }

};

} // namespace magics
#endif