9 if (destination == source || num == 0) {
17 FW_ASSERT(source + source_len <= destination || destination + num <= source);
19 char* returned = strncpy(destination, source, static_cast<size_t>(num));
20 destination[num - 1] =
'\0';
29 return (length > n) ? source + (length - n) : source;
35 for (length = 0; length < buffer_size; length++) {
36 if (source[length] ==
'\0') {
45 const CHAR* sub_string,
51 if ((source_size > 0) && (0 == sub_size)) {
56 if (source_size < sub_size) {
60 FW_ASSERT(source_size - sub_size <= static_cast<FwSizeType>(std::numeric_limits<FwSignedSizeType>::max()));
64 source_index < (source_size - sub_size + 1) &&
65 source_index < static_cast<FwSizeType>(std::numeric_limits<FwSignedSizeType>::max());
68 for (
FwSizeType sub_index = 0; sub_index < sub_size; sub_index++) {
70 FW_ASSERT((source_index + sub_index) < source_size);
72 if (source_string[source_index + sub_index] != sub_string[sub_index]) {
74 }
else if (sub_index == (sub_size - 1)) {
87 const CHAR* sub_string,
95 if ((source_size > 0) && (0 == sub_size)) {
96 match_index = source_size - 1;
99 FW_ASSERT(static_cast<FwSizeType>(static_cast<FwSignedSizeType>(match_index)) == match_index);
105 if (source_size < sub_size) {
109 FW_ASSERT(source_size - sub_size <= static_cast<FwSizeType>(std::numeric_limits<FwSignedSizeType>::max()));
112 for (
FwSizeType ii = 0; ii <= (source_size - sub_size); ii++) {
113 const FwSizeType source_index = (source_size - sub_size) - ii;
116 for (
FwSizeType sub_index = 0; sub_index < sub_size; sub_index++) {
118 FW_ASSERT((source_index + sub_index) < source_size);
120 if (source_string[source_index + sub_index] != sub_string[sub_index]) {
122 }
else if (sub_index == (sub_size - 1)) {
124 match_index = source_index;
127 FW_ASSERT(static_cast<FwSizeType>(static_cast<FwSignedSizeType>(match_index)) == match_index);
PlatformSizeType FwSizeType
FwSignedSizeType substring_find(const CHAR *source_string, FwSizeType source_size, const CHAR *sub_string, FwSizeType sub_size)
find the first occurrence of a substring
PlatformSignedSizeType FwSignedSizeType
const char * string_last_n(const char *source, const FwSizeType n, const FwSizeType buffer_size)
get a pointer to the last N characters of a string
char * string_copy(char *destination, const char *source, FwSizeType num)
copy string with null-termination guaranteed
FwSignedSizeType substring_find_last(const CHAR *source_string, FwSizeType source_size, const CHAR *sub_string, FwSizeType sub_size)
find the last occurrence of a substring
FwSizeType string_length(const CHAR *source, FwSizeType buffer_size)
get the length of the source string