This file is indexed.

/usr/include/votca/csg/molecule.h is in libvotca-csg2-dev 1.2.4-2.1.

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
/* 
 * Copyright 2009-2011 The VOTCA Development Team (http://www.votca.org)
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 *
 */

#ifndef _MOLECULE_H
#define	_MOLECULE_H

#include <vector>
#include <map>
#include <string>
#include <assert.h>
#include "topologyitem.h"
#include "bead.h"

namespace votca { namespace csg {
using namespace votca::tools;

using namespace std;

class Interaction;


/**
    \brief information about molecules

    The Molecule class stores which beads belong to a molecule.
    The organization of beads into molecules is needed for the CG mapping.

    \todo sort atoms in molecule

*/
class Molecule : public TopologyItem
{
public:            
    /// get the molecule ID
    int getId() const { return _id; }
    
    /// get the name of the molecule
    const string &getName() const { return _name; }
    
    /// set the name of the molecule
    void setName(const string &name) {  _name=name; }
    
    /// Add a bead to the molecule
    void AddBead(Bead *bead, const string &name);
    /// get the id of a bead in the molecule
    Bead *getBead(int bead) { return _beads[bead]; }
    int getBeadId(int bead) { return _beads[bead]->getId(); }
    int getBeadIdByName(const string &name);
    
    /// get the number of beads in the molecule
    int BeadCount() const { return _beads.size(); }
    
    /// find a bead by it's name
    int getBeadByName(const string &name);
    string getBeadName(int bead) {return _bead_names[bead]; }

    /// Add an interaction to the molecule
    void AddInteraction(Interaction *ic) { _interactions.push_back(ic);
        }

    vector<Interaction *> Interactions() { return _interactions; }

    template<typename T>
    void setUserData(T *userdata) { _userdata = (void*)userdata; }

    template<typename T>
    T *getUserData() { return (T *)_userdata; }
    
private:
    // maps a name to a bead id
    map<string, int> _beadmap;
   vector<Interaction*> _interactions;
     
    // id of the molecules
    int _id;
    
    // name of the molecule
    string _name;
    // the beads in the molecule
    vector<Bead *> _beads;
    vector<string> _bead_names;

    void *_userdata;
    
    /// constructor
    Molecule(Topology *parent, int id, string name)
        : TopologyItem(parent), _id(id), _name(name)
    {}

    friend class Topology;
};

inline int Molecule::getBeadIdByName(const string &name)
{
    int i = getBeadByName(name);
    if(i<0)
        return i;
    return _beads[i]->getId();
}

}}

#endif	/* _Molecule_H */