This file is indexed.

/usr/include/openturns/swig/Matrix.i is in python-openturns-dev 1.2-2.

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
// SWIG file Matrix.i
// @author schueller
// @date   2012-02-15 18:09:50 +0100 (Wed, 15 Feb 2012)

%{
#include "Matrix.hxx"
%}

%template(MatrixImplementationTypedInterfaceObject) OT::TypedInterfaceObject<OT::MatrixImplementation>;
%apply const NumericalScalarCollection & { const OT::Matrix::NumericalScalarCollection & };

%define OTMatrixGetAccessor(matrixType, elementType)
elementType __getitem__(PyObject * args) const {
  OT::UnsignedLong arg2 ;
  OT::UnsignedLong arg3 ;
  unsigned long val2 ;
  int ecode2 = 0 ;
  unsigned long val3 ;
  int ecode3 = 0 ;
  PyObject * obj1 = 0 ;
  PyObject * obj2 = 0 ;

  if (!PyArg_ParseTuple(args,(char *)"OO:" #matrixType "___getitem__",&obj1,&obj2)) SWIG_fail;

  ecode2 = SWIG_AsVal_unsigned_SS_long(obj1, &val2);
  if (!SWIG_IsOK(ecode2)) {
    SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" #matrixType "___getitem__" "', argument " "2"" of type '" "OT::UnsignedLong""'");
  }
  arg2 = static_cast< OT::UnsignedLong >(val2);


  ecode3 = SWIG_AsVal_unsigned_SS_long(obj2, &val3);
  if (!SWIG_IsOK(ecode3)) {
    SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" #matrixType "___getitem__" "', argument " "3"" of type '" "OT::UnsignedLong""'");
  }
  arg3 = static_cast< OT::UnsignedLong >(val3);

  return (*self)(arg2,arg3);
fail:
  return 0.;
}
%enddef

%define OTMatrixSetAccessor(matrixType, elementType)
void __setitem__(PyObject * args, elementType val) {
  OT::UnsignedLong arg2 ;
  OT::UnsignedLong arg3 ;
  unsigned long val2 ;
  int ecode2 = 0 ;
  unsigned long val3 ;
  int ecode3 = 0 ;
  PyObject * obj1 = 0 ;
  PyObject * obj2 = 0 ;
  if (!PyArg_ParseTuple(args,(char *)"OO:" #matrixType "___setitem__",&obj1,&obj2)) SWIG_fail;

  ecode2 = SWIG_AsVal_unsigned_SS_long(obj1, &val2);
  if (!SWIG_IsOK(ecode2)) {
    SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" #matrixType "___setitem__" "', argument " "2"" of type '" "OT::UnsignedLong""'");
  }
  arg2 = static_cast< OT::UnsignedLong >(val2);

  ecode3 = SWIG_AsVal_unsigned_SS_long(obj2, &val3);
  if (!SWIG_IsOK(ecode3)) {
    SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" #matrixType "___setitem__" "', argument " "3"" of type '" "OT::UnsignedLong""'");
  }
  arg3 = static_cast< OT::UnsignedLong >(val3);

  (*self)(arg2,arg3) = val;
fail:
  return;
}
%enddef

%define OTMatrixAccessors(matrixType, elementType)
OTMatrixGetAccessor(matrixType, elementType)
OTMatrixSetAccessor(matrixType, elementType)
%enddef

%include Matrix.hxx

%pythoncode %{
# This code has been added to conform to Numpy ndarray interface
# that tries to reuse the data stored in the Matrix (zero copy)
# see http://docs.scipy.org/doc/numpy/reference/arrays.interface.html#arrays-interface
# for details.
# See python doc http://docs.python.org/reference/datamodel.html?highlight=getattribute#object.__getattribute__
# for details on how to write such a method.
def Matrix___getattribute__(self, name):
  """__getattribute__(self, name) -> value"""
  if (name == '__array_interface__'):
    self.__dict__['__array_interface__'] = { 'shape'   : ( self.getNbRows(), self.getNbColumns() ),
               'typestr' : "|f" + str(self.__elementsize__()),
               'data'    : ( int(self.__baseaddress__()), True),
               'strides' : ( self.__stride__(0), self.__stride__(1) ),
               'version' : 3,
    }
  return object.__getattribute__(self,name)
Matrix.__getattribute__ = Matrix___getattribute__
%}

namespace OT {  

%extend Matrix {

  Matrix(const Matrix & other) { return new OT::Matrix(other); }

  Matrix(PyObject * pyObj) { return new OT::Matrix( OT::convert<OT::_PySequence_,OT::Matrix>(pyObj) ); }

  OTMatrixAccessors(Matrix, NumericalScalar)

  Matrix __rmul__(NumericalScalar s) { return s * (*self); }
    
  Matrix __truediv__(NumericalScalar s) { return (*self) / s; }

} // Matrix
} // OT