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
42 template <
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;
164 operator const char* ()
const noexcept {
176 const char* c_string) noexcept
178 char* result = (
char*) MEMCCPY(string_data, c_string,
'\0', MAX_CHARS);
179 string_len = (result ==
nullptr) ? MAX_CHARS : (
size_t)(result - string_data) - 1u;
182 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() noexcept
Default constructor.
Definition: fixed_size_string.hpp:50
fixed_string & operator=(const char *c_string) noexcept
Definition: fixed_size_string.hpp:87
size_t size() const noexcept
Definition: fixed_size_string.hpp:168
fixed_string(const std::string &str) noexcept
Definition: fixed_size_string.hpp:95
fixed_string & assign(const char *c_array, size_t n_chars) noexcept
Definition: fixed_size_string.hpp:66
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
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
bool operator!=(const char *rhs) const noexcept
Definition: fixed_size_string.hpp:146