/usr/include/casacore/casa/System/AppInfo.h is in casacore-dev 2.2.0-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 | //# AppInfo.h: General information for applications
//# Copyright (C) 1996,1997
//# Associated Universities, Inc. Washington DC, USA.
//#
//# This library is free software; you can redistribute it and/or modify it
//# under the terms of the GNU Library General Public License as published by
//# the Free Software Foundation; either version 2 of the License, or (at your
//# option) any later version.
//#
//# This library 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 Library General Public
//# License for more details.
//#
//# You should have received a copy of the GNU Library General Public License
//# along with this library; if not, write to the Free Software Foundation,
//# Inc., 675 Massachusetts Ave, Cambridge, MA 02139, USA.
//#
//# Correspondence concerning AIPS++ should be addressed as follows:
//# Internet email: aips2-request@nrao.edu.
//# Postal address: AIPS++ Project Office
//# National Radio Astronomy Observatory
//# 520 Edgemont Road
//# Charlottesville, VA 22903-2475 USA
//#
//#
//# $Id$
#ifndef CASA_APPINFO_H
#define CASA_APPINFO_H
//# Includes
#include <casacore/casa/aips.h>
#include <casacore/casa/System/AipsrcValue.h>
namespace casacore { //# NAMESPACE CASACORE - BEGIN
//# Forward declarations
class String;
template<class T> class Vector;
// <summary>
// General information for applications.
// </summary>
// <use visibility=export>
// <reviewed reviewer="wbrouw" date="1997/10/30" tests="tAppInfo" demos="">
// </reviewed>
// <prerequisite>
// <li> <linkto class=Aipsrc>Aipsrc</linkto> class
// </prerequisite>
//
// <synopsis>
// This class provides general information that an application might want to
// know about its processing environment. This will be based either on
// information coded into <linkto class=Aipsrc>aipsrc</linkto> variables, or
// on information which can be obtained directly from some other source. For
// example, the time zone will generally be obtained from the host OS, but it
// can be overridden by an <linkto class=Aipsrc>aipsrc</linkto> variable if
// necessary.
//
// Generally speaking, this class is provided to hide the details of how the
// information is encoded into an <linkto class=Aipsrc>aipsrc</linkto> variables
// and to avoid having to change applications if the information moves from
// being coded into a variable to being deduced at runtime.
//
// It is expected that the information which is available from this class will
// accrete with time.
// </synopsis>
//
// <motivation>
// Further encapsulate information which is usually in aipsrc variables.
// </motivation>
//
// <thrown>
// <li> AipsError if abs(timeZone()) > 0.625
// </thrown>
//
// <todo asof="1997/11/11">
// </todo>
class AppInfo {
public:
// Return a list of directory names into which the user may write data. If
// <src>minimumFreeSpace</src> is set (>0) then only directories with at
// least that much free space (in megabytes) are returned. If the aipsrc
// variable <src>user.directories.work</src> is set, the candidate
// directories are taken from that variable, otherwise the current working
// directory (".") is chosen if it exists and is writeable, otherwise /tmp
// is the candidate. Only one of "." and "/tmp" is chosen, not both.
//
// If no suitable directories are found (i.e., writable directories with
// enough free space), a zero-length vector is returned. A warning is
// issued to the logging system for directories which do not exist or are
// not writable.
static Vector<String> workDirectories(uInt minimumFreeSpaceInMB=0);
// Choose a workDirectory with at least <src>minimumFreeSpace</src> MB of
// free space available. It uses <src>workDirectories</src>. If there is
// more than one valid directory it arranges to choose different
// directories in succession in an attempt to spread out the I/O. That is,
// on the first call it will return directory1, on the second it will
// return directory2, etc. in a cyclical fashion. One can imagine more
// elaborate algorithms than this, however this should suffice for some
// time, if not forever.
// <thrown>
// <li> An <linkto class=AipsError>AipsError</linkto> is thrown if no
// directory with enough free space is found.
// </thrown>
static String workDirectory(uInt minimumFreeSpaceInMB=0);
// This function returns a fully qualified filename for a non-existent file
// in a work directory with enough free space. That is, you can create a
// temporary file with the name returned from this function. This function
// calls <src>workDirectory</src> and then appends a unique (file does not
// exist) filename. By default the prefix of temporary file name is
// <src>aipstmp_</src>, but you can override this if you choose.
// <thrown>
// <li> An <linkto class=AipsError>AipsError</linkto> is thrown if no
// directory with enough free space is found.
// </thrown>
static String workFileName(uInt minimumFreeSpaceInMB=0,
const String &filenamePrefix="aipstmp_");
// Return the local time zone offset in day fractions. This value has to be
// added to UTC to get local time. Generally the OS supplied value will be
// used, however it can be overridden with
// <src>system.time.tzoffset</src> if necessary.
static Double timeZone();
private:
//# Data
static Bool need_init_p;
static uInt tz_r;
//# Methods
// Force an initialization of the AppInfo values.
static void init();
};
//# Inlines
inline Double AppInfo::timeZone() {if (need_init_p) init();
return AipsrcValue<Double>::get(tz_r);}
} //# NAMESPACE CASACORE - END
#endif
|