00001 //# Utilities.h: Bag of unrelated classes and groups for general use. 00002 //# Copyright (C) 1995,1996,1997,2000,2001 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$ 00027 00028 00029 #ifndef CASA_UTILITIES_H 00030 #define CASA_UTILITIES_H 00031 00032 #include <casacore/casa/aips.h> 00033 00034 #include <casacore/casa/Utilities/Assert.h> 00035 #include <casacore/casa/Utilities/BinarySearch.h> 00036 #include <casacore/casa/Utilities/BitVector.h> 00037 #include <casacore/casa/Utilities/Compare.h> 00038 #include <casacore/casa/Utilities/Copy.h> 00039 #include <casacore/casa/Utilities/CountedPtr.h> 00040 #include <casacore/casa/Utilities/DataType.h> 00041 #include <casacore/casa/Utilities/DynBuffer.h> 00042 #include <casacore/casa/Utilities/Fallible.h> 00043 #include <casacore/casa/Utilities/GenSort.h> 00044 #include <casacore/casa/Utilities/Notice.h> 00045 #include <casacore/casa/Utilities/PtrHolder.h> 00046 #include <casacore/casa/Utilities/RegSequence.h> 00047 #include <casacore/casa/Utilities/Regex.h> 00048 #include <casacore/casa/Utilities/Register.h> 00049 #include <casacore/casa/Utilities/Sequence.h> 00050 #include <casacore/casa/Utilities/Sort.h> 00051 #include <casacore/casa/Utilities/SortError.h> 00052 #include <casacore/casa/BasicSL/String.h> 00053 #include <casacore/casa/Utilities/ValType.h> 00054 #include <casacore/casa/Utilities/cregex.h> 00055 00056 namespace casacore { //# NAMESPACE CASACORE - BEGIN 00057 00058 // <module> 00059 // 00060 // <summary> Classes and global functions for general use </summary> 00061 00062 // <reviewed reviewer="Friso Olnon" date="1995/03/20" demos=""> 00063 // </reviewed> 00064 00065 // <synopsis> 00066 // 00067 // This module is a bag of unrelated mini-modules, classes and 00068 // global functions. The following functional groups can be recognized: 00069 // <ul> 00070 // <li> Object utilities: 00071 // <ul> 00072 // <li> <linkto class=ObjCompare>ObjCompare</linkto> 00073 // objects with each other. A signature for comparison functions 00074 // is defined (required for comparison functions used in the 00075 // <linkto class=Sort>Sort</linkto> 00076 // class), and one such function is provided. 00077 // <li> <linkto group="Copy.h#copy">objcopy/objmove/objset</linkto> 00078 // copies objects from one place to another. 00079 // <li> <linkto class=Fallible>Mark</linkto> 00080 // objects as valid or invalid. 00081 // <li> <linkto class=Notice>Notices</linkto> 00082 // provide basic support for shared access of data by various objects. 00083 // <li> <linkto class=Sort>Sort</linkto> 00084 // objects on one or more keys, in ascending or descending order. 00085 // <linkto class=GenSort>Fast sorting</linkto> 00086 // is provided for certain types of objects. 00087 // <li> <linkto group="BinarySearch.h#binarysearch">Binary Search</linkto> 00088 // templated functions for sorted containers (ascending or descending 00089 // order) are available. 00090 // <li> <linkto group="LinearSearch.h#linearsearch">Linear Search</linkto> 00091 // templated functions for unsorted containers are available. 00092 // </ul> 00093 // <li> Logical utilities: 00094 // <ul> 00095 // <li> <linkto class=assert_>Assertion</linkto> 00096 // lets you throw an error when a condition in not fullfilled. 00097 // <li> <linkto class=BitVector>Bit vectors</linkto> 00098 // are an efficient method to keep True/False information on a set of 00099 // items or conditions. 00100 // </ul> 00101 // <li> Pointer utilities 00102 // <ul> 00103 // <li> <linkto class=CountedPtr>Counted pointers</linkto> 00104 // provide support for reference counting. 00105 // <li> <linkto class=PtrHolder>Pointer holders</linkto> 00106 // can be used to hold allocated pointers which should be deleted 00107 // when an exception is thrown. 00108 // </ul> 00109 // <li> Datatype utilities 00110 // <ul> 00111 // <li> <linkto group="DataType.h#DataType">DataType</linkto> 00112 // enumerates the possible data types in the table system. 00113 // <li> <linkto class=ValType>ValType</linkto> 00114 // describes the data types and their undefined values. 00115 // <li> <linkto group="Register.h#register">Register</linkto> 00116 // provides runtime typing information. 00117 // </ul> 00118 // <li> Other utilities 00119 // <ul> 00120 // <li> <linkto class=DynBuffer>Dynamic buffers</linkto> 00121 // are used to store data in dynamically allocated buffers. 00122 // <li> <linkto class=Regex>Regular expressions</linkto> 00123 // are supported by the class <linkto class=Regex>Regex</linkto> and 00124 // the associated function library 00125 // <a href="Utilities/cregex.html">cregex</a>. 00126 // <li> <linkto class=Sequence>Sequences</linkto> 00127 // of any datatype can be derived from the base class 00128 // <linkto class=Sequence>Sequence</linkto>. 00129 // One example is <linkto class=uIntSequence>uIntSequence</linkto>, 00130 // provided for general use. Another is 00131 // <linkto class=RegSequence>RegSequence</linkto>, exclusively used 00132 // by the <linkto group="Register.h#register">Register</linkto> function. 00133 // <li> <linkto class=String>Strings</linkto>. 00134 // for the C++ preprocessor 00135 // </ul> 00136 // </ul> 00137 // 00138 // <note role=tip> You may want to look at the individual header files 00139 // to see whether you might not prefer to include only the header 00140 // files you really need; it may be more efficient to do so. 00141 // </note> 00142 // 00143 // </synopsis> 00144 00145 //# <todo asof="1995/03/20"> 00146 //# <li> 00147 //# </todo> 00148 00149 // </module> 00150 00151 00152 } //# NAMESPACE CASACORE - END 00153 00154 #endif 00155