This file is indexed.

/usr/include/mmdb/mmdb_symop.h is in libmmdb-dev 1.25.5-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
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
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
//  $Id: mmdb_symop.h,v 1.21 2012/01/26 17:52:21 ekr Exp $
//  =================================================================
//
//   CCP4 Coordinate Library: support of coordinate-related
//   functionality in protein crystallography applications.
//
//   Copyright (C) Eugene Krissinel 2000-2008.
//
//    This library is free software: you can redistribute it and/or 
//    modify it under the terms of the GNU Lesser General Public 
//    License version 3, modified in accordance with the provisions 
//    of the license to address the requirements of UK law.
//
//    You should have received a copy of the modified GNU Lesser 
//    General Public License along with this library. If not, copies 
//    may be downloaded from http://www.ccp4.ac.uk/ccp4license.php
//
//    This program is distributed in the hope that it will be useful,
//    but WITHOUT ANY WARRANTY; without even the implied warranty of
//    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
//    GNU Lesser General Public License for more details.
//
//  =================================================================
//
//    08.07.08   <--  Date of Last Modification.
//                   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//  -----------------------------------------------------------------
//
//  **** Module  :   MMDB_SymOp <interface>
//       ~~~~~~~~~
//  **** Project :   MacroMolecular Data Base (MMDB)
//       ~~~~~~~~~
//
//  **** Classes :   CSymOp  ( symmetry operators )
//       ~~~~~~~~~   CSymOps ( container of symmetry operators )
//
//   (C) E. Krissinel 2000-2008
//
//  =================================================================
//

#ifndef __MMDB_SymOp__
#define __MMDB_SymOp__


#ifndef __Stream__
#include "stream_.h"
#endif

#ifndef __MMDB_Defs__
#include "mmdb_defs.h"
#endif



//  ====================  CSymOp  ========================

DefineClass(CSymOp);
DefineStreamFunctions(CSymOp);

class CSymOp : public CStream  {

  public :

    CSymOp ();
    CSymOp ( RPCStream Object );
    ~CSymOp();

    int     SetSymOp  ( cpstr XYZOperation );
    pstr    GetSymOp  ();

    void    Transform ( realtype & x, realtype & y, realtype & z );

    void    GetTMatrix ( mat44 & TMatrix );  // copies T to TMatrix
    void    SetTMatrix ( mat44 & TMatrix );  // copies TMatrix to T

    Boolean CompileOpTitle ( pstr S );  // makes XYZOp from matrix T
    Boolean CompileOpTitle ( pstr S, mat44 symMat, Boolean compare );
    void    Print          ();          // prints operation and matrix

    void Copy  ( PCSymOp SymOp );

    void write ( RCFile f );
    void read  ( RCFile f );

  protected :

    pstr  XYZOp;
    mat44 T;

    void InitSymOp    ();
    void FreeMemory   ();
    int  GetOperation ( int n );

};


//  ====================  CSymOps  ========================

#define SYMOP_Ok                   0
#define SYMOP_NoLibFile           -1
#define SYMOP_UnknownSpaceGroup   -2
#define SYMOP_NoSymOps            -3
#define SYMOP_WrongSyntax         -4
#define SYMOP_NotAnOperation      -5
#define SYMOP_ZeroDenominator     -6


DefineClass(CSymOps);
DefineStreamFunctions(CSymOps);

class CSymOps : public CStream  {

  public :

    CSymOps ();
    CSymOps ( RPCStream Object );
    ~CSymOps();

    virtual void FreeMemory();

    int  SetGroupSymopLib ( cpstr SpaceGroup,
                            cpstr symop_lib=NULL );
      // Space Group is taken from symop.lib. Return Code:
      // SYMOP_Ok <=> success

    int  SetGroup ( cpstr SpaceGroup,
                    cpstr syminfo_lib=NULL );
      // Space Group is taken from syminfo.lib. Return Code:
      // SYMOP_Ok <=> success

    void Reset           ();        // removes all symmetry operations
    virtual int AddSymOp ( cpstr XYZOperation ); // adds a sym.
                                                      // operation
    void PutGroupName    ( cpstr SpGroupName  );

    //  GetNofSymOps()  returns Nops -- the number of sym. operations
    int  GetNofSymOps ();
    pstr GetSymOp     ( int Nop );

    //  Transform(..) transforms the coordinates according to the
    // symmetry operation Nop. The return code is non-zero if
    // Nop is a wrong operation number (must range from 0 to Nops-1).
    int  Transform ( realtype & x, realtype & y, realtype & z,
                     int Nop );

    //  GetTMatrix(..) returns the coordinate transformation matrix
    // for the symmetry operation Nop. The return code is non-zero if
    // Nop is a wrong operation number (must range from 0 to Nops-1).
    int  GetTMatrix ( mat44 & TMatrix, int Nop );

    void Print ();

    virtual void Copy ( PCSymOps SymOps );

    void write ( RCFile f );
    void read  ( RCFile f );

  protected :

    pstr     SpGroup;
    int      Nops;
    PPCSymOp SymOp;

    void InitSymOps();

};


// extern void TestSymOps();

#endif