qb  2.0.0.0
C++17 Actor Framework
qb Issue Watch Star Fork Follow @isndev
Loading...
Searching...
No Matches

Fixed-size string implementation optimized for performance. More...

#include <algorithm>
#include <array>
#include <cstring>
#include <iostream>
#include <limits>
#include <qb/utility/build_macros.h>
#include <string>
#include <stdexcept>
Include dependency graph for string.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  qb::internal::best_size< _Size, fill8, fill16 >
 Determines the optimal integer type for size storage based on max capacity. More...
struct  qb::internal::best_size< _Size, true, true >
 Specialization for sizes that fit in uint8_t. More...
struct  qb::internal::best_size< _Size, false, true >
 Specialization for sizes that fit in uint16_t but not uint8_t. More...
class  qb::string< _Size >
 Fixed-size string with optimized storage. More...

Functions

template<std::size_t _Size1, std::size_t _Size2>
string< std::max(_Size1, _Size2)> qb::operator+ (const string< _Size1 > &lhs, const string< _Size2 > &rhs) noexcept
 Concatenation operator.
template<std::size_t _Size>
string< _Size > qb::operator+ (const string< _Size > &lhs, const char *rhs) noexcept
 Concatenation operator with C-style string.
template<std::size_t _Size>
string< _Size > qb::operator+ (const char *lhs, const string< _Size > &rhs) noexcept
 Concatenation operator with C-style string on left.
template<std::size_t _Size>
string< _Size > qb::operator+ (const string< _Size > &lhs, char rhs) noexcept
 Concatenation operator with character.
template<std::size_t _Size>
string< _Size > qb::operator+ (char lhs, const string< _Size > &rhs) noexcept
 Concatenation operator with character on left.
template<std::size_t _Size>
void qb::swap (string< _Size > &lhs, string< _Size > &rhs) noexcept
 Swap function for strings.
template<std::size_t _Size>
std::ostream & qb::operator<< (std::ostream &os, qb::string< _Size > const &str) noexcept
 Output stream operator for qb::string.
template<std::size_t _Size>
std::istream & qb::operator>> (std::istream &is, qb::string< _Size > &str) noexcept
 Input stream operator for qb::string.
template<std::size_t _Size>
bool qb::operator== (const char *lhs, const string< _Size > &rhs) noexcept
template<std::size_t _Size>
bool qb::operator!= (const char *lhs, const string< _Size > &rhs) noexcept

Detailed Description

Fixed-size string implementation optimized for performance.

This file defines a string class with a fixed maximum size that provides better performance than std::string for small strings that don't exceed the size limit. It uses a template parameter to specify the maximum string size and chooses the optimal size type for storage.

Author
qb - C++ Actor Framework

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

Function Documentation

◆ operator+() [1/5]

template<std::size_t _Size1, std::size_t _Size2>
string< std::max(_Size1, _Size2)> qb::operator+ ( const string< _Size1 > & lhs,
const string< _Size2 > & rhs )
noexcept

Concatenation operator.

Template Parameters
_Size1Size of the first string
_Size2Size of the second string
Parameters
lhsFirst string
rhsSecond string
Returns
New string containing concatenated result

◆ operator+() [2/5]

template<std::size_t _Size>
string< _Size > qb::operator+ ( const string< _Size > & lhs,
const char * rhs )
noexcept

Concatenation operator with C-style string.

Template Parameters
_SizeSize of the string
Parameters
lhsString
rhsC-style string
Returns
New string containing concatenated result

◆ operator+() [3/5]

template<std::size_t _Size>
string< _Size > qb::operator+ ( const char * lhs,
const string< _Size > & rhs )
noexcept

Concatenation operator with C-style string on left.

Template Parameters
_SizeSize of the string
Parameters
lhsC-style string
rhsString
Returns
New string containing concatenated result

◆ operator+() [4/5]

template<std::size_t _Size>
string< _Size > qb::operator+ ( const string< _Size > & lhs,
char rhs )
noexcept

Concatenation operator with character.

Template Parameters
_SizeSize of the string
Parameters
lhsString
rhsCharacter
Returns
New string containing concatenated result

◆ operator+() [5/5]

template<std::size_t _Size>
string< _Size > qb::operator+ ( char lhs,
const string< _Size > & rhs )
noexcept

Concatenation operator with character on left.

Template Parameters
_SizeSize of the string
Parameters
lhsCharacter
rhsString
Returns
New string containing concatenated result

◆ swap()

template<std::size_t _Size>
void qb::swap ( string< _Size > & lhs,
string< _Size > & rhs )
noexcept

Swap function for strings.

Template Parameters
_SizeSize of the strings
Parameters
lhsFirst string
rhsSecond string

◆ operator<<()

template<std::size_t _Size>
std::ostream & qb::operator<< ( std::ostream & os,
qb::string< _Size > const & str )
noexcept

Output stream operator for qb::string.

Template Parameters
_SizeMaximum size of the string
Parameters
osOutput stream
strString to output
Returns
Reference to the output stream

◆ operator>>()

template<std::size_t _Size>
std::istream & qb::operator>> ( std::istream & is,
qb::string< _Size > & str )
noexcept

Input stream operator for qb::string.

Template Parameters
_SizeMaximum size of the string
Parameters
isInput stream
strString to read into
Returns
Reference to the input stream