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