Hi Robert,

Unfortunately I won't be in a position to build or test your changes
until next Tuesday or Wednesday.

But from a quick code review I don't think it will work.  The problem
is that there is no mechanism in  InputStream::readArrayImplementation
for determining what exactly needs to be byte-swapped.

So for example for an Vec3Array, the call to readArrayImplementation
doesn't specify the useByteSwap flag.  It needs to byte swap, but not
over the whole 12 byte array element, rather over 3 x 4 byte float
values.  There is currently no way of doing that in
InputStream::readArrayImplementation.

That's why in my original submission I had removed any attempt to do
byte swapping in InputStream, and just left it to the
BinaryInputIterator.  A compromise solution could be to handle all
byte swapping in BinaryInputIterator, but still allow
InputStream::readArrayImplementation to read a whole array in a single
I/O for non-byte swapped input.  Something like:


template<typename T>
void InputStream::readArrayImplementation( T* a, int read_size, bool
ObsoleteFlag )
{
    int size = 0;
    *this >> size >> BEGIN_BRACKET;
    if ( size )
    {
        a->resize( size );
        if ( isBinary()  && !_byteSwap )
        {
            readCharArray( (char*)&((*a)[0]), read_size*size ); checkStream();
        }
        else
        {
            for ( int i=0; i<size; ++i )
                *this >> (*a)[i];
        }
    }
    *this >> END_BRACKET;
}


If you like I could code this up & properly test it next week, and resubmit.

Regards

Colin McDonald

On Fri, Feb 24, 2012 at 9:10 PM, Robert Osfield
<[email protected]> wrote:
> Hi Colin and Rui,
>
> I've made some more changes in attempt to keep InputStream and
> InputStreamOperator's handling of the endian byte swap consistent, the
> changes are detailed below.  I have also merged Colin's suggested
> changes the the write/readLong(..) and write/readULong(..) methods
> These changes are now checked into svn/trunk.
>
> Could you review these changes and test them out and let me know if
> they are sufficient or whether there is still some further work to do.
>
> Thanks,
> Robert.
_______________________________________________
osg-submissions mailing list
[email protected]
http://lists.openscenegraph.org/listinfo.cgi/osg-submissions-openscenegraph.org

Reply via email to