@@ -31,21 +31,21 @@ MessageDecoder::Status CBORMessageDecoderSingleton::decode(Message* msg, const u
31
31
return MessageDecoder::Status::Error;
32
32
}
33
33
34
- auto decoder_it = decoders. begin () ;
34
+ struct llnode * decoder_it = decoders;
35
35
36
- for (; decoder_it != decoders. end () ; decoder_it++ ) {
37
- if (decoder_it->first == tag) {
36
+ for (; decoder_it != nullptr ; decoder_it = decoder_it-> next ) {
37
+ if (decoder_it->tag == tag) {
38
38
break ;
39
39
}
40
40
}
41
41
42
42
// check if message.id exists on the decoders list or return error
43
- if (decoder_it == decoders. end () ) {
43
+ if (decoder_it == nullptr ) {
44
44
return MessageDecoder::Status::Error;
45
45
}
46
46
47
47
// encode the message
48
- if (decoder_it->second ->_decode (&iter, msg) == MessageDecoder::Status::Error) {
48
+ if (decoder_it->decoder ->_decode (&iter, msg) == MessageDecoder::Status::Error) {
49
49
return MessageDecoder::Status::Error;
50
50
}
51
51
@@ -59,17 +59,27 @@ CBORMessageDecoderSingleton& CBORMessageDecoderSingleton::getInstance() {
59
59
}
60
60
61
61
void CBORMessageDecoderSingleton::append (CBORTag tag, CBORMessageDecoderInterface* decoder) {
62
- auto decoder_it = decoders. begin () ;
62
+ struct llnode * decoder_it = decoders;
63
63
64
- for (; decoder_it != decoders. end () ; decoder_it++ ) {
65
- if (decoder_it->first == tag) {
64
+ for (; decoder_it != nullptr ; decoder_it = decoder_it-> next ) {
65
+ if (decoder_it->tag == tag) {
66
66
return ;
67
67
}
68
68
}
69
69
70
- decoders.push_back (
71
- std::make_pair (tag, decoder)
72
- );
70
+ struct llnode * next = new llnode;
71
+
72
+ next->tag = tag;
73
+ next->decoder = decoder;
74
+
75
+ // this is the first element
76
+ if (decoders == nullptr ) {
77
+ decoders = next;
78
+ } else {
79
+ decoders_last->next = next;
80
+ }
81
+
82
+ decoders_last = next;
73
83
}
74
84
75
85
CBORMessageDecoderInterface::CBORMessageDecoderInterface (const CBORTag tag, const MessageId id)
0 commit comments