MCPcopy Create free account
hub / github.com/KDE/kdevelop / writeDataInfo

Method writeDataInfo

kdevplatform/language/duchain/topducontextdynamicdata.cpp:754–786  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

752}
753
754TopDUContextDynamicData::ItemDataInfo TopDUContextDynamicData::writeDataInfo(const ItemDataInfo& info,
755 const DUChainBaseData* data,
756 uint& totalDataOffset)
757{
758 ItemDataInfo ret(info);
759 Q_ASSERT(info.dataOffset);
760 const auto size = DUChainItemSystem::self().dynamicSize(*data);
761 Q_ASSERT(size);
762
763 if (m_data.back().array.size() - m_data.back().position < size) {
764 //Create a new m_data item
765 m_data.append({QByteArray(std::max(size, 10000u), 0), 0u});
766 }
767
768 ret.dataOffset = totalDataOffset;
769
770 uint pos = m_data.back().position;
771 m_data.back().position += size;
772 totalDataOffset += size;
773
774 auto target = reinterpret_cast<DUChainBaseData*>(m_data.back().array.data() + pos);
775#if defined(__GNUC__) && !defined(__INTEL_COMPILER) && (((__GNUC__ * 100) + __GNUC_MINOR__) >= 800)
776#pragma GCC diagnostic push
777#pragma GCC diagnostic ignored "-Wclass-memaccess"
778#endif
779 memcpy(target, data, size);
780#if defined(__GNUC__) && !defined(__INTEL_COMPILER) && (((__GNUC__ * 100) + __GNUC_MINOR__) >= 800)
781#pragma GCC diagnostic pop
782#endif
783
784 verifyDataInfo(ret, m_data);
785 return ret;
786}
787
788uint TopDUContextDynamicData::allocateDeclarationIndex(Declaration* decl, bool temporary)
789{

Callers 1

storeDataMethod · 0.80

Calls 7

verifyDataInfoFunction · 0.85
QByteArrayClass · 0.70
dynamicSizeMethod · 0.45
sizeMethod · 0.45
backMethod · 0.45
appendMethod · 0.45
dataMethod · 0.45

Tested by

no test coverage detected