This file is indexed.

/usr/include/votca/tools/application.h is in libvotca-tools-dev 1.3.0-2+b2.

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
/*
 * 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 __VOTCA_APPLICATION_H
#define	__VOTCA_APPLICATION_H

#include <boost/program_options.hpp>
#include "property.h"

namespace votca { namespace tools {

class Application
{
public:
    Application();
    virtual ~Application();

    /**
     * \brief executes the program
     * \param argc argc from main
     * \param argv argv from main
     * \return return code
     */
    int Exec(int argc, char **argv);
    int ExecThreaded(int argc, char **argv);

    /**
     * \brief program name
     * \return string with program name
     *
     * overload this function to set the program name
     */
    virtual string ProgramName() = 0;

    /**
     * \brief version string of application
     * \return version string
     */
    virtual string VersionString();

    /**
     * \brief help text of application without version information
     * \param out ostream for output
     */
    virtual void HelpText(std::ostream &out) = 0;

    /**
     * \brief Initialize application data
     *
     * Initialize is called by run before parsing the command line.
     * All necesassary command line arguments can be added here
     */
    virtual void Initialize() {}
    
    /**
     * \brief Process command line options
     * \return true to contine, false to stop
     *
     * EvaluateOptions is called by Run after parsing the command line.
     * return true if everything is ok, false to stop and show help text.
     */
    virtual bool EvaluateOptions() { return false; }

    /**
     * \brief Check weather required option is set
     * \param option_name name of the option
     * \param error_msg error message if option is missing
     *
     * CheckRequired is called from EvaluateOptions if a required options is set.
     * If not, the list of possible options is shown and an exception with
     * the error messig given in error_msg is thrown
     */
    void CheckRequired(const string &option_name, const string &error_msg="");

    /**
     * \brief Main body of application
     *
     * Run is called after command line was parsed + evaluated. All
     * the work should be done in here.
     */
    virtual void Run() { }
    virtual void RunThreaded() { }

    /**
     * \brief add option for command line
     * \param group group string
     * \return easy_init of boost, see documentation
     *
     * Adds an option to the available command line options. If no group is
     * specified, it is added to the standard group (Allowed Options). If group
     * is given, a sub group for this set of options will be created.
     */
    boost::program_options::options_description_easy_init
        AddProgramOptions(const string &group = "");
    
    /**
     * \brief get available program options & descriptions
     * \return variables_map (see boost documentation)
     */
    boost::program_options::variables_map &OptionsMap() { return _op_vm; }
    boost::program_options::options_description &OptionsDesc() { return _op_desc; }
    
    /**
     * \brief filters out the Hidden group from the options descriptions
     * \return Option descriptions without the "Hidden" group
     */
    boost::program_options::options_description &VisibleOptions(){ return _visible_options; }

    /**
     * \brief call StopExecution after EvaluateOptions
     *
     * This is useful if the program executes an operation in EvaluateOptions
     * and then wants to stop execution successfully. Call StopExecution and
     * return true in EvaluateOptions.
     */
    void StopExecution() { _continue_execution = false; }

    /// length of the output help
    enum HelpType{ HelpShort, HelpLong };

    /**
     * \brief Print long/short descriptions of calculators
     * 
     * @param calculator_name name of a calculator
     * @param help_path path in VOTCASHARE were xml file with help is stored
     * @param helptype long or short (with options) help
     */
    void PrintDescription(std::ostream &out, const string &calculator_name, const string help_path, HelpType helptype );
    
protected:
    /// Variable map containing all program options
    boost::program_options::variables_map _op_vm;

    /// program options required by all applications
    boost::program_options::options_description _op_desc;
                       
    std::map<string, boost::program_options::options_description> _op_groups;
    
    virtual void ShowHelpText(std::ostream &out);

    void ShowManPage(std::ostream &out);

    void ShowTEXPage(std::ostream &out);
     
    bool _continue_execution;
    
private:
    /// get input parameters from file, location may be specified in command line
    void ParseCommandLine(int argc, char **argv);
    
    /// program options without the Hidden group
    boost::program_options::options_description _visible_options;
    
};

}}

#endif	/* __VOTCA_APPLICATION_H */