/usr/include/openigtlink/igtlUnit.h is in libopenigtlink-dev 1.11.0-3.
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 | /*=========================================================================
Program: The OpenIGTLink Library
Language: C++
Web page: http://openigtlink.org/
Copyright (c) Insight Software Consortium. All rights reserved.
This software is distributed WITHOUT ANY WARRANTY; without even
the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
PURPOSE. See the above copyright notices for more information.
=========================================================================*/
#ifndef __igtlUnit_h
#define __igtlUnit_h
#include "igtlWin32Header.h"
#include "igtlMacro.h"
#include "igtlObject.h"
#include "igtlObjectFactory.h"
#include "igtlTypes.h"
namespace igtl
{
typedef igtlUint64 igtlUnit;
/// The Unit class provides a general way to describe unites defined in International System of Unites (SI)
/// in its 8-byte (or 64-bit) field. The field is designed to specifiy a unit consisting of SI-prefix
/// (e.g. milli, micro, kilo etc...) and combination of SI-base and/or SI-derived unites.
/// The bites in the field are assigned as follows:
///
/// +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-...
/// |PREFIX | UNIT0 | EXP0 | UNIT1 | EXP1 | UNIT2 | EXP2
/// +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-...
/// 0 1 2 3 4
///
/// ...-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
/// EXP2 | UNIT3 | EXP3 | UNIT4 | EXP4 | UNIT5 | EXP5 |
/// ...-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
/// 4 5 6 7
class IGTLCommon_EXPORT Unit : public Object
{
public:
/// SI Prefix
enum {
SI_PREFIX_NONE = 0x0, /* None */
SI_PREFIX_DEKA = 0x1, /* deka (deca) (1e1) */
SI_PREFIX_HECTO = 0x2, /* hecto (1e2) */
SI_PREFIX_KILO = 0x3, /* kilo (1e3) */
SI_PREFIX_MEGA = 0x4, /* mega (1e6) */
SI_PREFIX_GIGA = 0x5, /* giga (1e9) */
SI_PREFIX_TERA = 0x6, /* tera (1e12) */
SI_PREFIX_PETA = 0x7, /* peta (1e15) */
SI_PREFIX_DECI = 0x9, /* deci (1e-1) */
SI_PREFIX_CENTI = 0xA, /* centi (1e-2) */
SI_PREFIX_MILLI = 0xB, /* milli (1e-3) */
SI_PREFIX_MICRO = 0xC, /* micro (1e-6) */
SI_PREFIX_NANO = 0xD, /* nano (1e-9) */
SI_PREFIX_PICO = 0xE, /* pico (1e-12) */
SI_PREFIX_FEMTO = 0xF, /* femto (1e-15) */
};
/// SI Units
enum {
// SI Base Units
SI_BASE_NONE = 0x00,
SI_BASE_METER = 0x01, /* meter */
SI_BASE_GRAM = 0x02, /* gram */
SI_BASE_SECOND = 0x03, /* second */
SI_BASE_AMPERE = 0x04, /* ampere */
SI_BASE_KELVIN = 0x05, /* kelvin */
SI_BASE_MOLE = 0x06, /* mole */
SI_BASE_CANDELA = 0x07, /* candela */
// SI Derived Units
SI_DERIVED_RADIAN = 0x08, /* radian meter/meter */
SI_DERIVED_STERADIAN = 0x09, /* steradian meter^2/meter^2 */
SI_DERIVED_HERTZ = 0x0A, /* hertz /second */
SI_DERIVED_NEWTON = 0x0B, /* newton meter-kilogram/second^2 */
SI_DERIVED_PASCAL = 0x0C, /* pascal kilogram/meter-second^2 */
SI_DERIVED_JOULE = 0x0D, /* joule meter^2-kilogram/second^2 */
SI_DERIVED_WATT = 0x0E, /* watt meter^2-kilogram/second^3 */
SI_DERIVED_COULOMB = 0x0F, /* coulomb second-ampere */
SI_DERIVED_VOLT = 0x10, /* volt meter^2-kilogram/second^3-ampere */
SI_DERIVED_FARAD = 0x11, /* farad second^4-ampere^2/meter^2-kilogram */
SI_DERIVED_OHM = 0x12, /* ohm meter^2-kilogram/second^3-ampere^2 */
SI_DERIVED_SIEMENS = 0x13, /* siemens second^3-ampere^2/meter^2-kilogram */
SI_DERIVED_WEBER = 0x14, /* weber meter^2-kilogram/second^2-ampere */
SI_DERIVED_TESLA = 0x15, /* tesla kilogram/second^2-ampere */
SI_DERIVED_HENRY = 0x16, /* henry meter^2-kilogram/second^2-ampere^2 */
SI_DERIVED_LUMEN = 0x17, /* lumen candela-steradian */
SI_DERIVED_LUX = 0x18, /* lux candela-steradian/meter^2 */
SI_DERIVED_BECQUEREL = 0x19, /* becquerel /second */
SI_DERIVED_GRAY = 0x1A, /* gray meter^2/second^2 */
SI_DERIVED_SIEVERT = 0x1B, /* sievert meter^2/second^2 */
SI_NUM_UNIT_TYPES = 0x1C,
};
public:
typedef Unit Self;
typedef Object Superclass;
typedef SmartPointer< Self > Pointer;
typedef SmartPointer< const Self > ConstPointer;
igtlTypeMacro(Unit, Object);
igtlNewMacro(Self);
/// Initializes the class.
void Init();
/// Sets the SI prefix.
int SetPrefix(int prefix);
/// Appends a unit with exponential
int Append(int unit, int exp);
/// Packs (or serializes) the unit into a 64-bit value.
igtlUnit Pack();
/// Unpacks the unit from a 64-bit value.
int Unpack(igtlUnit unit);
protected:
/// constructor
Unit();
/// destructor
virtual ~Unit();
private:
/// Prefix.
igtlUint8 m_Prefix;
/// Either SI-Base or SI-Derived.
igtlUint8 m_Unit[6];
/// Must be within [-7, 7].
igtlInt8 m_Exp[6];
/// Number of units appended.
igtlInt32 m_NUnits;
};
}
#endif // __igtlUnit_h
|