![]() |
das2C
das core C utilities (v3)
|
Physical data values, including time, and their units. More...
Data Structures | |
| struct | das_time |
| Basic date-time structure used throughout the Das1 & Das2 utilities. More... | |
Macros | |
| #define | DAS_BS_NULL ((das_byte_seq){NULL, 0}) |
| Convenience macros for an empty byte sequence fat pointer. | |
Typedefs | |
| typedef const char * | das_units |
| Handle SI and other units, with accommodations for Epoch systems, from units.h. | |
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 , vtByteSeq = 15 , vtComposite = 16 } |
| Enumeration of types stored in Das Array (DasAry) objects from value.h. More... | |
Functions | |
| const char * | das_enc_fromStr (const char *sEncType) |
| Resolve a wire-encoding string to its canonical schema value. | |
| const char * | das_sem_default (das_val_type vt, das_units units) |
| Suggest a default semantic for a (value type, units) pair. | |
| das_val_type | das_vt_default (const char *sSemantic) |
| Given a semantic meaning, suggest a default value type. | |
| const char * | das_sem_fromStr (const char *sSemantic) |
| Resolve a semantic string to its canonical schema value. | |
Variables | |
| const char * | DAS_ENC_BYTE |
| The canonical wire-encoding vocabulary: the closed set that IS the schema's EncodingType pattern (das-basic-stream-v3.0.xsd, byte|ubyte|BEint|BEuint|BEreal|LEint|LEuint|LEreal|utf8|blob|base64). | |
| const char * | DAS_SEM_BLOB |
| The canonical value-semantic vocabulary: the closed set that IS the schema's Semantic pattern (das-basic-stream-v3.0.xsd, bool|datetime|integer|real|string|blob). | |
Physical data values, including time, and their units.
No units, a pure number such as a linear ratio.
| 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:
The Epoch Time unit types understood by this library are:
As it stands the library currently does not understand SI prefixes, so each scaled unit has it's own entry. This should change.
And if you don't know what else to use, try this:
| enum 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 safety checks.
| const char * das_enc_fromStr | ( | const char * | sEncType | ) |
Resolve a wire-encoding string to its canonical schema value.
An encoding names how values are serialized in a packet, orthogonal to how they are stored (das_val_type) or interpreted (semantic). The vocabulary is CLOSED – exactly the DAS_ENC_* set, the schema's EncodingType pattern – and not application-expandable. This is the one place an encoding string is validated; output is a canonical DAS_ENC_* pointer, so callers may compare the result by pointer.
| sEncType | an encoding string from a stream header (may be NULL). |
| const char * das_sem_default | ( | das_val_type | vt, |
| das_units | units | ||
| ) |
Suggest a default semantic for a (value type, units) pair.
Calendar units win over the value type: a TT2000 / us2000 / ... field is a datetime whatever integer or real it is stored as.
To relate this to the schema, vt here roughly corresponds to the "storage" attribute for a variable
| const char * das_sem_fromStr | ( | const char * | sSemantic | ) |
Resolve a semantic string to its canonical schema value.
A variable's semantic is how its values are meant to be INTERPRETED, orthogonal to how they are STORED (the das_val_type, roughly the schema "storage" attribute): a vtText field may hold values meant as integers; a vtLong of TT2000 ticks is meant as a datetime. Storage answers "what bytes?"; semantic answers "what do they mean, and what operations make sense?".
For das2C v3.0 the vocabulary is CLOSED – exactly the DAS_SEM_* set, which IS the schema's Semantic pattern (bool|datetime|integer|real|string|blob) – and is not application-expandable; a new semantic enters only with a schema version bump.
This is the single place wire spellings are normalized (liberal-in): "int" maps to DAS_SEM_INT. Output is always a canonical DAS_SEM_* pointer (conservative-out), so a caller may compare the result by pointer.
| sSemantic | a semantic string from a stream header (may be NULL). |
|
extern |
The canonical wire-encoding vocabulary: the closed set that IS the schema's EncodingType pattern (das-basic-stream-v3.0.xsd, byte|ubyte|BEint|BEuint|BEreal|LEint|LEuint|LEreal|utf8|blob|base64).
An encoding says how values are SERIALIZED in a packet – one level below storage (das_val_type) and semantic; encoding plus the item byte count picks the storage type. Each value has one canonical instance; store and compare encodings by these pointers. See das_enc_fromStr().
|
extern |
The canonical value-semantic vocabulary: the closed set that IS the schema's Semantic pattern (das-basic-stream-v3.0.xsd, bool|datetime|integer|real|string|blob).
A semantic is how values are INTERPRETED, orthogonal to how they're STORED (the das_val_type). See das_sem_fromStr() for the concept. Each value has one canonical instance; store and compare DasVar semantics by these pointers, not by content.