From 4117a0eced5e26529670d3d63a1a4c11cc80e794 Mon Sep 17 00:00:00 2001 From: hyzboy Date: Tue, 24 Dec 2024 22:27:05 +0800 Subject: [PATCH] Added StringView<> --- inc/hgl/type/StringView.h | 67 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 67 insertions(+) create mode 100644 inc/hgl/type/StringView.h diff --git a/inc/hgl/type/StringView.h b/inc/hgl/type/StringView.h new file mode 100644 index 0000000..917b568 --- /dev/null +++ b/inc/hgl/type/StringView.h @@ -0,0 +1,67 @@ +#pragma once + +#include +#include + +namespace hgl +{ + template class StringInstance; + template class String; + + template class StringView:public Comparator> + { + 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 &str) + { + str_data=str.str_data; + str_length=str.str_length; + } + + StringView(const StringInstance &si)=delete; + StringView(const String &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 &other)const override + { + return hgl::strcmp(str_data,str_length,other.str_data,other.str_length); + } + };//class StringView + + using UTF8StringView=StringView; + using UTF16StringView=StringView; + using UTF32StringView=StringView; + + using AnsiStringView=StringView; + using WideStringView=StringView; +}//namespace hgl