moved methods from cpp in h
This commit is contained in:
parent
5bbed99591
commit
e1c392819d
5 changed files with 125 additions and 145 deletions
|
@ -6,27 +6,32 @@ LSString::LSString(const char* pData)
|
||||||
: m_uiLength(StringLength(pData))
|
: m_uiLength(StringLength(pData))
|
||||||
, m_uiCapacity(StringLength(pData))
|
, m_uiCapacity(StringLength(pData))
|
||||||
{
|
{
|
||||||
m_pData = new char[m_uiLength + 1];
|
Assign(pData);
|
||||||
memset(m_pData, 0, m_uiLength + 1);
|
|
||||||
if(pData) memcpy(m_pData, pData, m_uiLength);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------------------------------------------------------
|
||||||
LSString::LSString(const std::string& sRhs)
|
LSString::LSString(const std::string& sRhs)
|
||||||
: m_pData(new char[sRhs.length()])
|
: m_uiLength(sRhs.length())
|
||||||
, m_uiLength(sRhs.length())
|
|
||||||
, m_uiCapacity(sRhs.length())
|
, m_uiCapacity(sRhs.length())
|
||||||
{
|
{
|
||||||
|
Assign(sRhs);
|
||||||
|
}
|
||||||
|
|
||||||
|
//-----------------------------------------------------------------------------------------------------------------------------
|
||||||
|
LSString& LSString::operator=(const LSString& sRhs)
|
||||||
|
{
|
||||||
|
m_uiLength = sRhs.Length();
|
||||||
|
m_uiCapacity = sRhs.Capacity();
|
||||||
|
Assign(sRhs);
|
||||||
|
return *this;
|
||||||
}
|
}
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------------------------------------------------------
|
||||||
LSString::LSString(const LSString& sRhs)
|
LSString::LSString(const LSString& sRhs)
|
||||||
: m_uiLength(sRhs.m_uiLength)
|
: m_uiLength(sRhs.m_uiLength)
|
||||||
, m_pData(new char[sRhs.m_uiLength + 1])
|
|
||||||
, m_uiCapacity(sRhs.m_uiCapacity)
|
, m_uiCapacity(sRhs.m_uiCapacity)
|
||||||
{
|
{
|
||||||
memset(m_pData + m_uiLength, 0, 1);
|
Assign(sRhs);
|
||||||
memcpy(m_pData, sRhs.m_pData, m_uiLength);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------------------------------------------------------
|
||||||
|
@ -36,15 +41,11 @@ LSString::~LSString()
|
||||||
}
|
}
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------------------------------------------------------
|
||||||
void LSString::Insert(const LSString& sRhs, size_t uiPos)
|
void LSString::Assign(const char* pData)
|
||||||
{
|
{
|
||||||
Insert(sRhs.m_pData, uiPos);
|
m_pData = new char[m_uiLength + 1];
|
||||||
}
|
memset(m_pData, 0, m_uiLength + 1);
|
||||||
|
if (pData) memcpy(m_pData, pData, m_uiLength);
|
||||||
//-----------------------------------------------------------------------------------------------------------------------------
|
|
||||||
void LSString::Insert(const std::string& sRhs, size_t uiPos)
|
|
||||||
{
|
|
||||||
Insert(sRhs.c_str(), uiPos);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------------------------------------------------------
|
||||||
|
@ -69,42 +70,6 @@ void LSString::Insert(const char* pData, size_t uiPos)
|
||||||
m_uiLength = zNewLength;
|
m_uiLength = zNewLength;
|
||||||
}
|
}
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------------------------------------------------------
|
|
||||||
void LSString::Append(const LSString& sRhs)
|
|
||||||
{
|
|
||||||
Insert(sRhs, sRhs.Length());
|
|
||||||
}
|
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------------------------------------------------------
|
|
||||||
void LSString::Append(const std::string& sRhs)
|
|
||||||
{
|
|
||||||
Insert(sRhs, sRhs.length());
|
|
||||||
}
|
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------------------------------------------------------
|
|
||||||
void LSString::Append(const char* pData)
|
|
||||||
{
|
|
||||||
Insert(pData, m_uiLength);
|
|
||||||
}
|
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------------------------------------------------------
|
|
||||||
bool LSString::Remove(const LSString& sRhs)
|
|
||||||
{
|
|
||||||
return RemoveAt(Find(sRhs), sRhs.m_uiLength);
|
|
||||||
}
|
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------------------------------------------------------
|
|
||||||
bool LSString::Remove(const std::string& sRhs)
|
|
||||||
{
|
|
||||||
return RemoveAt(Find(sRhs), sRhs.length());
|
|
||||||
}
|
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------------------------------------------------------
|
|
||||||
bool LSString::Remove(const char* pData)
|
|
||||||
{
|
|
||||||
return RemoveAt(Find(pData), StringLength(pData));
|
|
||||||
}
|
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------------------------------------------------------
|
||||||
bool LSString::RemoveAt(size_t uiPos, size_t uiSize)
|
bool LSString::RemoveAt(size_t uiPos, size_t uiSize)
|
||||||
{
|
{
|
||||||
|
@ -131,18 +96,6 @@ size_t LSString::StringLength(const char* pChar) const
|
||||||
return iRet;
|
return iRet;
|
||||||
}
|
}
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------------------------------------------------------
|
|
||||||
bool LSString::Contains(const LSString& sRhs) const
|
|
||||||
{
|
|
||||||
return Contains(sRhs.m_pData);
|
|
||||||
}
|
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------------------------------------------------------
|
|
||||||
bool LSString::Contains(const std::string& sRhs) const
|
|
||||||
{
|
|
||||||
return Contains(sRhs.c_str());
|
|
||||||
}
|
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------------------------------------------------------
|
||||||
bool LSString::Contains(const char* pData) const
|
bool LSString::Contains(const char* pData) const
|
||||||
{
|
{
|
||||||
|
@ -160,18 +113,6 @@ bool LSString::Contains(const char* pData) const
|
||||||
return iRet == 0;
|
return iRet == 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------------------------------------------------------
|
|
||||||
size_t LSString::Find(const LSString& sRhs, size_t uiOffset) const
|
|
||||||
{
|
|
||||||
return Find(sRhs.m_pData, uiOffset);
|
|
||||||
}
|
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------------------------------------------------------
|
|
||||||
size_t LSString::Find(const std::string& sRhs, size_t uiOffset) const
|
|
||||||
{
|
|
||||||
return Find(sRhs.c_str(), uiOffset);
|
|
||||||
}
|
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------------------------------------------------------
|
||||||
size_t LSString::Find(const char* pData, size_t uiOffset) const
|
size_t LSString::Find(const char* pData, size_t uiOffset) const
|
||||||
{
|
{
|
||||||
|
@ -191,30 +132,6 @@ size_t LSString::Find(const char* pData, size_t uiOffset) const
|
||||||
return uiCurrentOffset;
|
return uiCurrentOffset;
|
||||||
}
|
}
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------------------------------------------------------
|
|
||||||
char LSString::At(size_t uiPos) const
|
|
||||||
{
|
|
||||||
return *(m_pData + uiPos);
|
|
||||||
}
|
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------------------------------------------------------
|
|
||||||
size_t LSString::Length() const
|
|
||||||
{
|
|
||||||
return m_uiLength;
|
|
||||||
}
|
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------------------------------------------------------
|
|
||||||
std::string LSString::ToStdString() const
|
|
||||||
{
|
|
||||||
return std::string(m_pData);
|
|
||||||
}
|
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------------------------------------------------------
|
|
||||||
const char* LSString::ToCChar() const
|
|
||||||
{
|
|
||||||
return m_pData;
|
|
||||||
}
|
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------------------------------------------------------
|
||||||
void LSString::IncreaseCapacity(size_t uiNewLength)
|
void LSString::IncreaseCapacity(size_t uiNewLength)
|
||||||
{
|
{
|
||||||
|
|
|
@ -10,61 +10,121 @@ public:
|
||||||
|
|
||||||
LSString(const char* pData);
|
LSString(const char* pData);
|
||||||
|
|
||||||
LSString(const LSString& sRhs);
|
LSString(const LSString& sString);
|
||||||
|
|
||||||
LSString(const std::string& sRhs);
|
LSString(const std::string& sString);
|
||||||
|
|
||||||
LSString& operator=(const LSString& sRhs) = delete;
|
LSString& operator=(const LSString& sRhs);
|
||||||
|
|
||||||
// - Destructor
|
// - Destructor
|
||||||
~LSString();
|
~LSString();
|
||||||
|
|
||||||
// - Alloc
|
// - Alloc
|
||||||
void Insert(const LSString& sRhs, size_t uiPos);
|
#pragma region Conversion
|
||||||
|
inline void Assign(const LSString& sString)
|
||||||
void Insert(const std::string& sRhs, size_t uiPos);
|
{
|
||||||
|
Assign(sString.ToCChar());
|
||||||
|
}
|
||||||
|
inline void Assign(const std::string& sString)
|
||||||
|
{
|
||||||
|
Assign(sString.c_str());
|
||||||
|
}
|
||||||
|
//-----------------------------------------------------------------------------------------------------------------------------
|
||||||
|
inline void Append(const LSString& sRhs)
|
||||||
|
{
|
||||||
|
Insert(sRhs, sRhs.Length());
|
||||||
|
}
|
||||||
|
inline void Append(const std::string& sRhs)
|
||||||
|
{
|
||||||
|
Insert(sRhs, sRhs.length());
|
||||||
|
}
|
||||||
|
inline void Append(const char* pData)
|
||||||
|
{
|
||||||
|
Insert(pData, m_uiLength);
|
||||||
|
}
|
||||||
|
//-----------------------------------------------------------------------------------------------------------------------------
|
||||||
|
inline void Insert(const LSString& sRhs, size_t uiPos)
|
||||||
|
{
|
||||||
|
Insert(sRhs.m_pData, uiPos);
|
||||||
|
}
|
||||||
|
inline void Insert(const std::string& sRhs, size_t uiPos)
|
||||||
|
{
|
||||||
|
Insert(sRhs.c_str(), uiPos);
|
||||||
|
}
|
||||||
|
//-----------------------------------------------------------------------------------------------------------------------------
|
||||||
|
inline bool Remove(const LSString& sRhs)
|
||||||
|
{
|
||||||
|
return RemoveAt(Find(sRhs), sRhs.m_uiLength);
|
||||||
|
}
|
||||||
|
inline bool Remove(const std::string& sRhs)
|
||||||
|
{
|
||||||
|
return RemoveAt(Find(sRhs), sRhs.length());
|
||||||
|
}
|
||||||
|
inline bool Remove(const char* pData)
|
||||||
|
{
|
||||||
|
return RemoveAt(Find(pData), StringLength(pData));
|
||||||
|
}
|
||||||
|
#pragma endregion
|
||||||
|
|
||||||
|
#pragma region Logic
|
||||||
|
void Assign(const char* pData);
|
||||||
void Insert(const char* pData, size_t uiPos);
|
void Insert(const char* pData, size_t uiPos);
|
||||||
|
|
||||||
void Append(const LSString& sRhs);
|
|
||||||
|
|
||||||
void Append(const std::string& sRhs);
|
|
||||||
|
|
||||||
void Append(const char* pData);
|
|
||||||
|
|
||||||
bool Remove(const LSString& sRhs);
|
|
||||||
|
|
||||||
bool Remove(const std::string& sRhs);
|
|
||||||
|
|
||||||
bool Remove(const char* pData);
|
|
||||||
|
|
||||||
bool RemoveAt(size_t uiPos, size_t uiSize);
|
bool RemoveAt(size_t uiPos, size_t uiSize);
|
||||||
|
#pragma endregion
|
||||||
|
|
||||||
// - Utility
|
// - Utility
|
||||||
|
#pragma region Conversion
|
||||||
|
inline bool Contains(const LSString& sRhs) const
|
||||||
|
{
|
||||||
|
return Contains(sRhs.m_pData);
|
||||||
|
}
|
||||||
|
bool Contains(const std::string& sRhs) const
|
||||||
|
{
|
||||||
|
return Contains(sRhs.c_str());
|
||||||
|
}
|
||||||
|
//-----------------------------------------------------------------------------------------------------------------------------
|
||||||
|
inline size_t Find(const LSString& sRhs, size_t uiOffset) const
|
||||||
|
{
|
||||||
|
return Find(sRhs.m_pData, uiOffset);
|
||||||
|
}
|
||||||
|
inline size_t Find(const std::string& sRhs, size_t uiOffset) const
|
||||||
|
{
|
||||||
|
return Find(sRhs.c_str(), uiOffset);
|
||||||
|
}
|
||||||
|
#pragma endregion
|
||||||
|
|
||||||
|
#pragma region Logic
|
||||||
size_t StringLength(const char* pData) const;
|
size_t StringLength(const char* pData) const;
|
||||||
|
|
||||||
bool Contains(const LSString& sRhs) const;
|
|
||||||
|
|
||||||
bool Contains(const std::string& sRhs) const;
|
|
||||||
|
|
||||||
bool Contains(const char* pData) const;
|
bool Contains(const char* pData) const;
|
||||||
|
|
||||||
size_t Find(const LSString& sRhs, size_t uiOffset = 0) const;
|
|
||||||
|
|
||||||
size_t Find(const std::string& sRhs, size_t uiOffset = 0) const;
|
|
||||||
|
|
||||||
size_t Find(const char* pData, size_t uiOffset = 0) const;
|
size_t Find(const char* pData, size_t uiOffset = 0) const;
|
||||||
|
//-----------------------------------------------------------------------------------------------------------------------------
|
||||||
char At(size_t uiPos) const;
|
inline char At(size_t uiPos) const
|
||||||
|
{
|
||||||
size_t Length() const;
|
return *(m_pData + uiPos);
|
||||||
|
}
|
||||||
std::string ToStdString() const;
|
//-----------------------------------------------------------------------------------------------------------------------------
|
||||||
|
inline size_t Length() const
|
||||||
const char* ToCChar() const;
|
{
|
||||||
|
return m_uiLength;
|
||||||
|
}
|
||||||
|
//-----------------------------------------------------------------------------------------------------------------------------
|
||||||
|
inline size_t Capacity() const
|
||||||
|
{
|
||||||
|
return m_uiCapacity;
|
||||||
|
}
|
||||||
|
//-----------------------------------------------------------------------------------------------------------------------------
|
||||||
|
inline std::string ToStdString() const
|
||||||
|
{
|
||||||
|
return std::string(m_pData);
|
||||||
|
}
|
||||||
|
//-----------------------------------------------------------------------------------------------------------------------------
|
||||||
|
inline const char* ToCChar() const
|
||||||
|
{
|
||||||
|
return m_pData;
|
||||||
|
}
|
||||||
|
#pragma endregion
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
||||||
void IncreaseCapacity(size_t uiNewLength = 0);
|
void IncreaseCapacity(size_t uiNewLength = 0);
|
||||||
|
|
||||||
char* m_pData = nullptr;
|
char* m_pData = nullptr;
|
||||||
|
|
|
@ -2,9 +2,10 @@
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------------------------------------------------------
|
||||||
Timer::Timer()
|
Timer::Timer(LSString sEndString)
|
||||||
|
: m_StartTimePoint(std::chrono::high_resolution_clock::now())
|
||||||
{
|
{
|
||||||
m_StartTimePoint = std::chrono::high_resolution_clock::now();
|
m_sEndString = sEndString;
|
||||||
}
|
}
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------------------------------------------------------
|
||||||
|
@ -16,6 +17,6 @@ Timer::~Timer()
|
||||||
auto end = std::chrono::time_point_cast<std::chrono::microseconds>(endTimePoint).time_since_epoch().count();
|
auto end = std::chrono::time_point_cast<std::chrono::microseconds>(endTimePoint).time_since_epoch().count();
|
||||||
|
|
||||||
auto duration = end - start;
|
auto duration = end - start;
|
||||||
printf("Duration in Microseconds: %2d (%.3f ms)\n", duration, (duration * 0.001));
|
printf("%sMicroseconds: %2d (%.3f ms)\n", m_sEndString.ToCChar(), static_cast<int>(duration), (duration * 0.001));
|
||||||
//std::cout << "Duration in Microseconds: " << duration << " (" << duration * 0.001 << " ms)" << std::endl;
|
//std::cout << "Duration in Microseconds: " << duration << " (" << duration * 0.001 << " ms)" << std::endl;
|
||||||
}
|
}
|
|
@ -1,12 +1,14 @@
|
||||||
#pragma once
|
#pragma once
|
||||||
#include <chrono>
|
#include <chrono>
|
||||||
|
#include "LSString.h"
|
||||||
|
|
||||||
class Timer
|
class Timer
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
Timer(void);
|
Timer(LSString sEndString = "");
|
||||||
|
|
||||||
~Timer(void);
|
~Timer(void);
|
||||||
private:
|
private:
|
||||||
|
LSString m_sEndString;
|
||||||
std::chrono::time_point<std::chrono::high_resolution_clock> m_StartTimePoint;
|
std::chrono::time_point<std::chrono::high_resolution_clock> m_StartTimePoint;
|
||||||
};
|
};
|
|
@ -12,15 +12,15 @@ int main()
|
||||||
{
|
{
|
||||||
printf("---LSString---\n");
|
printf("---LSString---\n");
|
||||||
printf("Number of runs: %d\n", (int)RUNS);
|
printf("Number of runs: %d\n", (int)RUNS);
|
||||||
Timer ttt;
|
Timer tWhole("Complete duration in ");
|
||||||
for (size_t zRun = 1; zRun <= RUNS; zRun++)
|
for (size_t zRun = 1; zRun <= RUNS; zRun++)
|
||||||
{
|
{
|
||||||
printf("Run: %2d: ", static_cast<int>(zRun));
|
printf("Run: %2d: ", static_cast<int>(zRun));
|
||||||
|
|
||||||
Timer tt;
|
Timer tSingle("Duration in ");
|
||||||
LSString s(nullptr);
|
LSString s(nullptr);
|
||||||
|
|
||||||
for (size_t z = 0; z < RUNS * 187; z++)
|
for (size_t z = 0; z < 187; z++)
|
||||||
{
|
{
|
||||||
s.Append(PAYLOAD);
|
s.Append(PAYLOAD);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue