@@ -757,32 +757,32 @@ void tst_Parser::mapsAndArrays()
757757 " {_ 1: [_ " + expected + " ], \" Hello\" : {_ " + expected + " : (_ )}}" );
758758}
759759
760- struct Input {
761- QByteArray data;
762- int consumed;
763- };
764-
765760static const CborParserOperations byteArrayOps = {
766761 /* can_read_bytes = */ [](const CborValue *value, size_t len) {
767- auto input = static_cast <Input *>(value->parser ->data .ctx );
768- return input->data .size () - input->consumed >= int (len);
762+ auto data = static_cast <QByteArray *>(value->parser ->data .ctx );
763+ auto consumed = uintptr_t (value->source .token );
764+ return uintptr_t (data->size ()) - consumed >= uintptr_t (len);
769765 },
770766 /* read_bytes = */ [](const CborValue *value, void *dst, size_t offset, size_t len) {
771- auto input = static_cast <Input *>(value->parser ->data .ctx );
772- return memcpy (dst, input->data .constData () + input->consumed + offset, len);
767+ auto data = static_cast <QByteArray *>(value->parser ->data .ctx );
768+ auto consumed = uintptr_t (value->source .token );
769+ return memcpy (dst, data->constData () + consumed + offset, len);
773770 },
774771 /* advance_bytes = */ [](CborValue *value, size_t len) {
775- auto input = static_cast <Input *>(value->parser ->data .ctx );
776- input->consumed += int (len);
772+ auto consumed = uintptr_t (value->source .token );
773+ consumed += int (len);
774+ value->source .token = (void *)consumed;
777775 },
778776 /* transfer_string = */ [](CborValue *value, const void **userptr, size_t offset, size_t len) {
779777 // ###
780- auto input = static_cast <Input *>(value->parser ->data .ctx );
781- if (input->data .size () - input->consumed < int (len + offset))
778+ auto data = static_cast <QByteArray *>(value->parser ->data .ctx );
779+ auto consumed = uintptr_t (value->source .token );
780+ if (uintptr_t (data->size ()) - consumed < uintptr_t (len + offset))
782781 return CborErrorUnexpectedEOF;
783- input->consumed += int (offset);
784- *userptr = input->data .constData () + input->consumed ;
785- input->consumed += int (len);
782+ consumed += int (offset);
783+ *userptr = data->constData () + consumed;
784+ consumed += int (len);
785+ value->source .token = (void *)consumed;
786786 return CborNoError;
787787 }
788788};
@@ -792,11 +792,9 @@ void tst_Parser::readerApi()
792792 QFETCH (QByteArray, data);
793793 QFETCH (QString, expected);
794794
795- Input input = { data, 0 };
796-
797795 CborParser parser;
798796 CborValue first;
799- CborError err = cbor_parser_init_reader (&byteArrayOps, &parser, &first, &input );
797+ CborError err = cbor_parser_init_reader (&byteArrayOps, &parser, &first, &data );
800798 QCOMPARE (err, CborNoError);
801799
802800 QString decoded;
@@ -805,7 +803,7 @@ void tst_Parser::readerApi()
805803 QCOMPARE (decoded, expected);
806804
807805 // check we consumed everything
808- QCOMPARE (input. consumed , data.size ());
806+ QCOMPARE (uintptr_t (first. source . token ), uintptr_t ( data.size () ));
809807}
810808
811809void tst_Parser::reparse_data ()
@@ -820,23 +818,23 @@ void tst_Parser::reparse()
820818 QFETCH (QByteArray, data);
821819 QFETCH (QString, expected);
822820
823- Input input = { QByteArray (), 0 } ;
821+ QByteArray buffer ;
824822 CborParser parser;
825823 CborValue first;
826- CborError err = cbor_parser_init_reader (&byteArrayOps, &parser, &first, &input );
824+ CborError err = cbor_parser_init_reader (&byteArrayOps, &parser, &first, &buffer );
827825 QCOMPARE (err, CborErrorUnexpectedEOF);
828826
829827 for (int i = 0 ; i < data.size (); ++i) {
830- input. data = data.left (i);
828+ buffer = data.left (i);
831829 err = cbor_value_reparse (&first);
832830 if (err != CborErrorUnexpectedEOF)
833831 qDebug () << " At" << i;
834832 QCOMPARE (err, CborErrorUnexpectedEOF);
835- QCOMPARE (input. consumed , 0 );
833+ QCOMPARE (uintptr_t (first. source . token ), 0U );
836834 }
837835
838836 // now it should work
839- input. data = data;
837+ buffer = data;
840838 err = cbor_value_reparse (&first);
841839 QCOMPARE (err, CborNoError);
842840
@@ -846,7 +844,7 @@ void tst_Parser::reparse()
846844 QCOMPARE (decoded, expected);
847845
848846 // check we consumed everything
849- QCOMPARE (input. consumed , data.size ());
847+ QCOMPARE (uintptr_t (first. source . token ), uintptr_t ( data.size () ));
850848}
851849
852850void tst_Parser::chunkedString_data ()
0 commit comments