125 lines
3.2 KiB
C++
125 lines
3.2 KiB
C++
|
/*
|
||
|
* Copyright 2013-2020, Corvusoft Ltd, All Rights Reserved.
|
||
|
*/
|
||
|
|
||
|
#pragma once
|
||
|
|
||
|
//System Includes
|
||
|
#include <map>
|
||
|
#include <string>
|
||
|
#include <vector>
|
||
|
#include <cstdarg>
|
||
|
|
||
|
//Project Includes
|
||
|
#include <corvusoft/restbed/byte.hpp>
|
||
|
|
||
|
//External Includes
|
||
|
|
||
|
//Windows DLL Exports
|
||
|
#if defined(_WIN32) || defined(__WIN32__) || defined(WIN32) || defined(_WIN64)
|
||
|
#ifdef WIN_DLL_EXPORT
|
||
|
#define STRING_EXPORT __declspec(dllexport)
|
||
|
#else
|
||
|
#define STRING_EXPORT __declspec(dllimport)
|
||
|
#endif
|
||
|
#else
|
||
|
#define STRING_EXPORT
|
||
|
#endif
|
||
|
|
||
|
//System Namespaces
|
||
|
|
||
|
//Project Namespaces
|
||
|
|
||
|
//External Namespaces
|
||
|
|
||
|
namespace restbed
|
||
|
{
|
||
|
//Forward Declarations
|
||
|
|
||
|
class STRING_EXPORT String
|
||
|
{
|
||
|
public:
|
||
|
//Friends
|
||
|
|
||
|
//Definitions
|
||
|
enum Option : int
|
||
|
{
|
||
|
CASE_SENSITIVE = 0,
|
||
|
CASE_INSENSITIVE = 1
|
||
|
};
|
||
|
|
||
|
static const size_t FORMAT_BUFFER_INITIAL_LENGTH = 2048;
|
||
|
|
||
|
//Constructors
|
||
|
|
||
|
//Functionality
|
||
|
static Bytes to_bytes( const std::string& value );
|
||
|
|
||
|
static std::string to_string( const Bytes& value );
|
||
|
|
||
|
static std::string lowercase( const std::string& value );
|
||
|
|
||
|
static std::string uppercase( const std::string& value );
|
||
|
|
||
|
static std::string format( const char* format, ... );
|
||
|
|
||
|
static std::vector< std::string > split( const std::string& text, const char delimiter );
|
||
|
|
||
|
static std::string join( const std::multimap< std::string, std::string >& values, const std::string& pair_delimiter, const std::string& delimiter );
|
||
|
|
||
|
static std::string remove( const std::string& needle, const std::string& haystack, const Option option = CASE_SENSITIVE );
|
||
|
|
||
|
static std::string replace( const std::string& target, const std::string& substitute, const std::string& value, const Option option = CASE_SENSITIVE );
|
||
|
|
||
|
//Getters
|
||
|
|
||
|
//Setters
|
||
|
|
||
|
//Operators
|
||
|
|
||
|
//Properties
|
||
|
static const std::string empty;
|
||
|
|
||
|
protected:
|
||
|
//Friends
|
||
|
|
||
|
//Definitions
|
||
|
|
||
|
//Constructors
|
||
|
|
||
|
//Functionality
|
||
|
|
||
|
//Getters
|
||
|
|
||
|
//Setters
|
||
|
|
||
|
//Operators
|
||
|
|
||
|
//Properties
|
||
|
|
||
|
private:
|
||
|
//Friends
|
||
|
|
||
|
//Definitions
|
||
|
|
||
|
//Constructors
|
||
|
String( void ) = delete;
|
||
|
|
||
|
String( const String& original ) = delete;
|
||
|
|
||
|
virtual ~String( void ) = delete;
|
||
|
|
||
|
//Functionality
|
||
|
static std::string::size_type format( std::string& output, const std::string::size_type length, const char* format, va_list arguments );
|
||
|
|
||
|
//Getters
|
||
|
|
||
|
//Setters
|
||
|
|
||
|
//Operators
|
||
|
String& operator =( const String& value ) = delete;
|
||
|
|
||
|
//Properties
|
||
|
};
|
||
|
}
|