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