- From: John Lumley <john@saxonica.com>
- Date: Fri, 19 Jul 2013 11:04:06 +0100
- To: public-expath@w3.org
- Message-ID: <51E90F16.2040808@saxonica.com>
The original proposal for number (un-)packing permitted endianess to be controlled with an additional boolean parameter which enabled big-endian operation, e.g.: bin:unpack-unsigned-integer($in as xs:base64Binary, $offset as xs:integer, $length as xs:integer) as xs:integer defaults to little-endian (which still needs discussion), and bin:unpack-unsigned-integer($in as xs:base64Binary, $offset as xs:integer, $length as xs:integer, $big as xs:boolean) as xs:integer converts in a big-endian manner if $big is true(). However, this could easily lead to programmer confusion - "I can't remember which way it goes", "what does false() mean?" etc. It's been suggested that a change of signature to: bin:unpack-unsigned-integer($in as xs:base64Binary, $offset as xs:integer, $length as xs:integer, $endian as xs:string) as xs:integer would be much clearer, and I suggest the following supported values: * any of 'most-significant-first', 'big-endian' or 'BE' direct most-significant octet first behaviour. * any of 'least-significant-first', 'little-endian' or 'LE' direct least-significant octet first behaviour. Any other string values lead to error. As I suggested in the previous message, currying can make things simpler: <xsl:variable name="bin:unpack-uint" select="bin:unpack-unsigned-integer(?,?,?,'most-significant-first')"/> ... $bin:unpack-uint($tiff,/$loc/,/$len/)...... Thoughts? -- *John Lumley* MA PhD CEng FIEE john@saxonica.com <mailto:john@saxonica.com> on behalf of Saxonica Ltd
Received on Friday, 19 July 2013 10:04:26 UTC