das2C
das core C utilities (v3)
Data Structures | Typedefs | Enumerations
Values

Physical data values, including time, and thier units. More...

Data Structures

struct  das_datum
 An atomic data processing unit, and it's units. More...
 
struct  das_time
 Basic date-time structure used throughout the Das1 & Das2 utilities. More...
 

Typedefs

typedef const char * das_units
 Handle SI and other units, with accommodations for Epoch systems, from units.h. More...
 

Enumerations

enum  das_val_type {
  vtUnknown = 0 , vtUByte = 1 , vtByte = 2 , vtUShort = 3 ,
  vtShort = 4 , vtUInt = 5 , vtInt = 6 , vtULong = 7 ,
  vtLong = 8 , vtFloat = 9 , vtDouble = 10 , vtTime = 11 ,
  vtIndex = 12 , vtText = 13 , vtGeoVec = 14 , vtByteSeq = 15
}
 Enumeration of types stored in Das Array (DasAry) objects from value.h. More...
 

Detailed Description

Physical data values, including time, and thier units.

Typedef Documentation

◆ das_units

typedef const char* das_units

Handle SI and other units, with accommodations for Epoch systems, from units.h.

Note that although these are strings, Units_fromStr() should be be used to get a reference to the enumerated string since pointer equality comparison is done in the code. Thus UnitType objects created using the functions in this module satisfy the rule:

das_unit a;
das_unit b;
if(a == b){
// Units are equal
}

The Epoch Time unit types understood by this library are:

  • UNIT_US2000 - Non-Leap microseconds since midnight, January 1st 2000
  • UNIT_MJ1958 - Days since midnight January 1st 1958
  • UNIT_T2000 - Non-Leap seconds since midnight, January 1st 2000
  • UNIT_T1970 - Non-Leap seconds since midnight, January 1st 1970
  • UNIT_UTC - Time strings on the gregorian calendar
  • UNIT_NS2020 - Non-Leap nanoseconds since midnight Jan 1st, 2020, typically transmitted as signed 8-byte integers

As it stands the library currently does not understand SI prefixes, so each scaled unit has it's own entry. This should change.

  • UNIT_SECONDS - Seconds, a time span.
  • UNIT_HOURS - hours, a time span = 3600 seconds.
  • UNIT_MIRCOSECONDS - A smaller time span.
  • UNIT_HERTZ - Hertz, a measure of frequency.
  • UNIT_KILO_HERTZ - KiloHertz, another measure of frequency.
  • UNIT_E_SPECDENS - Electric Spectral Density, V**2 m**-2 Hz**-1;
  • UNIT_B_SPECDENS - Magnetic Spectral Density, nT**2 Hz**-1;
  • UNIT_NT - Magnetic Field intensity, nT
  • UNIT_NUMBER_DENS - Number density, the number of items in a cubic centimeter
  • UNIT_DB - Decibels, a ratio measure, typically versus 1.0.
  • UNIT_KM - Kilometers, a unit of distance
  • UNIT_DEGREES - Degrees, a ratio measure on circles: (arch length / circumference) * 360

And if you don't know what else to use, try this:

  • UNIT_DIMENSIONLESS - I.E. No units
Todo:
Redo units as small structures

Enumeration Type Documentation

◆ das_val_type

Enumeration of types stored in Das Array (DasAry) objects from value.h.

Note that any kind of value may be stored in a Das Array, but most of these types have runtime type safty checks.

See also
value.h for a list of functions for worknig with the the das_val_type enumeration
Enumerator
vtUnknown 

For generic storage, designates elements as unknown, you have to cast the array return values yourself.

vtUByte 

The basic types.

Indicates array values are unsigned 8-bit integers (bytes)

vtByte 

Indicates array values are signed 8-bit integers (signed bytes)

vtUShort 

Indicates array values are unsigned 16-bit integers (shorts)

vtShort 

Indicates array values are signed 16-bit integers (shorts)

vtUInt 

Indicates array values are unsigned 32-bit integers (uints)

vtInt 

Indicates array values are signed 32-bit integers (ints)

vtULong 

Indicates array values are unsigned 64-bit unsigned integers (ulongs)

vtLong 

Indicates array values are unsigned 64-bit integers (longs)

vtFloat 

Indicates array values are 32-bit floating point values (floats)

vtDouble 

Indicates array values are 64-bit floating point values (doubles)

vtTime 

Indicates array values are das_time_t structures.

vtText 

Indicates datum values are const char* pointers to null terminated UTF-8 strings.

vtGeoVec 

Value are a vector struct as defined by vector.h.

vtByteSeq 

Indicates values are size_t plus const ubyte* pairs, no more is known about the bytes.