This file is indexed.

/usr/include/opencascade/math_DoubleTab.gxx is in libopencascade-foundation-dev 6.5.0.dfsg-2build1.

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
// File math_DoubleTab.gxx
// Lpa, le 7/02/92


#include <math_Memory.hxx>
#include <Standard_OutOfRange.hxx>
#include <Standard_Failure.hxx>
#include <Standard_Integer.hxx>

void math_DoubleTab::Allocate()
{
  Standard_Integer RowNumber = UppR - LowR + 1;
  Standard_Integer ColNumber = UppC - LowC + 1;

  Item** TheAddr = (Item**) Standard::Allocate(RowNumber * sizeof(Item*));
  Item* Address;
  if(isAllocated) 
    Address = (Item*) Standard::Allocate(RowNumber * ColNumber * sizeof(Item));
  else
    Address = (Item*) Addr;
  Address -= LowC;
  
  for (Standard_Integer Index = 0; Index < RowNumber; Index++) {
    TheAddr[Index] = Address;
    Address += ColNumber;
  }
  
  TheAddr -= LowR;
  Addr = (Standard_Address) TheAddr;
}

math_DoubleTab::math_DoubleTab(const Standard_Integer LowerRow,
			       const Standard_Integer UpperRow,
			       const Standard_Integer LowerCol,
			       const Standard_Integer UpperCol) :
  isAllocated(Standard_True),
  LowR(LowerRow),
  UppR(UpperRow),
  LowC(LowerCol),
  UppC(UpperCol)
{
  Allocate();
}


math_DoubleTab::math_DoubleTab(const Item& Tab,
			       const Standard_Integer LowerRow,
			       const Standard_Integer UpperRow,
			       const Standard_Integer LowerCol,
			       const Standard_Integer UpperCol) :
  Addr((void *) &Tab),
  isAllocated(Standard_False),
  LowR(LowerRow),
  UppR(UpperRow),
  LowC(LowerCol),
  UppC(UpperCol)
{
  Allocate();
}

void math_DoubleTab::Init(const Item& InitValue) 
{
  for (Standard_Integer i = LowR; i <= UppR; i++) {
    for (Standard_Integer j = LowC; j <= UppC; j++) {
      ((Item**) Addr)[i][j] = InitValue;
    }
  }
}



math_DoubleTab::math_DoubleTab(const math_DoubleTab& Other) :
  isAllocated(Standard_True),
  LowR(Other.LowR),
  UppR(Other.UppR),
  LowC(Other.LowC),
  UppC(Other.UppC)
{
  Allocate();

  Standard_Address target = (Standard_Address) &Value(LowR,LowC);
  Standard_Address source = (Standard_Address) &Other.Value(LowR,LowC);

  memmove(target,source,
	  (int)((UppR - LowR + 1) * (UppC - LowC + 1) * sizeof(Item)));

}


void math_DoubleTab::Free()
{
  Standard_Integer RowNumber = UppR - LowR + 1;
  Standard_Integer ColNumber = UppC - LowC + 1;

  // free the data
  if(isAllocated) {
    Standard_Address it = (Standard_Address)&Value(LowR,LowC);
    Standard::Free(it);
  }
  // free the pointers
  Standard_Address it = (Standard_Address)(((Item**)Addr) + LowR);
  Standard::Free (it);
  Addr = 0;
}



void math_DoubleTab::SetLowerRow(const Standard_Integer LowerRow)
{
  Item** TheAddr = (Item**)Addr;
  Addr = (Standard_Address) (TheAddr + LowR - LowerRow);
  UppR = UppR - LowR + LowerRow;
  LowR = LowerRow;
}


void math_DoubleTab::SetLowerCol(const Standard_Integer LowerCol)
{
  Item** TheAddr = (Item**) Addr;
  for (Standard_Integer Index = LowR; Index <= UppR; Index++) {
    TheAddr[Index] = TheAddr[Index] + LowC - LowerCol;
  }

  UppC = UppC - LowC + LowerCol;
  LowC = LowerCol;
}