This file is indexed.

/usr/include/geos/planargraph/Edge.h is in libgeos++-dev 3.6.2-1build2.

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
/**********************************************************************
 *
 * GEOS - Geometry Engine Open Source
 * http://geos.osgeo.org
 *
 * Copyright (C) 2001-2002 Vivid Solutions Inc.
 * Copyright (C) 2005-2006 Refractions Research Inc.
 *
 * This is free software; you can redistribute and/or modify it under
 * the terms of the GNU Lesser General Public Licence as published
 * by the Free Software Foundation. 
 * See the COPYING file for more information.
 *
 **********************************************************************/

#ifndef GEOS_PLANARGRAPH_EDGE_H
#define GEOS_PLANARGRAPH_EDGE_H

#include <geos/export.h>

#include <geos/planargraph/GraphComponent.h> // for inheritance

#include <vector> // for typedefs
#include <set> // for typedefs
#include <iosfwd> // ostream

#ifdef _MSC_VER
#pragma warning(push)
#pragma warning(disable: 4251) // warning C4251: needs to have dll-interface to be used by clients of class
#endif

// Forward declarations
namespace geos {
	namespace planargraph { 
		class DirectedEdgeStar;
		class DirectedEdge;
		class Edge;
		class Node;
	}
}

namespace geos {
namespace planargraph { // geos.planargraph

/**
 * \brief Represents an undirected edge of a PlanarGraph.
 *
 * An undirected edge in fact simply acts as a central point of reference
 * for two opposite DirectedEdge.
 * 
 * Usually a client using a PlanarGraph will subclass Edge
 * to add its own application-specific data and methods.
 */
class GEOS_DLL Edge: public GraphComponent {

public:

	friend std::ostream& operator<< (std::ostream& os, const Node&);

	/// Set of const Edges pointers
	typedef std::set<const Edge *> ConstSet;

	/// Set of non-const Edges pointers
	typedef std::set<Edge *> NonConstSet;

	/// Vector of non-const Edges pointers
	typedef std::vector<Edge *> NonConstVect;

	/// Vector of const Edges pointers
	typedef std::vector<const Edge *> ConstVect;

protected:

	/** \brief The two DirectedEdges associated with this Edge */
	std::vector<DirectedEdge*> dirEdge;

	/**
	 * \brief Constructs an Edge whose DirectedEdges are not yet set.
	 *
	 * Be sure to call setDirectedEdges(DirectedEdge, DirectedEdge)
	 */

public:

	/** \brief
	 * Constructs a Edge whose DirectedEdges are
	 * not yet set.
	 *
	 * Be sure to call
	 * {@link setDirectedEdges(DirectedEdge, DirectedEdge)}
	 */
	Edge(): dirEdge() {}

	/**
	 * \brief Constructs an Edge initialized with the given DirectedEdges.
	 *
	 * For  each DirectedEdge: sets the Edge, sets the symmetric
	 * DirectedEdge, and adds this Edge to its from-Node.
	 */
	Edge(DirectedEdge *de0, DirectedEdge *de1)
		:
		dirEdge()
	{
		setDirectedEdges(de0, de1);
	}

	/**
	 * \brief Initializes this Edge's two DirectedEdges.
	 *
	 * For each DirectedEdge:
	 *  sets the Edge, sets the symmetric DirectedEdge, and
	 *  adds this Edge to its from-Node.
	 */
	void setDirectedEdges(DirectedEdge *de0, DirectedEdge *de1);

	/**
	 * \brief Returns one of the DirectedEdges associated with this Edge.
	 * @param i 0 or 1
	 */
	DirectedEdge* getDirEdge(int i);

	/**
	 * \brief Returns the DirectedEdge that starts from the given node,
	 * or null if the node is not one of the two nodes associated
	 * with this Edge.
	 */
	DirectedEdge* getDirEdge(Node *fromNode);

	/**
	 * \brief If <code>node</code> is one of the two nodes associated
	 * with this Edge, returns the other node; otherwise returns null.
	 */
	Node* getOppositeNode(Node *node);
};

/// Print a Edge
std::ostream& operator<<(std::ostream& os, const Edge& n); 

/// For backward compatibility
//typedef Edge planarEdge;

} // namespace geos::planargraph
} // namespace geos

#ifdef _MSC_VER
#pragma warning(pop)
#endif

#endif // GEOS_PLANARGRAPH_EDGE_H