[Lldb-commits] [lldb] r279917 - Convert some functions to use StringRef instead of c_str, len
Author: zturner Date: Sat Aug 27 10:52:29 2016 New Revision: 279917 URL: http://llvm.org/viewvc/llvm-project?rev=279917&view=rev Log: Convert some functions to use StringRef instead of c_str, len This started as an effort to change StringExtractor to store a StringRef internally instead of a std::string. I got that working locally with just 1 test failure which I was unable to figure out the cause of. But it was also a massive changelist due to a trickle down effect of changes. So I'm starting over, using what I learned from the first time to tackle smaller, more isolated changes hopefully leading up to a full conversion by the end. At first the changes (such as in this CL) will seem mostly a matter of preference and pointless otherwise. However, there are some places in my larger CL where using StringRef turned 20+ lines of code into 2, drastically simplifying logic. Hopefully once these go in they will illustrate some of the benefits of thinking in terms of StringRef. Modified: lldb/trunk/source/Plugins/Process/gdb-remote/GDBRemoteClientBase.cpp lldb/trunk/source/Plugins/Process/gdb-remote/GDBRemoteCommunication.cpp lldb/trunk/source/Plugins/Process/gdb-remote/GDBRemoteCommunication.h lldb/trunk/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationServer.cpp lldb/trunk/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationServerCommon.cpp lldb/trunk/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationServerLLGS.cpp lldb/trunk/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationServerPlatform.cpp lldb/trunk/unittests/Process/gdb-remote/GDBRemoteTestUtils.h Modified: lldb/trunk/source/Plugins/Process/gdb-remote/GDBRemoteClientBase.cpp URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/Process/gdb-remote/GDBRemoteClientBase.cpp?rev=279917&r1=279916&r2=279917&view=diff == --- lldb/trunk/source/Plugins/Process/gdb-remote/GDBRemoteClientBase.cpp (original) +++ lldb/trunk/source/Plugins/Process/gdb-remote/GDBRemoteClientBase.cpp Sat Aug 27 10:52:29 2016 @@ -216,7 +216,7 @@ GDBRemoteClientBase::SendPacketAndWaitFo const Lock &lock) { assert(lock); -PacketResult packet_result = SendPacketNoLock(payload.data(), payload.size()); +PacketResult packet_result = SendPacketNoLock(payload); if (packet_result != PacketResult::Success) return packet_result; @@ -255,7 +255,7 @@ GDBRemoteClientBase::SendvContPacket(llv log->Printf("GDBRemoteCommunicationClient::%s () sending vCont packet: %.*s", __FUNCTION__, int(payload.size()), payload.data()); -if (SendPacketNoLock(payload.data(), payload.size()) != PacketResult::Success) +if (SendPacketNoLock(payload) != PacketResult::Success) return false; OnRunPacketSent(true); @@ -354,8 +354,7 @@ GDBRemoteClientBase::ContinueLock::lock( log->Printf("GDBRemoteClientBase::ContinueLock::%s() cancelled", __FUNCTION__); return LockResult::Cancelled; } -if (m_comm.SendPacketNoLock(m_comm.m_continue_packet.data(), m_comm.m_continue_packet.size()) != -PacketResult::Success) +if (m_comm.SendPacketNoLock(m_comm.m_continue_packet) != PacketResult::Success) return LockResult::Failed; lldbassert(!m_comm.m_is_running); Modified: lldb/trunk/source/Plugins/Process/gdb-remote/GDBRemoteCommunication.cpp URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/Process/gdb-remote/GDBRemoteCommunication.cpp?rev=279917&r1=279916&r2=279917&view=diff == --- lldb/trunk/source/Plugins/Process/gdb-remote/GDBRemoteCommunication.cpp (original) +++ lldb/trunk/source/Plugins/Process/gdb-remote/GDBRemoteCommunication.cpp Sat Aug 27 10:52:29 2016 @@ -187,12 +187,12 @@ GDBRemoteCommunication::~GDBRemoteCommun } char -GDBRemoteCommunication::CalculcateChecksum (const char *payload, size_t payload_length) +GDBRemoteCommunication::CalculcateChecksum (llvm::StringRef payload) { int checksum = 0; -for (size_t i = 0; i < payload_length; ++i) -checksum += payload[i]; +for (char c : payload) +checksum += c; return checksum & 255; } @@ -224,16 +224,16 @@ GDBRemoteCommunication::SendNack () } GDBRemoteCommunication::PacketResult -GDBRemoteCommunication::SendPacketNoLock (const char *payload, size_t payload_length) +GDBRemoteCommunication::SendPacketNoLock (llvm::StringRef payload) { if (IsConnected()) { StreamString packet(0, 4, eByteOrderBig); packet.PutChar('$'); -packet.Write (payload, payload_length); +packet.Write (payload.data(), payload.size()); packet.PutChar('#'); -packet.PutHex8(CalculcateChecksum (payload, payload_length)); +packet.PutHex8(CalculcateChecksum
[Lldb-commits] [lldb] r279919 - Add some unit tests for StringExtractor::GetNameColonValue.
Author: zturner Date: Sat Aug 27 11:35:15 2016 New Revision: 279919 URL: http://llvm.org/viewvc/llvm-project?rev=279919&view=rev Log: Add some unit tests for StringExtractor::GetNameColonValue. These are helpful on their own, but will be even more useful once the GetNameColonValue is updated to return StringRefs instead of std::strings. Modified: lldb/trunk/unittests/Utility/StringExtractorTest.cpp Modified: lldb/trunk/unittests/Utility/StringExtractorTest.cpp URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/unittests/Utility/StringExtractorTest.cpp?rev=279919&r1=279918&r2=279919&view=diff == --- lldb/trunk/unittests/Utility/StringExtractorTest.cpp (original) +++ lldb/trunk/unittests/Utility/StringExtractorTest.cpp Sat Aug 27 11:35:15 2016 @@ -403,4 +403,57 @@ TEST_F (StringExtractorTest, GetHexBytes ASSERT_EQ('2', *ex.Peek()); } +TEST_F(StringExtractorTest, GetNameColonValueSuccess) +{ +const char kNameColonPairs[] = "key1:value1;key2:value2;"; +StringExtractor ex(kNameColonPairs); +std::string name; +std::string value; +EXPECT_TRUE(ex.GetNameColonValue(name, value)); +EXPECT_EQ("key1", name); +EXPECT_EQ("value1", value); +EXPECT_TRUE(ex.GetNameColonValue(name, value)); +EXPECT_EQ("key2", name); +EXPECT_EQ("value2", value); +EXPECT_EQ(0, ex.GetBytesLeft()); +} + + +TEST_F(StringExtractorTest, GetNameColonValueContainsColon) +{ +const char kNameColonPairs[] = "key1:value1:value2;key2:value3;"; +StringExtractor ex(kNameColonPairs); + +std::string name; +std::string value; +EXPECT_TRUE(ex.GetNameColonValue(name, value)); +EXPECT_EQ("key1", name); +EXPECT_EQ("value1:value2", value); +EXPECT_TRUE(ex.GetNameColonValue(name, value)); +EXPECT_EQ("key2", name); +EXPECT_EQ("value3", value); +EXPECT_EQ(0, ex.GetBytesLeft()); +} + +TEST_F(StringExtractorTest, GetNameColonValueNoSemicolon) +{ +const char kNameColonPairs[] = "key1:value1"; +StringExtractor ex(kNameColonPairs); + +std::string name; +std::string value; +EXPECT_FALSE(ex.GetNameColonValue(name, value)); +EXPECT_EQ(0, ex.GetBytesLeft()); +} + +TEST_F(StringExtractorTest, GetNameColonValueNoColon) +{ +const char kNameColonPairs[] = "key1value1;"; +StringExtractor ex(kNameColonPairs); + +std::string name; +std::string value; +EXPECT_FALSE(ex.GetNameColonValue(name, value)); +EXPECT_EQ(0, ex.GetBytesLeft()); +} ___ lldb-commits mailing list lldb-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits
[Lldb-commits] [lldb] r279920 - Fix some build bot breakages.
Author: zturner Date: Sat Aug 27 11:38:11 2016 New Revision: 279920 URL: http://llvm.org/viewvc/llvm-project?rev=279920&view=rev Log: Fix some build bot breakages. There was some code that was ifdef'ed out that I didn't catch in my earlier patch. Modified: lldb/trunk/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationServerCommon.cpp lldb/trunk/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationServerPlatform.cpp Modified: lldb/trunk/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationServerCommon.cpp URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationServerCommon.cpp?rev=279920&r1=279919&r2=279920&view=diff == --- lldb/trunk/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationServerCommon.cpp (original) +++ lldb/trunk/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationServerCommon.cpp Sat Aug 27 11:38:11 2016 @@ -418,7 +418,7 @@ GDBRemoteCommunicationServerCommon::Hand { StreamString response; response.PutCStringAsRawHex8 (name.c_str()); -return SendPacketNoLock (response.GetData(), response.GetSize()); +return SendPacketNoLock (response.GetString()); } } if (log) @@ -442,7 +442,7 @@ GDBRemoteCommunicationServerCommon::Hand { StreamString response; response.PutCStringAsRawHex8 (name.c_str()); -return SendPacketNoLock (response.GetData(), response.GetSize()); +return SendPacketNoLock (response.GetString()); } } #endif @@ -561,7 +561,7 @@ GDBRemoteCommunicationServerCommon::Hand if (count == UINT64_MAX) { response.Printf("F-1:%i", EINVAL); -return SendPacketNoLock(response.GetData(), response.GetSize()); +return SendPacketNoLock(response.GetString()); } std::string buffer(count, 0); @@ -576,7 +576,7 @@ GDBRemoteCommunicationServerCommon::Hand response.PutChar(';'); response.PutEscapedBytes(&buffer[0], bytes_read); } -return SendPacketNoLock(response.GetData(), response.GetSize()); +return SendPacketNoLock(response.GetString()); } } return SendErrorResponse(21); @@ -614,7 +614,7 @@ GDBRemoteCommunicationServerCommon::Hand { response.Printf ("-1,%i", EINVAL); } -return SendPacketNoLock(response.GetData(), response.GetSize()); +return SendPacketNoLock(response.GetString()); } } return SendErrorResponse(27); Modified: lldb/trunk/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationServerPlatform.cpp URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationServerPlatform.cpp?rev=279920&r1=279919&r2=279920&view=diff == --- lldb/trunk/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationServerPlatform.cpp (original) +++ lldb/trunk/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationServerPlatform.cpp Sat Aug 27 11:38:11 2016 @@ -217,7 +217,7 @@ GDBRemoteCommunicationServerPlatform::Ha response.PutChar(';'); } -PacketResult packet_result = SendPacketNoLock(response.GetData(), response.GetSize()); +PacketResult packet_result = SendPacketNoLock(response.GetString()); if (packet_result != PacketResult::Success) { if (debugserver_pid != LLDB_INVALID_PROCESS_ID) ___ lldb-commits mailing list lldb-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits