Added StringView<>
This commit is contained in:
parent
18efd0d6a6
commit
4117a0eced
67
inc/hgl/type/StringView.h
Normal file
67
inc/hgl/type/StringView.h
Normal file
@ -0,0 +1,67 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include<hgl/type/StrChar.h>
|
||||||
|
#include<hgl/Comparator.h>
|
||||||
|
|
||||||
|
namespace hgl
|
||||||
|
{
|
||||||
|
template<typename T> class StringInstance;
|
||||||
|
template<typename T> class String;
|
||||||
|
|
||||||
|
template<typename T> class StringView:public Comparator<StringView<T>>
|
||||||
|
{
|
||||||
|
T *str_data;
|
||||||
|
int str_length;
|
||||||
|
|
||||||
|
public:
|
||||||
|
|
||||||
|
StringView()
|
||||||
|
{
|
||||||
|
str_data=nullptr;
|
||||||
|
str_length=0;
|
||||||
|
}
|
||||||
|
|
||||||
|
StringView(const T *str,const int len)
|
||||||
|
{
|
||||||
|
str_data=(T *)str;
|
||||||
|
str_length=len;
|
||||||
|
}
|
||||||
|
|
||||||
|
StringView(const T *str)
|
||||||
|
{
|
||||||
|
str_data=(T *)str;
|
||||||
|
str_length=0;
|
||||||
|
if(str_data)
|
||||||
|
str_length=hgl::strlen(str_data);
|
||||||
|
}
|
||||||
|
|
||||||
|
StringView(const StringView<T> &str)
|
||||||
|
{
|
||||||
|
str_data=str.str_data;
|
||||||
|
str_length=str.str_length;
|
||||||
|
}
|
||||||
|
|
||||||
|
StringView(const StringInstance<T> &si)=delete;
|
||||||
|
StringView(const String<T> &s)=delete;
|
||||||
|
|
||||||
|
~StringView()=default;
|
||||||
|
|
||||||
|
const char *c_str()const{return str_data;}
|
||||||
|
const int length()const{return str_length;}
|
||||||
|
const int GetLength()const{return str_length;}
|
||||||
|
|
||||||
|
const bool IsEmpty()const{return str_data&&str_length>0;}
|
||||||
|
|
||||||
|
const int compare(const StringView<T> &other)const override
|
||||||
|
{
|
||||||
|
return hgl::strcmp(str_data,str_length,other.str_data,other.str_length);
|
||||||
|
}
|
||||||
|
};//class StringView
|
||||||
|
|
||||||
|
using UTF8StringView=StringView<u8char>;
|
||||||
|
using UTF16StringView=StringView<u16char>;
|
||||||
|
using UTF32StringView=StringView<u32char>;
|
||||||
|
|
||||||
|
using AnsiStringView=StringView<char>;
|
||||||
|
using WideStringView=StringView<wchar_t>;
|
||||||
|
}//namespace hgl
|
Loading…
x
Reference in New Issue
Block a user