diff --git a/med/allocator.hpp b/med/allocator.hpp index 152eb9a..60b186e 100644 --- a/med/allocator.hpp +++ b/med/allocator.hpp @@ -22,6 +22,7 @@ struct null_allocator [[nodiscard]] void* allocate(std::size_t bytes, std::size_t /*alignment*/) const { + CODEC_TRACE("%s", __FUNCTION__); MED_THROW_EXCEPTION(out_of_memory, __FUNCTION__, bytes); } }; @@ -29,6 +30,7 @@ struct null_allocator template T* create(ALLOCATOR& alloc, ARGs&&... args) { + CODEC_TRACE("%s", __FUNCTION__); void* p = alloc.allocate(sizeof(T), alignof(T)); if (!p) { MED_THROW_EXCEPTION(out_of_memory, name(), sizeof(T)); } return new (p) T{std::forward(args)...}; diff --git a/med/choice.hpp b/med/choice.hpp index d9f78d7..89f38da 100644 --- a/med/choice.hpp +++ b/med/choice.hpp @@ -203,20 +203,23 @@ struct choice_dec using mi = meta::produce_info_t; using tag_t = get_info_t>; //static_assert (type::mik = kind::TAG, "NOT A TAG"); + CODEC_TRACE("TAG[%s] matching with %s", class_name(), class_name()); return tag_t::match( get_tag(header) ); } template static constexpr void apply(TO& to, HEADER const& header, DECODER& decoder, DEPS&... deps) { - CODEC_TRACE("CASE[%s]", name()); + CODEC_TRACE("CASE[%s] %s", name(), class_name()); auto& ie = static_cast(to.template ref>()); //skip 1st TAG meta-info as it's decoded in header using mi = meta::produce_info_t; if constexpr (AContainer) { + using FLD_TYPE = get_field_type_t>; using EXP_TAG = get_info_t>; - if constexpr(std::is_same_v>>) + CODEC_TRACE("CASE[%s] TYPE[%s] EXPOSED[%s]", name(), name(), name()); + if constexpr(std::is_same_v) { CODEC_TRACE("explicit[%s] = %#zX", name(), size_t(header.get())); ie.template ref().set(header.get()); @@ -356,12 +359,14 @@ class choice : public IE using IE = meta::list_first_t; //use 1st IE since all have similar tag using mi = meta::produce_info_t; using tag_t = get_info_t>; + CODEC_TRACE("%s CHOICE WITH PLAIN HEADER, mi=%s tag=%s", name(), name(), name()); as_writable_t tag; tag.set_encoded(sl::decode_tag(decoder)); meta::for_if(sl::choice_dec{}, *this, tag, decoder, deps...); } else { + CODEC_TRACE("%s CHOICE W/O PLAIN HEADER", name()); med::decode(decoder, this->header(), deps...); meta::for_if(sl::choice_dec{}, *this, this->header(), decoder, deps...); } diff --git a/med/container.hpp b/med/container.hpp index eb9f663..83986c9 100644 --- a/med/container.hpp +++ b/med/container.hpp @@ -113,18 +113,18 @@ struct cont_is //optional or mandatory field w/ setter => can be set implicitly if constexpr (AOptional || AHasSetterType) { - //CODEC_TRACE("is_set[%s]=%d", name(), static_cast(seq).is_set()); + CODEC_TRACE("O/S[%s] is_set=%d", name(), static_cast(seq).is_set()); return static_cast(seq).is_set(); } else //mandatory field w/o setter => s.b. set explicitly { + CODEC_TRACE("M[%s]%s is_set=%d", name(), (APredefinedValue ? "[init/const]":""), static_cast(seq).is_set()); if constexpr (APredefinedValue) //don't account predefined IEs like init/const { return false; } else { - //CODEC_TRACE("is_set[%s]=%d", name(), static_cast(seq).is_set()); return static_cast(seq).is_set(); } } diff --git a/med/decode.hpp b/med/decode.hpp index 8a733c3..673da66 100644 --- a/med/decode.hpp +++ b/med/decode.hpp @@ -33,7 +33,7 @@ constexpr auto decode_tag(auto& decoder) TAG_TYPE ie; typename as_writable_t::value_type value{}; value = decoder(ie, IE_TAG{}); - CODEC_TRACE("%s=%zX [%s]", __FUNCTION__, std::size_t(value), class_name()); + CODEC_TRACE("%s=0x%zX(%zu) [%s]", __FUNCTION__, std::size_t(value), std::size_t(value), class_name()); return value; } //Length diff --git a/med/encode.hpp b/med/encode.hpp index 557db3f..ab114f1 100644 --- a/med/encode.hpp +++ b/med/encode.hpp @@ -149,7 +149,7 @@ template constexpr void encode(ENCODER&& encoder, IE const& ie) { using META_INFO = meta::produce_info_t; - //CODEC_TRACE("mi=%s", class_name()); + CODEC_TRACE("mi=%s by %s for %s", class_name(), class_name(), class_name()); sl::ie_encode>(encoder, ie); } diff --git a/med/field.hpp b/med/field.hpp index d1bfc59..017e0cb 100644 --- a/med/field.hpp +++ b/med/field.hpp @@ -198,7 +198,7 @@ class multi_field : public detail::define_meta_info m_tail = prev.m_curr; } } - CODEC_TRACE("%s(%s=%p) count=%zu head=%p tail=%p", __FUNCTION__, name(), it.get(), count(), m_head, m_tail); + CODEC_TRACE("%s(%s=%p) count=%zu head=%p tail=%p", __FUNCTION__, name(), (void*)it.get(), count(), (void*)m_head, (void*)m_tail); return ret; } prev = it; @@ -220,7 +220,7 @@ class multi_field : public detail::define_meta_info { for (auto& f : m_fields) { - CODEC_TRACE("%s: %s=%p[%c]", __FUNCTION__, name(), (void*)&f, f.value.is_set()?'+':'-'); + CODEC_TRACE("%s: %s=%p[%c][%zu]", __FUNCTION__, name(), (void*)&f, f.value.is_set()?'+':'-', inplace); if (!f.value.is_set()) return &f; } } @@ -235,7 +235,7 @@ class multi_field : public detail::define_meta_info else { m_head = m_tail = pf; } pf->next = nullptr; m_tail = pf; - CODEC_TRACE("%s(%s=%p) count=%zu head=%p tail=%p", __FUNCTION__, name(), (void*)pf, count(), m_head, m_tail); + CODEC_TRACE("%s(%s=%p) count=%zu head=%p tail=%p", __FUNCTION__, name(), (void*)pf, count(), (void*)m_head, (void*)m_tail); return &m_tail->value; } diff --git a/med/length.hpp b/med/length.hpp index aff7ea4..398b152 100644 --- a/med/length.hpp +++ b/med/length.hpp @@ -147,7 +147,6 @@ constexpr void length_to_value(FIELD& field, std::size_t len) { field.set_length(len); } - CODEC_TRACE("L=%zXh(%zX) [%s]:", len, std::size_t(field.get_encoded()), name()); } else if constexpr (std::is_same_v) { @@ -160,6 +159,7 @@ constexpr void length_to_value(FIELD& field, std::size_t len) { field.set_encoded(len); } + CODEC_TRACE("L=%zXh(%zX) [%s]:", len, std::size_t(field.get_encoded()), name()); } template diff --git a/med/octet_decoder.hpp b/med/octet_decoder.hpp index 8a82b4b..33d3bc5 100644 --- a/med/octet_decoder.hpp +++ b/med/octet_decoder.hpp @@ -82,7 +82,7 @@ struct octet_decoder : sl::octet_info if constexpr (IE::traits::offset) { constexpr size_t MASK = (size_t(1) << (NUM_BYTES * 8 - IE::traits::offset)) - 1; - //CODEC_TRACE("V=%zXh(%zu) M=%zXh", res, NUM_BYTES, MASK); + CODEC_TRACE("V=%zXh(%zu) M=%zXh", res, NUM_BYTES, MASK); res &= MASK; } constexpr uint8_t RS = NUM_BYTES * 8 - NUM_BITS; diff --git a/med/sequence.hpp b/med/sequence.hpp index c021ae5..bb3498d 100644 --- a/med/sequence.hpp +++ b/med/sequence.hpp @@ -362,7 +362,7 @@ struct seq_enc } else //w/o setter { - //CODEC_TRACE("%c{%s}", ie.is_set()?'+':'-', class_name()); + CODEC_TRACE("%c{%s}", ie.is_set()?'+':'-', class_name()); if (AHasSetLength || ie.is_set()) { med::encode(encoder, ie); diff --git a/med/set.hpp b/med/set.hpp index f915511..0574feb 100644 --- a/med/set.hpp +++ b/med/set.hpp @@ -108,6 +108,7 @@ struct set_dec { using mi = meta::produce_info_t; using tag_t = get_info_t>; + CODEC_TRACE("%zu tag match%c for %s(%s)", size_t(get_tag(header)), (tag_t::match(get_tag(header))? '+':'-'), name(), name()); return tag_t::match( get_tag(header) ); } @@ -226,7 +227,7 @@ struct set : detail::set_container> { value header; header.set_encoded(sl::decode_tag(decoder)); - CODEC_TRACE("tag=%#zX", std::size_t(get_tag(header))); + CODEC_TRACE("tag=%#zX mi=%s firstIE=%s tag_t=%s", std::size_t(get_tag(header)), class_name(), name(), name()); meta::for_if(sl::set_dec{}, this->m_ies, decoder, header, deps...); } } @@ -238,7 +239,7 @@ struct set : detail::set_container> header_type header; med::decode(decoder, header, deps...); decoder(POP_STATE{}); //restore back for IE to decode itself (?TODO: better to copy instead) - CODEC_TRACE("tag=%#zX", std::size_t(get_tag(header))); + CODEC_TRACE("tag=%#zX hdr=%s", std::size_t(get_tag(header)), class_name()); meta::for_if(sl::set_dec{}, this->m_ies, decoder, header, deps...); } }