Read and Write object
Begining with v2.6p3 (March 2007) the parameters used for read and write operations have been changed.
was passed to lower level routines as:
function(buffer, size, offset, parsedname structure)
The new one_wire_query structure is:
struct one_wire_query <<
char * buffer ;
size_t size ;
off_t offset ;
struct parsedname pn;
union value_object val ;
In turn union value_object is
union value_object <<
int I ;
unsigned int U ;
_FLOAT F ;
_DATE D ;
int Y ;//boolean
size_t length ;
union value_object * array ;
The union member actually chosen depends on parsedname.filetype->format (i.e. knowledge gained from parsing the path).
- fewer parameters need to be passed with each call
- fewer separate cases for display, cache, and other handling
- far less duplication of code in ow_read.c and ow_write.c
The cost is more indirection, and slightly more awkward parameter extraction in the simplest cases.
- There are two classes of data: strings (ascii and binary) and numbers (integers, unsigneds, floating, dates, booleans). The string class needs special attention in C.
- Both array and scalars must be handled.