@@ -759,32 +759,32 @@ void tst_Parser::mapsAndArrays()
759759 " {_ 1: [_ " + expected + " ], \" Hello\" : {_ " + expected + " : (_ )}}" );
760760}
761761
762- struct Input {
763- QByteArray data;
764- int consumed;
765- };
766-
767762static const CborParserOperations byteArrayOps = {
768763 /* can_read_bytes = */ [](const CborValue *value, size_t len) {
769- auto input = static_cast <Input *>(value->parser ->data .ctx );
770- return input->data .size () - input->consumed >= int (len);
764+ auto data = static_cast <QByteArray *>(value->parser ->data .ctx );
765+ auto consumed = uintptr_t (value->source .token );
766+ return uintptr_t (data->size ()) - consumed >= uintptr_t (len);
771767 },
772768 /* read_bytes = */ [](const CborValue *value, void *dst, size_t offset, size_t len) {
773- auto input = static_cast <Input *>(value->parser ->data .ctx );
774- return memcpy (dst, input->data .constData () + input->consumed + offset, len);
769+ auto data = static_cast <QByteArray *>(value->parser ->data .ctx );
770+ auto consumed = uintptr_t (value->source .token );
771+ return memcpy (dst, data->constData () + consumed + offset, len);
775772 },
776773 /* advance_bytes = */ [](CborValue *value, size_t len) {
777- auto input = static_cast <Input *>(value->parser ->data .ctx );
778- input->consumed += int (len);
774+ auto consumed = uintptr_t (value->source .token );
775+ consumed += int (len);
776+ value->source .token = (void *)consumed;
779777 },
780778 /* transfer_string = */ [](CborValue *value, const void **userptr, size_t offset, size_t len) {
781779 // ###
782- auto input = static_cast <Input *>(value->parser ->data .ctx );
783- if (input->data .size () - input->consumed < int (len + offset))
780+ auto data = static_cast <QByteArray *>(value->parser ->data .ctx );
781+ auto consumed = uintptr_t (value->source .token );
782+ if (uintptr_t (data->size ()) - consumed < uintptr_t (len + offset))
784783 return CborErrorUnexpectedEOF;
785- input->consumed += int (offset);
786- *userptr = input->data .constData () + input->consumed ;
787- input->consumed += int (len);
784+ consumed += int (offset);
785+ *userptr = data->constData () + consumed;
786+ consumed += int (len);
787+ value->source .token = (void *)consumed;
788788 return CborNoError;
789789 }
790790};
@@ -794,11 +794,9 @@ void tst_Parser::readerApi()
794794 QFETCH (QByteArray, data);
795795 QFETCH (QString, expected);
796796
797- Input input = { data, 0 };
798-
799797 CborParser parser;
800798 CborValue first;
801- CborError err = cbor_parser_init_reader (&byteArrayOps, &parser, &first, &input );
799+ CborError err = cbor_parser_init_reader (&byteArrayOps, &parser, &first, &data );
802800 QCOMPARE (err, CborNoError);
803801
804802 QString decoded;
@@ -807,7 +805,7 @@ void tst_Parser::readerApi()
807805 QCOMPARE (decoded, expected);
808806
809807 // check we consumed everything
810- QCOMPARE (input. consumed , data.size ());
808+ QCOMPARE (uintptr_t (first. source . token ), uintptr_t ( data.size () ));
811809}
812810
813811void tst_Parser::reparse_data ()
@@ -822,23 +820,23 @@ void tst_Parser::reparse()
822820 QFETCH (QByteArray, data);
823821 QFETCH (QString, expected);
824822
825- Input input = { QByteArray (), 0 } ;
823+ QByteArray buffer ;
826824 CborParser parser;
827825 CborValue first;
828- CborError err = cbor_parser_init_reader (&byteArrayOps, &parser, &first, &input );
826+ CborError err = cbor_parser_init_reader (&byteArrayOps, &parser, &first, &buffer );
829827 QCOMPARE (err, CborErrorUnexpectedEOF);
830828
831829 for (int i = 0 ; i < data.size (); ++i) {
832- input. data = data.left (i);
830+ buffer = data.left (i);
833831 err = cbor_value_reparse (&first);
834832 if (err != CborErrorUnexpectedEOF)
835833 qDebug () << " At" << i;
836834 QCOMPARE (err, CborErrorUnexpectedEOF);
837- QCOMPARE (input. consumed , 0 );
835+ QCOMPARE (uintptr_t (first. source . token ), 0U );
838836 }
839837
840838 // now it should work
841- input. data = data;
839+ buffer = data;
842840 err = cbor_value_reparse (&first);
843841 QCOMPARE (err, CborNoError);
844842
@@ -848,7 +846,7 @@ void tst_Parser::reparse()
848846 QCOMPARE (decoded, expected);
849847
850848 // check we consumed everything
851- QCOMPARE (input. consumed , data.size ());
849+ QCOMPARE (uintptr_t (first. source . token ), uintptr_t ( data.size () ));
852850}
853851
854852void tst_Parser::chunkedString_data ()
0 commit comments