PIString:: mid and cutMid does nothing if "start" < 0

This commit is contained in:
2022-08-01 19:29:40 +03:00
parent ab7769dd5a
commit 4ea5465637
3 changed files with 63 additions and 60 deletions

View File

@@ -1,35 +1,32 @@
#include "pip.h"
#include "piiostream.h"
using namespace PICoutManipulators;
int main(int argc, char * argv[]) {
PIByteArray ba = PIByteArray::fromHex("AA1122BB11233AA4455");
PIIOByteArray b;
b.open(ba);
PIPacketExtractor p(&b);
p.setSplitMode(PIPacketExtractor::Header);
p.setHeader(PIByteArray::fromHex("00"));
p.setFooter(PIByteArray::fromHex("AA"));
p.setPayloadSize(2);
p.setThreadedReadSlot([](const uchar * data, int size, void * d) {
return true;
});
p.setHeaderCheckSlot([](const uchar * src, const uchar * rec, int size)->int {
if (*src == *rec) {
if (rec[0] == 0xAA) return 2;
if (rec[0] == 0xBB) return 3;
}
return -1;
});
// p.setPayloadCheckSlot([](const uchar * data, int size) {
// return data[1] == 0xFF;
// });
CONNECTL(&p, packetReceived, ([](const uchar * data, int size){
piCout << PIByteArray(data, size).toHex();
}));
p.startThreadedRead();
piMSleep(100);
p.stop();
return 0;
{
PIString s("0123456789");
piCout << s.mid(0, -1); // s = "0123456789"
piCout << s.mid(0, 2); // s = "01"
piCout << s.mid(3, -1); // s = "3456789"
piCout << s.mid(3, 4); // s = "3456"
piCout << s.mid(7, 1); // s = "7"
piCout << s.mid(7, 4); // s = "789"
piCout << s.mid(-1); // s = ""
//! \endcode
//! \~\sa \a left(), \a right()
}
//! \~\details
//! \~\code
PIString s("0123456789");
s.cutMid(1, 3);
piCout << s; // s = "0456789"
s.cutMid(0, 2);
piCout << s; // s = "56789"
s.cutMid(3, -1);
piCout << s; // s = "567"
s.cutMid(-1, -1);
piCout << s; // s = "567"
}