mirror of
				https://github.com/Ed94/gencpp.git
				synced 2025-11-03 23:36:12 -08:00 
			
		
		
		
	WIP: Converting api to use custom String types
This commit is contained in:
		@@ -54,7 +54,7 @@ using zpl::ArrayHeader;
 | 
			
		||||
using zpl::FileInfo;
 | 
			
		||||
using zpl::FileError;
 | 
			
		||||
using zpl::Pool;
 | 
			
		||||
using zpl::String;
 | 
			
		||||
// using zpl::String;
 | 
			
		||||
 | 
			
		||||
using zpl::EFileMode_WRITE;
 | 
			
		||||
using zpl::EFileError_NONE;
 | 
			
		||||
@@ -77,6 +77,7 @@ using zpl::pool_allocator;
 | 
			
		||||
using zpl::pool_init;
 | 
			
		||||
using zpl::pool_free;
 | 
			
		||||
using zpl::process_exit;
 | 
			
		||||
using zpl::str_copy;
 | 
			
		||||
using zpl::str_fmt_out_va;
 | 
			
		||||
using zpl::str_fmt_out_err_va;
 | 
			
		||||
using zpl::str_compare;
 | 
			
		||||
@@ -188,7 +189,25 @@ char const* Msg_Invalid_Value = "INVALID VALUE PROVIDED";
 | 
			
		||||
#pragma endregion Memory
 | 
			
		||||
 | 
			
		||||
#pragma region String
 | 
			
		||||
#if 0
 | 
			
		||||
#if 1
 | 
			
		||||
	// Constant string with length.
 | 
			
		||||
	struct StrC
 | 
			
		||||
	{
 | 
			
		||||
		sw          Len;
 | 
			
		||||
		char const* Ptr;
 | 
			
		||||
 | 
			
		||||
		static StrC from( char const* str )
 | 
			
		||||
		{
 | 
			
		||||
			return { str_len( str ), str };
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		operator char const* () const
 | 
			
		||||
		{
 | 
			
		||||
			return Ptr;
 | 
			
		||||
		}
 | 
			
		||||
	};
 | 
			
		||||
 | 
			
		||||
	// Dynamic String
 | 
			
		||||
	struct String
 | 
			
		||||
	{
 | 
			
		||||
		struct Header
 | 
			
		||||
@@ -238,10 +257,12 @@ char const* Msg_Invalid_Value = "INVALID VALUE PROVIDED";
 | 
			
		||||
		void append( char c );
 | 
			
		||||
		void append( char const* str );
 | 
			
		||||
		void append( char const* str, sw length );
 | 
			
		||||
		void append( StrC str);
 | 
			
		||||
		void append( const String other );
 | 
			
		||||
		void append( char const* fmt, ... );
 | 
			
		||||
		void append( const String other );
 | 
			
		||||
 | 
			
		||||
		void append_fmt( char const* fmt, ... );
 | 
			
		||||
 | 
			
		||||
		sw avail_space();
 | 
			
		||||
		sw capacity();
 | 
			
		||||
 | 
			
		||||
@@ -251,13 +272,67 @@ char const* Msg_Invalid_Value = "INVALID VALUE PROVIDED";
 | 
			
		||||
 | 
			
		||||
		void free();
 | 
			
		||||
 | 
			
		||||
		Header& header();
 | 
			
		||||
		Header& get_headder()
 | 
			
		||||
		{
 | 
			
		||||
			return pcast( Header, Data[ - sizeof( Header ) ] );
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		sw length();
 | 
			
		||||
		sw length() const;
 | 
			
		||||
 | 
			
		||||
		void trim( char const* cut_set );
 | 
			
		||||
		void trim_space();
 | 
			
		||||
 | 
			
		||||
		operator bool()
 | 
			
		||||
		{
 | 
			
		||||
			return Data;
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		operator char* ()
 | 
			
		||||
		{
 | 
			
		||||
			return Data;
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		operator char const* () const
 | 
			
		||||
		{
 | 
			
		||||
			return Data;
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		operator StrC()
 | 
			
		||||
		{
 | 
			
		||||
			return
 | 
			
		||||
			{
 | 
			
		||||
				length(),
 | 
			
		||||
				Data
 | 
			
		||||
			};
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		String const& operator = ( String const& other ) const
 | 
			
		||||
		{
 | 
			
		||||
			if ( this == & other )
 | 
			
		||||
				return *this;
 | 
			
		||||
 | 
			
		||||
			String& this_ = ccast( String, *this );
 | 
			
		||||
 | 
			
		||||
			this_.Data = other.Data;
 | 
			
		||||
 | 
			
		||||
			return this_;
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		String& operator += ( String const& other )
 | 
			
		||||
		{
 | 
			
		||||
			append( other );
 | 
			
		||||
			return *this;
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		char& operator [] ( sw index )
 | 
			
		||||
		{
 | 
			
		||||
			return Data[ index ];
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		char const& operator [] ( sw index ) const
 | 
			
		||||
		{
 | 
			
		||||
			return Data[ index ];
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		char* Data = nullptr;
 | 
			
		||||
	};
 | 
			
		||||
@@ -287,7 +362,7 @@ namespace Memory
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
inline
 | 
			
		||||
sw log_fmt(char const *fmt, ...)
 | 
			
		||||
sw log_fmt(char const* fmt, ...)
 | 
			
		||||
{
 | 
			
		||||
	sw res;
 | 
			
		||||
	va_list va;
 | 
			
		||||
@@ -300,7 +375,7 @@ sw log_fmt(char const *fmt, ...)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
inline
 | 
			
		||||
sw fatal(char const *fmt, ...)
 | 
			
		||||
sw fatal(char const* fmt, ...)
 | 
			
		||||
{
 | 
			
		||||
	local_persist thread_local
 | 
			
		||||
	char buf[ZPL_PRINTF_MAXLEN] = { 0 };
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user