20 #ifndef FASTRTPS_UTILS_FIXED_SIZE_STRING_HPP_ 21 #define FASTRTPS_UTILS_FIXED_SIZE_STRING_HPP_ 27 #define MEMCCPY _memccpy 29 #define MEMCCPY memccpy 30 #endif // ifdef _WIN32 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];
190 #endif // ifndef DOXYGEN_SHOULD_SKIP_THIS_PUBLIC std::string to_string() const
Definition: fixed_size_string.hpp:121
const char * c_str() const noexcept
Definition: fixed_size_string.hpp:116
fixed_string & operator=(const char *c_string) noexcept
Definition: fixed_size_string.hpp:87
eProsima namespace.
Definition: LibrarySettingsAttributes.h:23
static constexpr size_t max_size
Definition: fixed_size_string.hpp:47
Template class for non-alloc strings.
Definition: fixed_size_string.hpp:43
fixed_string(const char *c_string) noexcept
Definition: fixed_size_string.hpp:80
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:146
fixed_string(const char *c_array, size_t n_chars) noexcept
Definition: fixed_size_string.hpp:59
size_t size() const noexcept
Definition: fixed_size_string.hpp:168
bool operator==(const char *rhs) const noexcept
Definition: fixed_size_string.hpp:127
fixed_string & assign(const char *c_array, size_t n_chars) noexcept
Definition: fixed_size_string.hpp:66
fixed_string() noexcept
Default constructor.
Definition: fixed_size_string.hpp:50