/usr/include/casacore/casa/Quanta/UnitName.h is in casacore-dev 2.2.0-2.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 | //# UnitName.h: defines a tagged unit definition
//# Copyright (C) 1994,1995,1996,1997,1998,1999,2000,2001
//# Associated Universities, Inc. Washington DC, USA.
//#
//# This library is free software; you can redistribute it and/or modify it
//# under the terms of the GNU Library General Public License as published by
//# the Free Software Foundation; either version 2 of the License, or (at your
//# option) any later version.
//#
//# This library is distributed in the hope that it will be useful, but WITHOUT
//# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
//# FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public
//# License for more details.
//#
//# You should have received a copy of the GNU Library General Public License
//# along with this library; if not, write to the Free Software Foundation,
//# Inc., 675 Massachusetts Ave, Cambridge, MA 02139, USA.
//#
//# Correspondence concerning AIPS++ should be addressed as follows:
//# Internet email: aips2-request@nrao.edu.
//# Postal address: AIPS++ Project Office
//# National Radio Astronomy Observatory
//# 520 Edgemont Road
//# Charlottesville, VA 22903-2475 USA
//#
//# $Id$
#ifndef CASA_UNITNAME_H
#define CASA_UNITNAME_H
//# Includes
#include <casacore/casa/aips.h>
#include <casacore/casa/BasicSL/String.h>
#include <casacore/casa/Quanta/Unit.h>
#include <casacore/casa/Quanta/UnitVal.h>
#include <casacore/casa/iosfwd.h>
namespace casacore { //# NAMESPACE CASACORE - BEGIN
//# Forward Declarations
//# Constants
// <note role=warning>
// SUN compiler does not accept non-simple default arguments
// </note>
static const String EmptyString="";
// <summary>
// handles physical units
// </summary>
// <use visibility=export>
// <reviewed reviewer="UNKNOWN" date="before2004/08/25" tests="tUnit">
//
// <prerequisite>
// You should have at least a preliminary understanding of these classes:
// <li> <linkto class=Unit>Unit</linkto>
// </prerequisite>
//
// <etymology>
// The class name derives from the basic Unit and the Name giving possibilities
// of this class to a newly defined unit tag.
// </etymology>
//
// <synopsis>
// Physical units are strings consisting of one or more names of known
// basic units, separated by '.' or ' ' (for multiplication) or '/' (for
// division). Each name can optionally be preceded by a standard decimal
// prefix, and/or followed by an (optionally signed) exponent.
//
// Example:
// km/s/(Mpc.s)2 is identical to km.s-1.Mpc-2.s-2
//
// See the <linkto class="Unit">Unit</linkto> class for more details.
//
// The UnitName class defines new basic, tagged units. If, e.g., for one
// reason or another you want, in addition to the standard defined SI and
// customary units, to define a unit with a name 'KPH' to stand for the
// composite SI unit 'km/s', it can be done by creating a UnitName, and
// mapping it to the UnitMap lists.
// <note role=tip> The UnitMap::putUser can also be used without creating a UnitName
// first
// </note>
// <srcblock>
// UnitName myKPH( "KPH", UnitVal(3.6,"km/ks"));
// UnitMap::putUser(myKPH);
// </srcblock>
//
// <h3> Constructing a tagged unit definition </h3>
// The following constructors are available:
// <ol>
// <li> UnitName() create unnamed value 1.
// <li> UnitName(const UnitName&) copy constructor
// <li> UnitName("tag", UnitVal, "full name")
// </ol>
//
// An assignment (copy semantics) is available.
//
//
// <h3> Obtaining information about tagged unit </h3>
// The following information can be obatined from a UnitName:
// <ol>
// <li> UnitVal getVal() const will return the unit definition value
// <li> String getName() const will return the unit name
// </ol>
//
//
// </synopsis>
//
// <example>
// To obtain the definition of a Jy, you could:
// <srcblock>
// // Define a UnitVal unit definition
// UnitVal mydef;
// // And fill it with the appropiate definition
// mydef = (UnitMap::getUnit("Jy"))->getVal();
// </srcblock>
// </example>
//
//# // <motivation>
//# // </motivation>
//
// <todo asof="941110">
// <li> Some inlining (did not work first go)
// </todo>
class UnitName {
//# friends
// Output the unit tag, description and its definition
friend ostream& operator<< (ostream &os, const UnitName &name);
public:
//# Constructors
// Default constructor
UnitName();
// Copy constructor
UnitName(const UnitName &other);
// Construct from different parts
// <group>
UnitName(const String &tag, const UnitVal &kind,
const String &name = EmptyString);
UnitName(const Unit &tag, const String &name = EmptyString);
// </group>
// Destructor
~UnitName();
//# Operators
// Assigment (copy semantics)
UnitName &operator=(const UnitName &other);
//# General member functions
// Get definition value of the unit
const UnitVal &getVal() const;
// Get the name tag of the defined unit
const String &getName() const;
// Get the full name of the defined unit
const String &getFullName() const;
private:
//# Data members
// Value of defined unit
UnitVal basicKind;
// Name tag of unit
String basicTag;
// Full name and description of unit
String basicName;
};
//# Inline Implementations
} //# NAMESPACE CASACORE - END
#endif
|