Main Page   Namespace List   Class Hierarchy   Alphabetical List   Compound List   File List   Compound Members   File Members  

Misc.H

Go to the documentation of this file.
00001 /* _______              __
00002   / ___/ /  ___  __ _  / /  ___
00003  / /__/ _ \/ _ \/  ' \/ _ \/ _ \
00004  \___/_//_/\___/_/_/_/_.__/\___/ 
00005 */
00006 //
00007 // This software is copyright (C) by the Lawrence Berkeley
00008 // National Laboratory.  Permission is granted to reproduce
00009 // this software for non-commercial purposes provided that
00010 // this notice is left intact.
00011 // 
00012 // It is acknowledged that the U.S. Government has rights to
00013 // this software under Contract DE-AC03-765F00098 between
00014 // the U.S.  Department of Energy and the University of
00015 // California.
00016 //
00017 // This software is provided as a professional and academic
00018 // contribution for joint exchange. Thus it is experimental,
00019 // is provided ``as is'', with no warranties of any kind
00020 // whatsoever, no support, no promise of updates, or printed
00021 // documentation. By using this software, you acknowledge
00022 // that the Lawrence Berkeley National Laboratory and
00023 // Regents of the University of California shall have no
00024 // liability with respect to the infringement of other
00025 // copyrights by any part of this software.
00026 //
00027 
00028 #ifndef CH_MISC_H
00029 #define CH_MISC_H
00030 
00031 //
00032 // $Id: Misc.H,v 1.3 2001/06/20 02:56:57 ligocki Exp $
00033 //
00034 
00035 #include "SPACE.H"
00036 
00037 /*@ManDoc:
00038   Returns a copy of the minimum of the two values.  Will work with
00039   any type T that supplies a T::operator<(const T, const T), or an
00040   equivalent construct, as well as a copy constructor.   In
00041   particular, it will work with any integral or floating-point
00042   intrinsic type.
00043 */
00044 
00045 template <class T>
00046 inline
00047 T
00048 Min (const T& a,
00049      const T& b)
00050 {
00051     return a < b ? a : b;
00052 }
00053 
00054 /*@ManDoc:
00055   Returns a copy of the maximum of the two values.  Will work with
00056   any type T that supplies a T::operator>(const T, const T), or an
00057   equivalent construct, as well as a copy constructor.   In
00058   particular, it will work with any integral or floating-point
00059   intrinsic type.
00060 */
00061 
00062 template <class T>
00063 inline
00064 T
00065 Max (const T& a,
00066      const T& b)
00067 {
00068     return a > b ? a : b;
00069 }
00070 
00071 /*@ManDoc:
00072   Returns a copy of the absolute value of the value.  Will work with
00073   any type T that can be compared against zero with
00074   T::operator>(const T, const T), or an equivalent construct, as
00075   well as a copy constructor, and an T::operator-() or equivalent.
00076   In particular, it will work with any integral or floating-point
00077   intrinsic type.
00078 */
00079 
00080 template <class T>
00081 inline
00082 T
00083 Abs (const T& a)
00084 {
00085     return a > 0 ? a : -a;
00086 }
00087 
00088 /*@ManDoc:
00089   Swaps the two values.  Type T must have a copy constructor and
00090   an assignment operator.
00091 */
00092 
00093 template <class T>
00094 inline
00095 void
00096 Swap (T& a, T& b)
00097 {
00098     T tmp = a;
00099     a = b;
00100     b = tmp;
00101 }
00102 
00103 #endif /*CH_MISC_H*/

Generated on Wed Apr 16 14:26:49 2003 for Chombo by doxygen1.2.16