This file is indexed.

/usr/include/camitk-4.0/libraries/pml/Structure.h is in libcamitk-dev 4.0.4-2ubuntu4.

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
/*****************************************************************************
 * $CAMITK_LICENCE_BEGIN$
 *
 * CamiTK - Computer Assisted Medical Intervention ToolKit
 * (c) 2001-2016 Univ. Grenoble Alpes, CNRS, TIMC-IMAG UMR 5525 (GMCAO)
 *
 * Visit http://camitk.imag.fr for more information
 *
 * This file is part of CamiTK.
 *
 * CamiTK is free software: you can redistribute it and/or modify
 * it under the terms of the GNU Lesser General Public License version 3
 * only, as published by the Free Software Foundation.
 *
 * CamiTK 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 version 3 for more details.
 *
 * You should have received a copy of the GNU Lesser General Public License
 * version 3 along with CamiTK.  If not, see <http://www.gnu.org/licenses/>.
 *
 * $CAMITK_LICENCE_END$
 ****************************************************************************/

#ifndef STRUCTURE_H
#define STRUCTURE_H

#include "PhysicalModelIO.h"
#include <vector>
#include <algorithm> // for the remove
#include "StructureProperties.h"
class StructuralComponent;
/**
 * @ingroup group_cepmodeling_libraries_pml
 *
 * @brief
 * Pure virtual class that represent an element of the structure.
 * This implies that every structure could be represented in 3D and
 * is a part of a structural component.
 *
 **/
class Structure {
public:
    /** Base constructor */
    Structure() : properties(NULL) {
        hasIndex = false;
    }
    /** Virtual destructor needed here as this is an abstract class (pure virtual) */
    virtual ~Structure() {}

    /** print to an output stream in "pseaudo" XML format.
     *  this method is called by the structural component that includes this structure.
       */
    virtual void xmlPrint(std::ostream &, const StructuralComponent *) = 0;

    /// pure virtual method, implemented in the child-class
    virtual bool isInstanceOf(const char *) const = 0;

    /// indicate if the Structure has an index (which is not the case all the time)
    bool hasIndex;

    /// get the structure unique index (stored in its property)
    unsigned int getIndex() const;

    /** set the index.
     *  The index <b>have to be unique</b> otherwise this method
     *  has no effect.
     *  The sub-classes method will check that this index is not in use.
     *  @return true only if the index of the structure was changed
     */
    virtual bool setIndex(const unsigned int);

    /// get the type of index
    StructureProperties::GeometricType getType() const;

    /// get the list of all the StructuralComponent that are using this structure
    std::vector <StructuralComponent *> getAllStructuralComponents();

    /// get the number of StructuralComponent that are using this structure
    unsigned int getNumberOfStructuralComponents() const;

    /// get a particular StructuralComponent that is using this structure
    StructuralComponent * getStructuralComponent(unsigned int i);

    /// add a particular StructuralComponent in the list
    virtual void addStructuralComponent(StructuralComponent *);

    /// remove a particular StructuralComponent from the list
    void removeStructuralComponent(StructuralComponent *);

    /// set the name of the structure
    void setName(std::string);

    /// get the name of the structure
    std::string getName() const;

    /// set the physical model
    virtual void setPhysicalModel(PhysicalModel *);

protected:

    /** Property of the current structure */
    StructureProperties *properties;

private:

    /// list of StructuralComponent that are using this structure
    std::vector <StructuralComponent *> mySCs;

};

// -------------------- inline ---------------------
inline std::vector <StructuralComponent *> Structure::getAllStructuralComponents() {
    return mySCs;
}
inline unsigned int Structure::getNumberOfStructuralComponents() const {
    return (unsigned int) mySCs.size();
}
inline StructuralComponent * Structure::getStructuralComponent(unsigned int i) {
    if (i<mySCs.size())
        return mySCs[i];
    else
        return NULL;
}
inline void Structure::addStructuralComponent(StructuralComponent *sc) {
    mySCs.push_back(sc);
}

inline void Structure::removeStructuralComponent(StructuralComponent *sc) {
    std::vector <StructuralComponent *>::iterator it = std::find(mySCs.begin(), mySCs.end(), sc);
    if (it != mySCs.end())
        mySCs.erase(it);
}


#endif     //  STRUCTURE_H