This file is indexed.

/usr/include/geos/geom/prep/AbstractPreparedPolygonContains.h is in libgeos-dev 3.2.2-3ubuntu1.

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
/**********************************************************************
 * $Id: AbstractPreparedPolygonContains.h 2420 2009-04-29 08:56:14Z strk $
 *
 * GEOS - Geometry Engine Open Source
 * http://geos.refractions.net
 *
 * Copyright (C) 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.
 *
 *
 **********************************************************************
 *
 * Last port: geom/prep/AbstractPreparedPolygonContains.java rev 1.7 (JTS-1.10)
 * (2007-12-12)
 *
 **********************************************************************/

#ifndef GEOS_GEOM_PREP_ABSTRACTPREPAREDPOLYGONCONTAINS_H
#define GEOS_GEOM_PREP_ABSTRACTPREPAREDPOLYGONCONTAINS_H

#include <geos/geom/prep/PreparedPolygonPredicate.h> // inherited


// forward declarations
namespace geos {
	namespace geom { 
		class Geometry;

		namespace prep { 
			class PreparedPolygon;
		}
	}
}


namespace geos {
namespace geom { // geos::geom
namespace prep { // geos::geom::prep

/**
 * \brief
 * A base class containing the logic for computes the <tt>contains</tt>
 * and <tt>covers</tt> spatial relationship predicates
 * for a {@link PreparedPolygon} relative to all other {@link Geometry} classes.
 *
 * Uses short-circuit tests and indexing to improve performance. 
 * 
 * Contains and covers are very similar, and differ only in how certain
 * cases along the boundary are handled.  These cases require 
 * full topological evaluation to handle, so all the code in 
 * this class is common to both predicates.
 * 
 * It is not possible to short-circuit in all cases, in particular
 * in the case where line segments of the test geometry touches the polygon
 * linework.
 * In this case full topology must be computed.
 * (However, if the test geometry consists of only points, this 
 * <i>can</i> be evaluated in an optimized fashion.
 * 
 * @author Martin Davis
 *
 */
class AbstractPreparedPolygonContains : public PreparedPolygonPredicate 
{
private:
	// information about geometric situation
	bool hasSegmentIntersection;
	bool hasProperIntersection;
	bool hasNonProperIntersection;

	bool isProperIntersectionImpliesNotContainedSituation( const geom::Geometry * testGeom);

	/**
	 * Tests whether a geometry consists of a single polygon with no holes.
	 *  
	 * @return true if the geometry is a single polygon with no holes
	 */
	bool isSingleShell( const geom::Geometry & geom);
	
	void findAndClassifyIntersections( const geom::Geometry * geom);

protected:
	/**
	 * This flag controls a difference between contains and covers.
	 * 
	 * For contains the value is true.
	 * For covers the value is false.
	 */
	bool requireSomePointInInterior;

	/**
	 * Evaluate the <tt>contains</tt> or <tt>covers</tt> relationship
	 * for the given geometry.
	 * 
	 * @param geom the test geometry
	 * @return true if the test geometry is contained
	 */
	bool eval( const geom::Geometry * geom);

 	/**
 	 * Computes the full topological predicate.
	 * Used when short-circuit tests are not conclusive.
	 * 
	 * @param geom the test geometry
	 * @return true if this prepared polygon has the relationship with the test geometry
	 */
	virtual bool fullTopologicalPredicate( const geom::Geometry * geom) =0;

public:
	AbstractPreparedPolygonContains( const PreparedPolygon * const prepPoly) 
	:	PreparedPolygonPredicate( prepPoly),
		hasSegmentIntersection( false),
		hasProperIntersection( false),
		hasNonProperIntersection( false),
		requireSomePointInInterior(true)
	{ }

	AbstractPreparedPolygonContains( const PreparedPolygon * const prepPoly, bool requireSomePointInInterior) 
	:	PreparedPolygonPredicate( prepPoly),
		hasSegmentIntersection( false),
		hasProperIntersection( false),
		hasNonProperIntersection( false),
		requireSomePointInInterior(requireSomePointInInterior)
	{ }

	virtual ~AbstractPreparedPolygonContains()
	{ }

};

} // geos::geom::prep
} // geos::geom
} // geos

#endif // GEOS_GEOM_PREP_ABSTRACTPREPAREDPOLYGONCONTAINS_H
/**********************************************************************
 * $Log$
 **********************************************************************/