#endif // _di_fll_fss_identify_file_
#ifndef _di_fll_fss_snatch_
- f_return_status fll_fss_snatch(const f_string_static buffer, const f_fss_objects objects, const f_fss_contents contents, const f_string names[], const f_string_length lengths[], const f_string_length size, f_string_dynamic *values[]) {
+ f_return_status fll_fss_snatch(const f_string_static buffer, const f_fss_objects objects, const f_fss_contents contents, const f_string names[], const f_string_length lengths[], const f_string_length size, f_string_dynamic *values[], f_array_length *indexs[]) {
#ifndef _di_level_2_parameter_checking_
if (size == 0) return F_status_set_error(F_parameter);
if (objects.used != contents.used) return F_status_set_error(F_parameter);
+ if (values == 0) return F_status_set_error(F_parameter);
#endif // _di_level_2_parameter_checking_
if (buffer.used == 0) return F_data_not;
status = fl_string_dynamic_partial_append_nulless(buffer, contents.array[i].array[0], values[j]);
if (F_status_is_error(status)) return status;
+
+ if (indexs) {
+ *indexs[j] = i;
+ }
} // for
} // for
#endif // _di_fll_fss_snatch_
#ifndef _di_fll_fss_snatch_apart_
- f_return_status fll_fss_snatch_apart(const f_string_static buffer, const f_fss_objects objects, const f_fss_contents contents, const f_string names[], const f_string_length lengths[], const f_string_length size, f_string_dynamics *values[]) {
+ f_return_status fll_fss_snatch_apart(const f_string_static buffer, const f_fss_objects objects, const f_fss_contents contents, const f_string names[], const f_string_length lengths[], const f_string_length size, f_string_dynamics *values[], f_array_lengths *indexs[]) {
#ifndef _di_level_2_parameter_checking_
if (size == 0) return F_status_set_error(F_parameter);
if (objects.used != contents.used) return F_status_set_error(F_parameter);
+ if (values == 0) return F_status_set_error(F_parameter);
#endif // _di_level_2_parameter_checking_
if (buffer.used == 0) return F_data_not;
}
f_macro_string_dynamics_resize(status, (*value), (values[j]->used + content->used));
-
if (F_status_is_error(status)) return status;
+
+ if (indexs) {
+ f_macro_array_lengths_resize(status, (*indexs[j]), (indexs[j]->used + content->used));
+ if (F_status_is_error(status)) return status;
+ }
}
for (k = 0; k < contents.array[i].used; k++) {
if (F_status_is_error(status)) return status;
values[j]->used++;
+
+ if (indexs) {
+ indexs[j]->array[indexs[j]->used] = i;
+ indexs[j]->used++;
+ }
} // for
} // for
} // for
#endif // _di_fll_fss_snatch_apart_
#ifndef _di_fll_fss_snatch_map_
- f_return_status fll_fss_snatch_map(const f_string_static buffer, const f_fss_objects objects, const f_fss_contents contents, const f_string names[], const f_string_length lengths[], const f_string_length size, f_string_maps *values[]) {
+ f_return_status fll_fss_snatch_map(const f_string_static buffer, const f_fss_objects objects, const f_fss_contents contents, const f_string names[], const f_string_length lengths[], const f_string_length size, f_string_maps *values[], f_array_lengths *indexs[]) {
#ifndef _di_level_2_parameter_checking_
if (size == 0) return F_status_set_error(F_parameter);
if (objects.used != contents.used) return F_status_set_error(F_parameter);
+ if (values == 0) return F_status_set_error(F_parameter);
#endif // _di_level_2_parameter_checking_
if (buffer.used == 0) return F_data_not;
f_macro_string_dynamic_delete_simple(name);
return status;
}
+
+ if (indexs) {
+ f_macro_array_lengths_resize(status, (*indexs[j]), indexs[j]->used + 1);
+ if (F_status_is_error(status)) return status;
+ }
}
else {
f_macro_string_maps_resize(status, (*values[j]), values[j]->used + f_fss_default_allocation_step);
f_macro_string_dynamic_delete_simple(name);
return status;
}
+
+ if (indexs) {
+ f_macro_array_lengths_resize(status, (*indexs[j]), indexs[j]->used + f_fss_default_allocation_step);
+ if (F_status_is_error(status)) return status;
+ }
}
}
values[j]->used++;
+ if (indexs) {
+ indexs[j]->array[indexs[j]->used] = i;
+ indexs[j]->used++;
+ }
+
f_macro_string_dynamic_clear(name);
} // for
} // for
#endif // _di_fll_fss_snatch_map_
#ifndef _di_fll_fss_snatch_map_apart_
- f_return_status fll_fss_snatch_map_apart(const f_string_static buffer, const f_fss_objects objects, const f_fss_contents contents, const f_string names[], const f_string_length lengths[], const f_string_length size, f_string_map_multis *values[]) {
+ f_return_status fll_fss_snatch_map_apart(const f_string_static buffer, const f_fss_objects objects, const f_fss_contents contents, const f_string names[], const f_string_length lengths[], const f_string_length size, f_string_map_multis *values[], f_array_lengths *indexs[]) {
#ifndef _di_level_2_parameter_checking_
if (size == 0) return F_status_set_error(F_parameter);
if (objects.used != contents.used) return F_status_set_error(F_parameter);
+ if (values == 0) return F_status_set_error(F_parameter);
#endif // _di_level_2_parameter_checking_
if (buffer.used == 0) return F_data_not;
f_macro_string_map_multis_resize(status, (*values[j]), values[j]->used + 1);
if (F_status_is_error(status)) return status;
+
+ if (indexs) {
+ f_macro_array_lengths_resize(status, (*indexs[j]), indexs[j]->used + 1);
+ if (F_status_is_error(status)) return status;
+ }
}
else {
f_macro_string_map_multis_resize(status, (*values[j]), values[j]->used + f_fss_default_allocation_step);
if (F_status_is_error(status)) return status;
+
+ if (indexs) {
+ f_macro_array_lengths_resize(status, (*indexs[j]), indexs[j]->used + f_fss_default_allocation_step);
+ if (F_status_is_error(status)) return status;
+ }
}
}
values[j]->used++;
+ if (indexs) {
+ indexs[j]->array[indexs[j]->used] = i;
+ indexs[j]->used++;
+ }
+
if (contents.array[i].used > 1) {
if (map_multi->value.used + contents.array[i].used - 1 > map_multi->value.size) {
if (map_multi->value.used + contents.array[i].used - 1 > f_array_length_size) return F_status_set_error(F_buffer_too_large);
#endif // _di_fll_fss_snatch_map_apart_
#ifndef _di_fll_fss_snatch_map_mash_
- f_return_status fll_fss_snatch_map_mash(const f_string_static buffer, const f_fss_objects objects, const f_fss_contents contents, const f_string names[], const f_string_length lengths[], const f_string_length size, const f_string glue, const f_string_length glue_length, f_string_maps *values[]) {
+ f_return_status fll_fss_snatch_map_mash(const f_string_static buffer, const f_fss_objects objects, const f_fss_contents contents, const f_string names[], const f_string_length lengths[], const f_string_length size, const f_string glue, const f_string_length glue_length, f_string_maps *values[], f_array_lengths *indexs[]) {
#ifndef _di_level_2_parameter_checking_
if (size == 0) return F_status_set_error(F_parameter);
if (objects.used != contents.used) return F_status_set_error(F_parameter);
+ if (values == 0) return F_status_set_error(F_parameter);
#endif // _di_level_2_parameter_checking_
if (buffer.used == 0) return F_data_not;
f_macro_string_maps_resize(status, (*values[j]), values[j]->used + 1);
if (F_status_is_error(status)) return status;
+
+ if (indexs) {
+ f_macro_array_lengths_resize(status, (*indexs[j]), indexs[j]->used + 1);
+ if (F_status_is_error(status)) return status;
+ }
}
else {
f_macro_string_maps_resize(status, (*values[j]), values[j]->used + f_fss_default_allocation_step);
if (F_status_is_error(status)) return status;
+
+ if (indexs) {
+ f_macro_array_lengths_resize(status, (*indexs[j]), indexs[j]->used + f_fss_default_allocation_step);
+ if (F_status_is_error(status)) return status;
+ }
}
}
values[j]->used++;
+ if (indexs) {
+ indexs[j]->array[indexs[j]->used] = i;
+ indexs[j]->used++;
+ }
+
if (contents.array[i].used > 1) {
for (k = 1; k < contents.array[i].used; k++) {
status = fl_string_dynamic_partial_mash_nulless(glue, glue_length, buffer, contents.array[i].array[k], &map->value);
#endif // _di_fll_fss_snatch_map_mash_
#ifndef _di_fll_fss_snatch_map_mash_apart_
- f_return_status fll_fss_snatch_map_mash_apart(const f_string_static buffer, const f_fss_objects objects, const f_fss_contents contents, const f_string names[], const f_string_length lengths[], const f_string_length size, const f_string glue, const f_string_length glue_length, f_string_map_multis *values[]) {
+ f_return_status fll_fss_snatch_map_mash_apart(const f_string_static buffer, const f_fss_objects objects, const f_fss_contents contents, const f_string names[], const f_string_length lengths[], const f_string_length size, const f_string glue, const f_string_length glue_length, f_string_map_multis *values[], f_array_lengths *indexs[]) {
#ifndef _di_level_2_parameter_checking_
if (size == 0) return F_status_set_error(F_parameter);
if (objects.used != contents.used) return F_status_set_error(F_parameter);
+ if (values == 0) return F_status_set_error(F_parameter);
#endif // _di_level_2_parameter_checking_
if (buffer.used == 0) return F_data_not;
f_macro_string_map_multis_resize(status, (*values[j]), values[j]->used + 1);
if (F_status_is_error(status)) return status;
+
+ if (indexs) {
+ f_macro_array_lengths_resize(status, (*indexs[j]), indexs[j]->used + 1);
+ if (F_status_is_error(status)) return status;
+ }
}
else {
f_macro_string_map_multis_resize(status, (*values[j]), values[j]->used + f_fss_default_allocation_step);
if (F_status_is_error(status)) return status;
+
+ if (indexs) {
+ f_macro_array_lengths_resize(status, (*indexs[j]), indexs[j]->used + f_fss_default_allocation_step);
+ if (F_status_is_error(status)) return status;
+ }
}
}
values[j]->used++;
+ if (indexs) {
+ indexs[j]->array[indexs[j]->used] = i;
+ indexs[j]->used++;
+ }
+
f_macro_string_dynamic_clear(name);
if (contents.array[i].used == 1) continue;
#endif // _di_fll_fss_snatch_map_mash_apart_
#ifndef _di_fll_fss_snatch_map_together_
- f_return_status fll_fss_snatch_map_together(const f_string_static buffer, const f_fss_objects objects, const f_fss_contents contents, const f_string names[], const f_string_length lengths[], const f_string_length size, const f_string glue, const f_string_length glue_length, f_string_maps *values[]) {
+ f_return_status fll_fss_snatch_map_together(const f_string_static buffer, const f_fss_objects objects, const f_fss_contents contents, const f_string names[], const f_string_length lengths[], const f_string_length size, const f_string glue, const f_string_length glue_length, f_string_maps *values[], f_array_lengths *indexs[]) {
#ifndef _di_level_2_parameter_checking_
if (size == 0) return F_status_set_error(F_parameter);
if (objects.used != contents.used) return F_status_set_error(F_parameter);
+ if (values == 0) return F_status_set_error(F_parameter);
#endif // _di_level_2_parameter_checking_
if (buffer.used == 0) return F_data_not;
f_macro_string_dynamic_delete_simple(name);
return status;
}
+
+ if (indexs) {
+ f_macro_array_lengths_resize(status, (*indexs[j]), indexs[j]->used + 1);
+ if (F_status_is_error(status)) return status;
+ }
}
else {
f_macro_string_maps_resize(status, (*values[j]), values[j]->used + f_fss_default_allocation_step);
f_macro_string_dynamic_delete_simple(name);
return status;
}
+
+ if (indexs) {
+ f_macro_array_lengths_resize(status, (*indexs[j]), indexs[j]->used + f_fss_default_allocation_step);
+ if (F_status_is_error(status)) return status;
+ }
}
}
values[j]->used++;
+ if (indexs) {
+ indexs[j]->array[indexs[j]->used] = i;
+ indexs[j]->used++;
+ }
+
f_macro_string_dynamic_clear(name);
}
#endif // _di_fll_fss_snatch_map_together_
#ifndef _di_fll_fss_snatch_mash_
- f_return_status fll_fss_snatch_mash(const f_string_static buffer, const f_fss_objects objects, const f_fss_contents contents, const f_string names[], const f_string_length lengths[], const f_string_length size, const f_string glue, const f_string_length glue_length, f_string_dynamic *values[]) {
+ f_return_status fll_fss_snatch_mash(const f_string_static buffer, const f_fss_objects objects, const f_fss_contents contents, const f_string names[], const f_string_length lengths[], const f_string_length size, const f_string glue, const f_string_length glue_length, f_string_dynamic *values[], f_array_length *indexs[]) {
#ifndef _di_level_2_parameter_checking_
if (size == 0) return F_status_set_error(F_parameter);
if (objects.used != contents.used) return F_status_set_error(F_parameter);
+ if (values == 0) return F_status_set_error(F_parameter);
#endif // _di_level_2_parameter_checking_
if (buffer.used == 0) return F_data_not;
status = fl_string_dynamic_partial_mash_nulless(glue, glue_length, buffer, contents.array[i].array[k], values[j]);
if (F_status_is_error(status)) return status;
} // for
+
+ if (indexs) {
+ *indexs[j] = i;
+ }
} // for
} // for
#endif // _di_fll_fss_snatch_mash_
#ifndef _di_fll_fss_snatch_mash_apart_
- f_return_status fll_fss_snatch_mash_apart(const f_string_static buffer, const f_fss_objects objects, const f_fss_contents contents, const f_string names[], const f_string_length lengths[], const f_string_length size, const f_string glue, const f_string_length glue_length, f_string_dynamics *values[]) {
+ f_return_status fll_fss_snatch_mash_apart(const f_string_static buffer, const f_fss_objects objects, const f_fss_contents contents, const f_string names[], const f_string_length lengths[], const f_string_length size, const f_string glue, const f_string_length glue_length, f_string_dynamics *values[], f_array_lengths *indexs[]) {
#ifndef _di_level_2_parameter_checking_
if (size == 0) return F_status_set_error(F_parameter);
if (objects.used != contents.used) return F_status_set_error(F_parameter);
+ if (values == 0) return F_status_set_error(F_parameter);
#endif // _di_level_2_parameter_checking_
if (buffer.used == 0) return F_data_not;
f_macro_string_dynamics_resize(status, (*values[j]), values[j]->used + 1);
if (F_status_is_error(status)) return status;
+
+ if (indexs) {
+ f_macro_array_lengths_resize(status, (*indexs[j]), indexs[j]->used + 1);
+ if (F_status_is_error(status)) return status;
+ }
}
else {
f_macro_string_dynamics_resize(status, (*values[j]), values[j]->used + f_fss_default_allocation_step);
if (F_status_is_error(status)) return status;
+
+ if (indexs) {
+ f_macro_array_lengths_resize(status, (*indexs[j]), indexs[j]->used + f_fss_default_allocation_step);
+ if (F_status_is_error(status)) return status;
+ }
}
}
} // for
values[j]->used++;
+
+ if (indexs) {
+ indexs[j]->array[indexs[j]->used] = i;
+ indexs[j]->used++;
+ }
} // for
} // for
#endif // _di_fll_fss_snatch_mash_apart_
#ifndef _di_fll_fss_snatch_together_
- f_return_status fll_fss_snatch_together(const f_string_static buffer, const f_fss_objects objects, const f_fss_contents contents, const f_string names[], const f_string_length lengths[], const f_string_length size, const f_string glue, const f_string_length glue_length, f_string_dynamic *values[]) {
+ f_return_status fll_fss_snatch_together(const f_string_static buffer, const f_fss_objects objects, const f_fss_contents contents, const f_string names[], const f_string_length lengths[], const f_string_length size, const f_string glue, const f_string_length glue_length, f_string_dynamic *values[], f_array_length *indexs[]) {
#ifndef _di_level_2_parameter_checking_
if (size == 0) return F_status_set_error(F_parameter);
if (objects.used != contents.used) return F_status_set_error(F_parameter);
+ if (values == 0) return F_status_set_error(F_parameter);
#endif // _di_level_2_parameter_checking_
if (buffer.used == 0) return F_data_not;
status = fl_string_dynamic_partial_mash_nulless(glue, glue_length, buffer, contents.array[i].array[k], values[j]);
if (F_status_is_error(status)) return status;
} // for
+
+ if (indexs) {
+ *indexs[j] = i;
+ }
} // for
} // for
* The total size of the names, lengths, and values arrays.
* @param values
* An array of values where "snatched" content is stored.
+ * @param indexs
+ * An array representing the index within the objects where the match was made.
+ * Set the pointer address to 0 to disable.
*
* @return
* F_none on success.
* @see fl_string_dynamic_partial_append_nulless()
*/
#ifndef _di_fll_fss_snatch_
- extern f_return_status fll_fss_snatch(const f_string_static buffer, const f_fss_objects objects, const f_fss_contents contents, const f_string names[], const f_string_length lengths[], const f_string_length size, f_string_dynamic *values[]);
+ extern f_return_status fll_fss_snatch(const f_string_static buffer, const f_fss_objects objects, const f_fss_contents contents, const f_string names[], const f_string_length lengths[], const f_string_length size, f_string_dynamic *values[], f_array_length *indexs[]);
#endif // _di_fll_fss_snatch_
/**
* The total size of the names, lengths, and values arrays.
* @param values
* An array of values where "snatched" content is stored.
+ * @param indexs
+ * An array representing the index within the objects where the match was made.
+ * Set the pointer address to 0 to disable.
*
* @return
* F_none on success.
* @see fl_string_dynamic_partial_append_nulless()
*/
#ifndef _di_fll_fss_snatch_apart_
- extern f_return_status fll_fss_snatch_apart(const f_string_static buffer, const f_fss_objects objects, const f_fss_contents contents, const f_string names[], const f_string_length lengths[], const f_string_length size, f_string_dynamics *values[]);
+ extern f_return_status fll_fss_snatch_apart(const f_string_static buffer, const f_fss_objects objects, const f_fss_contents contents, const f_string names[], const f_string_length lengths[], const f_string_length size, f_string_dynamics *values[], f_array_lengths *indexs[]);
#endif // _di_fll_fss_snatch_apart_
/**
* The total size of the names, lengths, and values arrays.
* @param values
* An array of map arrays where "snatched" content is stored.
+ * @param indexs
+ * An array representing the index within the objects where the match was made.
+ * Set the pointer address to 0 to disable.
*
* @return
* F_none on success.
* @see fl_string_dynamic_partial_append_nulless()
*/
#ifndef _di_fll_fss_snatch_map_
- extern f_return_status fll_fss_snatch_map(const f_string_static buffer, const f_fss_objects objects, const f_fss_contents contents, const f_string names[], const f_string_length lengths[], const f_string_length size, f_string_maps *values[]);
+ extern f_return_status fll_fss_snatch_map(const f_string_static buffer, const f_fss_objects objects, const f_fss_contents contents, const f_string names[], const f_string_length lengths[], const f_string_length size, f_string_maps *values[], f_array_lengths *indexs[]);
#endif // _di_fll_fss_snatch_map_
/**
* The total size of the names, lengths, and values arrays.
* @param values
* An array of multi map arrays where "snatched" content is stored.
+ * @param indexs
+ * An array representing the index within the objects where the match was made.
+ * Set the pointer address to 0 to disable.
*
* @return
* F_none on success.
* @see fl_string_dynamic_partial_append_nulless()
*/
#ifndef _di_fll_fss_snatch_map_apart_
- extern f_return_status fll_fss_snatch_map_apart(const f_string_static buffer, const f_fss_objects objects, const f_fss_contents contents, const f_string names[], const f_string_length lengths[], const f_string_length size, f_string_map_multis *values[]);
+ extern f_return_status fll_fss_snatch_map_apart(const f_string_static buffer, const f_fss_objects objects, const f_fss_contents contents, const f_string names[], const f_string_length lengths[], const f_string_length size, f_string_map_multis *values[], f_array_lengths *indexs[]);
#endif // _di_fll_fss_snatch_map_apart_
/**
* The length of the glue string
* @param values
* An array of multi map value arrays where "snatched" content is stored.
+ * @param indexs
+ * An array representing the index within the objects where the match was made.
+ * Set the pointer address to 0 to disable.
*
* @return
* F_none on success.
* Errors from (with error bit): fl_string_dynamic_partial_mash_nulless().
*/
#ifndef _di_fll_fss_snatch_map_mash_
- extern f_return_status fll_fss_snatch_map_mash(const f_string_static buffer, const f_fss_objects objects, const f_fss_contents contents, const f_string names[], const f_string_length lengths[], const f_string_length size, const f_string glue, const f_string_length glue_length, f_string_maps *values[]);
+ extern f_return_status fll_fss_snatch_map_mash(const f_string_static buffer, const f_fss_objects objects, const f_fss_contents contents, const f_string names[], const f_string_length lengths[], const f_string_length size, const f_string glue, const f_string_length glue_length, f_string_maps *values[], f_array_lengths *indexs[]);
#endif // _di_fll_fss_snatch_map_mash_
/**
* The length of the glue string
* @param values
* An array of multi map value arrays where "snatched" content is stored.
+ * @param indexs
+ * An array representing the index within the objects where the match was made.
+ * Set the pointer address to 0 to disable.
*
* @return
* F_none on success.
* @see fl_string_dynamic_partial_mash_nulless()
*/
#ifndef _di_fll_fss_snatch_map_mash_apart_
- extern f_return_status fll_fss_snatch_map_mash_apart(const f_string_static buffer, const f_fss_objects objects, const f_fss_contents contents, const f_string names[], const f_string_length lengths[], const f_string_length size, const f_string glue, const f_string_length glue_length, f_string_map_multis *values[]);
+ extern f_return_status fll_fss_snatch_map_mash_apart(const f_string_static buffer, const f_fss_objects objects, const f_fss_contents contents, const f_string names[], const f_string_length lengths[], const f_string_length size, const f_string glue, const f_string_length glue_length, f_string_map_multis *values[], f_array_lengths *indexs[]);
#endif // _di_fll_fss_snatch_map_mash_apart__
/**
* The length of the glue string
* @param values
* An array of map arrays where "snatched" content is stored.
+ * @param indexs
+ * An array representing the index within the objects where the match was made.
+ * Set the pointer address to 0 to disable.
*
* @return
* F_none on success.
* @see fl_string_dynamic_partial_mash_nulless()
*/
#ifndef _di_fll_fss_snatch_map_together_
- extern f_return_status fll_fss_snatch_map_together(const f_string_static buffer, const f_fss_objects objects, const f_fss_contents contents, const f_string names[], const f_string_length lengths[], const f_string_length size, const f_string glue, const f_string_length glue_length, f_string_maps *values[]);
+ extern f_return_status fll_fss_snatch_map_together(const f_string_static buffer, const f_fss_objects objects, const f_fss_contents contents, const f_string names[], const f_string_length lengths[], const f_string_length size, const f_string glue, const f_string_length glue_length, f_string_maps *values[], f_array_lengths *indexs[]);
#endif // _di_fll_fss_snatch_map_together_
/**
* The length of the glue string.
* @param values
* An array of values where "snatched" content is stored.
+ * @param indexs
+ * An array representing the index within the objects where the match was made.
+ * Set the pointer address to 0 to disable.
*
* @return
* F_none on success.
* Errors from (with error bit): fl_string_dynamic_partial_mash_nulless().
*/
#ifndef _di_fll_fss_snatch_mash_
- extern f_return_status fll_fss_snatch_mash(const f_string_static buffer, const f_fss_objects objects, const f_fss_contents contents, const f_string names[], const f_string_length lengths[], const f_string_length size, const f_string glue, const f_string_length glue_length, f_string_dynamic *values[]);
+ extern f_return_status fll_fss_snatch_mash(const f_string_static buffer, const f_fss_objects objects, const f_fss_contents contents, const f_string names[], const f_string_length lengths[], const f_string_length size, const f_string glue, const f_string_length glue_length, f_string_dynamic *values[], f_array_length *indexs[]);
#endif // _di_fll_fss_snatch_mash_
/**
* The length of the glue string
* @param values
* An array of values where "snatched" content is stored.
+ * @param indexs
+ * An array representing the index within the objects where the match was made.
+ * Set the pointer address to 0 to disable.
*
* @return
* F_none on success.
* @see fl_string_dynamic_partial_mash_nulless()
*/
#ifndef _di_fll_fss_snatch_mash_apart_
- extern f_return_status fll_fss_snatch_mash_apart(const f_string_static buffer, const f_fss_objects objects, const f_fss_contents contents, const f_string names[], const f_string_length lengths[], const f_string_length size, const f_string glue, const f_string_length glue_length, f_string_dynamics *values[]);
+ extern f_return_status fll_fss_snatch_mash_apart(const f_string_static buffer, const f_fss_objects objects, const f_fss_contents contents, const f_string names[], const f_string_length lengths[], const f_string_length size, const f_string glue, const f_string_length glue_length, f_string_dynamics *values[], f_array_lengths *indexs[]);
#endif // _di_fll_fss_snatch_mash_apart_
/**
* The total size of the names, lengths, and values arrays.
* @param values
* An array of values where "snatched" content is stored.
+ * @param indexs
+ * An array representing the index within the objects where the match was made.
+ * Set the pointer address to 0 to disable.
*
* @return
* F_none on success.
* @see fl_string_dynamic_partial_append_nulless()
*/
#ifndef _di_fll_fss_snatch_together_
- extern f_return_status fll_fss_snatch_together(const f_string_static buffer, const f_fss_objects objects, const f_fss_contents contents, const f_string names[], const f_string_length lengths[], const f_string_length size, const f_string glue, const f_string_length glue_length, f_string_dynamic *values[]);
+ extern f_return_status fll_fss_snatch_together(const f_string_static buffer, const f_fss_objects objects, const f_fss_contents contents, const f_string names[], const f_string_length lengths[], const f_string_length size, const f_string glue, const f_string_length glue_length, f_string_dynamic *values[], f_array_length *indexs[]);
#endif // _di_fll_fss_snatch_together_
#ifdef __cplusplus