@@ -757,32 +757,32 @@ void tst_Parser::mapsAndArrays()
757
757
" {_ 1: [_ " + expected + " ], \" Hello\" : {_ " + expected + " : (_ )}}" );
758
758
}
759
759
760
- struct Input {
761
- QByteArray data;
762
- int consumed;
763
- };
764
-
765
760
static const CborParserOperations byteArrayOps = {
766
761
/* 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);
769
765
},
770
766
/* 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);
773
770
},
774
771
/* 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;
777
775
},
778
776
/* transfer_string = */ [](CborValue *value, const void **userptr, size_t offset, size_t len) {
779
777
// ###
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))
782
781
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;
786
786
return CborNoError;
787
787
}
788
788
};
@@ -792,11 +792,9 @@ void tst_Parser::readerApi()
792
792
QFETCH (QByteArray, data);
793
793
QFETCH (QString, expected);
794
794
795
- Input input = { data, 0 };
796
-
797
795
CborParser parser;
798
796
CborValue first;
799
- CborError err = cbor_parser_init_reader (&byteArrayOps, &parser, &first, &input );
797
+ CborError err = cbor_parser_init_reader (&byteArrayOps, &parser, &first, &data );
800
798
QCOMPARE (err, CborNoError);
801
799
802
800
QString decoded;
@@ -805,7 +803,7 @@ void tst_Parser::readerApi()
805
803
QCOMPARE (decoded, expected);
806
804
807
805
// check we consumed everything
808
- QCOMPARE (input. consumed , data.size ());
806
+ QCOMPARE (uintptr_t (first. source . token ), uintptr_t ( data.size () ));
809
807
}
810
808
811
809
void tst_Parser::reparse_data ()
@@ -820,23 +818,23 @@ void tst_Parser::reparse()
820
818
QFETCH (QByteArray, data);
821
819
QFETCH (QString, expected);
822
820
823
- Input input = { QByteArray (), 0 } ;
821
+ QByteArray buffer ;
824
822
CborParser parser;
825
823
CborValue first;
826
- CborError err = cbor_parser_init_reader (&byteArrayOps, &parser, &first, &input );
824
+ CborError err = cbor_parser_init_reader (&byteArrayOps, &parser, &first, &buffer );
827
825
QCOMPARE (err, CborErrorUnexpectedEOF);
828
826
829
827
for (int i = 0 ; i < data.size (); ++i) {
830
- input. data = data.left (i);
828
+ buffer = data.left (i);
831
829
err = cbor_value_reparse (&first);
832
830
if (err != CborErrorUnexpectedEOF)
833
831
qDebug () << " At" << i;
834
832
QCOMPARE (err, CborErrorUnexpectedEOF);
835
- QCOMPARE (input. consumed , 0 );
833
+ QCOMPARE (uintptr_t (first. source . token ), 0U );
836
834
}
837
835
838
836
// now it should work
839
- input. data = data;
837
+ buffer = data;
840
838
err = cbor_value_reparse (&first);
841
839
QCOMPARE (err, CborNoError);
842
840
@@ -846,7 +844,7 @@ void tst_Parser::reparse()
846
844
QCOMPARE (decoded, expected);
847
845
848
846
// check we consumed everything
849
- QCOMPARE (input. consumed , data.size ());
847
+ QCOMPARE (uintptr_t (first. source . token ), uintptr_t ( data.size () ));
850
848
}
851
849
852
850
void tst_Parser::chunkedString_data ()
0 commit comments