This file is indexed.

/usr/include/freefoam/OpenFOAM/PstreamImpl.H is in libfreefoam-dev 0.1.0+dfsg-1build1.

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
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
/*----------------------------------------------------------------------------*\
                ______                _     ____          __  __
               |  ____|             _| |_  / __ \   /\   |  \/  |
               | |__ _ __ ___  ___ /     \| |  | | /  \  | \  / |
               |  __| '__/ _ \/ _ ( (| |) ) |  | |/ /\ \ | |\/| |
               | |  | | |  __/  __/\_   _/| |__| / ____ \| |  | |
               |_|  |_|  \___|\___|  |_|   \____/_/    \_\_|  |_|

                    FreeFOAM: The Cross-Platform CFD Toolkit

  Copyright (C) 2008-2012 Michael Wild <themiwi@users.sf.net>
                          Gerber van der Graaf <gerber_graaf@users.sf.net>
--------------------------------------------------------------------------------
License
    This file is part of FreeFOAM.

    FreeFOAM is free software: you can redistribute it and/or modify it
    under the terms of the GNU General Public License as published by the
    Free Software Foundation, either version 3 of the License, or (at your
    option) any later version.

    FreeFOAM 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 General Public License
    for more details.

    You should have received a copy of the GNU General Public License
    along with FreeFOAM.  If not, see <http://www.gnu.org/licenses/>.

Class
    Foam::PstreamImpl

Description
    Abstract base class for Pstream operations that depend on the parallel
    library used. Foam::PstreamImpl::New will lookup the entry
    "PstreamImplementation" in the global controlDict file (i.e. the one
    found by Foam::dotFoam) and tries to first load a library named
    lib\<PstreamImplementation\>Pstream.so, and then instantiate the class
    \<PstreamImplementation\>PstreamImpl.

SourceFiles
    PstreamImplI.H
    PstreamImpl.C


\*----------------------------------------------------------------------------*/

#ifndef PstreamImpl_H
#define PstreamImpl_H

#include <OpenFOAM/autoPtr.H>
#include <OpenFOAM/typeInfo.H>
#include <OpenFOAM/runTimeSelectionTables.H>
#include <OpenFOAM/ops.H>

// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //

namespace Foam
{

namespace helper_
{
//- Helper class
struct PstreamBase
{
    //- Types of communications
    enum commsTypes
    {
        blocking,
        scheduled,
        nonBlocking
    };
};
} // namespace helper_

/*---------------------------------------------------------------------------*\
                           Class PstreamImpl Declaration
\*---------------------------------------------------------------------------*/

class PstreamImpl
: public helper_::PstreamBase
{
    // Private data

        //- The singleton instance
        static autoPtr<PstreamImpl> instance_;

    // Private Member Functions

        //- Disallow default bitwise copy construct
        PstreamImpl(const PstreamImpl&);

        //- Disallow default bitwise assignment
        void operator=(const PstreamImpl&);

protected:

    // Protected Member Functions

        //- Set data for parallel running
        static void setParRun(bool& isParallel);

        //- Initialize all communication schedules. Callback from
        //  PstreamImpl::init()
        static void initCommunicationSchedule();

public:

    //- Types of communications
    using helper_::PstreamBase::commsTypes;

    // Declare name of the class and its debug switch
    TypeName("PstreamImpl");

    // Declare run-time constructor selection table

        declareRunTimeSelectionTable
        (
            autoPtr,
            PstreamImpl,
            dictionary,
            (),
            ()
        );

    // Constructors

        //- Construct null
        PstreamImpl(){}

    // Destructor

        virtual ~PstreamImpl() {}

    // Selectors

        //- Return a reference to the selected PstreamImpl implementation
        static autoPtr<PstreamImpl> New();

    // Member Functions

        //- Add the valid option this type of communications library
        //  adds/requires on the command line
        virtual void addValidParOptions(HashTable<string>& validParOptions) = 0;

        //- Initialisation function called from main
        //  Spawns slave processes and initialises inter-communication
        virtual bool init(int& argc, char**& argv, int& myProcNo, List<int>& procIDs, bool& isParallel) = 0;

        //- Exit program
        virtual void exit(int errnum) = 0;

        //- Abort program
        virtual void abort() = 0;

        //- Reduce implementation for scalars (@sa PstreamReduceOps.H)
        virtual void reduce(scalar& Value, const sumOp<scalar>& bop) = 0;

        //- Loads the Pstream implementation library
        static void loadPstreamLibrary();

        //- Loads the given type from the Pstream implementation library
        template<class T, class CTable>
        static autoPtr<T> loadPstreamInstance
        (
            const word& dictEntry,
            const word& envName,
            CTable* ctable
        );


    // Friends

        friend class Pstream;

};


// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //

} // End namespace Foam

// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //

#include <OpenFOAM/PstreamImplI.H>

// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //

#endif

// ************************ vim: set sw=4 sts=4 et: ************************ //