20#ifndef FASTRTPS_UTILS_FIXED_SIZE_STRING_HPP_
21#define FASTRTPS_UTILS_FIXED_SIZE_STRING_HPP_
27#define MEMCCPY _memccpy
29#define MEMCCPY memccpy
32#ifndef DOXYGEN_SHOULD_SKIP_THIS_PUBLIC
42template <
size_t MAX_CHARS>
52 memset(string_data, 0,
sizeof(string_data));
61 size_t n_chars)
noexcept
68 size_t n_chars)
noexcept
70 string_len = (
nullptr == c_array) ? 0 :
71 (MAX_CHARS < n_chars) ? MAX_CHARS : n_chars;
74 memcpy(string_data, c_array, string_len);
81 const char* c_string) noexcept
84 set(c_string !=
nullptr ? c_string :
"");
88 const char* c_string)
noexcept
90 set(c_string !=
nullptr ? c_string :
"");
96 const std::string& str) noexcept
103 const std::string& str)
noexcept
105 set(str.c_str());
return *
this;
112 set(rhs.c_str());
return *
this;
123 return std::string(string_data);
128 const char* rhs)
const noexcept
130 return strncmp(string_data, rhs, MAX_CHARS) == 0;
134 const std::string& rhs)
const noexcept
136 return strncmp(string_data, rhs.c_str(), MAX_CHARS) == 0;
142 return strncmp(string_data, rhs.c_str(), MAX_CHARS) == 0;
147 const char* rhs)
const noexcept
149 return strncmp(string_data, rhs, MAX_CHARS) != 0;
153 const std::string& rhs)
const noexcept
155 return strncmp(string_data, rhs.c_str(), MAX_CHARS) != 0;
161 return strncmp(string_data, rhs.c_str(), MAX_CHARS) != 0;
177 const std::string& rhs)
const noexcept
183 const std::string& rhs)
const noexcept
188 operator const char* ()
const noexcept {
205 const char* str)
const noexcept
207 return strncmp(string_data, str, MAX_CHARS);
218 const std::string& str)
const noexcept
220 return strncmp(string_data, str.c_str(), MAX_CHARS);
233 return strncmp(string_data, str.c_str(), MAX_CHARS);
239 const char* c_string)
noexcept
241 char* result = (
char*) MEMCCPY(string_data, c_string,
'\0', MAX_CHARS);
242 string_len = (result ==
nullptr) ? MAX_CHARS : (size_t)(result - string_data) - 1u;
245 char string_data[MAX_CHARS + 1];
eProsima namespace.
Definition LibrarySettingsAttributes.h:23
Template class for non-alloc strings.
Definition fixed_size_string.hpp:44
fixed_string & operator=(const char *c_string) noexcept
Definition fixed_size_string.hpp:87
fixed_string() noexcept
Default constructor.
Definition fixed_size_string.hpp:50
size_t size() const noexcept
Definition fixed_size_string.hpp:192
fixed_string(const std::string &str) noexcept
Definition fixed_size_string.hpp:95
bool operator==(const char *rhs) const noexcept
Definition fixed_size_string.hpp:127
static constexpr size_t max_size
Definition fixed_size_string.hpp:47
int compare(const std::string &str) const noexcept
Compare with a std::string.
Definition fixed_size_string.hpp:217
std::string to_string() const
Definition fixed_size_string.hpp:121
fixed_string(const char *c_array, size_t n_chars) noexcept
Definition fixed_size_string.hpp:59
const char * c_str() const noexcept
Definition fixed_size_string.hpp:116
fixed_string(const char *c_string) noexcept
Definition fixed_size_string.hpp:80
int compare(const fixed_string< N > &str) const noexcept
Compare with a fixed_string.
Definition fixed_size_string.hpp:230
bool operator>(const fixed_string< N > &rhs) const noexcept
Definition fixed_size_string.hpp:170
fixed_string & assign(const char *c_array, size_t n_chars) noexcept
Definition fixed_size_string.hpp:66
bool operator<(const fixed_string< N > &rhs) const noexcept
Definition fixed_size_string.hpp:164
int compare(const char *str) const noexcept
Compare with a C string.
Definition fixed_size_string.hpp:204
bool operator!=(const char *rhs) const noexcept
Definition fixed_size_string.hpp:146