After reviewing the code I found that the logic is outdated.
The logic was written at the time when I was still far less familiar with Unicode.
The zero-width is being processed in the same way as combining characters.
This needs to change.
After reviewing the combining character logic, I realized that there are bigger problems.
The combining characters, for whatever reason, are processed from right to left.
This breaks normal streaming logic and requires post checks on all variables.
I am amazed that they let such a horrible idea get into the standard and I do not know why.
Regardless, the logic on many of these functions needs to change.
The logic is changed to more properly handle the combining characters and additional more explicit code comment documentation is added.
There will likely need to be follow up changes in the processing code but I am going to leave that for another time.
Change the code to be more consistent with how F_data_not is returned.
Rename functions to more consistently follow the naming strategy used (such as changing "_between" to "_range").
Add f_fss_is_combining() function.
Remove unused and unnecessary f_fss_shift_delimit() function.
Remove unused and unnecessary f_fss_skip_past_non_graph() function.
Update the FSS specifications to better clarify the combining character situation.
The combining character logic implies that I need to return status codes to designate that the return is happening at the start of some processing.
Create several "_start" status codes to address this need.
Fix a bug from a previous commit that is the result of a misplaced regex replace ("alphabeticbetic" should instead be "alphabetic").
Fix a bug where some files where missed when refactoring is_alpha() into is_alphabetic().
if (!buffer) return F_status_set_error(F_parameter);
#endif // _di_level_0_parameter_checking_
+ if (!buffer->used) return F_data_not;
+
for (f_array_length_t i = 0; i < delimits.used; ++i) {
if (delimits.array[i] < buffer->used) {
}
#endif // _di_f_fss_apply_delimit_
-#ifndef _di_f_fss_apply_delimit_between_
- f_status_t f_fss_apply_delimit_between(f_state_t state, const f_fss_delimits_t delimits, const f_string_range_t range, f_string_static_t * const buffer) {
+#ifndef _di_f_fss_apply_delimit_range_
+ f_status_t f_fss_apply_delimit_range(f_state_t state, const f_fss_delimits_t delimits, const f_string_range_t range, f_string_static_t * const buffer) {
#ifndef _di_level_0_parameter_checking_
if (!buffer) return F_status_set_error(F_parameter);
#endif // _di_level_0_parameter_checking_
+ if (!buffer->used || range.start > range.stop || range.start >= buffer->used) return F_data_not;
+
for (f_array_length_t i = 0; i < delimits.used; ++i) {
if (delimits.array[i] < buffer->used && delimits.array[i] >= range.start && delimits.array[i] <= range.stop) {
return F_none;
}
-#endif // _di_f_fss_apply_delimit_between_
+#endif // _di_f_fss_apply_delimit_range_
#ifndef _di_f_fss_count_lines_
f_status_t f_fss_count_lines(f_state_t state, const f_string_static_t buffer, const f_array_length_t before, f_array_length_t * const line) {
if (!line) return F_status_set_error(F_parameter);
#endif // _di_level_0_parameter_checking_
- if (before >= buffer.used) {
- return F_none;
- }
+ if (!buffer.used) return F_data_not;
- for (f_array_length_t i = before; i > 0; --i) {
+ for (f_array_length_t i = 0; i < before && i < buffer.used; i += macro_f_utf_byte_width(buffer.string[i])) {
if (buffer.string[i] == f_fss_eol_s.string[0]) {
++(*line);
}
} // for
- if (buffer.string[0] == f_fss_eol_s.string[0]) {
- ++(*line);
- }
-
return F_none;
}
#endif // _di_f_fss_count_lines_
#ifndef _di_f_fss_count_lines_range_
- f_status_t f_fss_count_lines_range(f_state_t state, const f_string_static_t buffer, const f_string_range_t range, const f_array_length_t before, f_array_length_t * const line) {
+ f_status_t f_fss_count_lines_range(f_state_t state, const f_string_static_t buffer, const f_string_range_t range, f_array_length_t * const line) {
#ifndef _di_level_0_parameter_checking_
if (!line) return F_status_set_error(F_parameter);
#endif // _di_level_0_parameter_checking_
- if (range.stop < range.start || range.start >= buffer.used || !buffer.used || before >= buffer.used || before > range.stop) {
- return F_none;
- }
+ if (!buffer.used || range.start > range.stop || range.start >= buffer.used) return F_data_not;
- for (f_array_length_t i = before; i > range.start; --i) {
+ for (f_array_length_t i = range.start; i <= range.stop && i < buffer.used; i += macro_f_utf_byte_width(buffer.string[i])) {
if (buffer.string[i] == f_fss_eol_s.string[0]) {
++(*line);
}
} // for
- if (buffer.string[range.start] == f_fss_eol_s.string[0]) {
- ++(*line);
- }
-
return F_none;
}
#endif // _di_f_fss_count_lines_range_
}
#endif // _di_f_fss_fail_utf_to_false_
+#ifndef _di_f_fss_is_combining_
+ f_status_t f_fss_is_combining(f_state_t state, const f_string_static_t buffer, const f_string_range_t range) {
+
+ if (!buffer.used || range.start > range.stop || range.start >= buffer.used) {
+ return F_false;
+ }
+
+ f_array_length_t width_max = (range.stop - range.start) + 1;
+
+ if (width_max > buffer.used - range.start) {
+ width_max = buffer.used - range.start;
+ }
+
+ return f_fss_fail_utf_to_false(state, f_utf_is_combining(buffer.string + range.start, width_max));
+ }
+#endif // _di_f_fss_is_combining_
+
#ifndef _di_f_fss_is_graph_
f_status_t f_fss_is_graph(f_state_t state, const f_string_static_t buffer, const f_string_range_t range) {
- if (range.stop < range.start || range.start >= buffer.used || !buffer.used) {
+ if (!buffer.used || range.start > range.stop || range.start >= buffer.used) {
return F_false;
}
#ifndef _di_f_fss_is_space_
f_status_t f_fss_is_space(f_state_t state, const f_string_static_t buffer, const f_string_range_t range) {
- if (range.stop < range.start || range.start >= buffer.used || !buffer.used) {
+ if (!buffer.used || range.start > range.stop || range.start >= buffer.used) {
return F_false;
}
#ifndef _di_f_fss_is_zero_width_
f_status_t f_fss_is_zero_width(f_state_t state, const f_string_static_t buffer, const f_string_range_t range) {
- if (range.stop < range.start || range.start >= buffer.used || !buffer.used) {
+ if (!buffer.used || range.start > range.stop || range.start >= buffer.used) {
return F_false;
}
if (!range) return F_status_set_error(F_parameter);
#endif // _di_level_0_parameter_checking_
+ if (!buffer.used || range->start > range->stop || range->start >= buffer.used) return F_data_not;
+
for (;; ++range->start) {
if (range->start >= buffer.used) return F_none_eos;
}
#endif // _di_f_fss_seek_to_eol_
-#ifndef _di_f_fss_shift_delimit_
- f_status_t f_fss_shift_delimit(f_state_t state, const f_string_range_t range, f_string_dynamic_t * const buffer) {
- #ifndef _di_level_0_parameter_checking_
- if (!buffer) return F_status_set_error(F_parameter);
- #endif // _di_level_0_parameter_checking_
-
- if (range.stop < range.start || range.start >= buffer->used || !buffer->used) {
- return F_none;
- }
-
- f_array_length_t position = 0;
- f_array_length_t distance = 0;
-
- uint8_t utf_width = 0;
-
- position = range.start;
-
- while (position < buffer->used && position <= range.stop) {
-
- if (buffer->string[position] == f_fss_delimit_placeholder_s.string[0]) {
- ++distance;
- }
-
- // Do not waste time trying to process what is only going to be replaced with a delimit placeholder.
- if (position + distance >= buffer->used || position + distance > range.stop) {
- break;
- }
-
- utf_width = macro_f_utf_byte_width_is(buffer->string[position]);
-
- if (utf_width > 1) {
-
- // Not enough space in buffer or in range range to process UTF-8 character.
- if (position + utf_width >= buffer->used || position + utf_width > range.stop) {
- return f_fss_fail_utf(state, F_status_set_error(F_utf_not));
- }
-
- if (distance > 0) {
- while (utf_width) {
-
- buffer->string[position] = buffer->string[position + distance];
- --utf_width;
- ++position;
- } // while
- }
- }
- else {
-
- // Shift everything down one for each delimit placeholder found.
- if (distance > 0) {
- buffer->string[position] = buffer->string[position + distance];
- }
-
- ++position;
- }
- }
-
- if (distance > 0) {
- while (position < buffer->used + distance && position <= range.stop) {
-
- buffer->string[position] = f_fss_delimit_placeholder_s.string[0];
- ++position;
- }
- }
-
- return F_none;
- }
-#endif // _di_f_fss_shift_delimit_
-
#ifndef _di_f_fss_skip_past_delimit_
f_status_t f_fss_skip_past_delimit(f_state_t state, const f_string_static_t buffer, f_string_range_t * const range) {
#ifndef _di_level_0_parameter_checking_
if (!range) return F_status_set_error(F_parameter);
#endif // _di_level_0_parameter_checking_
+ if (!buffer.used || range->start > range->stop || range->start >= buffer.used) return F_data_not;
+
for (;; ++range->start) {
if (range->start >= buffer.used) return F_none_eos;
if (!range) return F_status_set_error(F_parameter);
#endif // _di_level_0_parameter_checking_
- if (range->start > range->stop) {
- return F_none_stop;
- }
-
- if (range->start >= buffer.used || !buffer.used) {
- return F_none_eos;
- }
+ if (!buffer.used || range->start > range->stop || range->start >= buffer.used) return F_data_not;
f_status_t status = F_none;
uint8_t width = 0;
-
f_array_length_t width_max = (range->stop - range->start) + 1;
if (width_max > buffer.used - range->start) {
width_max = buffer.used - range->start;
}
+ // Check that the first character is not a combining character.
+ status = f_fss_fail_utf_to_false(state, f_utf_is_combining(buffer.string + range->start, width_max));
+ if (F_status_is_error(status)) return status;
+ if (status == F_true) return F_status_set_error(F_complete_not_utf_start);
+
for (;;) {
+ width_max = (range->stop - range->start) + 1;
+
+ if (width_max > buffer.used - range->start) {
+ width_max = buffer.used - range->start;
+ }
+
if (buffer.string[range->start] == f_fss_eol_s.string[0]) {
return F_none_eol;
}
if (buffer.string[range->start] == f_fss_delimit_placeholder_s.string[0]) {
++range->start;
- if (range->start >= buffer.used) {
- return F_none_eos;
- }
-
- if (range->start > range->stop) {
- return F_none_stop;
- }
-
continue;
}
status = f_fss_fail_utf_to_false(state, f_utf_is_whitespace(buffer.string + range->start, width_max));
- if (F_status_is_error(status)) return status;
if (status == F_false) {
- status = f_fss_fail_utf_to_false(state, f_utf_is_zero_width(buffer.string + range->start, width_max));
- if (F_status_is_error(status)) return status;
+ status = f_fss_fail_utf_to_false(state, f_utf_is_control(buffer.string + range->start, width_max));
if (status == F_false) {
- return F_none;
- }
- }
-
- width = macro_f_utf_byte_width_is(buffer.string[range->start]);
-
- if (!width) {
- width = 1;
- }
- else if (width == 1) {
-
- // Do not operate on UTF-8 fragments that are not the first byte of the character.
- return f_fss_fail_utf(state, F_status_set_error(F_complete_not_utf));
- }
- else {
- if (range->start + width >= buffer.used) {
- return f_fss_fail_utf(state, F_status_set_error(F_complete_not_utf_eos));
- }
-
- if (range->start + width > range->stop) {
- return f_fss_fail_utf(state, F_status_set_error(F_complete_not_utf_stop));
- }
- }
-
- range->start += width;
-
- if (range->start >= buffer.used) {
- return F_none_eos;
- }
-
- if (range->start > range->stop) {
- return F_none_stop;
- }
-
- width_max = (range->stop - range->start) + 1;
-
- if (width_max > buffer.used - range->start) {
- width_max = buffer.used - range->start;
- }
- } // for
-
- return F_none;
- }
-#endif // _di_f_fss_skip_past_space_
-
-#ifndef _di_f_fss_skip_past_non_graph_
- f_status_t f_fss_skip_past_non_graph(f_state_t state, const f_string_static_t buffer, f_string_range_t * const range) {
- #ifndef _di_level_0_parameter_checking_
- if (!range) return F_status_set_error(F_parameter);
- #endif // _di_level_0_parameter_checking_
-
- if (range->start > range->stop) {
- return F_none_stop;
- }
-
- if (range->start >= buffer.used || !buffer.used) {
- return F_none_eos;
- }
-
- f_status_t status = F_none;
- uint8_t width = 0;
-
- f_array_length_t width_max = (range->stop - range->start) + 1;
- f_array_length_t next = 0;
+ status = f_fss_fail_utf_to_false(state, f_utf_is_combining(buffer.string + range->start, width_max));
- if (width_max > buffer.used - range->start) {
- width_max = buffer.used - range->start;
- }
-
- for (;;) {
-
- if (buffer.string[range->start] != f_fss_delimit_placeholder_s.string[0]) {
- status = f_fss_fail_utf_to_false(state, f_utf_is_graph(buffer.string + range->start, width_max));
-
- if (status == F_true) {
-
- // Stop at a graph.
- break;
- }
- else if (status == F_false) {
- status = f_fss_fail_utf_to_false(state, f_utf_is_zero_width(buffer.string + range->start, width_max));
-
- if (status == F_true) {
- next = range->start + 1;
-
- for (; next < buffer.used && next <= range->stop; next += macro_f_utf_byte_width_is(buffer.string[next])) {
-
- status = f_fss_fail_utf_to_false(state, f_utf_is_graph(buffer.string + next, width_max));
-
- if (status == F_true) {
-
- // Treat zero-width as a graph when preceding a graph.
- return F_none;
- }
-
- if (status == F_false) {
- status = f_utf_is_zero_width(buffer.string + next, width_max);
-
- // Seek until a non-zero-width is reached.
- if (status == F_true) continue;
-
- // Treat zero-width as a non-graph when preceding a non-graph (that is not a zero-width).
- if (status == F_false) break;
-
- if (F_status_is_error(status)) return status;
- }
- else if (F_status_is_error(status)) {
- return status;
- }
- } // for
- }
- else if (status == F_false) {
-
- // Continue on when non-graph and non-zero-width.
- break;
+ if (status == F_false) {
+ status = f_fss_fail_utf_to_false(state, f_utf_is_zero_width(buffer.string + range->start, width_max));
+ if (status == F_false) return F_none;
}
- else if (F_status_is_error(status)) {
- return status;
- }
- }
- else if (F_status_is_error(status)) {
- return status;
}
}
- width = macro_f_utf_byte_width_is(buffer.string[range->start]);
+ if (F_status_is_error(status)) return status;
- if (!width) {
- width = 1;
- }
- else if (width == 1) {
+ width = macro_f_utf_byte_width(buffer.string[range->start]);
- // Do not operate on UTF-8 fragments that are not the first byte of the character.
- return f_fss_fail_utf(state, F_status_set_error(F_complete_not_utf));
- }
- else {
+ if (width > 1) {
if (range->start + width >= buffer.used) {
return f_fss_fail_utf(state, F_status_set_error(F_complete_not_utf_eos));
}
range->start += width;
- if (range->start >= buffer.used) {
- return F_none_eos;
- }
-
- if (range->start > range->stop) {
- return F_none_stop;
- }
-
- width_max = (range->stop - range->start) + 1;
-
- if (width_max > buffer.used - range->start) {
- width_max = buffer.used - range->start;
- }
+ if (range->start >= buffer.used) return F_none_eos;
+ if (range->start > range->stop) return F_none_stop;
} // for
- if (F_status_is_error(status)) {
- return status;
- }
-
return F_none;
}
-#endif // _di_f_fss_skip_past_non_graph_
+#endif // _di_f_fss_skip_past_space_
#ifdef __cplusplus
} // extern "C"
*
* @return
* F_none on success.
+ * F_data_not on success but buffer.used is 0.
*
* F_parameter (with error bit) if a parameter is invalid.
*/
*
* @return
* F_none on success.
+ * F_data_not on success but buffer.used is 0.
*
* F_parameter (with error bit) if a parameter is invalid.
*/
-#ifndef _di_f_fss_apply_delimit_between_
- extern f_status_t f_fss_apply_delimit_between(f_state_t state, const f_fss_delimits_t delimits, const f_string_range_t range, f_string_static_t * const buffer);
-#endif // _di_f_fss_apply_delimit_between_
+#ifndef _di_f_fss_apply_delimit_range_
+ extern f_status_t f_fss_apply_delimit_range(f_state_t state, const f_fss_delimits_t delimits, const f_string_range_t range, f_string_static_t * const buffer);
+#endif // _di_f_fss_apply_delimit_range_
/**
* Count the number of new lines from the buffer before the given location.
* The position in the buffer where to start counting before.
* @param line
* The total lines found leading up to but not including before.
+ * This value is not reset and only additions are performed.
+ * When F_data_not is returned, this value is not altered.
*
* @return
* F_none on success.
+ * F_data_not on success but buffer.used is 0 (line is set to 0).
*
* F_parameter (with error bit) if a parameter is invalid.
*/
* The string to process.
* @param range
* The range within the buffer to process.
- * @param before
- * The position in the buffer where to start counting before.
* @param line
* The total lines found leading up to but not including before.
+ * This value is not reset and only additions are performed.
+ * When F_data_not is returned, this value is not altered.
*
* @return
* F_none on success.
+ * F_data_not on success but the range.start is greater than buffer.used or buffer.used is 0 (line is set to 0).
*
* F_parameter (with error bit) if a parameter is invalid.
*/
#ifndef _di_f_fss_count_lines_range_
- extern f_status_t f_fss_count_lines_range(f_state_t state, const f_string_static_t buffer, const f_string_range_t range, const f_array_length_t before, f_array_length_t * const line);
+ extern f_status_t f_fss_count_lines_range(f_state_t state, const f_string_static_t buffer, const f_string_range_t range, f_array_length_t * const line);
#endif // _di_f_fss_count_lines_range_
/**
#endif // _di_f_fss_fail_utf_to_false_
/**
+ * Identify whether or not a character in the buffer is a combining (ASCII or UTF-8) character.
+ *
+ * This only checks if the given character is a combining character and does not check what this combines into.
+ *
+ * The combining characters combine from right to left.
+ * It is recommended to use this after testing for other characters, such as f_fss_is_space() or f_fss_is_graph().
+ * A combining character can follow any character, even if it is something like a control character.
+ * This is unclear behavior so a simple strategy is to assume that a combining character results in a graph for anything except a non-combining zero-width character.
+ * U+0020 followed by U+0301 would result in the combination of the two being considered a graph rather than a space.
+ * Given that NULL characters are ignored by the general FSS standard, combining characters are not considered to combine into NULL.
+ *
+ * @param state
+ * A state for providing flags and handling interrupts during long running operations.
+ * @param buffer
+ * The string to process.
+ * @param range
+ * The character at the start position will be checked against the graph.
+ * @param header
+ * The header data to populate with results of this function.
+ *
+ * @return
+ * F_true if the character in the buffer is a combining character.
+ * F_false if the character in the buffer is not a combining character.
+ *
+ * F_parameter (with error bit) if a parameter is invalid.
+ *
+ * Errors (with error bit) from: f_utf_is_combining().
+ *
+ * @see f_utf_is_combining()
+ */
+#ifndef _di_f_fss_is_combining_
+ extern f_status_t f_fss_is_combining(f_state_t state, const f_string_static_t buffer, const f_string_range_t range);
+#endif // _di_f_fss_is_combining_
+
+/**
* Identify whether or not a character in the buffer is a graph (ASCII or UTF-8) character.
*
* @param state
#endif // _di_f_fss_is_graph_
/**
- * Identify whether or not a character in the buffer is a non-zero-width whitespace or control (ASCII or UTF-8) character.
+ * Identify whether or not a character in the buffer is a non-zero-width whitespace or non-zero-width control (ASCII or UTF-8) character.
*
* @param state
* A state for providing flags and handling interrupts during long running operations.
*
* Errors (with error bit) from: f_utf_is_control().
* Errors (with error bit) from: f_utf_is_whitespace().
+ * Errors (with error bit) from: f_utf_is_zero_width().
*
* @see f_utf_is_control()
* @see f_utf_is_whitespace()
+ * @see f_utf_is_zero_width()
*/
#ifndef _di_f_fss_is_space_
extern f_status_t f_fss_is_space(f_state_t state, const f_string_static_t buffer, const f_string_range_t range);
#endif // _di_f_fss_is_space_
/**
- * Identify whether or not a character in the buffer is a non-zero-width whitespace or control (ASCII or UTF-8) character.
+ * Identify whether or not a character in the buffer is a zero-width (ASCII or UTF-8) character.
+ *
+ * The NULL character (U+0000) is a zero-width character.
*
* @param state
* A state for providing flags and handling interrupts during long running operations.
* The header data to populate with results of this function.
*
* @return
- * F_true if the character in the buffer is a space character.
- * F_false if the character in the buffer is not a space character.
+ * F_true if the character in the buffer is a zero-width character.
+ * F_false if the character in the buffer is not a zero-width character.
*
* F_parameter (with error bit) if a parameter is invalid.
*
- * Errors (with error bit) from: f_utf_is_control().
- * Errors (with error bit) from: f_utf_is_whitespace().
+ * Errors (with error bit) from: f_utf_is_zero_width().
*
* @see f_utf_is_zero_width()
*/
/**
* Seek until an EOL character is reached.
*
+ * This does not check the character after the EOL is reached.
+ * The character after an EOL should be checked to see if it is a combining character.
+ * Combining characters after the EOL effectively make the EOL character a non-standard EOL.
+ * For most, if not all, FSS standards, a combined EOL is not the same as a standard or normal EOL.
+ *
* @param state
* A state for providing flags and handling interrupts during long running operations.
* @param buffer
*
* @return
* F_none on success.
+ * F_data_not on success but buffer.used is 0, initial range.start is greater than range.stop, or initial range.start is greater than or equal to buffer.used.
* F_none_eos on success and EOS was reached.
* F_none_stop on success and stop point was reached.
*
#endif // _di_f_fss_seek_to_eol_
/**
- * Shift all of the delimit placeholders to the end of the used buffer.
- *
- * This allows one to do a printf on the dynamic string without the delimiters arbitrarily stopping the output.
- * No reallocations are performed, this will only shift characters.
- *
- * @param state
- * A state for providing flags and handling interrupts during long running operations.
- * @param range
- * A restriction on where within the buffer the shifting happens.
- * @param buffer
- * The string to process.
- * This gets updated.
- *
- * @return
- * F_none on success.
- * F_none_eos on success and EOS was reached.
- * F_none_stop on success and stop point was reached.
- *
- * F_parameter (with error bit) if a parameter is invalid.
- * F_utf_not (with error bit) if UTF-8 cannot be fully processed (buffer or range range not long enough).
- */
-#ifndef _di_f_fss_shift_delimit_
- extern f_status_t f_fss_shift_delimit(f_state_t state, const f_string_range_t range, f_string_dynamic_t * const buffer);
-#endif // _di_f_fss_shift_delimit_
-
-/**
* Skip past all delimit placeholders until a non-delimit placeholder is reached.
*
* @param state
*
* @return
* F_none on success.
+ * F_data_not on success but buffer.used is 0, initial range.start is greater than range.stop, or initial range.start is greater than or equal to buffer.used.
* F_none_eos on success and EOS was reached.
* F_none_stop on success and stop point was reached.
*
#endif // _di_f_fss_skip_past_delimit_
/**
- * Skip past all whitespace and control characters, except newline.
+ * Skip past all white space, control characters, and zero-width characters, except newline '\n' (U+000A).
*
- * Zero-width characters are not skipped because they might be part of a graph character, such as combining characters.
+ * If the first character in the given range is a combining character, then because this will not skip past anything.
+ * This is because combining characters apply from right to left.
*
* @param state
* A state for providing flags and handling interrupts during long running operations.
*
* @return
* F_none on success.
+ * F_data_not on success but buffer.used is 0, initial range.start is greater than range.stop, or initial range.start is greater than or equal to buffer.used.
* F_none_eol on success and EOL was reached.
* F_none_eos on success and EOS was reached.
* F_none_stop on success and stop point was reached.
*
- * F_complete_not_utf (with error bit) if an incomplete UTF-8 fragment was found.
* F_complete_not_utf_eos (with error bit) if unable to get entire UTF-8 sequence due to EOS.
+ * F_complete_not_utf_start (with error bit) if the first character is a combining character.
* F_complete_not_utf_stop (with error bit) if unable to get entire UTF-8 sequence due to stop point reached.
* F_parameter (with error bit) if a parameter is invalid.
*
+ * Errors (with error bit) from: f_utf_is_combining().
* Errors (with error bit) from: f_utf_is_control().
* Errors (with error bit) from: f_utf_is_whitespace().
* Errors (with error bit) from: f_utf_is_zero_width().
*
+ * @see f_utf_is_combining()
* @see f_utf_is_control()
* @see f_utf_is_whitespace()
* @see f_utf_is_zero_width()
extern f_status_t f_fss_skip_past_space(f_state_t state, const f_string_static_t buffer, f_string_range_t * const range);
#endif // _di_f_fss_skip_past_space_
-/**
- * Skip past all non-graph and non-zero-width characters (whitespace and control characters).
- *
- * Zero-width characters are not skipped because they might be part of a graph character, such as combining characters.
- *
- * @param state
- * A state for providing flags and handling interrupts during long running operations.
- * @param buffer
- * The string to process.
- * @param range
- * The start and stop positions in the buffer being processed.
- * This increments range->start.
- *
- * @return
- * F_none on success.
- * F_none_eol on success and EOL was reached.
- * F_none_eos on success and EOS was reached.
- * F_none_stop on success and stop point was reached.
- *
- * F_complete_not_utf (with error bit) if an incomplete UTF-8 fragment was found.
- * F_complete_not_utf_eos (with error bit) if unable to get entire UTF-8 sequence due to EOS.
- * F_complete_not_utf_stop (with error bit) if unable to get entire UTF-8 sequence due to stop point reached.
- * F_parameter (with error bit) if a parameter is invalid.
- *
- * Errors (with error bit) from: f_utf_is_graph().
- * Errors (with error bit) from: f_utf_is_zero_width().
- *
- * @see f_utf_is_graph()
- * @see f_utf_is_zero_width()
- */
-#ifndef _di_f_fss_skip_past_non_graph_
- extern f_status_t f_fss_skip_past_non_graph(f_state_t state, const f_string_static_t buffer, f_string_range_t * const range);
-#endif // _di_f_fss_skip_past_non_graph_
-
#ifdef __cplusplus
} // extern "C"
#endif
#ifndef _di_f_fss_delimit_t_
typedef f_array_length_t f_fss_delimit_t;
- #define macro_f_fss_object_t_initialize(length) macro_f_string_range_t_initialize2(length)
+ #define f_fss_delimit_t_initialize f_array_length_t_initialize
+
+ #define macro_f_fss_delimit_t_initialize(delimit) macro_f_array_length_t_initialize(delimit)
#endif // _di_f_fss_delimit_t_
/**
if (!named) return F_status_set_error(F_parameter);
#endif // _di_level_0_parameter_checking_
- if (!amount) {
- return F_data_not;
- }
+ if (!amount) return F_data_not;
if (named->objects.size - amount > 0) {
return private_f_fss_named_adjust(named->objects.size - amount, named);
if (!named) return F_status_set_error(F_parameter);
#endif // _di_level_0_parameter_checking_
- if (!amount) {
- return F_data_not;
- }
+ if (!amount) return F_data_not;
if (named->objects.size - amount > 0) {
return private_f_fss_named_resize(named->objects.size - amount, named);
if (!named) return F_status_set_error(F_parameter);
#endif // _di_level_0_parameter_checking_
- if (!amount) {
- return F_data_not;
- }
+ if (!amount) return F_data_not;
if (named->objects.used + amount > named->objects.size) {
if (named->objects.used + amount > F_array_length_t_size_d) {
if (!nameds) return F_status_set_error(F_parameter);
#endif // _di_level_0_parameter_checking_
- if (!amount) {
- return F_data_not;
- }
+ if (!amount) return F_data_not;
if (nameds->size - amount > 0) {
return private_f_fss_nameds_adjust(nameds->size - amount, nameds);
if (!nameds) return F_status_set_error(F_parameter);
#endif // _di_level_0_parameter_checking_
- if (!amount) {
- return F_data_not;
- }
+ if (!amount) return F_data_not;
if (nameds->size - amount > 0) {
return private_f_fss_nameds_resize(nameds->size - amount, nameds);
if (!nameds) return F_status_set_error(F_parameter);
#endif // _di_level_0_parameter_checking_
- if (!amount) {
- return F_data_not;
- }
+ if (!amount) return F_data_not;
if (nameds->used + amount > nameds->size) {
if (nameds->used + amount > F_array_length_t_size_d) {
if (!items) return F_status_set_error(F_parameter);
#endif // _di_level_0_parameter_checking_
- if (!amount) {
- return F_data_not;
- }
+ if (!amount) return F_data_not;
if (items->size - amount > 0) {
return private_f_fss_items_adjust(items->size - amount, items);
if (!items) return F_status_set_error(F_parameter);
#endif // _di_level_0_parameter_checking_
- if (!amount) {
- return F_data_not;
- }
+ if (!amount) return F_data_not;
if (items->size - amount > 0) {
return private_f_fss_items_resize(items->size - amount, items);
if (!items) return F_status_set_error(F_parameter);
#endif // _di_level_0_parameter_checking_
- if (!amount) {
- return F_data_not;
- }
+ if (!amount) return F_data_not;
if (items->used + amount > items->size) {
if (items->used + amount > F_array_length_t_size_d) {
if (!nest) return F_status_set_error(F_parameter);
#endif // _di_level_0_parameter_checking_
- if (!amount) {
- return F_data_not;
- }
+ if (!amount) return F_data_not;
if (nest->size - amount > 0) {
return private_f_fss_nest_adjust(nest->size - amount, nest);
if (!nest) return F_status_set_error(F_parameter);
#endif // _di_level_0_parameter_checking_
- if (!amount) {
- return F_data_not;
- }
+ if (!amount) return F_data_not;
if (nest->size - amount > 0) {
return private_f_fss_nest_resize(nest->size - amount, nest);
if (!nest) return F_status_set_error(F_parameter);
#endif // _di_level_0_parameter_checking_
- if (!amount) {
- return F_data_not;
- }
+ if (!amount) return F_data_not;
if (nest->used + amount > nest->size) {
if (nest->used + amount > F_array_length_t_size_d) {
if (!nests) return F_status_set_error(F_parameter);
#endif // _di_level_0_parameter_checking_
- if (!amount) {
- return F_data_not;
- }
+ if (!amount) return F_data_not;
if (nests->size - amount > 0) {
return private_f_fss_nests_adjust(nests->size - amount, nests);
if (!nests) return F_status_set_error(F_parameter);
#endif // _di_level_0_parameter_checking_
+ if (!amount) return F_data_not;
+
if (nests->size - amount > 0) {
return private_f_fss_nests_resize(nests->size - amount, nests);
}
if (!nests) return F_status_set_error(F_parameter);
#endif // _di_level_0_parameter_checking_
- if (!amount) {
- return F_data_not;
- }
+ if (!amount) return F_data_not;
if (nests->used + amount > nests->size) {
if (nests->used + amount > F_array_length_t_size_d) {
if (!set) return F_status_set_error(F_parameter);
#endif // _di_level_0_parameter_checking_
- if (!amount) {
- return F_data_not;
- }
+ if (!amount) return F_data_not;
if (set->objects.size - amount > 0) {
return private_f_fss_set_adjust(set->objects.size - amount, set);
if (!set) return F_status_set_error(F_parameter);
#endif // _di_level_0_parameter_checking_
- if (!amount) {
- return F_data_not;
- }
+ if (!amount) return F_data_not;
if (set->objects.size - amount > 0) {
return private_f_fss_set_resize(set->objects.size - amount, set);
if (!set) return F_status_set_error(F_parameter);
#endif // _di_level_0_parameter_checking_
- if (!amount) {
- return F_data_not;
- }
+ if (!amount) return F_data_not;
if (set->objects.used + amount > set->objects.size) {
if (set->objects.used + amount > F_array_length_t_size_d) {
if (!set_quote) return F_status_set_error(F_parameter);
#endif // _di_level_0_parameter_checking_
- if (!amount) {
- return F_data_not;
- }
+ if (!amount) return F_data_not;
if (set_quote->objects.size - amount > 0) {
return private_f_fss_set_quote_adjust(set_quote->objects.size - amount, set_quote);
if (!set_quote) return F_status_set_error(F_parameter);
#endif // _di_level_0_parameter_checking_
- if (!amount) {
- return F_data_not;
- }
+ if (!amount) return F_data_not;
if (set_quote->objects.size - amount > 0) {
return private_f_fss_set_quote_resize(set_quote->objects.size - amount, set_quote);
if (!set_quote) return F_status_set_error(F_parameter);
#endif // _di_level_0_parameter_checking_
- if (!amount) {
- return F_data_not;
- }
+ if (!amount) return F_data_not;
if (set_quote->objects.used + amount > set_quote->objects.size) {
if (set_quote->objects.used + amount > F_array_length_t_size_d) {
if (!set_quotes) return F_status_set_error(F_parameter);
#endif // _di_level_0_parameter_checking_
- if (!amount) {
- return F_data_not;
- }
+ if (!amount) return F_data_not;
if (set_quotes->size - amount > 0) {
return private_f_fss_set_quotes_adjust(set_quotes->size - amount, set_quotes);
if (!set_quotes) return F_status_set_error(F_parameter);
#endif // _di_level_0_parameter_checking_
- if (!amount) {
- return F_data_not;
- }
+ if (!amount) return F_data_not;
if (set_quotes->size - amount > 0) {
return private_f_fss_set_quotes_resize(set_quotes->size - amount, set_quotes);
if (!set_quotes) return F_status_set_error(F_parameter);
#endif // _di_level_0_parameter_checking_
- if (!amount) {
- return F_data_not;
- }
+ if (!amount) return F_data_not;
if (set_quotes->used + amount > set_quotes->size) {
if (set_quotes->used + amount > F_array_length_t_size_d) {
if (!sets) return F_status_set_error(F_parameter);
#endif // _di_level_0_parameter_checking_
- if (!amount) {
- return F_data_not;
- }
+ if (!amount) return F_data_not;
if (sets->size - amount > 0) {
return private_f_fss_sets_adjust(sets->size - amount, sets);
if (!sets) return F_status_set_error(F_parameter);
#endif // _di_level_0_parameter_checking_
- if (!amount) {
- return F_data_not;
- }
+ if (!amount) return F_data_not;
if (sets->size - amount > 0) {
return private_f_fss_sets_resize(sets->size - amount, sets);
if (!sets) return F_status_set_error(F_parameter);
#endif // _di_level_0_parameter_checking_
- if (!amount) {
- return F_data_not;
- }
+ if (!amount) return F_data_not;
if (sets->used + amount > sets->size) {
if (sets->used + amount > F_array_length_t_size_d) {
if (!datas) return F_status_set_error(F_parameter);
#endif // _di_level_0_parameter_checking_
- if (!amount) {
- return F_data_not;
- }
+ if (!amount) return F_data_not;
if (datas->size - amount > 0) {
return private_f_iki_datas_adjust(datas->size - amount, datas);
if (!datas) return F_status_set_error(F_parameter);
#endif // _di_level_0_parameter_checking_
- if (!amount) {
- return F_data_not;
- }
+ if (!amount) return F_data_not;
if (datas->size - amount > 0) {
return private_f_iki_datas_resize(datas->size - amount, datas);
if (!datas) return F_status_set_error(F_parameter);
#endif // _di_level_0_parameter_checking_
- if (!amount) {
- return F_data_not;
- }
+ if (!amount) return F_data_not;
if (datas->used + amount > datas->size) {
if (datas->used + amount > F_array_length_t_size_d) {
if (!datass) return F_status_set_error(F_parameter);
#endif // _di_level_0_parameter_checking_
- if (!amount) {
- return F_data_not;
- }
+ if (!amount) return F_data_not;
if (datass->size - amount > 0) {
return private_f_iki_datass_adjust(datass->size - amount, datass);
if (!datass) return F_status_set_error(F_parameter);
#endif // _di_level_0_parameter_checking_
- if (!amount) {
- return F_data_not;
- }
+ if (!amount) return F_data_not;
if (datass->size - amount > 0) {
return private_f_iki_datass_resize(datass->size - amount, datass);
if (!datass) return F_status_set_error(F_parameter);
#endif // _di_level_0_parameter_checking_
- if (!amount) {
- return F_data_not;
- }
+ if (!amount) return F_data_not;
if (datass->used + amount > datass->size) {
if (datass->used + amount > F_array_length_t_size_d) {
if (!sets) return F_status_set_error(F_parameter);
#endif // _di_level_0_parameter_checking_
- if (!amount) {
- return F_data_not;
- }
+ if (!amount) return F_data_not;
if (sets->size - amount > 0) {
return private_f_limit_sets_adjust(sets->size - amount, sets);
if (!sets) return F_status_set_error(F_parameter);
#endif // _di_level_0_parameter_checking_
- if (!amount) {
- return F_data_not;
- }
+ if (!amount) return F_data_not;
if (sets->size - amount > 0) {
return private_f_limit_sets_resize(sets->size - amount, sets);
if (!sets) return F_status_set_error(F_parameter);
#endif // _di_level_0_parameter_checking_
- if (!amount) {
- return F_data_not;
- }
+ if (!amount) return F_data_not;
if (sets->used + amount > sets->size) {
if (sets->used + amount > F_array_length_t_size_d) {
if (!setss) return F_status_set_error(F_parameter);
#endif // _di_level_0_parameter_checking_
- if (!amount) {
- return F_data_not;
- }
+ if (!amount) return F_data_not;
if (setss->size - amount > 0) {
return private_f_limit_setss_adjust(setss->size - amount, setss);
if (!setss) return F_status_set_error(F_parameter);
#endif // _di_level_0_parameter_checking_
- if (!amount) {
- return F_data_not;
- }
+ if (!amount) return F_data_not;
if (setss->size - amount > 0) {
return private_f_limit_setss_resize(setss->size - amount, setss);
if (!setss) return F_status_set_error(F_parameter);
#endif // _di_level_0_parameter_checking_
- if (!amount) {
- return F_data_not;
- }
+ if (!amount) return F_data_not;
if (setss->used + amount > setss->size) {
if (setss->used + amount > F_array_length_t_size_d) {
if (!values) return F_status_set_error(F_parameter);
#endif // _di_level_0_parameter_checking_
- if (!amount) {
- return F_data_not;
- }
+ if (!amount) return F_data_not;
if (values->size - amount > 0) {
return private_f_limit_values_adjust(values->size - amount, values);
if (!values) return F_status_set_error(F_parameter);
#endif // _di_level_0_parameter_checking_
- if (!amount) {
- return F_data_not;
- }
+ if (!amount) return F_data_not;
if (values->size - amount > 0) {
return private_f_limit_values_resize(values->size - amount, values);
if (!values) return F_status_set_error(F_parameter);
#endif // _di_level_0_parameter_checking_
- if (!amount) {
- return F_data_not;
- }
+ if (!amount) return F_data_not;
if (values->used + amount > values->size) {
if (values->used + amount > F_array_length_t_size_d) {
if (!valuess) return F_status_set_error(F_parameter);
#endif // _di_level_0_parameter_checking_
- if (!amount) {
- return F_data_not;
- }
+ if (!amount) return F_data_not;
if (valuess->size - amount > 0) {
return private_f_limit_valuess_adjust(valuess->size - amount, valuess);
if (!valuess) return F_status_set_error(F_parameter);
#endif // _di_level_0_parameter_checking_
- if (!amount) {
- return F_data_not;
- }
+ if (!amount) return F_data_not;
if (valuess->size - amount > 0) {
return private_f_limit_valuess_resize(valuess->size - amount, valuess);
if (!valuess) return F_status_set_error(F_parameter);
#endif // _di_level_0_parameter_checking_
- if (!amount) {
- return F_data_not;
- }
+ if (!amount) return F_data_not;
if (valuess->used + amount > valuess->size) {
if (valuess->used + amount > F_array_length_t_size_d) {
F_complete_not_utf_eof,
F_complete_not_utf_eol,
F_complete_not_utf_eos,
+ F_complete_not_utf_start,
F_complete_not_utf_stop,
F_none_block,
F_none_eoa,
F_none_eof,
F_none_eol,
F_none_eos,
+ F_none_start,
F_none_stop,
F_data,
F_data_not,
F_data_not_eof,
F_data_not_eol,
F_data_not_eos,
+ F_data_not_start,
F_data_not_stop,
#endif // _di_f_status_buffer_
F_end_not_group_eof,
F_end_not_group_eol,
F_end_not_group_eos,
+ F_end_not_group_start,
F_end_not_group_stop,
F_end_not_nest,
F_end_not_nest_block,
F_end_not_nest_eof,
F_end_not_nest_eol,
F_end_not_nest_eos,
+ F_end_not_nest_start,
F_end_not_nest_stop,
+ F_end_not_start,
F_end_not_stop,
#endif // _di_f_status_end_
if (!attributes) return F_status_set_error(F_parameter);
#endif // _di_level_0_parameter_checking_
- if (!amount) {
- return F_data_not;
- }
+ if (!amount) return F_data_not;
if (attributes->size - amount > 0) {
return private_f_thread_attributes_resize(attributes->size - amount, attributes);
if (!attributes) return F_status_set_error(F_parameter);
#endif // _di_level_0_parameter_checking_
- if (!amount) {
- return F_data_not;
- }
+ if (!amount) return F_data_not;
if (attributes->used + amount > attributes->size) {
if (attributes->used + amount > F_array_length_t_size_d) {
if (!attributes) return F_status_set_error(F_parameter);
#endif // _di_level_0_parameter_checking_
- if (!amount) {
- return F_data_not;
- }
+ if (!amount) return F_data_not;
if (attributes->size - amount > 0) {
return private_f_thread_barrier_attributes_adjust(attributes->size - amount, attributes);
if (!attributes) return F_status_set_error(F_parameter);
#endif // _di_level_0_parameter_checking_
- if (!amount) {
- return F_data_not;
- }
+ if (!amount) return F_data_not;
if (attributes->size - amount > 0) {
return private_f_thread_barrier_attributes_resize(attributes->size - amount, attributes);
if (!attributes) return F_status_set_error(F_parameter);
#endif // _di_level_0_parameter_checking_
- if (!amount) {
- return F_data_not;
- }
+ if (!amount) return F_data_not;
if (attributes->used + amount > attributes->size) {
if (attributes->used + amount > F_array_length_t_size_d) {
if (!barriers) return F_status_set_error(F_parameter);
#endif // _di_level_0_parameter_checking_
- if (!amount) {
- return F_data_not;
- }
+ if (!amount) return F_data_not;
if (barriers->size - amount > 0) {
return private_f_thread_barriers_adjust(barriers->size - amount, barriers);
if (!barriers) return F_status_set_error(F_parameter);
#endif // _di_level_0_parameter_checking_
- if (!amount) {
- return F_data_not;
- }
+ if (!amount) return F_data_not;
if (barriers->size - amount > 0) {
return private_f_thread_barriers_resize(barriers->size - amount, barriers);
if (!barriers) return F_status_set_error(F_parameter);
#endif // _di_level_0_parameter_checking_
- if (!amount) {
- return F_data_not;
- }
+ if (!amount) return F_data_not;
if (barriers->used + amount > barriers->size) {
if (barriers->used + amount > F_array_length_t_size_d) {
if (!attributes) return F_status_set_error(F_parameter);
#endif // _di_level_0_parameter_checking_
- if (!amount) {
- return F_data_not;
- }
+ if (!amount) return F_data_not;
if (attributes->size - amount > 0) {
return private_f_thread_condition_attributes_adjust(attributes->size - amount, attributes);
if (!attributes) return F_status_set_error(F_parameter);
#endif // _di_level_0_parameter_checking_
- if (!amount) {
- return F_data_not;
- }
+ if (!amount) return F_data_not;
if (attributes->size - amount > 0) {
return private_f_thread_condition_attributes_resize(attributes->size - amount, attributes);
if (!attributes) return F_status_set_error(F_parameter);
#endif // _di_level_0_parameter_checking_
- if (!amount) {
- return F_data_not;
- }
+ if (!amount) return F_data_not;
if (attributes->used + amount > attributes->size) {
if (attributes->used + amount > F_array_length_t_size_d) {
if (!conditions) return F_status_set_error(F_parameter);
#endif // _di_level_0_parameter_checking_
- if (!amount) {
- return F_data_not;
- }
+ if (!amount) return F_data_not;
if (conditions->size - amount > 0) {
return private_f_thread_conditions_resize(conditions->size - amount, conditions);
if (!conditions) return F_status_set_error(F_parameter);
#endif // _di_level_0_parameter_checking_
- if (!amount) {
- return F_data_not;
- }
+ if (!amount) return F_data_not;
if (conditions->used + amount > conditions->size) {
if (conditions->used + amount > F_array_length_t_size_d) {
if (!keys) return F_status_set_error(F_parameter);
#endif // _di_level_0_parameter_checking_
- if (!amount) {
- return F_data_not;
- }
+ if (!amount) return F_data_not;
if (keys->size - amount > 0) {
return private_f_thread_keys_adjust(keys->size - amount, keys);
if (!keys) return F_status_set_error(F_parameter);
#endif // _di_level_0_parameter_checking_
- if (!amount) {
- return F_data_not;
- }
+ if (!amount) return F_data_not;
if (keys->size - amount > 0) {
return private_f_thread_keys_resize(keys->size - amount, keys);
if (!keys) return F_status_set_error(F_parameter);
#endif // _di_level_0_parameter_checking_
- if (!amount) {
- return F_data_not;
- }
+ if (!amount) return F_data_not;
if (keys->used + amount > keys->size) {
if (keys->used + amount > F_array_length_t_size_d) {
if (!attributes) return F_status_set_error(F_parameter);
#endif // _di_level_0_parameter_checking_
- if (!amount) {
- return F_data_not;
- }
+ if (!amount) return F_data_not;
if (attributes->size - amount > 0) {
return private_f_thread_lock_attributes_adjust(attributes->size - amount, attributes);
if (!attributes) return F_status_set_error(F_parameter);
#endif // _di_level_0_parameter_checking_
- if (!amount) {
- return F_data_not;
- }
+ if (!amount) return F_data_not;
if (attributes->size - amount > 0) {
return private_f_thread_lock_attributes_resize(attributes->size - amount, attributes);
if (!attributes) return F_status_set_error(F_parameter);
#endif // _di_level_0_parameter_checking_
- if (!amount) {
- return F_data_not;
- }
+ if (!amount) return F_data_not;
if (attributes->used + amount > attributes->size) {
if (attributes->used + amount > F_array_length_t_size_d) {
if (!locks) return F_status_set_error(F_parameter);
#endif // _di_level_0_parameter_checking_
- if (!amount) {
- return F_data_not;
- }
+ if (!amount) return F_data_not;
if (locks->size - amount > 0) {
return private_f_thread_locks_adjust(locks->size - amount, locks);
if (!locks) return F_status_set_error(F_parameter);
#endif // _di_level_0_parameter_checking_
- if (!amount) {
- return F_data_not;
- }
+ if (!amount) return F_data_not;
if (locks->size - amount > 0) {
return private_f_thread_locks_resize(locks->size - amount, locks);
if (!locks) return F_status_set_error(F_parameter);
#endif // _di_level_0_parameter_checking_
- if (!amount) {
- return F_data_not;
- }
+ if (!amount) return F_data_not;
if (locks->used + amount > locks->size) {
if (locks->used + amount > F_array_length_t_size_d) {
if (!attributes) return F_status_set_error(F_parameter);
#endif // _di_level_0_parameter_checking_
- if (!amount) {
- return F_data_not;
- }
+ if (!amount) return F_data_not;
if (attributes->size - amount > 0) {
return private_f_thread_mutex_attributes_adjust(attributes->size - amount, attributes);
if (!attributes) return F_status_set_error(F_parameter);
#endif // _di_level_0_parameter_checking_
- if (!amount) {
- return F_data_not;
- }
+ if (!amount) return F_data_not;
if (attributes->size - amount > 0) {
return private_f_thread_mutex_attributes_resize(attributes->size - amount, attributes);
if (!attributes) return F_status_set_error(F_parameter);
#endif // _di_level_0_parameter_checking_
- if (!amount) {
- return F_data_not;
- }
+ if (!amount) return F_data_not;
if (attributes->used + amount > attributes->size) {
if (attributes->used + amount > F_array_length_t_size_d) {
if (!mutexs) return F_status_set_error(F_parameter);
#endif // _di_level_0_parameter_checking_
- if (!amount) {
- return F_data_not;
- }
+ if (!amount) return F_data_not;
if (mutexs->size - amount > 0) {
return private_f_thread_mutexs_adjust(mutexs->size - amount, mutexs);
if (!mutexs) return F_status_set_error(F_parameter);
#endif // _di_level_0_parameter_checking_
- if (!amount) {
- return F_data_not;
- }
+ if (!amount) return F_data_not;
if (mutexs->size - amount > 0) {
return private_f_thread_mutexs_resize(mutexs->size - amount, mutexs);
if (!mutexs) return F_status_set_error(F_parameter);
#endif // _di_level_0_parameter_checking_
- if (!amount) {
- return F_data_not;
- }
+ if (!amount) return F_data_not;
if (mutexs->used + amount > mutexs->size) {
if (mutexs->used + amount > F_array_length_t_size_d) {
if (!semaphores) return F_status_set_error(F_parameter);
#endif // _di_level_0_parameter_checking_
- if (!amount) {
- return F_data_not;
- }
+ if (!amount) return F_data_not;
if (semaphores->size - amount > 0) {
return private_f_thread_semaphores_adjust(semaphores->size - amount, semaphores);
if (!semaphores) return F_status_set_error(F_parameter);
#endif // _di_level_0_parameter_checking_
- if (!amount) {
- return F_data_not;
- }
+ if (!amount) return F_data_not;
if (semaphores->size - amount > 0) {
return private_f_thread_semaphores_resize(semaphores->size - amount, semaphores);
if (!semaphores) return F_status_set_error(F_parameter);
#endif // _di_level_0_parameter_checking_
- if (!amount) {
- return F_data_not;
- }
+ if (!amount) return F_data_not;
if (semaphores->used + amount > semaphores->size) {
if (semaphores->used + amount > F_array_length_t_size_d) {
if (!sets) return F_status_set_error(F_parameter);
#endif // _di_level_0_parameter_checking_
- if (!amount) {
- return F_data_not;
- }
+ if (!amount) return F_data_not;
if (sets->size - amount > 0) {
return private_f_thread_sets_adjust(sets->size - amount, sets);
if (!sets) return F_status_set_error(F_parameter);
#endif // _di_level_0_parameter_checking_
- if (!amount) {
- return F_data_not;
- }
+ if (!amount) return F_data_not;
if (sets->size - amount > 0) {
return private_f_thread_sets_resize(sets->size - amount, sets);
if (!sets) return F_status_set_error(F_parameter);
#endif // _di_level_0_parameter_checking_
- if (!amount) {
- return F_data_not;
- }
+ if (!amount) return F_data_not;
if (sets->used + amount > sets->size) {
if (sets->used + amount > F_array_length_t_size_d) {
if (!spins) return F_status_set_error(F_parameter);
#endif // _di_level_0_parameter_checking_
- if (!amount) {
- return F_data_not;
- }
+ if (!amount) return F_data_not;
if (spins->size - amount > 0) {
return private_f_thread_spins_adjust(spins->size - amount, spins);
if (!spins) return F_status_set_error(F_parameter);
#endif // _di_level_0_parameter_checking_
- if (!amount) {
- return F_data_not;
- }
+ if (!amount) return F_data_not;
if (spins->size - amount > 0) {
return private_f_thread_spins_resize(spins->size - amount, spins);
if (!spins) return F_status_set_error(F_parameter);
#endif // _di_level_0_parameter_checking_
- if (!amount) {
- return F_data_not;
- }
+ if (!amount) return F_data_not;
if (spins->used + amount > spins->size) {
if (spins->used + amount > F_array_length_t_size_d) {
if (!lengths) return F_status_set_error(F_parameter);
#endif // _di_level_0_parameter_checking_
- if (!amount) {
- return F_data_not;
- }
+ if (!amount) return F_data_not;
if (lengths->size - amount > 0) {
return private_f_array_lengths_adjust(lengths->size - amount, lengths);
if (!lengths) return F_status_set_error(F_parameter);
#endif // _di_level_0_parameter_checking_
- if (!amount) {
- return F_data_not;
- }
+ if (!amount) return F_data_not;
if (lengths->size - amount > 0) {
return private_f_array_lengths_resize(lengths->size - amount, lengths);
if (!lengths) return F_status_set_error(F_parameter);
#endif // _di_level_0_parameter_checking_
- if (!amount) {
- return F_data_not;
- }
+ if (!amount) return F_data_not;
if (lengths->used + amount > lengths->size) {
if (lengths->used + amount > F_array_length_t_size_d) {
if (!lengthss) return F_status_set_error(F_parameter);
#endif // _di_level_0_parameter_checking_
- if (!amount) {
- return F_data_not;
- }
+ if (!amount) return F_data_not;
if (lengthss->size - amount > 0) {
return private_f_array_lengthss_adjust(lengthss->size - amount, lengthss);
if (!lengthss) return F_status_set_error(F_parameter);
#endif // _di_level_0_parameter_checking_
- if (!amount) {
- return F_data_not;
- }
+ if (!amount) return F_data_not;
if (lengthss->size - amount > 0) {
return private_f_array_lengthss_resize(lengthss->size - amount, lengthss);
if (!lengthss) return F_status_set_error(F_parameter);
#endif // _di_level_0_parameter_checking_
- if (!amount) {
- return F_data_not;
- }
+ if (!amount) return F_data_not;
if (lengthss->used + amount > lengthss->size) {
if (lengthss->used + amount > F_array_length_t_size_d) {
if (!cells) return F_status_set_error(F_parameter);
#endif // _di_level_0_parameter_checking_
- if (!amount) {
- return F_data_not;
- }
+ if (!amount) return F_data_not;
if (cells->size - amount > 0) {
return private_f_cells_adjust(cells->size - amount, cells);
if (!cells) return F_status_set_error(F_parameter);
#endif // _di_level_0_parameter_checking_
- if (!amount) {
- return F_data_not;
- }
+ if (!amount) return F_data_not;
if (cells->size - amount > 0) {
return private_f_cells_resize(cells->size - amount, cells);
if (!cells) return F_status_set_error(F_parameter);
#endif // _di_level_0_parameter_checking_
- if (!amount) {
- return F_data_not;
- }
+ if (!amount) return F_data_not;
if (cells->used + amount > cells->size) {
if (cells->used + amount > F_array_length_t_size_d) {
if (!cellss) return F_status_set_error(F_parameter);
#endif // _di_level_0_parameter_checking_
- if (!amount) {
- return F_data_not;
- }
+ if (!amount) return F_data_not;
if (cellss->size - amount > 0) {
return private_f_cellss_adjust(cellss->size - amount, cellss);
if (!cellss) return F_status_set_error(F_parameter);
#endif // _di_level_0_parameter_checking_
- if (!amount) {
- return F_data_not;
- }
+ if (!amount) return F_data_not;
if (cellss->size - amount > 0) {
return private_f_cellss_resize(cellss->size - amount, cellss);
if (!cellss) return F_status_set_error(F_parameter);
#endif // _di_level_0_parameter_checking_
- if (!amount) {
- return F_data_not;
- }
+ if (!amount) return F_data_not;
if (cellss->used + amount > cellss->size) {
if (cellss->used + amount > F_array_length_t_size_d) {
if (!ids) return F_status_set_error(F_parameter);
#endif // _di_level_0_parameter_checking_
- if (!amount) {
- return F_data_not;
- }
+ if (!amount) return F_data_not;
if (ids->size - amount > 0) {
return private_f_fll_ids_adjust(ids->size - amount, ids);
if (!ids) return F_status_set_error(F_parameter);
#endif // _di_level_0_parameter_checking_
- if (!amount) {
- return F_data_not;
- }
+ if (!amount) return F_data_not;
if (ids->size - amount > 0) {
return private_f_fll_ids_resize(ids->size - amount, ids);
if (!ids) return F_status_set_error(F_parameter);
#endif // _di_level_0_parameter_checking_
- if (!amount) {
- return F_data_not;
- }
+ if (!amount) return F_data_not;
if (ids->used + amount > ids->size) {
if (ids->used + amount > F_array_length_t_size_d) {
if (!idss) return F_status_set_error(F_parameter);
#endif // _di_level_0_parameter_checking_
- if (!amount) {
- return F_data_not;
- }
+ if (!amount) return F_data_not;
if (idss->size - amount > 0) {
return private_f_fll_idss_adjust(idss->size - amount, idss);
if (!idss) return F_status_set_error(F_parameter);
#endif // _di_level_0_parameter_checking_
- if (!amount) {
- return F_data_not;
- }
+ if (!amount) return F_data_not;
if (idss->size - amount > 0) {
return private_f_fll_idss_resize(idss->size - amount, idss);
if (!idss) return F_status_set_error(F_parameter);
#endif // _di_level_0_parameter_checking_
- if (!amount) {
- return F_data_not;
- }
+ if (!amount) return F_data_not;
if (idss->used + amount > idss->size) {
if (idss->used + amount > F_array_length_t_size_d) {
if (!int128s) return F_status_set_error(F_parameter);
#endif // _di_level_0_parameter_checking_
- if (!amount) {
- return F_data_not;
- }
+ if (!amount) return F_data_not;
if (int128s->size - amount > 0) {
return private_f_int128s_adjust(int128s->size - amount, int128s);
if (!int128s) return F_status_set_error(F_parameter);
#endif // _di_level_0_parameter_checking_
- if (!amount) {
- return F_data_not;
- }
+ if (!amount) return F_data_not;
if (int128s->size - amount > 0) {
return private_f_int128s_resize(int128s->size - amount, int128s);
if (!int128s) return F_status_set_error(F_parameter);
#endif // _di_level_0_parameter_checking_
- if (!amount) {
- return F_data_not;
- }
+ if (!amount) return F_data_not;
if (int128s->used + amount > int128s->size) {
if (int128s->used + amount > F_array_length_t_size_d) {
if (!int128ss) return F_status_set_error(F_parameter);
#endif // _di_level_0_parameter_checking_
- if (!amount) {
- return F_data_not;
- }
+ if (!amount) return F_data_not;
if (int128ss->size - amount > 0) {
return private_f_int128ss_adjust(int128ss->size - amount, int128ss);
if (!int128ss) return F_status_set_error(F_parameter);
#endif // _di_level_0_parameter_checking_
- if (!amount) {
- return F_data_not;
- }
+ if (!amount) return F_data_not;
if (int128ss->size - amount > 0) {
return private_f_int128ss_resize(int128ss->size - amount, int128ss);
if (!int128ss) return F_status_set_error(F_parameter);
#endif // _di_level_0_parameter_checking_
- if (!amount) {
- return F_data_not;
- }
+ if (!amount) return F_data_not;
if (int128ss->used + amount > int128ss->size) {
if (int128ss->used + amount > F_array_length_t_size_d) {
if (!int16s) return F_status_set_error(F_parameter);
#endif // _di_level_0_parameter_checking_
- if (!amount) {
- return F_data_not;
- }
+ if (!amount) return F_data_not;
if (int16s->size - amount > 0) {
return private_f_int16s_adjust(int16s->size - amount, int16s);
if (!int16s) return F_status_set_error(F_parameter);
#endif // _di_level_0_parameter_checking_
- if (!amount) {
- return F_data_not;
- }
+ if (!amount) return F_data_not;
if (int16s->size - amount > 0) {
return private_f_int16s_resize(int16s->size - amount, int16s);
if (!int16s) return F_status_set_error(F_parameter);
#endif // _di_level_0_parameter_checking_
- if (!amount) {
- return F_data_not;
- }
+ if (!amount) return F_data_not;
if (int16s->used + amount > int16s->size) {
if (int16s->used + amount > F_array_length_t_size_d) {
if (!int16ss) return F_status_set_error(F_parameter);
#endif // _di_level_0_parameter_checking_
- if (!amount) {
- return F_data_not;
- }
+ if (!amount) return F_data_not;
if (int16ss->size - amount > 0) {
return private_f_int16ss_adjust(int16ss->size - amount, int16ss);
if (!int16ss) return F_status_set_error(F_parameter);
#endif // _di_level_0_parameter_checking_
- if (!amount) {
- return F_data_not;
- }
+ if (!amount) return F_data_not;
if (int16ss->size - amount > 0) {
return private_f_int16ss_resize(int16ss->size - amount, int16ss);
if (!int16ss) return F_status_set_error(F_parameter);
#endif // _di_level_0_parameter_checking_
- if (!amount) {
- return F_data_not;
- }
+ if (!amount) return F_data_not;
if (int16ss->used + amount > int16ss->size) {
if (int16ss->used + amount > F_array_length_t_size_d) {
if (!int32s) return F_status_set_error(F_parameter);
#endif // _di_level_0_parameter_checking_
- if (!amount) {
- return F_data_not;
- }
+ if (!amount) return F_data_not;
if (int32s->size - amount > 0) {
return private_f_int32s_adjust(int32s->size - amount, int32s);
if (!int32s) return F_status_set_error(F_parameter);
#endif // _di_level_0_parameter_checking_
- if (!amount) {
- return F_data_not;
- }
+ if (!amount) return F_data_not;
if (int32s->size - amount > 0) {
return private_f_int32s_resize(int32s->size - amount, int32s);
if (!int32s) return F_status_set_error(F_parameter);
#endif // _di_level_0_parameter_checking_
- if (!amount) {
- return F_data_not;
- }
+ if (!amount) return F_data_not;
if (int32s->used + amount > int32s->size) {
if (int32s->used + amount > F_array_length_t_size_d) {
if (!int32ss) return F_status_set_error(F_parameter);
#endif // _di_level_0_parameter_checking_
- if (!amount) {
- return F_data_not;
- }
+ if (!amount) return F_data_not;
if (int32ss->size - amount > 0) {
return private_f_int32ss_adjust(int32ss->size - amount, int32ss);
if (!int32ss) return F_status_set_error(F_parameter);
#endif // _di_level_0_parameter_checking_
- if (!amount) {
- return F_data_not;
- }
+ if (!amount) return F_data_not;
if (int32ss->size - amount > 0) {
return private_f_int32ss_resize(int32ss->size - amount, int32ss);
if (!int32ss) return F_status_set_error(F_parameter);
#endif // _di_level_0_parameter_checking_
- if (!amount) {
- return F_data_not;
- }
+ if (!amount) return F_data_not;
if (int32ss->used + amount > int32ss->size) {
if (int32ss->used + amount > F_array_length_t_size_d) {
if (!int64s) return F_status_set_error(F_parameter);
#endif // _di_level_0_parameter_checking_
- if (!amount) {
- return F_data_not;
- }
+ if (!amount) return F_data_not;
if (int64s->size - amount > 0) {
return private_f_int64s_adjust(int64s->size - amount, int64s);
if (!int64s) return F_status_set_error(F_parameter);
#endif // _di_level_0_parameter_checking_
- if (!amount) {
- return F_data_not;
- }
+ if (!amount) return F_data_not;
if (int64s->size - amount > 0) {
return private_f_int64s_resize(int64s->size - amount, int64s);
if (!int64s) return F_status_set_error(F_parameter);
#endif // _di_level_0_parameter_checking_
- if (!amount) {
- return F_data_not;
- }
+ if (!amount) return F_data_not;
if (int64s->used + amount > int64s->size) {
if (int64s->used + amount > F_array_length_t_size_d) {
if (!int64ss) return F_status_set_error(F_parameter);
#endif // _di_level_0_parameter_checking_
- if (!amount) {
- return F_data_not;
- }
+ if (!amount) return F_data_not;
if (int64ss->size - amount > 0) {
return private_f_int64ss_adjust(int64ss->size - amount, int64ss);
if (!int64ss) return F_status_set_error(F_parameter);
#endif // _di_level_0_parameter_checking_
- if (!amount) {
- return F_data_not;
- }
+ if (!amount) return F_data_not;
if (int64ss->size - amount > 0) {
return private_f_int64ss_resize(int64ss->size - amount, int64ss);
if (!int64ss) return F_status_set_error(F_parameter);
#endif // _di_level_0_parameter_checking_
- if (!amount) {
- return F_data_not;
- }
+ if (!amount) return F_data_not;
if (int64ss->used + amount > int64ss->size) {
if (int64ss->used + amount > F_array_length_t_size_d) {
if (!int8s) return F_status_set_error(F_parameter);
#endif // _di_level_0_parameter_checking_
- if (!amount) {
- return F_data_not;
- }
+ if (!amount) return F_data_not;
if (int8s->size - amount > 0) {
return private_f_int8s_adjust(int8s->size - amount, int8s);
if (!int8s) return F_status_set_error(F_parameter);
#endif // _di_level_0_parameter_checking_
- if (!amount) {
- return F_data_not;
- }
+ if (!amount) return F_data_not;
if (int8s->size - amount > 0) {
return private_f_int8s_resize(int8s->size - amount, int8s);
if (!int8s) return F_status_set_error(F_parameter);
#endif // _di_level_0_parameter_checking_
- if (!amount) {
- return F_data_not;
- }
+ if (!amount) return F_data_not;
if (int8s->used + amount > int8s->size) {
if (int8s->used + amount > F_array_length_t_size_d) {
if (!int8ss) return F_status_set_error(F_parameter);
#endif // _di_level_0_parameter_checking_
- if (!amount) {
- return F_data_not;
- }
+ if (!amount) return F_data_not;
if (int8ss->size - amount > 0) {
return private_f_int8ss_adjust(int8ss->size - amount, int8ss);
if (!int8ss) return F_status_set_error(F_parameter);
#endif // _di_level_0_parameter_checking_
- if (!amount) {
- return F_data_not;
- }
+ if (!amount) return F_data_not;
if (int8ss->size - amount > 0) {
return private_f_int8ss_resize(int8ss->size - amount, int8ss);
if (!int8ss) return F_status_set_error(F_parameter);
#endif // _di_level_0_parameter_checking_
- if (!amount) {
- return F_data_not;
- }
+ if (!amount) return F_data_not;
if (int8ss->used + amount > int8ss->size) {
if (int8ss->used + amount > F_array_length_t_size_d) {
if (!states) return F_status_set_error(F_parameter);
#endif // _di_level_0_parameter_checking_
- if (!amount) {
- return F_data_not;
- }
+ if (!amount) return F_data_not;
if (states->size - amount > 0) {
return private_f_states_adjust(states->size - amount, states);
if (!states) return F_status_set_error(F_parameter);
#endif // _di_level_0_parameter_checking_
- if (!amount) {
- return F_data_not;
- }
+ if (!amount) return F_data_not;
if (states->size - amount > 0) {
return private_f_states_resize(states->size - amount, states);
if (!states) return F_status_set_error(F_parameter);
#endif // _di_level_0_parameter_checking_
- if (!amount) {
- return F_data_not;
- }
+ if (!amount) return F_data_not;
if (states->used + amount > states->size) {
if (states->used + amount > F_array_length_t_size_d) {
if (!statess) return F_status_set_error(F_parameter);
#endif // _di_level_0_parameter_checking_
- if (!amount) {
- return F_data_not;
- }
+ if (!amount) return F_data_not;
if (statess->size - amount > 0) {
return private_f_statess_adjust(statess->size - amount, statess);
if (!statess) return F_status_set_error(F_parameter);
#endif // _di_level_0_parameter_checking_
- if (!amount) {
- return F_data_not;
- }
+ if (!amount) return F_data_not;
if (statess->size - amount > 0) {
return private_f_statess_resize(statess->size - amount, statess);
if (!statess) return F_status_set_error(F_parameter);
#endif // _di_level_0_parameter_checking_
- if (!amount) {
- return F_data_not;
- }
+ if (!amount) return F_data_not;
if (statess->used + amount > statess->size) {
if (statess->used + amount > F_array_length_t_size_d) {
if (!statuss) return F_status_set_error(F_parameter);
#endif // _di_level_0_parameter_checking_
- if (!amount) {
- return F_data_not;
- }
+ if (!amount) return F_data_not;
if (statuss->size - amount > 0) {
return private_f_statuss_adjust(statuss->size - amount, statuss);
if (!statuss) return F_status_set_error(F_parameter);
#endif // _di_level_0_parameter_checking_
- if (!amount) {
- return F_data_not;
- }
+ if (!amount) return F_data_not;
if (statuss->size - amount > 0) {
return private_f_statuss_resize(statuss->size - amount, statuss);
if (!statuss) return F_status_set_error(F_parameter);
#endif // _di_level_0_parameter_checking_
- if (!amount) {
- return F_data_not;
- }
+ if (!amount) return F_data_not;
if (statuss->used + amount > statuss->size) {
if (statuss->used + amount > F_array_length_t_size_d) {
if (!statusss) return F_status_set_error(F_parameter);
#endif // _di_level_0_parameter_checking_
- if (!amount) {
- return F_data_not;
- }
+ if (!amount) return F_data_not;
if (statusss->size - amount > 0) {
return private_f_statusss_adjust(statusss->size - amount, statusss);
if (!statusss) return F_status_set_error(F_parameter);
#endif // _di_level_0_parameter_checking_
- if (!amount) {
- return F_data_not;
- }
+ if (!amount) return F_data_not;
if (statusss->size - amount > 0) {
return private_f_statusss_resize(statusss->size - amount, statusss);
if (!statusss) return F_status_set_error(F_parameter);
#endif // _di_level_0_parameter_checking_
- if (!amount) {
- return F_data_not;
- }
+ if (!amount) return F_data_not;
if (statusss->used + amount > statusss->size) {
if (statusss->used + amount > F_array_length_t_size_d) {
if (!uint128s) return F_status_set_error(F_parameter);
#endif // _di_level_0_parameter_checking_
- if (!amount) {
- return F_data_not;
- }
+ if (!amount) return F_data_not;
if (uint128s->size - amount > 0) {
return private_f_uint128s_adjust(uint128s->size - amount, uint128s);
if (!uint128s) return F_status_set_error(F_parameter);
#endif // _di_level_0_parameter_checking_
- if (!amount) {
- return F_data_not;
- }
+ if (!amount) return F_data_not;
if (uint128s->size - amount > 0) {
return private_f_uint128s_resize(uint128s->size - amount, uint128s);
if (!uint128s) return F_status_set_error(F_parameter);
#endif // _di_level_0_parameter_checking_
- if (!amount) {
- return F_data_not;
- }
+ if (!amount) return F_data_not;
if (uint128s->used + amount > uint128s->size) {
if (uint128s->used + amount > F_array_length_t_size_d) {
if (!uint128ss) return F_status_set_error(F_parameter);
#endif // _di_level_0_parameter_checking_
- if (!amount) {
- return F_data_not;
- }
+ if (!amount) return F_data_not;
if (uint128ss->size - amount > 0) {
return private_f_uint128ss_adjust(uint128ss->size - amount, uint128ss);
if (!uint128ss) return F_status_set_error(F_parameter);
#endif // _di_level_0_parameter_checking_
- if (!amount) {
- return F_data_not;
- }
+ if (!amount) return F_data_not;
if (uint128ss->size - amount > 0) {
return private_f_uint128ss_resize(uint128ss->size - amount, uint128ss);
if (!uint128ss) return F_status_set_error(F_parameter);
#endif // _di_level_0_parameter_checking_
- if (!amount) {
- return F_data_not;
- }
+ if (!amount) return F_data_not;
if (uint128ss->used + amount > uint128ss->size) {
if (uint128ss->used + amount > F_array_length_t_size_d) {
if (!uint16s) return F_status_set_error(F_parameter);
#endif // _di_level_0_parameter_checking_
- if (!amount) {
- return F_data_not;
- }
+ if (!amount) return F_data_not;
if (uint16s->size - amount > 0) {
return private_f_uint16s_adjust(uint16s->size - amount, uint16s);
if (!uint16s) return F_status_set_error(F_parameter);
#endif // _di_level_0_parameter_checking_
- if (!amount) {
- return F_data_not;
- }
+ if (!amount) return F_data_not;
if (uint16s->size - amount > 0) {
return private_f_uint16s_resize(uint16s->size - amount, uint16s);
if (!uint16s) return F_status_set_error(F_parameter);
#endif // _di_level_0_parameter_checking_
- if (!amount) {
- return F_data_not;
- }
+ if (!amount) return F_data_not;
if (uint16s->used + amount > uint16s->size) {
if (uint16s->used + amount > F_array_length_t_size_d) {
if (!uint16ss) return F_status_set_error(F_parameter);
#endif // _di_level_0_parameter_checking_
- if (!amount) {
- return F_data_not;
- }
+ if (!amount) return F_data_not;
if (uint16ss->size - amount > 0) {
return private_f_uint16ss_adjust(uint16ss->size - amount, uint16ss);
if (!uint16ss) return F_status_set_error(F_parameter);
#endif // _di_level_0_parameter_checking_
- if (!amount) {
- return F_data_not;
- }
+ if (!amount) return F_data_not;
if (uint16ss->size - amount > 0) {
return private_f_uint16ss_resize(uint16ss->size - amount, uint16ss);
if (!uint16ss) return F_status_set_error(F_parameter);
#endif // _di_level_0_parameter_checking_
- if (!amount) {
- return F_data_not;
- }
+ if (!amount) return F_data_not;
if (uint16ss->used + amount > uint16ss->size) {
if (uint16ss->used + amount > F_array_length_t_size_d) {
if (!uint32s) return F_status_set_error(F_parameter);
#endif // _di_level_0_parameter_checking_
- if (!amount) {
- return F_data_not;
- }
+ if (!amount) return F_data_not;
if (uint32s->size - amount > 0) {
return private_f_uint32s_adjust(uint32s->size - amount, uint32s);
if (!uint32s) return F_status_set_error(F_parameter);
#endif // _di_level_0_parameter_checking_
- if (!amount) {
- return F_data_not;
- }
+ if (!amount) return F_data_not;
if (uint32s->size - amount > 0) {
return private_f_uint32s_resize(uint32s->size - amount, uint32s);
if (!uint32s) return F_status_set_error(F_parameter);
#endif // _di_level_0_parameter_checking_
- if (!amount) {
- return F_data_not;
- }
+ if (!amount) return F_data_not;
if (uint32s->used + amount > uint32s->size) {
if (uint32s->used + amount > F_array_length_t_size_d) {
if (!uint32ss) return F_status_set_error(F_parameter);
#endif // _di_level_0_parameter_checking_
- if (!amount) {
- return F_data_not;
- }
+ if (!amount) return F_data_not;
if (uint32ss->size - amount > 0) {
return private_f_uint32ss_adjust(uint32ss->size - amount, uint32ss);
if (!uint32ss) return F_status_set_error(F_parameter);
#endif // _di_level_0_parameter_checking_
- if (!amount) {
- return F_data_not;
- }
+ if (!amount) return F_data_not;
if (uint32ss->size - amount > 0) {
return private_f_uint32ss_resize(uint32ss->size - amount, uint32ss);
if (!uint32ss) return F_status_set_error(F_parameter);
#endif // _di_level_0_parameter_checking_
- if (!amount) {
- return F_data_not;
- }
+ if (!amount) return F_data_not;
if (uint32ss->used + amount > uint32ss->size) {
if (uint32ss->used + amount > F_array_length_t_size_d) {
if (!uint64s) return F_status_set_error(F_parameter);
#endif // _di_level_0_parameter_checking_
- if (!amount) {
- return F_data_not;
- }
+ if (!amount) return F_data_not;
if (uint64s->size - amount > 0) {
return private_f_uint64s_adjust(uint64s->size - amount, uint64s);
if (!uint64s) return F_status_set_error(F_parameter);
#endif // _di_level_0_parameter_checking_
- if (!amount) {
- return F_data_not;
- }
+ if (!amount) return F_data_not;
if (uint64s->size - amount > 0) {
return private_f_uint64s_resize(uint64s->size - amount, uint64s);
if (!uint64s) return F_status_set_error(F_parameter);
#endif // _di_level_0_parameter_checking_
- if (!amount) {
- return F_data_not;
- }
+ if (!amount) return F_data_not;
if (uint64s->used + amount > uint64s->size) {
if (uint64s->used + amount > F_array_length_t_size_d) {
if (!uint64ss) return F_status_set_error(F_parameter);
#endif // _di_level_0_parameter_checking_
- if (!amount) {
- return F_data_not;
- }
+ if (!amount) return F_data_not;
if (uint64ss->size - amount > 0) {
return private_f_uint64ss_adjust(uint64ss->size - amount, uint64ss);
if (!uint64ss) return F_status_set_error(F_parameter);
#endif // _di_level_0_parameter_checking_
- if (!amount) {
- return F_data_not;
- }
+ if (!amount) return F_data_not;
if (uint64ss->size - amount > 0) {
return private_f_uint64ss_resize(uint64ss->size - amount, uint64ss);
if (!uint64ss) return F_status_set_error(F_parameter);
#endif // _di_level_0_parameter_checking_
- if (!amount) {
- return F_data_not;
- }
+ if (!amount) return F_data_not;
if (uint64ss->used + amount > uint64ss->size) {
if (uint64ss->used + amount > F_array_length_t_size_d) {
if (!uint8s) return F_status_set_error(F_parameter);
#endif // _di_level_0_parameter_checking_
- if (!amount) {
- return F_data_not;
- }
+ if (!amount) return F_data_not;
if (uint8s->size - amount > 0) {
return private_f_uint8s_adjust(uint8s->size - amount, uint8s);
if (!uint8s) return F_status_set_error(F_parameter);
#endif // _di_level_0_parameter_checking_
- if (!amount) {
- return F_data_not;
- }
+ if (!amount) return F_data_not;
if (uint8s->size - amount > 0) {
return private_f_uint8s_resize(uint8s->size - amount, uint8s);
if (!uint8s) return F_status_set_error(F_parameter);
#endif // _di_level_0_parameter_checking_
- if (!amount) {
- return F_data_not;
- }
+ if (!amount) return F_data_not;
if (uint8s->used + amount > uint8s->size) {
if (uint8s->used + amount > F_array_length_t_size_d) {
if (!uint8ss) return F_status_set_error(F_parameter);
#endif // _di_level_0_parameter_checking_
- if (!amount) {
- return F_data_not;
- }
+ if (!amount) return F_data_not;
if (uint8ss->size - amount > 0) {
return private_f_uint8ss_adjust(uint8ss->size - amount, uint8ss);
if (!uint8ss) return F_status_set_error(F_parameter);
#endif // _di_level_0_parameter_checking_
- if (!amount) {
- return F_data_not;
- }
+ if (!amount) return F_data_not;
if (uint8ss->size - amount > 0) {
return private_f_uint8ss_resize(uint8ss->size - amount, uint8ss);
if (!uint8ss) return F_status_set_error(F_parameter);
#endif // _di_level_0_parameter_checking_
- if (!amount) {
- return F_data_not;
- }
+ if (!amount) return F_data_not;
if (uint8ss->used + amount > uint8ss->size) {
if (uint8ss->used + amount > F_array_length_t_size_d) {
extern "C" {
#endif
-#if !defined(_di_f_utf_char_to_character_) || !defined(_di_f_utf_is_alphabeticbetic_) || !defined(_di_f_utf_is_alphabeticbetic_digit_) || !defined(_di_f_utf_is_alphabeticbetic_numeric_) || !defined(_di_f_utf_is_ascii_) || !defined(_di_f_utf_is_combining_) || !defined(_di_f_utf_is_control_) || !defined(_di_f_utf_is_control_picture_) || !defined(_di_f_utf_is_digit_) || !defined(_di_f_utf_is_emoji_) || !defined(_di_f_utf_is_graph_) || !defined(_di_f_utf_is_numeric_) || !defined(_di_f_utf_is_phonetic_) || !defined(_di_f_utf_is_private_) || !defined(_di_f_utf_is_punctuation_) || !defined(_di_f_utf_is_surrogate_) || !defined(_di_f_utf_is_symbol_) || !defined(_di_f_utf_is_unassigned_) || !defined(_di_f_utf_is_valid_) || !defined(_di_f_utf_is_whitespace_) || !defined(_di_f_utf_is_whitespace_modifier_) || !defined(_di_f_utf_is_whitespace_other_) || !defined(_di_f_utf_is_wide_) || !defined(_di_f_utf_is_word_) || !defined(_di_f_utf_is_word_dash_) || !defined(_di_f_utf_is_word_dash_plus_) || !defined(_di_f_utf_is_zero_width_) || !defined(f_utf_unicode_to)
+#if !defined(_di_f_utf_char_to_character_) || !defined(_di_f_utf_is_alphabetic_) || !defined(_di_f_utf_is_alphabetic_digit_) || !defined(_di_f_utf_is_alphabetic_numeric_) || !defined(_di_f_utf_is_ascii_) || !defined(_di_f_utf_is_combining_) || !defined(_di_f_utf_is_control_) || !defined(_di_f_utf_is_control_picture_) || !defined(_di_f_utf_is_digit_) || !defined(_di_f_utf_is_emoji_) || !defined(_di_f_utf_is_graph_) || !defined(_di_f_utf_is_numeric_) || !defined(_di_f_utf_is_phonetic_) || !defined(_di_f_utf_is_private_) || !defined(_di_f_utf_is_punctuation_) || !defined(_di_f_utf_is_surrogate_) || !defined(_di_f_utf_is_symbol_) || !defined(_di_f_utf_is_unassigned_) || !defined(_di_f_utf_is_valid_) || !defined(_di_f_utf_is_whitespace_) || !defined(_di_f_utf_is_whitespace_modifier_) || !defined(_di_f_utf_is_whitespace_other_) || !defined(_di_f_utf_is_wide_) || !defined(_di_f_utf_is_word_) || !defined(_di_f_utf_is_word_dash_) || !defined(_di_f_utf_is_word_dash_plus_) || !defined(_di_f_utf_is_zero_width_) || !defined(f_utf_unicode_to)
f_status_t private_f_utf_char_to_character(const f_string_t character, const f_array_length_t width_max, f_utf_char_t *character_utf) {
if (!macro_f_utf_byte_width_is(*character)) {
return F_none;
}
-#endif // !defined(_di_f_utf_char_to_character_) || !defined(_di_f_utf_is_alphabeticbetic_) || !defined(_di_f_utf_is_alphabeticbetic_digit_) || !defined(_di_f_utf_is_alphabeticbetic_numeric_) || !defined(_di_f_utf_is_ascii_) || !defined(_di_f_utf_is_combining_) || !defined(_di_f_utf_is_control_) || !defined(_di_f_utf_is_control_picture_) || !defined(_di_f_utf_is_digit_) || !defined(_di_f_utf_is_emoji_) || !defined(_di_f_utf_is_graph_) || !defined(_di_f_utf_is_numeric_) || !defined(_di_f_utf_is_phonetic_) || !defined(_di_f_utf_is_private_) || !defined(_di_f_utf_is_punctuation_) || !defined(_di_f_utf_is_surrogate_) || !defined(_di_f_utf_is_symbol_) || !defined(_di_f_utf_is_unassigned_) || !defined(_di_f_utf_is_valid_) || !defined(_di_f_utf_is_whitespace_) || !defined(_di_f_utf_is_whitespace_modifier_) || !defined(_di_f_utf_is_whitespace_other_) || !defined(_di_f_utf_is_wide_) || !defined(_di_f_utf_is_word_) || !defined(_di_f_utf_is_word_dash_) || !defined(_di_f_utf_is_word_dash_plus_) || !defined(_di_f_utf_is_zero_width_) || !defined(f_utf_unicode_to)
+#endif // !defined(_di_f_utf_char_to_character_) || !defined(_di_f_utf_is_alphabetic_) || !defined(_di_f_utf_is_alphabetic_digit_) || !defined(_di_f_utf_is_alphabetic_numeric_) || !defined(_di_f_utf_is_ascii_) || !defined(_di_f_utf_is_combining_) || !defined(_di_f_utf_is_control_) || !defined(_di_f_utf_is_control_picture_) || !defined(_di_f_utf_is_digit_) || !defined(_di_f_utf_is_emoji_) || !defined(_di_f_utf_is_graph_) || !defined(_di_f_utf_is_numeric_) || !defined(_di_f_utf_is_phonetic_) || !defined(_di_f_utf_is_private_) || !defined(_di_f_utf_is_punctuation_) || !defined(_di_f_utf_is_surrogate_) || !defined(_di_f_utf_is_symbol_) || !defined(_di_f_utf_is_unassigned_) || !defined(_di_f_utf_is_valid_) || !defined(_di_f_utf_is_whitespace_) || !defined(_di_f_utf_is_whitespace_modifier_) || !defined(_di_f_utf_is_whitespace_other_) || !defined(_di_f_utf_is_wide_) || !defined(_di_f_utf_is_word_) || !defined(_di_f_utf_is_word_dash_) || !defined(_di_f_utf_is_word_dash_plus_) || !defined(_di_f_utf_is_zero_width_) || !defined(f_utf_unicode_to)
#if !defined(_di_f_utf_unicode_to_) || !defined(_di_f_utf_character_unicode_to_)
f_status_t private_f_utf_character_unicode_to(const f_utf_char_t character, uint32_t *unicode) {
* @see f_utf_character_is_valid()
* @see f_utf_is_valid()
* @see f_utf_is_alphabetic()
- * @see f_utf_is_alphabeticbetic_digit()
- * @see f_utf_is_alphabeticbetic_numeric()
+ * @see f_utf_is_alphabetic_digit()
+ * @see f_utf_is_alphabetic_numeric()
* @see f_utf_is_ascii()
* @see f_utf_is_combining()
* @see f_utf_is_control()
* @see f_utf_is_zero_width()
* @see f_utf_unicode_to()
*/
-#if !defined(_di_f_utf_char_to_character_) || !defined(_di_f_utf_is_alphabeticbetic_) || !defined(_di_f_utf_is_alphabeticbetic_digit_) || !defined(_di_f_utf_is_alphabeticbetic_numeric_) || !defined(_di_f_utf_is_ascii_) || !defined(_di_f_utf_is_combining_) || !defined(_di_f_utf_is_control_) || !defined(_di_f_utf_is_control_picture_) || !defined(_di_f_utf_is_digit_) || !defined(_di_f_utf_is_emoji_) || !defined(_di_f_utf_is_graph_) || !defined(_di_f_utf_is_numeric_) || !defined(_di_f_utf_is_phonetic_) || !defined(_di_f_utf_is_private_) || !defined(_di_f_utf_is_punctuation_) || !defined(_di_f_utf_is_surrogate_) || !defined(_di_f_utf_is_symbol_) || !defined(_di_f_utf_is_unassigned_) || !defined(_di_f_utf_is_valid_) || !defined(_di_f_utf_is_whitespace_) || !defined(_di_f_utf_is_whitespace_modifier_) || !defined(_di_f_utf_is_whitespace_other_) || !defined(_di_f_utf_is_wide_) || !defined(_di_f_utf_is_word_) || !defined(_di_f_utf_is_word_dash_) || !defined(_di_f_utf_is_word_dash_plus_) || !defined(_di_f_utf_is_zero_width_) || !defined(f_utf_unicode_to)
+#if !defined(_di_f_utf_char_to_character_) || !defined(_di_f_utf_is_alphabetic_) || !defined(_di_f_utf_is_alphabetic_digit_) || !defined(_di_f_utf_is_alphabetic_numeric_) || !defined(_di_f_utf_is_ascii_) || !defined(_di_f_utf_is_combining_) || !defined(_di_f_utf_is_control_) || !defined(_di_f_utf_is_control_picture_) || !defined(_di_f_utf_is_digit_) || !defined(_di_f_utf_is_emoji_) || !defined(_di_f_utf_is_graph_) || !defined(_di_f_utf_is_numeric_) || !defined(_di_f_utf_is_phonetic_) || !defined(_di_f_utf_is_private_) || !defined(_di_f_utf_is_punctuation_) || !defined(_di_f_utf_is_surrogate_) || !defined(_di_f_utf_is_symbol_) || !defined(_di_f_utf_is_unassigned_) || !defined(_di_f_utf_is_valid_) || !defined(_di_f_utf_is_whitespace_) || !defined(_di_f_utf_is_whitespace_modifier_) || !defined(_di_f_utf_is_whitespace_other_) || !defined(_di_f_utf_is_wide_) || !defined(_di_f_utf_is_word_) || !defined(_di_f_utf_is_word_dash_) || !defined(_di_f_utf_is_word_dash_plus_) || !defined(_di_f_utf_is_zero_width_) || !defined(f_utf_unicode_to)
extern f_status_t private_f_utf_char_to_character(const f_string_t character, const f_array_length_t width_max, f_utf_char_t *character_utf) F_attribute_visibility_internal_d;
-#endif // !defined(_di_f_utf_char_to_character_) || !defined(_di_f_utf_is_alphabeticbetic_) || !defined(_di_f_utf_is_alphabeticbetic_digit_) || !defined(_di_f_utf_is_alphabeticbetic_numeric_) || !defined(_di_f_utf_is_ascii_) || !defined(_di_f_utf_is_combining_) || !defined(_di_f_utf_is_control_) || !defined(_di_f_utf_is_control_picture_) || !defined(_di_f_utf_is_digit_) || !defined(_di_f_utf_is_emoji_) || !defined(_di_f_utf_is_graph_) || !defined(_di_f_utf_is_numeric_) || !defined(_di_f_utf_is_phonetic_) || !defined(_di_f_utf_is_private_) || !defined(_di_f_utf_is_punctuation_) || !defined(_di_f_utf_is_surrogate_) || !defined(_di_f_utf_is_symbol_) || !defined(_di_f_utf_is_unassigned_) || !defined(_di_f_utf_is_valid_) || !defined(_di_f_utf_is_whitespace_) || !defined(_di_f_utf_is_whitespace_modifier_) || !defined(_di_f_utf_is_whitespace_other_) || !defined(_di_f_utf_is_wide_) || !defined(_di_f_utf_is_word_) || !defined(_di_f_utf_is_word_dash_) || !defined(_di_f_utf_is_word_dash_plus_) || !defined(_di_f_utf_is_zero_width_) || !defined(f_utf_unicode_to)
+#endif // !defined(_di_f_utf_char_to_character_) || !defined(_di_f_utf_is_alphabetic_) || !defined(_di_f_utf_is_alphabetic_digit_) || !defined(_di_f_utf_is_alphabetic_numeric_) || !defined(_di_f_utf_is_ascii_) || !defined(_di_f_utf_is_combining_) || !defined(_di_f_utf_is_control_) || !defined(_di_f_utf_is_control_picture_) || !defined(_di_f_utf_is_digit_) || !defined(_di_f_utf_is_emoji_) || !defined(_di_f_utf_is_graph_) || !defined(_di_f_utf_is_numeric_) || !defined(_di_f_utf_is_phonetic_) || !defined(_di_f_utf_is_private_) || !defined(_di_f_utf_is_punctuation_) || !defined(_di_f_utf_is_surrogate_) || !defined(_di_f_utf_is_symbol_) || !defined(_di_f_utf_is_unassigned_) || !defined(_di_f_utf_is_valid_) || !defined(_di_f_utf_is_whitespace_) || !defined(_di_f_utf_is_whitespace_modifier_) || !defined(_di_f_utf_is_whitespace_other_) || !defined(_di_f_utf_is_wide_) || !defined(_di_f_utf_is_word_) || !defined(_di_f_utf_is_word_dash_) || !defined(_di_f_utf_is_word_dash_plus_) || !defined(_di_f_utf_is_zero_width_) || !defined(f_utf_unicode_to)
/**
* Private implementation of f_utf_character_is_zero_width().
extern "C" {
#endif
-#if !defined(_di_f_utf_character_is_alphabetic_) || !defined(_di_f_utf_is_alphabeticbetic_)
+#if !defined(_di_f_utf_character_is_alphabetic_) || !defined(_di_f_utf_is_alphabetic_)
f_status_t private_f_utf_character_is_alphabetic(const f_utf_char_t character) {
if (private_f_utf_character_is_zero_width(character)) {
return F_true;
}
-#endif // !defined(_di_f_utf_character_is_alphabetic_) || !defined(_di_f_utf_is_alphabeticbetic_)
+#endif // !defined(_di_f_utf_character_is_alphabetic_) || !defined(_di_f_utf_is_alphabetic_)
-#if !defined(_di_f_utf_character_is_alphabetic_digit_) || !defined(_di_f_utf_is_alphabeticbetic_digit_)
+#if !defined(_di_f_utf_character_is_alphabetic_digit_) || !defined(_di_f_utf_is_alphabetic_digit_)
f_status_t private_f_utf_character_is_alphabetic_digit(const f_utf_char_t character) {
if (private_f_utf_character_is_digit(character)) {
return F_false;
}
-#endif // !defined(_di_f_utf_character_is_alphabetic_digit_) || !defined(_di_f_utf_is_alphabeticbetic_digit_)
+#endif // !defined(_di_f_utf_character_is_alphabetic_digit_) || !defined(_di_f_utf_is_alphabetic_digit_)
-#if !defined(_di_f_utf_character_is_alphabetic_numeric_) || !defined(_di_f_utf_is_alphabeticbetic_numeric_)
+#if !defined(_di_f_utf_character_is_alphabetic_numeric_) || !defined(_di_f_utf_is_alphabetic_numeric_)
f_status_t private_f_utf_character_is_alphabetic_numeric(const f_utf_char_t character) {
if (private_f_utf_character_is_numeric(character)) {
return F_false;
}
-#endif // !defined(_di_f_utf_character_is_alphabetic_numeric_) || !defined(_di_f_utf_is_alphabeticbetic_numeric_)
+#endif // !defined(_di_f_utf_character_is_alphabetic_numeric_) || !defined(_di_f_utf_is_alphabetic_numeric_)
#ifdef __cplusplus
} // extern "C"
#endif
/**
- * Private implementation of f_utf_character_is_alpha().
+ * Private implementation of f_utf_character_is_alphabetic().
*
* Intended to be shared to each of the different implementation variations.
*
* F_utf_fragment (with error bit) if character is a UTF-8 fragment.
* F_utf_not (with error bit) if unicode is an invalid Unicode character.
*
- * @see f_utf_character_is_alpha()
+ * @see f_utf_character_is_alphabetic()
* @see f_utf_is_alphabetic()
*/
-#if !defined(_di_f_utf_character_is_alphabetic_) || !defined(_di_f_utf_is_alphabeticbetic_)
+#if !defined(_di_f_utf_character_is_alphabetic_) || !defined(_di_f_utf_is_alphabetic_)
extern f_status_t private_f_utf_character_is_alphabetic(const f_utf_char_t character) F_attribute_visibility_internal_d;
-#endif // !defined(_di_f_utf_character_is_alphabetic_) || !defined(_di_f_utf_is_alphabeticbetic_)
+#endif // !defined(_di_f_utf_character_is_alphabetic_) || !defined(_di_f_utf_is_alphabetic_)
/**
* Private implementation of f_utf_character_is_alphabetic_digit().
* F_utf_not (with error bit) if unicode is an invalid Unicode character.
*
* @see f_utf_character_is_alphabetic_digit()
- * @see f_utf_is_alphabeticbetic_digit()
+ * @see f_utf_is_alphabetic_digit()
*/
-#if !defined(_di_f_utf_character_is_alphabetic_digit_) || !defined(_di_f_utf_is_alphabeticbetic_digit_)
+#if !defined(_di_f_utf_character_is_alphabetic_digit_) || !defined(_di_f_utf_is_alphabetic_digit_)
extern f_status_t private_f_utf_character_is_alphabetic_digit(const f_utf_char_t character) F_attribute_visibility_internal_d;
-#endif // !defined(_di_f_utf_character_is_alphabetic_digit_) || !defined(_di_f_utf_is_alphabeticbetic_digit_)
+#endif // !defined(_di_f_utf_character_is_alphabetic_digit_) || !defined(_di_f_utf_is_alphabetic_digit_)
/**
* Private implementation of f_utf_character_is_alphabetic_numeric().
* F_utf_not (with error bit) if unicode is an invalid Unicode character.
*
* @see f_utf_character_is_alphabetic_numeric()
- * @see f_utf_is_alphabeticbetic_numeric()
+ * @see f_utf_is_alphabetic_numeric()
*/
-#if !defined(_di_f_utf_character_is_alphabetic_numeric_) || !defined(_di_f_utf_is_alphabeticbetic_numeric_)
+#if !defined(_di_f_utf_character_is_alphabetic_numeric_) || !defined(_di_f_utf_is_alphabetic_numeric_)
extern f_status_t private_f_utf_character_is_alphabetic_numeric(const f_utf_char_t character) F_attribute_visibility_internal_d;
-#endif // !defined(_di_f_utf_character_is_alphabetic_numeric_) || !defined(_di_f_utf_is_alphabeticbetic_numeric_)
+#endif // !defined(_di_f_utf_character_is_alphabetic_numeric_) || !defined(_di_f_utf_is_alphabetic_numeric_)
#ifdef __cplusplus
} // extern "C"
}
#endif // _di_f_utf_is_
-#ifndef _di_f_utf_is_alphabeticbetic_
+#ifndef _di_f_utf_is_alphabetic_
f_status_t f_utf_is_alphabetic(const f_string_t character, const f_array_length_t width_max) {
#ifndef _di_level_0_parameter_checking_
if (width_max < 1) return F_status_set_error(F_parameter);
return F_false;
}
-#endif // _di_f_utf_is_alphabeticbetic_
+#endif // _di_f_utf_is_alphabetic_
-#ifndef _di_f_utf_is_alphabeticbetic_digit_
- f_status_t f_utf_is_alphabeticbetic_digit(const f_string_t character, const f_array_length_t width_max) {
+#ifndef _di_f_utf_is_alphabetic_digit_
+ f_status_t f_utf_is_alphabetic_digit(const f_string_t character, const f_array_length_t width_max) {
#ifndef _di_level_0_parameter_checking_
if (width_max < 1) return F_status_set_error(F_parameter);
#endif // _di_level_0_parameter_checking_
return F_false;
}
-#endif // _di_f_utf_is_alphabeticbetic_digit_
+#endif // _di_f_utf_is_alphabetic_digit_
-#ifndef _di_f_utf_is_alphabeticbetic_numeric_
- f_status_t f_utf_is_alphabeticbetic_numeric(const f_string_t character, const f_array_length_t width_max) {
+#ifndef _di_f_utf_is_alphabetic_numeric_
+ f_status_t f_utf_is_alphabetic_numeric(const f_string_t character, const f_array_length_t width_max) {
#ifndef _di_level_0_parameter_checking_
if (width_max < 1) return F_status_set_error(F_parameter);
#endif // _di_level_0_parameter_checking_
return F_false;
}
-#endif // _di_f_utf_is_alphabeticbetic_numeric_
+#endif // _di_f_utf_is_alphabetic_numeric_
#ifndef _di_f_utf_is_ascii_
f_status_t f_utf_is_ascii(const f_string_t character, const f_array_length_t width_max) {
*
* @see isalpha()
*/
-#ifndef _di_f_utf_is_alphabeticbetic_
+#ifndef _di_f_utf_is_alphabetic_
extern f_status_t f_utf_is_alphabetic(const f_string_t character, const f_array_length_t width_max);
-#endif // _di_f_utf_is_alphabeticbetic_
+#endif // _di_f_utf_is_alphabetic_
/**
* Check to see if the entire byte block of the character is an ASCII or UTF-8 alphabet or digit character.
*
* @see isalnum()
*/
-#ifndef _di_f_utf_is_alphabeticbetic_digit_
- extern f_status_t f_utf_is_alphabeticbetic_digit(const f_string_t character, const f_array_length_t width_max);
-#endif // _di_f_utf_is_alphabeticbetic_digit_
+#ifndef _di_f_utf_is_alphabetic_digit_
+ extern f_status_t f_utf_is_alphabetic_digit(const f_string_t character, const f_array_length_t width_max);
+#endif // _di_f_utf_is_alphabetic_digit_
/**
* Check to see if the entire byte block of the character is an ASCII or UTF-8 alphabet or numeric character.
*
* @see isalnum()
*/
-#ifndef _di_f_utf_is_alphabeticbetic_numeric_
- extern f_status_t f_utf_is_alphabeticbetic_numeric(const f_string_t character, const f_array_length_t width_max);
-#endif // _di_f_utf_is_alphabeticbetic_numeric_
+#ifndef _di_f_utf_is_alphabetic_numeric_
+ extern f_status_t f_utf_is_alphabetic_numeric(const f_string_t character, const f_array_length_t width_max);
+#endif // _di_f_utf_is_alphabetic_numeric_
/**
* Check to see if the entire byte block of the character is an ASCII character.
/**
* Check to see if the entire byte block of the character is an ASCII or UTF-8 general space character.
*
- * Non-printing or zero-width characters are not considered whitespace.
- * This does include line separators like '\n'.
- * This does not include phonetic spaces, like whitespace modifiers.
- * This does not include non-true whitespace characters, such as Ogham Space Mark ( ).
+ * Non-printing or zero-width characters are not considered white space.
+ * This does include line separators like '\n' (U+000A).
+ * This does not include phonetic spaces, like white space modifiers.
+ * This does not include non-true white space characters, such as Ogham Space Mark ' ' (U+1680).
*
- * Phonetic spaces are whitespaces with additional phonetic meaning associated with them.
- * However, because they are not renderred as whitespace, they are technically not white space.
+ * Phonetic spaces are white spaces with additional phonetic meaning associated with them.
+ * However, because they are not renderred as white space, they are technically not white space.
*
* @param character
* The character to validate.
* Can be anything greater than 0.
*
* @return
- * F_true if a UTF-8 whitespace.
- * F_false if not a UTF-8 whitespace.
+ * F_true if a UTF-8 white space.
+ * F_false if not a UTF-8 white space.
*
* F_complete_not_utf (with error bit set) if character is an incomplete UTF-8 sequence.
- * F_maybe (with error bit) if this could be a whitespace but width is not long enough.
+ * F_maybe (with error bit) if this could be a white space but width is not long enough.
* F_parameter (with error bit) if a parameter is invalid.
* F_utf_fragment (with error bit) if character is a UTF-8 fragment.
* F_utf_not (with error bit) if Unicode is an invalid Unicode character.
#endif // _di_f_utf_is_whitespace_
/**
- * Check to see if the entire byte block of the character is a UTF-8 whitespace modifier character.
+ * Check to see if the entire byte block of the character is a UTF-8 white space modifier character.
*
* These are phonetic spaces.
*
* Phonetic spaces are whitespaces with additional phonetic meaning associated with them.
- * Therefore, these are valid spaces in the technical sense, even if they are not visibly whitespace.
+ * Therefore, these are valid spaces in the technical sense, even if they are not visibly white space.
*
* @param character
* The character to validate.
* Can be anything greater than 0.
*
* @return
- * F_true if a UTF-8 whitespace.
- * F_false if not a UTF-8 whitespace.
+ * F_true if a UTF-8 white space.
+ * F_false if not a UTF-8 white space.
*
* F_complete_not_utf (with error bit set) if character is an incomplete UTF-8 sequence.
- * F_maybe (with error bit) if this could be a whitespace but width is not long enough.
+ * F_maybe (with error bit) if this could be a white space but width is not long enough.
* F_parameter (with error bit) if a parameter is invalid.
* F_utf_fragment (with error bit) if character is a UTF-8 fragment.
* F_utf_not (with error bit) if Unicode is an invalid Unicode character.
/**
* Check to see if the entire byte block of the character is an other type of UTF-8 space character.
*
- * This is a list of whitespace that are not actual whitespace (because they are graph characters) but are considered whitespace, such as Ogham Space Mark ( ).
+ * This is a list of white space that are not actual white space (because they are graph characters) but are considered white space, such as Ogham Space Mark ' ' (U+1680).
*
* @param character
* The character to validate.
* Can be anything greater than 0.
*
* @return
- * F_true if a UTF-8 whitespace.
- * F_false if not a UTF-8 whitespace.
+ * F_true if a UTF-8 white space.
+ * F_false if not a UTF-8 white space.
*
* F_complete_not_utf (with error bit set) if character is an incomplete UTF-8 sequence.
- * F_maybe (with error bit) if this could be a whitespace but width is not long enough.
+ * F_maybe (with error bit) if this could be a white space but width is not long enough.
* F_parameter (with error bit) if a parameter is invalid.
* F_utf_fragment (with error bit) if character is a UTF-8 fragment.
* F_utf_not (with error bit) if Unicode is an invalid Unicode character.
* Can be anything greater than 0.
*
* @return
- * F_true if a UTF-8 whitespace.
- * F_false if not a UTF-8 whitespace.
+ * F_true if a UTF-8 white space.
+ * F_false if not a UTF-8 white space.
*
* F_complete_not_utf (with error bit set) if character is an incomplete UTF-8 sequence.
- * F_maybe (with error bit) if this could be a whitespace but width is not long enough.
+ * F_maybe (with error bit) if this could be a white space but width is not long enough.
* F_parameter (with error bit) if a parameter is invalid.
* F_utf_fragment (with error bit) if character is a UTF-8 fragment.
* F_utf_not (with error bit) if Unicode is an invalid Unicode character.
#endif // _di_f_utf_character_is_
#ifndef _di_f_utf_character_is_alphabetic_
- f_status_t f_utf_character_is_alpha(const f_utf_char_t character) {
+ f_status_t f_utf_character_is_alphabetic(const f_utf_char_t character) {
if (macro_f_utf_char_t_width_is(character)) {
if (macro_f_utf_char_t_width_is(character) == 1) {
* @see isalpha()
*/
#ifndef _di_f_utf_character_is_alphabetic_
- extern f_status_t f_utf_character_is_alpha(const f_utf_char_t character);
+ extern f_status_t f_utf_character_is_alphabetic(const f_utf_char_t character);
#endif // _di_f_utf_character_is_alphabetic_
/**
/**
* Check to see if the entire byte block of the character is an ASCII or UTF-8 general space character.
*
- * Non-printing or zero-width characters are not considered whitespace.
- * This does include line separators like '\n'.
- * This does not include phonetic spaces, like whitespace modifiers.
- * This does not include non-true whitespace characters, such as Ogham Space Mark ( ).
+ * Non-printing or zero-width characters are not considered white space.
+ * This does include line separators like '\n' (U+000A).
+ * This does not include phonetic spaces, like white space modifiers.
+ * This does not include non-true white space characters, such as Ogham Space Mark ' ' (U+1680).
*
* Phonetic spaces are whitespaces with additional phonetic meaning associated with them.
- * However, because they are not renderred as whitespace, they are technically not white space.
+ * However, because they are not renderred as white space, they are technically not white space.
*
* @param character
* The character to validate.
*
* @return
- * F_true if a UTF-8 whitespace.
- * F_false if not a UTF-8 whitespace.
+ * F_true if a UTF-8 white space.
+ * F_false if not a UTF-8 white space.
*
* F_utf_fragment (with error bit) if character is a UTF-8 fragment.
* F_utf_not (with error bit) if unicode is an invalid Unicode character.
#endif // _di_f_utf_character_is_whitespace_
/**
- * Check to see if the entire byte block of the character is an ASCII or UTF-8 whitespace modifier character.
+ * Check to see if the entire byte block of the character is an ASCII or UTF-8 white space modifier character.
*
* These are phonetic spaces.
*
* Phonetic spaces are whitespaces with additional phonetic meaning associated with them.
- * Therefore, these are valid spaces in the technical sense, even if they are not visibly whitespace.
+ * Therefore, these are valid spaces in the technical sense, even if they are not visibly white space.
*
* @param character
* The character to validate.
/**
* Check to see if the entire byte block of the character is an other type of UTF-8 space character.
*
- * This is a list of whitespace that are not actual whitespace (because they are graph characters) but are considered whitespace, such as Ogham Space Mark ( ).
+ * This is a list of white space that are not actual white space (because they are graph characters) but are considered white space, such as Ogham Space Mark ' ' (U+1680).
*
* @param character
* The character to validate.
*
* @return
- * F_true if a UTF-8 (other) whitespace.
- * F_false if not a UTF-8 (other) whitespace.
+ * F_true if a UTF-8 (other) white space.
+ * F_false if not a UTF-8 (other) white space.
*
* F_utf_fragment (with error bit) if character is a UTF-8 fragment.
* F_utf_not (with error bit) if unicode is an invalid Unicode character.
if (name.string[i] == '_') continue;
- status = f_utf_is_alphabeticbetic_digit(name.string, name.used);
+ status = f_utf_is_alphabetic_digit(name.string, name.used);
if (F_status_is_error(status)) return status;
if (status == F_false) return F_false;
* F_none if there is no string to validate (used = 0).
*
* Errors (with error bit) from: f_utf_is_alphabetic().
- * Errors (with error bit) from: f_utf_is_alphabeticbetic_digit().
+ * Errors (with error bit) from: f_utf_is_alphabetic_digit().
*
* @see f_utf_is_alphabetic()
- * @see f_utf_is_alphabeticbetic_digit()
+ * @see f_utf_is_alphabetic_digit()
*/
#ifndef _di_controller_validate_define_name_
extern f_status_t controller_validate_environment_name(const f_string_static_t name) F_attribute_visibility_internal_d;
Each Object starts at the beginning of a line and white space to the left of the Object is not treated as part of the object.
White space separates an Object from the Content.
An Object may be preceded by a newline, in which case means that the Object has no Content.
- If only printing white space follows a valid Object, that Object is considered to have no Content.
+ If only printing white spaces or non-printable characters follow a valid Object, then that Object is considered to have no Content.
Content exists on the same line as the Object.
Content is represented as a single Content column terminated by a newline.
Each Object starts at the beginning of a line and white space to the left of the Object is not treated as an object.
White space separates an Object from the Content.
An Object may be followed by a newline, in which case means that the Object has no Content.
- If only printing white space follows a valid Object, that Object is considered to have no Content.
+ If only printing white spaces or non-printable characters follow a valid Object, then that Object is considered to have no Content.
Content exists on the same line as the Object.
Content is represented as multiple Content columns.
Featureless Settings Specification: 0002 - Basic List:
Each Object starts at the beginning of a line and white space to the left of the Object is not treated as an object.
- A colon followed by any white space until a newline terminates a valid Object.
- Non-white space may not follow the colon of a valid Object.
+ A colon code:":" (code:"U+003A") followed by any white space until a newline terminates a valid Object.
+ Non-white space printable characters may not follow the colon of a valid Object.
Content is represented as a single Content column of every line following a valid object until the end of file (or string) or until the next valid Object is found.
Any Content that could be interpreted as a valid Object must have the colon delimited.
Key\:
code:"\s" = White space, except newline.
- code:"\o" = Any printable character, except unescaped ':'.
- code:"\l" = Any printable character or white space, except unescaped ':'.
+ code:"\o" = Any printable character, except unescaped code:":" (code:"U+003A").
+ code:"\l" = Any printable character or white space, except unescaped code:":" (code:"U+003A").
code:"\c" = Either white space or printable, including newline, that not interpretable as an Object.
code:"\n" = Newline.
code:"*" = Zero or more occurrences.
Featureless Settings Specification: 0003 - Extended List:
Each Object starts at the beginning of a line and white space to the left of the Object is not treated as an object.
- An open-brace code:"{" followed by any white space until a newline terminates a possible valid Object.
- An Object is not considered fully valid until a valid close-brace code:"}" is found, designating the end of the Content.
- Non-white space may not follow the open-brace of a valid Object.
+ An open-brace code:"{" (code:"U+007B") followed by any white space until a newline terminates a possible valid Object.
+ An Object is not considered fully valid until a valid close-brace code:"}" (code:"U+007D") is found, designating the end of the Content.
+ Non-white space printable characters may not follow the open-brace of a valid Object.
Content is represented as a single Content column of every line following a valid object until the end of file (or string) or until a non-delimited close-brace code:"}".
Any Content column that could be interpreted as an end of Content must be delimited if it should be part of the Content.
Key\:
code:"\s" = White space, except newline.
- code:"\o" = Any printable character, except unescaped code:"{".
- code:"\l" = Any printable character or white space, except unescaped code:"}".
+ code:"\o" = Any printable character, except unescaped code:"{" (code:"U+007B").
+ code:"\l" = Any printable character or white space, except unescaped code:"}" (code:"U+007D").
code:"\c" = Either white space or printable, including newline, that is not interpretable as an Object.
code:"\n" = Newline.
code:"*" = Zero or more occurrences.
Each Object starts at the end of a line and white space to the left of the Object is not treated as part of the object.
White space separates an Object from the Content.
An Object may be preceded by a newline, in which case means that the Object has no Content.
- If only printing white space precedes a valid Object, that Object is considered to have no Content.
+ If only printing white spaces or non-printable characters precedes a valid Object, then that Object is considered to have no Content.
Content exists on the same line as the Object.
Content is represented as a single Content column that begins at a newline.
Each Object starts at the end of a line and white space to the left of the Object is not treated as an object.
White space separates an Object from the Content.
An Object may be followed by a newline, in which case means that the Object has no Content.
- If only printing white space follows a valid Object, that Object is considered to have no Content.
+ If only printing white spaces or non-printable characters follow a valid Object, then that Object is considered to have no Content.
Content exists on the same line as the Object.
Content is represented as multiple Content columns.
#
Featureless Settings Specification: 000B - Simple List:
- This might be similar to code:"fss-0008 (Embedded List)", except it is an code:"fss-0003 (Extended List)" with a (non-recursive) code:"fss-0002 (Basic List)" inside the Content.
+ This is similar to code:"fss-0008 (Embedded List)", except that it is an code:"fss-0003 (Extended List)" with a (non-recursive) code:"fss-0002 (Basic List)" inside the Content.
See the file:"fss-0002.txt" and file:"fss-0003.txt" specification files for details on the syntax rules.
Objects and Contents can include any characters allowed by the specifications.
The specification may choose how a given Object or Content are represented and parsed.
- For example, in code:"fss-0000 (Basic)", Content is treated as a single item whereas in code:"fss-0001 (Extended)", Content is broken apart in multiple sub parts.
+ For example, in code:"fss-0000 (Basic)", Content is treated as a single item whereas in code:"fss-0001 (Extended)", Content is broken apart in multiple sub-parts.
Contents may be broken up into zero or more discrete sets of Content.
Each of these discrete sets of Content are referred to as a column.
Unless otherwise specified, all specifications are newline sensitive (code:"\n" only).
Newline characters are only code:"\n" and are never anything else (code:"\r" is not considered newline in any manner).
+ These specifications refer to characters that have printable representation as emphasis:"printable".
+ These specifications refer to characters that have no printable representation as emphasis:"non-printable".
White spaces characters that are printable, such as tabs and spaces, must be considered the same type for the purposes of parsing.
- Non-printing white spaces characters (zero-width characters) are ignored, are treated as placeholders for processing, or are considered part of the appropriate character if they are Unicode combining characters (this includes zero-width punctuation characters and similar).
+ Non-printing white spaces characters (zero-width characters) are ignored, are treated as placeholders for processing with the exception of combining characters.
+ White spaces that use combining characters result in printable characters and the resulting combination is treated as not white space.
+ Zero-width characters that use combining characters are treated as non-printing characters and are skipped.
In terms of processing, it is recommended that the code:"NULL" character is not considered the end of a string, but this is only a suggestion.
+ Any specification may chose to limit, restrict, or otherwise prohibit special Unicode characters such as combining characters or zero-width characters.
Unless otherwise specified, newlines designate the potential start (or end) of an Object or Content.