File indexing completed on 2024-03-24 03:54:27
0001 /* 0002 This file is part of the KDE Baloo Project 0003 SPDX-FileCopyrightText: 2015 Vishesh Handa <vhanda@kde.org> 0004 0005 SPDX-License-Identifier: LGPL-2.1-or-later 0006 */ 0007 0008 #include "positioncodec.h" 0009 #include "positioninfo.h" 0010 #include "coding.h" 0011 0012 using namespace Baloo; 0013 0014 QByteArray PositionCodec::encode(const QVector<PositionInfo>& list) 0015 { 0016 QByteArray data; 0017 QByteArray temporaryStorage; 0018 0019 for (const PositionInfo& pos : list) { 0020 putFixed64(&data, pos.docId); 0021 putDifferentialVarInt32(temporaryStorage, &data, pos.positions); 0022 } 0023 0024 return data; 0025 } 0026 0027 QVector<PositionInfo> PositionCodec::decode(const QByteArray& arr) 0028 { 0029 char* data = const_cast<char*>(arr.data()); 0030 char* end = data + arr.size(); 0031 0032 QVector<PositionInfo> vec; 0033 while (data < end) { 0034 PositionInfo info; 0035 0036 info.docId = decodeFixed64(data); 0037 data += sizeof(quint64); 0038 data = getDifferentialVarInt32(data, end, &info.positions); 0039 if (!data) { 0040 return QVector<PositionInfo>(); 0041 } 0042 0043 vec << info; 0044 } 0045 0046 return vec; 0047 }