struct owq_wire_query assumptions
- There is a create routine (FS_OWQ_create) and a destroy routine (FS_OWQ_destroy) that must be called to prevent unallocated memory or leaks.
- When copies are made, they are "shallow copies" (pointers are to same memory areas) except in special case of FS_create_shallow_aggregate
- creating an object for an array value (parsedname.extension == EXTENSION_ALL) allocates a properly sized array ov "value_objects"
Object values -- scalar
- temperature and tempgap types are converted before parsing, and converted back only for display. Internally only native format (Celsius) is used.
- numbers (integer, unsigned, float, date, boolean) are held internally as values. They are converted to strings (with proper offset if requested) only on display.
- string values are held in "buffer" with offset alreay applied. length gives real length.
object values -- array
- numbers are handled the same way as scalars
- string arrays, internally, have no delimitter.
- length for each string element.
- start of each string element is in buffer, concatenated. Use length values to find position.
- string arrays are NOT cached (currently)