This file is indexed.

/usr/include/trilinos/snl_fei_PointBlockMap.hpp is in libtrilinos-dev 10.4.0.dfsg-1ubuntu2.

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
/*--------------------------------------------------------------------*/
/*    Copyright 2005 Sandia Corporation.                              */
/*    Under the terms of Contract DE-AC04-94AL85000, there is a       */
/*    non-exclusive license for use of this work by or on behalf      */
/*    of the U.S. Government.  Export of this program may require     */
/*    a license from the United States Government.                    */
/*--------------------------------------------------------------------*/

#ifndef _snl_fei_PointBlockMap_hpp_
#define _snl_fei_PointBlockMap_hpp_

#include <fei_macros.hpp>

#include <map>

namespace snl_fei {
  /** Stores mappings between point-entry equations and block-entry equations.
      This class, once initialized, can answer queries such as:<br>
      Given a point-equation, return the corresponding block-equation.<br>
      or, Given a block-equation, return the corresponding size (number of
      point-equations contained in the block).
  */
  class PointBlockMap {
  public:
    /** Constructor */
    PointBlockMap();

    /** Destructor */
    virtual ~PointBlockMap();

   /** Indicate to this object that point-equations are equal to
       block-equations which means that all block-equation sizes are 1 and
       all mappings are trivial. This will cause the internal mapping objects
       to be emptied, to save memory, and all lookup queries will be instant.
   */
   void setPtEqualBlk();

   /** query whether block-size == 1, i.e., "point-equals-block"
   */
   bool ptEqualBlk() { return( ptEqualBlk_ ); }

   /** Establish the mapping blkEqn => ptEqn. I.e., insert ptEqn and blkEqn 
       into internal structures, and establish a correspondence between them.
       This function returns an error if 'setPtEqualBlk' has been called and
       ptEqn != blkEqn.
   */
   int setEqn(int ptEqn, int blkEqn);

   /** Establish the mapping blkEqn => ptEqn. I.e., insert ptEqn and blkEqn 
       into internal structures, and establish a correspondence between them,
       also setting the associated block-size.
       This function returns an error if 'setPtEqualBlk' has been called and
       ptEqn != blkEqn.
   */
   int setEqn(int ptEqn, int blkEqn, int blkSize);

   /** Store the specified size corresponding to the specified block-equation.
    Note that blkEqn must already have appeared in a call to 'setEqn', in order
   to establish it in a mapping. Otherwise, an error (-1) is returned.
   */
   int setBlkEqnSize(int blkEqn, int size);

   /** Given a blkEqn, return the corresponding size. */
   int getBlkEqnSize(int blkEqn);

   /** Query the maximum block-equation size
    */
   int getMaxBlkEqnSize() { return( maxSize_ ); }

   /** Set the maximum block-equation size
    */
   void setMaxBlkEqnSize(int sz) { maxSize_ = sz; }

   /** Given a point-equation, return the corresponding block-equation.
       If eqn does not correspond to a block-equation, then -1 is
       returned.
       A return-value of -1 always indicates a not-found or not-valid error.
   */
   int eqnToBlkEqn(int eqn) const;

   /** Given a block-equation, return the corresponding point-equation (the
       first of the point-equations that correspond to that block-equation).
       If blkEqn does not correspond to a point-equation, then -1 is
       returned.
   */
   int blkEqnToPtEqn(int blkEqn) const;

   /** Given a block-equation, query for the corresponding point-equation (the
       first of the corresponding point-equations) and the block-size, or
       number of corresponding point-equations.
       @return -1 if block-equation not found, 0 if no error
   */
   int getBlkEqnInfo(int blkEqn, int& ptEqn, int& blkSize);

   /** Given a point-equation, query for the corresponding block-equation and
       the offset of this point-equation into the block-equation.
       @return -1 if point-equation not found, 0 if no error
   */
   int getPtEqnInfo(int ptEqn, int& blkEqn, int& blkOffset);

   /** Given a blkEqn/ptEqn pair, return the offset of the ptEqn into the
       blkEqn. Example: if blkEqn 23 corresponds to ptEqn 69, and the arguments
       to this function are blkEqn==23 and ptEqn==71, then the return value is
       2, which is the offset of ptEqn==71 into blkEqn==23.
   */
   int getBlkEqnOffset(int blkEqn, int ptEqn);

   /** Query whether specified point-equation is the first equation within
       a block-equation
   */
   bool isExactlyBlkEqn(int ptEqn);

   /** Return database of point-equations
    */
   std::map<int,int>* getPtEqns()
     {
       return( ptEqns_ );
     }

   /** Return database of block-equations
    */
   std::map<int,std::pair<int,int> >* getBlkEqns()
     {
       return( blkEqns_ );
     }

  private:
   /** copy constructor */
   PointBlockMap(const PointBlockMap& src);

   PointBlockMap& operator=(const PointBlockMap& src);

   std::map<int,int>* ptEqns_; //ptEqns_ maps point-equations to block-equations

   std::map<int,std::pair<int,int> >* blkEqns_;
   //blkEqns_ maps block-equations to point-equations and block-sizes
   //(the point-equation stored is the first or smallest point-equation that is
   //associated with the block-equation)

   int maxSize_;

   bool ptEqualBlk_; //if this is true, then all blkSizes are 1
  };//class PointBlockMap
}//namespace snl_fei
#endif // _snl_fei_PointBlockMap_hpp_