casacore
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
OS.h
Go to the documentation of this file.
1 //# OS.h: Classes for operating system services, and assorted other things
2 //# Copyright (C) 1995,1996,1998,1999,2001,2002
3 //# Associated Universities, Inc. Washington DC, USA.
4 //#
5 //# This library is free software; you can redistribute it and/or modify it
6 //# under the terms of the GNU Library General Public License as published by
7 //# the Free Software Foundation; either version 2 of the License, or (at your
8 //# option) any later version.
9 //#
10 //# This library is distributed in the hope that it will be useful, but WITHOUT
11 //# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
12 //# FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public
13 //# License for more details.
14 //#
15 //# You should have received a copy of the GNU Library General Public License
16 //# along with this library; if not, write to the Free Software Foundation,
17 //# Inc., 675 Massachusetts Ave, Cambridge, MA 02139, USA.
18 //#
19 //# Correspondence concerning AIPS++ should be addressed as follows:
20 //# Internet email: aips2-request@nrao.edu.
21 //# Postal address: AIPS++ Project Office
22 //# National Radio Astronomy Observatory
23 //# 520 Edgemont Road
24 //# Charlottesville, VA 22903-2475 USA
25 //#
26 //# $Id$
27 
28 #ifndef CASA_OS_H
29 #define CASA_OS_H
30 
31 //# Includes
32 #include <casacore/casa/aips.h>
33 
35 #include <casacore/casa/OS/Path.h>
40 
41 #include <casacore/casa/OS/Time.h>
42 #include <casacore/casa/OS/Timer.h>
43 
48 
51 
52 
53 namespace casacore { //# NAMESPACE CASACORE - BEGIN
54 
55 // <module>
56 //
57 // <summary>
58 // Classes for operating system services, and assorted other things
59 // </summary>
60 
61 // <prerequisite>
62 // <li> Nothing special
63 // </prerequisite>
64 //
65 
66 // <reviewed reviewer="Paul Shannon" date="1995/06/02/ demos="">
67 // </reviewed>
68 
69 // <etymology>
70 // 'OS' is the standard abbreviation for 'Operating System'.
71 // </etymology>
72 //
73 // <synopsis>
74 // This module's main purpose is to provide convenient and uniform
75 // access to operating system features: environment variables, file
76 // and directory access, time and date services, and uniform data
77 // representation (which solves the variety of ways the fundamental
78 // data types are represented in hardware).
79 // <p>
80 // The following functionality is available:
81 // <ul>
82 // <li> Class <linkto class=EnvironmentVariable:description>
83 // EnvironmentVariable</linkto>
84 // for access to environment variables.
85 // <li> Class <linkto class=Path:description>Path</linkto>,
86 // <linkto class=RegularFile:description>RegularFile</linkto>,
87 // <linkto class=SymLink:description>SymLink</linkto>, and
88 // <linkto class=Directory:description>Directory</linkto>
89 // for dealing with the file system.
90 // Note that module <linkto module=IO>IO</linkto> deals with
91 // reading and writing data to files and other IO streams.
92 // <li> Class <linkto class=Time:description>Time</linkto>
93 // to get the system time.
94 // <li> Class <linkto class=Timer:description>Timer</linkto>
95 // to measure elapsed, user, and system time of a piece of code.
96 // <li> Framework <linkto class=Conversion:description>Conversion</linkto>
97 // to convert data from one format to another. There are
98 // classes to convert to/from
99 // <linkto class=CanonicalConversion:description>canonical</linkto>
100 // format,
101 // <linkto class=VAXConversion:description>VAX</linkto> format, and
102 // <linkto class=IBMConversion:description>IBM/360</linkto> format.
103 // The structure of the framework is shown in the
104 // <a href="OS/OS_1.html">OMT diagram</a>.
105 // <li> A class to encapsulate <linkto class=Memory>Memory</linkto> usage.
106 // Class MemoryTrace makes it possible to trace all memory (de)allocations
107 // through malloc and free (new and delete).
108 // It only works on Linux systems though.
109 // </ul>
110 
111 // </synopsis>
112 
113 // <example>
114 // See the various class header files.
115 // </example>
116 //
117 // <motivation>
118 // We want to provide a simple and uniform interface to OS services and
119 // features for the application and library programmer. To pick a few
120 // examples:
121 // <ol>
122 // <li> Recursive deletion of a directory.
123 // <li> Access to time and date information.
124 // <li> Get and set environment variables.
125 // </ol>
126 // </motivation>
127 
128 // <todo asof="1995/06/02">
129 // <li> The OS module is a bit fuzzy: for example, canonical data
130 // format conversion is more a matter of hardware than of operating
131 // system differences. Perhaps these particular classes should be
132 // moved to a new module.
133 // <li> Time and Date classes should be revised after studying
134 // similar classes designed by others. Roel Martinez is tenatively
135 // scheduled to do this in the late summer of 1995.
136 // <li> There was once some discussion of a 'VOS' (virtual operating system)
137 // module. This seems like a good idea. Nested subdirectories for
138 // specific operating systems would contain the implementations, but
139 // a common interface would be used for all. And perhaps local
140 // site makedefs could be used to select the proper implementation
141 // to link against, with no special action required of the programmer.
142 // </todo>
143 
144 // </module>
145 
146 
147 } //# NAMESPACE CASACORE - END
148 
149 #endif