diff --git a/src/TLV8.cpp b/src/TLV8.cpp index ff766f7..a486136 100644 --- a/src/TLV8.cpp +++ b/src/TLV8.cpp @@ -80,6 +80,14 @@ TLV8_it TLV8::add(uint8_t tag, size_t len, const uint8_t* val){ ///////////////////////////////////// +TLV8_it TLV8::add(uint8_t tag, TLV8 &subTLV){ + auto it=add(tag,subTLV.pack_size(),NULL); // create space for inserting sub TLV and store iterator to new element + subTLV.pack(*it); // pack subTLV into new element + return(--end()); +} + +///////////////////////////////////// + TLV8_it TLV8::find(uint8_t tag, TLV8_it it1, TLV8_it it2){ auto it=it1; diff --git a/src/TLV8.h b/src/TLV8.h index 1ca1ea3..5985e4d 100644 --- a/src/TLV8.h +++ b/src/TLV8.h @@ -80,6 +80,7 @@ class TLV8 : public std::list> { TLV8_it add(uint8_t tag, size_t len, const uint8_t *val); TLV8_it add(uint8_t tag, uint8_t val){return(add(tag, 1, &val));} TLV8_it add(uint8_t tag){return(add(tag, 0, NULL));} + TLV8_it add(uint8_t tag, TLV8 &subTLV); TLV8_it find(uint8_t tag, TLV8_it it1, TLV8_it it2); TLV8_it find(uint8_t tag, TLV8_it it1){return(find(tag, it1, end()));}