This file is indexed.

/usr/include/libwildmagic/Wm5TSManifoldMesh.h is in libwildmagic-dev 5.13-1ubuntu3.

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
// Geometric Tools, LLC
// Copyright (c) 1998-2014
// Distributed under the Boost Software License, Version 1.0.
// http://www.boost.org/LICENSE_1_0.txt
// http://www.geometrictools.com/License/Boost/LICENSE_1_0.txt
//
// File Version: 5.10.1 (2014/01/21)

#ifndef WM5TSMANIFOLDMESH_H
#define WM5TSMANIFOLDMESH_H

#include "Wm5TriangleKey.h"
#include "Wm5TetrahedronKey.h"

namespace Wm5
{

class WM5_MATHEMATICS_ITEM TSManifoldMesh
{
public:
    // Triangle data types.
    class Triangle;
    typedef Triangle* (*TCreator)(int, int, int);
    typedef std::map<UnorderedTriangleKey, Triangle*> TMap;
    typedef TMap::iterator TMapIterator;
    typedef TMap::const_iterator TMapCIterator;

    // Tetrahedron data types.
    class Tetrahedron;
    typedef Tetrahedron* (*SCreator)(int, int, int, int);
    typedef std::map<TetrahedronKey, Tetrahedron*> SMap;
    typedef SMap::iterator SMapIterator;
    typedef SMap::const_iterator SMapCIterator;

    // Triangle object.
    class WM5_MATHEMATICS_ITEM Triangle
    {
    public:
        virtual ~Triangle();
        Triangle(int v0, int v1, int v2);

        // Vertices of the face.
        int V[3];

        // Tetrahedra sharing the face.
        Tetrahedron* T[2];
    };

    // Tetrahedron object.
    class WM5_MATHEMATICS_ITEM Tetrahedron
    {
    public:
        virtual ~Tetrahedron();
        Tetrahedron(int v0, int v1, int v2, int v3);

        // Vertices, listed in an order so that each face vertices in
        // counterclockwise order when viewed from outside the tetrahedron.
        int V[4];

        // Adjacent faces.  T[i] points to the triangle face opposite V[i].
        //   T[0] points to face (V[1],V[2],V[3])
        //   T[1] points to face (V[0],V[3],V[2])
        //   T[2] points to face (V[0],V[1],V[3])
        //   T[3] points to face (V[0],V[2],V[1])
        Triangle* T[4];

        // Adjacent tetrahedra.  S[i] points to the adjacent tetrahedron
        // sharing face T[i].
        Tetrahedron* S[4];
    };


    // Construction and destruction.
    virtual ~TSManifoldMesh();
    TSManifoldMesh(TCreator tCreator = 0, SCreator sCreator = 0);

    // Member access.
    const TMap& GetTriangles() const;
    const SMap& GetTetrahedra() const;

    // If <v0,v1,v2,v3> is not in the mesh, a Tetrahedron object is created
    // and returned; otherwise, <v0,v1,v2,v3> is in the mesh and nullptr is
    // returned.  If the insertion leads to a nonmanifold mesh, the call
    // fails with a null pointer returned.
    Tetrahedron* Insert(int v0, int v1, int v2, int v3);

    // If <v0,v1,v2,v3> is in the mesh, it is removed and 'true' is returned;
    // otherwise, <v0,v1,v2,v3> is not in the mesh and 'false' is returned.
    bool Remove(int v0, int v1, int v2, int v3);

    // A manifold mesh is closed if each face is shared twice.
    bool IsClosed() const;

    // For debugging.  The function returns 'true' iff the text file has been
    // created and saved.
    bool Print(const char* filename);

protected:
    // The triangle data and default triangle creation.
    static Triangle* CreateTriangle(int v0, int v1, int v2);
    TCreator mTCreator;
    TMap mTMap;

    // The tetrahedron data and default tetrahedron creation.
    static Tetrahedron* CreateTetrahedron(int v0, int v1, int v2, int v3);
    SCreator mSCreator;
    SMap mSMap;
};

}

#endif