casa  $Rev:20696$
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines
OS.h
Go to the documentation of this file.
00001 //# OS.h: Classes for operating system services, and assorted other things
00002 //# Copyright (C) 1995,1996,1998,1999,2001,2002
00003 //# Associated Universities, Inc. Washington DC, USA.
00004 //#
00005 //# This library is free software; you can redistribute it and/or modify it
00006 //# under the terms of the GNU Library General Public License as published by
00007 //# the Free Software Foundation; either version 2 of the License, or (at your
00008 //# option) any later version.
00009 //#
00010 //# This library is distributed in the hope that it will be useful, but WITHOUT
00011 //# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
00012 //# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Library General Public
00013 //# License for more details.
00014 //#
00015 //# You should have received a copy of the GNU Library General Public License
00016 //# along with this library; if not, write to the Free Software Foundation,
00017 //# Inc., 675 Massachusetts Ave, Cambridge, MA 02139, USA.
00018 //#
00019 //# Correspondence concerning AIPS++ should be addressed as follows:
00020 //#        Internet email: aips2-request@nrao.edu.
00021 //#        Postal address: AIPS++ Project Office
00022 //#                        National Radio Astronomy Observatory
00023 //#                        520 Edgemont Road
00024 //#                        Charlottesville, VA 22903-2475 USA
00025 //#
00026 //# $Id: OS.h 20551 2009-03-25 00:11:33Z Malte.Marquarding $
00027 
00028 #ifndef CASA_OS_H
00029 #define CASA_OS_H
00030 
00031 //# Includes
00032 #include <casa/OS/EnvVar.h>
00033 #include <casa/OS/Path.h>
00034 #include <casa/OS/RegularFile.h>
00035 #include <casa/OS/SymLink.h>
00036 #include <casa/OS/Directory.h>
00037 #include <casa/OS/DirectoryIterator.h>
00038 
00039 #include <casa/OS/Time.h>
00040 #include <casa/OS/Timer.h>
00041 
00042 #include <casa/OS/Conversion.h>
00043 #include <casa/OS/CanonicalConversion.h>
00044 #include <casa/OS/DataConversion.h>
00045 #include <casa/OS/CanonicalDataConversion.h>
00046 
00047 #include <casa/OS/Memory.h>
00048 
00049 
00050 namespace casa { //# NAMESPACE CASA - BEGIN
00051 
00052 // <module>
00053 //
00054 // <summary>
00055 // Classes for operating system services, and assorted other things
00056 // </summary>
00057 
00058 // <prerequisite>
00059 //   <li> Nothing special
00060 // </prerequisite>
00061 //
00062 
00063 // <reviewed reviewer="Paul Shannon" date="1995/06/02/ demos="">
00064 // </reviewed>
00065 
00066 // <etymology>
00067 // 'OS' is the standard abbreviation for 'Operating System'.
00068 // </etymology>
00069 //
00070 // <synopsis>
00071 // This module's main purpose is to provide convenient and uniform
00072 // access to operating system features:  environment variables, file
00073 // and directory access, time and date services, and uniform data 
00074 // representation (which solves the variety of ways the fundamental
00075 // data types are represented in hardware).
00076 // <p>
00077 // The following functionality is available:
00078 // <ul>
00079 //  <li> Class <linkto class=EnvironmentVariable:description>
00080 //       EnvironmentVariable</linkto>
00081 //       for access to environment variables.
00082 //  <li> Class <linkto class=Path:description>Path</linkto>,
00083 //       <linkto class=RegularFile:description>RegularFile</linkto>,
00084 //       <linkto class=SymLink:description>SymLink</linkto>, and
00085 //       <linkto class=Directory:description>Directory</linkto>
00086 //       for dealing with the file system.
00087 //       Note that module <linkto module=IO>IO</linkto> deals with
00088 //       reading and writing data to files and other IO streams.
00089 //  <li> Class <linkto class=Time:description>Time</linkto>
00090 //       to get the system time.
00091 //  <li> Class <linkto class=Timer:description>Timer</linkto>
00092 //       to measure elapsed, user, and system time of a piece of code.
00093 //  <li> Framework <linkto class=Conversion:description>Conversion</linkto>
00094 //       to convert data from one format to another. There are
00095 //       classes to convert to/from
00096 //       <linkto class=CanonicalConversion:description>canonical</linkto>
00097 //       format,
00098 //       <linkto class=VAXConversion:description>VAX</linkto> format, and
00099 //       <linkto class=IBMConversion:description>IBM/360</linkto> format.
00100 //       The structure of the framework is shown in the 
00101 //       <a href="OS/OS_1.html">OMT diagram</a>.
00102 //  <li> A class to encapsulate <linkto class=Memory>Memory</linkto> usage.
00103 // </ul>
00104 
00105 // </synopsis>
00106 
00107 // <example>
00108 // See the various class header files.
00109 // </example>
00110 //
00111 // <motivation>
00112 // We want to provide a simple and uniform interface to OS services and 
00113 // features for the application and library programmer.  To pick a few
00114 // examples:
00115 // <ol>
00116 //    <li> Recursive deletion of a directory.
00117 //    <li> Access to time and date information.
00118 //    <li> Get and set environment variables.
00119 // </ol>
00120 // </motivation>
00121 
00122 // <todo asof="1995/06/02">
00123 //   <li> The OS module is a bit fuzzy: for example, canonical data 
00124 //        format conversion is more a matter of hardware than of operating 
00125 //        system differences.  Perhaps these particular classes should be 
00126 //        moved to a new module.
00127 //   <li> Time and Date classes should be revised after studying
00128 //        similar classes designed by others.  Roel Martinez is tenatively
00129 //        scheduled to do this in the late summer of 1995.
00130 //   <li> There was once some discussion of a 'VOS' (virtual operating system)
00131 //        module.  This seems like a good idea.  Nested subdirectories for
00132 //        specific operating systems would contain the implementations, but
00133 //        a common interface would be used for all.  And perhaps local
00134 //        site makedefs could be used to select the proper implementation
00135 //        to link against, with no special action required of the programmer.
00136 // </todo>
00137 
00138 // </module>
00139 
00140 
00141 } //# NAMESPACE CASA - END
00142 
00143 #endif