upgraded string library

This commit is contained in:
Allen Webster 2016-07-06 15:18:10 -04:00
parent 3683069f24
commit 170f521e26
14 changed files with 3794 additions and 712 deletions

View File

@ -4,6 +4,7 @@
<style>
body { background: #FAFAFA; color: #0D0D0D; }
h1,h2,h3,h4 { color: #309030; margin: 0; }
h2 { margin-top: 6mm; }
h3 { margin-top: 5mm; margin-bottom: 5mm; }
h4 { font-size: 1.1em; }
a { color: #309030; text-decoration: none; }
@ -15,17 +16,20 @@ ul { list-style: none; padding: 0; margin: 0; }
<body>
<div style='font-family:Arial; margin: 0 auto; width: 800px; text-align: justify; line-height: 1.25;'>
<h1 style='margin-top: 5mm; margin-bottom: 5mm;'>4coder API</h1>
<h2>&sect;1 Introduction</h2>
<h3 style='margin:0;'>Table of Contents</h3>
<ul>
<li><a href='#section_introduction'>&sect;1 Introduction</a></li><li><a href='#section_4coder_systems'>&sect;2 4coder Systems</a></li><li><a href='#section_types_and_functions'>&sect;3 Types and Functions</a></li><li><a href='#section_string_library'>&sect;4 String Library</a></li></ul>
<h2 id='section_introduction'>&sect;1 Introduction</h2>
<div>
<p>
This is the documentation for alpha 4.0.9 super! The documentation is still under construction so some of the links are linking to sections that have not been written yet. What is here should be correct and I suspect useful even without some of the other sections. </p>
<p>
If you have questions or discover errors please contact <span style='font-family: "Courier New", Courier, monospace; text-align: left;'>editor@4coder.net</span> or to get help from community members you can post on the 4coder forums hosted on handmade.network at <span style='font-family: "Courier New", Courier, monospace; text-align: left;'>4coder.handmade.network</span></p>
</div>
<h2>&sect;2 4coder Systems</h2>
<h2 id='section_4coder_systems'>&sect;2 4coder Systems</h2>
<div><i>
Coming Soon</i><div>
<h2>&sect;3 Types and Functions</h2>
<h2 id='section_types_and_functions'>&sect;3 Types and Functions</h2>
<h3>&sect;3.1 Function List</h3>
<ul>
<li><a href='#exec_command_doc'>exec_command</a></li>
@ -219,11 +223,11 @@ be pasted into other applications.</div><div style='margin-top: 3mm; margin-bott
</div>
<div>
<div style='font-weight: 600;'>out</div>
<div style='margin-bottom: 6mm;'><div style='margin-left: 5mm; margin-right: 5mm;'>a buffer where the clipboard contents are written or NULL</div></div>
<div style='margin-bottom: 6mm;'><div style='margin-left: 5mm; margin-right: 5mm;'>This parameter provides a buffer where the clipboard contents are written. This parameter may be NULL.</div></div>
</div>
<div>
<div style='font-weight: 600;'>len</div>
<div style='margin-bottom: 6mm;'><div style='margin-left: 5mm; margin-right: 5mm;'>the length of the out buffer</div></div>
<div style='margin-bottom: 6mm;'><div style='margin-left: 5mm; margin-right: 5mm;'>This parameter specifies the length of the out buffer.</div></div>
</div>
<div style='margin-top: 3mm; margin-bottom: 3mm; color: #309030;'><b><i>Return</i></b></div><div style='margin-left: 5mm; margin-right: 5mm;'>This call returns the size of the item associated with item_index.</div><div style='margin-top: 3mm; margin-bottom: 3mm; color: #309030;'><b><i>Description</i></b></div><div style='margin-left: 5mm; margin-right: 5mm;'>This function always returns the size of the item even if the output buffer is NULL.
If the output buffer is too small to contain the whole string, it is filled with the
@ -2071,6 +2075,696 @@ int_color color;<br>
<div style='margin-bottom: 6mm;'><div style='margin-left: 5mm; margin-right: 5mm;'></div></div>
</div>
<div style='margin-top: 3mm; margin-bottom: 3mm; color: #309030;'><b><i>See Also</i></b></div><div style='margin-left: 5mm; margin-right: 5mm;'><a href='#Style_Tag_doc'>Style_Tag</a></div><div style='margin-left: 5mm; margin-right: 5mm;'><a href='#int_color_doc'>int_color</a></div></div><hr>
<h2 id='section_string_library'>&sect;4 String Library</h2>
<h3>&sect;4.1 String Function List</h3>
<ul>
<li><a href='#char_not_slash_str_doc'>char_not_slash</a></li>
<li><a href='#char_is_slash_str_doc'>char_is_slash</a></li>
<li><a href='#char_to_upper_str_doc'>char_to_upper</a></li>
<li><a href='#char_to_lower_str_doc'>char_to_lower</a></li>
<li><a href='#char_is_whitespace_str_doc'>char_is_whitespace</a></li>
<li><a href='#char_is_alpha_numeric_str_doc'>char_is_alpha_numeric</a></li>
<li><a href='#char_is_hex_str_doc'>char_is_hex</a></li>
<li><a href='#char_is_numeric_str_doc'>char_is_numeric</a></li>
<li><a href='#char_is_alpha_str_doc'>char_is_alpha</a></li>
<li><a href='#char_is_alpha_true_str_doc'>char_is_alpha_true</a></li>
<li><a href='#char_is_alpha_numeric_true_str_doc'>char_is_alpha_numeric_true</a></li>
<li><a href='#string_zero_str_doc'>string_zero</a></li>
<li><a href='#make_string_str_doc'>make_string</a></li>
<li><a href='#make_lit_string_str_doc'>make_lit_string</a></li>
<li><a href='#make_fixed_width_string_str_doc'>make_fixed_width_string</a></li>
<li><a href='#expand_str_str_doc'>expand_str</a></li>
<li><a href='#str_size_str_doc'>str_size</a></li>
<li><a href='#make_string_slowly_str_doc'>make_string_slowly</a></li>
<li><a href='#substr_str_doc'>substr</a></li>
<li><a href='#tailstr_str_doc'>tailstr</a></li>
<li><a href='#skip_whitespace_str_doc'>skip_whitespace</a></li>
<li><a href='#chop_whitespace_str_doc'>chop_whitespace</a></li>
<li><a href='#skip_chop_whitespace_str_doc'>skip_chop_whitespace</a></li>
<li><a href='#match_str_doc'>match</a></li>
<li><a href='#match_part_str_doc'>match_part</a></li>
<li><a href='#match_insensitive_str_doc'>match_insensitive</a></li>
<li><a href='#match_part_insensitive_str_doc'>match_part_insensitive</a></li>
<li><a href='#compare_str_doc'>compare</a></li>
<li><a href='#find_str_doc'>find</a></li>
<li><a href='#find_substr_str_doc'>find_substr</a></li>
<li><a href='#rfind_substr_str_doc'>rfind_substr</a></li>
<li><a href='#find_substr_insensitive_str_doc'>find_substr_insensitive</a></li>
<li><a href='#has_substr_str_doc'>has_substr</a></li>
<li><a href='#has_substr_insensitive_str_doc'>has_substr_insensitive</a></li>
<li><a href='#copy_fast_unsafe_str_doc'>copy_fast_unsafe</a></li>
<li><a href='#copy_checked_str_doc'>copy_checked</a></li>
<li><a href='#copy_partial_str_doc'>copy_partial</a></li>
<li><a href='#copy_str_doc'>copy</a></li>
<li><a href='#append_checked_str_doc'>append_checked</a></li>
<li><a href='#append_partial_str_doc'>append_partial</a></li>
<li><a href='#append_str_doc'>append</a></li>
<li><a href='#terminate_with_null_str_doc'>terminate_with_null</a></li>
<li><a href='#append_padding_str_doc'>append_padding</a></li>
<li><a href='#replace_char_str_doc'>replace_char</a></li>
<li><a href='#int_to_str_size_str_doc'>int_to_str_size</a></li>
<li><a href='#int_to_str_str_doc'>int_to_str</a></li>
<li><a href='#append_int_to_str_str_doc'>append_int_to_str</a></li>
<li><a href='#u64_to_str_size_str_doc'>u64_to_str_size</a></li>
<li><a href='#u64_to_str_str_doc'>u64_to_str</a></li>
<li><a href='#append_u64_to_str_str_doc'>append_u64_to_str</a></li>
<li><a href='#float_to_str_size_str_doc'>float_to_str_size</a></li>
<li><a href='#append_float_to_str_str_doc'>append_float_to_str</a></li>
<li><a href='#float_to_str_str_doc'>float_to_str</a></li>
<li><a href='#str_to_int_str_doc'>str_to_int</a></li>
<li><a href='#hexchar_to_int_str_doc'>hexchar_to_int</a></li>
<li><a href='#int_to_hexchar_str_doc'>int_to_hexchar</a></li>
<li><a href='#hexstr_to_int_str_doc'>hexstr_to_int</a></li>
<li><a href='#color_to_hexstr_str_doc'>color_to_hexstr</a></li>
<li><a href='#hexstr_to_color_str_doc'>hexstr_to_color</a></li>
<li><a href='#reverse_seek_slash_str_doc'>reverse_seek_slash</a></li>
<li><a href='#front_of_directory_str_doc'>front_of_directory</a></li>
<li><a href='#path_of_directory_str_doc'>path_of_directory</a></li>
<li><a href='#set_last_folder_str_doc'>set_last_folder</a></li>
<li><a href='#file_extension_str_doc'>file_extension</a></li>
<li><a href='#remove_last_folder_str_doc'>remove_last_folder</a></li>
<li><a href='#string_set_match_str_doc'>string_set_match</a></li>
</ul>
<h3>&sect;4.2 String Function Descriptions</h3>
<ul>
<div id='char_not_slash_str_doc'> <h4>&sect;4.2.1: char_not_slash</h4>
<div style='font-family: "Courier New", Courier, monospace; text-align: left; margin-top: 3mm; margin-bottom: 3mm; font-size: .95em; background: #DFDFDF; padding: 0.25em;'>
fstr_bool char_not_slash(
<div style='margin-left: 4mm;'>char c<br></div>)
</div>
</div><hr>
<div id='char_is_slash_str_doc'> <h4>&sect;4.2.2: char_is_slash</h4>
<div style='font-family: "Courier New", Courier, monospace; text-align: left; margin-top: 3mm; margin-bottom: 3mm; font-size: .95em; background: #DFDFDF; padding: 0.25em;'>
fstr_bool char_is_slash(
<div style='margin-left: 4mm;'>char c<br></div>)
</div>
</div><hr>
<div id='char_to_upper_str_doc'> <h4>&sect;4.2.3: char_to_upper</h4>
<div style='font-family: "Courier New", Courier, monospace; text-align: left; margin-top: 3mm; margin-bottom: 3mm; font-size: .95em; background: #DFDFDF; padding: 0.25em;'>
char char_to_upper(
<div style='margin-left: 4mm;'>char c<br></div>)
</div>
</div><hr>
<div id='char_to_lower_str_doc'> <h4>&sect;4.2.4: char_to_lower</h4>
<div style='font-family: "Courier New", Courier, monospace; text-align: left; margin-top: 3mm; margin-bottom: 3mm; font-size: .95em; background: #DFDFDF; padding: 0.25em;'>
char char_to_lower(
<div style='margin-left: 4mm;'>char c<br></div>)
</div>
</div><hr>
<div id='char_is_whitespace_str_doc'> <h4>&sect;4.2.5: char_is_whitespace</h4>
<div style='font-family: "Courier New", Courier, monospace; text-align: left; margin-top: 3mm; margin-bottom: 3mm; font-size: .95em; background: #DFDFDF; padding: 0.25em;'>
fstr_bool char_is_whitespace(
<div style='margin-left: 4mm;'>char c<br></div>)
</div>
</div><hr>
<div id='char_is_alpha_numeric_str_doc'> <h4>&sect;4.2.6: char_is_alpha_numeric</h4>
<div style='font-family: "Courier New", Courier, monospace; text-align: left; margin-top: 3mm; margin-bottom: 3mm; font-size: .95em; background: #DFDFDF; padding: 0.25em;'>
fstr_bool char_is_alpha_numeric(
<div style='margin-left: 4mm;'>char c<br></div>)
</div>
</div><hr>
<div id='char_is_hex_str_doc'> <h4>&sect;4.2.7: char_is_hex</h4>
<div style='font-family: "Courier New", Courier, monospace; text-align: left; margin-top: 3mm; margin-bottom: 3mm; font-size: .95em; background: #DFDFDF; padding: 0.25em;'>
fstr_bool char_is_hex(
<div style='margin-left: 4mm;'>char c<br></div>)
</div>
</div><hr>
<div id='char_is_numeric_str_doc'> <h4>&sect;4.2.8: char_is_numeric</h4>
<div style='font-family: "Courier New", Courier, monospace; text-align: left; margin-top: 3mm; margin-bottom: 3mm; font-size: .95em; background: #DFDFDF; padding: 0.25em;'>
fstr_bool char_is_numeric(
<div style='margin-left: 4mm;'>char c<br></div>)
</div>
</div><hr>
<div id='char_is_alpha_str_doc'> <h4>&sect;4.2.9: char_is_alpha</h4>
<div style='font-family: "Courier New", Courier, monospace; text-align: left; margin-top: 3mm; margin-bottom: 3mm; font-size: .95em; background: #DFDFDF; padding: 0.25em;'>
fstr_bool char_is_alpha(
<div style='margin-left: 4mm;'>char c<br></div>)
</div>
</div><hr>
<div id='char_is_alpha_true_str_doc'> <h4>&sect;4.2.10: char_is_alpha_true</h4>
<div style='font-family: "Courier New", Courier, monospace; text-align: left; margin-top: 3mm; margin-bottom: 3mm; font-size: .95em; background: #DFDFDF; padding: 0.25em;'>
fstr_bool char_is_alpha_true(
<div style='margin-left: 4mm;'>char c<br></div>)
</div>
</div><hr>
<div id='char_is_alpha_numeric_true_str_doc'> <h4>&sect;4.2.11: char_is_alpha_numeric_true</h4>
<div style='font-family: "Courier New", Courier, monospace; text-align: left; margin-top: 3mm; margin-bottom: 3mm; font-size: .95em; background: #DFDFDF; padding: 0.25em;'>
fstr_bool char_is_alpha_numeric_true(
<div style='margin-left: 4mm;'>char c<br></div>)
</div>
</div><hr>
<div id='string_zero_str_doc'> <h4>&sect;4.2.12: string_zero</h4>
<div style='font-family: "Courier New", Courier, monospace; text-align: left; margin-top: 3mm; margin-bottom: 3mm; font-size: .95em; background: #DFDFDF; padding: 0.25em;'>
String string_zero(
<div style='margin-left: 4mm;'><br></div>)
</div>
</div><hr>
<div id='make_string_str_doc'> <h4>&sect;4.2.13: make_string</h4>
<div style='font-family: "Courier New", Courier, monospace; text-align: left; margin-top: 3mm; margin-bottom: 3mm; font-size: .95em; background: #DFDFDF; padding: 0.25em;'>
String make_string(
<div style='margin-left: 4mm;'>void *str,<br>int32_t size,<br>int32_t mem_size<br></div>)
</div>
</div><hr>
<div> <h4>&sect;4.2.14: make_string</h4>
<div style='font-family: "Courier New", Courier, monospace; text-align: left; margin-top: 3mm; margin-bottom: 3mm; font-size: .95em; background: #DFDFDF; padding: 0.25em;'>
String make_string(
<div style='margin-left: 4mm;'>void *str,<br>int32_t size<br></div>)
</div>
</div><hr>
<div id='make_lit_string_str_doc'> <h4>&sect;4.2.15: make_lit_string</h4>
<div style='font-family: "Courier New", Courier, monospace; text-align: left; margin-top: 3mm; margin-bottom: 3mm; font-size: .95em; background: #DFDFDF; padding: 0.25em;'>
#define make_lit_string(s)</div>
</div><hr>
<div id='make_fixed_width_string_str_doc'> <h4>&sect;4.2.16: make_fixed_width_string</h4>
<div style='font-family: "Courier New", Courier, monospace; text-align: left; margin-top: 3mm; margin-bottom: 3mm; font-size: .95em; background: #DFDFDF; padding: 0.25em;'>
#define make_fixed_width_string(s)</div>
</div><hr>
<div id='expand_str_str_doc'> <h4>&sect;4.2.17: expand_str</h4>
<div style='font-family: "Courier New", Courier, monospace; text-align: left; margin-top: 3mm; margin-bottom: 3mm; font-size: .95em; background: #DFDFDF; padding: 0.25em;'>
#define expand_str(s)</div>
</div><hr>
<div id='str_size_str_doc'> <h4>&sect;4.2.18: str_size</h4>
<div style='font-family: "Courier New", Courier, monospace; text-align: left; margin-top: 3mm; margin-bottom: 3mm; font-size: .95em; background: #DFDFDF; padding: 0.25em;'>
int32_t str_size(
<div style='margin-left: 4mm;'>char *str<br></div>)
</div>
</div><hr>
<div id='make_string_slowly_str_doc'> <h4>&sect;4.2.19: make_string_slowly</h4>
<div style='font-family: "Courier New", Courier, monospace; text-align: left; margin-top: 3mm; margin-bottom: 3mm; font-size: .95em; background: #DFDFDF; padding: 0.25em;'>
String make_string_slowly(
<div style='margin-left: 4mm;'>void *str<br></div>)
</div>
</div><hr>
<div id='substr_str_doc'> <h4>&sect;4.2.20: substr</h4>
<div style='font-family: "Courier New", Courier, monospace; text-align: left; margin-top: 3mm; margin-bottom: 3mm; font-size: .95em; background: #DFDFDF; padding: 0.25em;'>
String substr(
<div style='margin-left: 4mm;'>String str,<br>int32_t start<br></div>)
</div>
</div><hr>
<div> <h4>&sect;4.2.21: substr</h4>
<div style='font-family: "Courier New", Courier, monospace; text-align: left; margin-top: 3mm; margin-bottom: 3mm; font-size: .95em; background: #DFDFDF; padding: 0.25em;'>
String substr(
<div style='margin-left: 4mm;'>String str,<br>int32_t start,<br>int32_t size<br></div>)
</div>
</div><hr>
<div id='tailstr_str_doc'> <h4>&sect;4.2.22: tailstr</h4>
<div style='font-family: "Courier New", Courier, monospace; text-align: left; margin-top: 3mm; margin-bottom: 3mm; font-size: .95em; background: #DFDFDF; padding: 0.25em;'>
String tailstr(
<div style='margin-left: 4mm;'>String str<br></div>)
</div>
</div><hr>
<div id='skip_whitespace_str_doc'> <h4>&sect;4.2.23: skip_whitespace</h4>
<div style='font-family: "Courier New", Courier, monospace; text-align: left; margin-top: 3mm; margin-bottom: 3mm; font-size: .95em; background: #DFDFDF; padding: 0.25em;'>
String skip_whitespace(
<div style='margin-left: 4mm;'>String str<br></div>)
</div>
</div><hr>
<div id='chop_whitespace_str_doc'> <h4>&sect;4.2.24: chop_whitespace</h4>
<div style='font-family: "Courier New", Courier, monospace; text-align: left; margin-top: 3mm; margin-bottom: 3mm; font-size: .95em; background: #DFDFDF; padding: 0.25em;'>
String chop_whitespace(
<div style='margin-left: 4mm;'>String str<br></div>)
</div>
</div><hr>
<div id='skip_chop_whitespace_str_doc'> <h4>&sect;4.2.25: skip_chop_whitespace</h4>
<div style='font-family: "Courier New", Courier, monospace; text-align: left; margin-top: 3mm; margin-bottom: 3mm; font-size: .95em; background: #DFDFDF; padding: 0.25em;'>
String skip_chop_whitespace(
<div style='margin-left: 4mm;'>String str<br></div>)
</div>
</div><hr>
<div id='match_str_doc'> <h4>&sect;4.2.26: match</h4>
<div style='font-family: "Courier New", Courier, monospace; text-align: left; margin-top: 3mm; margin-bottom: 3mm; font-size: .95em; background: #DFDFDF; padding: 0.25em;'>
fstr_bool match(
<div style='margin-left: 4mm;'>char *a,<br>char *b<br></div>)
</div>
</div><hr>
<div> <h4>&sect;4.2.27: match</h4>
<div style='font-family: "Courier New", Courier, monospace; text-align: left; margin-top: 3mm; margin-bottom: 3mm; font-size: .95em; background: #DFDFDF; padding: 0.25em;'>
fstr_bool match(
<div style='margin-left: 4mm;'>String a,<br>char *b<br></div>)
</div>
</div><hr>
<div> <h4>&sect;4.2.28: match</h4>
<div style='font-family: "Courier New", Courier, monospace; text-align: left; margin-top: 3mm; margin-bottom: 3mm; font-size: .95em; background: #DFDFDF; padding: 0.25em;'>
fstr_bool match(
<div style='margin-left: 4mm;'>char *a,<br>String b<br></div>)
</div>
</div><hr>
<div> <h4>&sect;4.2.29: match</h4>
<div style='font-family: "Courier New", Courier, monospace; text-align: left; margin-top: 3mm; margin-bottom: 3mm; font-size: .95em; background: #DFDFDF; padding: 0.25em;'>
fstr_bool match(
<div style='margin-left: 4mm;'>String a,<br>String b<br></div>)
</div>
</div><hr>
<div id='match_part_str_doc'> <h4>&sect;4.2.30: match_part</h4>
<div style='font-family: "Courier New", Courier, monospace; text-align: left; margin-top: 3mm; margin-bottom: 3mm; font-size: .95em; background: #DFDFDF; padding: 0.25em;'>
fstr_bool match_part(
<div style='margin-left: 4mm;'>char *a,<br>char *b,<br>int32_t *len<br></div>)
</div>
</div><hr>
<div> <h4>&sect;4.2.31: match_part</h4>
<div style='font-family: "Courier New", Courier, monospace; text-align: left; margin-top: 3mm; margin-bottom: 3mm; font-size: .95em; background: #DFDFDF; padding: 0.25em;'>
fstr_bool match_part(
<div style='margin-left: 4mm;'>String a,<br>char *b,<br>int32_t *len<br></div>)
</div>
</div><hr>
<div> <h4>&sect;4.2.32: match_part</h4>
<div style='font-family: "Courier New", Courier, monospace; text-align: left; margin-top: 3mm; margin-bottom: 3mm; font-size: .95em; background: #DFDFDF; padding: 0.25em;'>
fstr_bool match_part(
<div style='margin-left: 4mm;'>char *a,<br>char *b<br></div>)
</div>
</div><hr>
<div> <h4>&sect;4.2.33: match_part</h4>
<div style='font-family: "Courier New", Courier, monospace; text-align: left; margin-top: 3mm; margin-bottom: 3mm; font-size: .95em; background: #DFDFDF; padding: 0.25em;'>
fstr_bool match_part(
<div style='margin-left: 4mm;'>String a,<br>char *b<br></div>)
</div>
</div><hr>
<div> <h4>&sect;4.2.34: match_part</h4>
<div style='font-family: "Courier New", Courier, monospace; text-align: left; margin-top: 3mm; margin-bottom: 3mm; font-size: .95em; background: #DFDFDF; padding: 0.25em;'>
fstr_bool match_part(
<div style='margin-left: 4mm;'>char *a,<br>String b<br></div>)
</div>
</div><hr>
<div> <h4>&sect;4.2.35: match_part</h4>
<div style='font-family: "Courier New", Courier, monospace; text-align: left; margin-top: 3mm; margin-bottom: 3mm; font-size: .95em; background: #DFDFDF; padding: 0.25em;'>
fstr_bool match_part(
<div style='margin-left: 4mm;'>String a,<br>String b<br></div>)
</div>
</div><hr>
<div id='match_insensitive_str_doc'> <h4>&sect;4.2.36: match_insensitive</h4>
<div style='font-family: "Courier New", Courier, monospace; text-align: left; margin-top: 3mm; margin-bottom: 3mm; font-size: .95em; background: #DFDFDF; padding: 0.25em;'>
fstr_bool match_insensitive(
<div style='margin-left: 4mm;'>char *a,<br>char *b<br></div>)
</div>
</div><hr>
<div> <h4>&sect;4.2.37: match_insensitive</h4>
<div style='font-family: "Courier New", Courier, monospace; text-align: left; margin-top: 3mm; margin-bottom: 3mm; font-size: .95em; background: #DFDFDF; padding: 0.25em;'>
fstr_bool match_insensitive(
<div style='margin-left: 4mm;'>String a,<br>char *b<br></div>)
</div>
</div><hr>
<div> <h4>&sect;4.2.38: match_insensitive</h4>
<div style='font-family: "Courier New", Courier, monospace; text-align: left; margin-top: 3mm; margin-bottom: 3mm; font-size: .95em; background: #DFDFDF; padding: 0.25em;'>
fstr_bool match_insensitive(
<div style='margin-left: 4mm;'>char *a,<br>String b<br></div>)
</div>
</div><hr>
<div> <h4>&sect;4.2.39: match_insensitive</h4>
<div style='font-family: "Courier New", Courier, monospace; text-align: left; margin-top: 3mm; margin-bottom: 3mm; font-size: .95em; background: #DFDFDF; padding: 0.25em;'>
fstr_bool match_insensitive(
<div style='margin-left: 4mm;'>String a,<br>String b<br></div>)
</div>
</div><hr>
<div id='match_part_insensitive_str_doc'> <h4>&sect;4.2.40: match_part_insensitive</h4>
<div style='font-family: "Courier New", Courier, monospace; text-align: left; margin-top: 3mm; margin-bottom: 3mm; font-size: .95em; background: #DFDFDF; padding: 0.25em;'>
fstr_bool match_part_insensitive(
<div style='margin-left: 4mm;'>char *a,<br>char *b,<br>int32_t *len<br></div>)
</div>
</div><hr>
<div> <h4>&sect;4.2.41: match_part_insensitive</h4>
<div style='font-family: "Courier New", Courier, monospace; text-align: left; margin-top: 3mm; margin-bottom: 3mm; font-size: .95em; background: #DFDFDF; padding: 0.25em;'>
fstr_bool match_part_insensitive(
<div style='margin-left: 4mm;'>String a,<br>char *b,<br>int32_t *len<br></div>)
</div>
</div><hr>
<div> <h4>&sect;4.2.42: match_part_insensitive</h4>
<div style='font-family: "Courier New", Courier, monospace; text-align: left; margin-top: 3mm; margin-bottom: 3mm; font-size: .95em; background: #DFDFDF; padding: 0.25em;'>
fstr_bool match_part_insensitive(
<div style='margin-left: 4mm;'>char *a,<br>char *b<br></div>)
</div>
</div><hr>
<div> <h4>&sect;4.2.43: match_part_insensitive</h4>
<div style='font-family: "Courier New", Courier, monospace; text-align: left; margin-top: 3mm; margin-bottom: 3mm; font-size: .95em; background: #DFDFDF; padding: 0.25em;'>
fstr_bool match_part_insensitive(
<div style='margin-left: 4mm;'>String a,<br>char *b<br></div>)
</div>
</div><hr>
<div> <h4>&sect;4.2.44: match_part_insensitive</h4>
<div style='font-family: "Courier New", Courier, monospace; text-align: left; margin-top: 3mm; margin-bottom: 3mm; font-size: .95em; background: #DFDFDF; padding: 0.25em;'>
fstr_bool match_part_insensitive(
<div style='margin-left: 4mm;'>char *a,<br>String b<br></div>)
</div>
</div><hr>
<div> <h4>&sect;4.2.45: match_part_insensitive</h4>
<div style='font-family: "Courier New", Courier, monospace; text-align: left; margin-top: 3mm; margin-bottom: 3mm; font-size: .95em; background: #DFDFDF; padding: 0.25em;'>
fstr_bool match_part_insensitive(
<div style='margin-left: 4mm;'>String a,<br>String b<br></div>)
</div>
</div><hr>
<div id='compare_str_doc'> <h4>&sect;4.2.46: compare</h4>
<div style='font-family: "Courier New", Courier, monospace; text-align: left; margin-top: 3mm; margin-bottom: 3mm; font-size: .95em; background: #DFDFDF; padding: 0.25em;'>
int32_t compare(
<div style='margin-left: 4mm;'>char *a,<br>char *b<br></div>)
</div>
</div><hr>
<div> <h4>&sect;4.2.47: compare</h4>
<div style='font-family: "Courier New", Courier, monospace; text-align: left; margin-top: 3mm; margin-bottom: 3mm; font-size: .95em; background: #DFDFDF; padding: 0.25em;'>
int32_t compare(
<div style='margin-left: 4mm;'>String a,<br>char *b<br></div>)
</div>
</div><hr>
<div> <h4>&sect;4.2.48: compare</h4>
<div style='font-family: "Courier New", Courier, monospace; text-align: left; margin-top: 3mm; margin-bottom: 3mm; font-size: .95em; background: #DFDFDF; padding: 0.25em;'>
int32_t compare(
<div style='margin-left: 4mm;'>char *a,<br>String b<br></div>)
</div>
</div><hr>
<div> <h4>&sect;4.2.49: compare</h4>
<div style='font-family: "Courier New", Courier, monospace; text-align: left; margin-top: 3mm; margin-bottom: 3mm; font-size: .95em; background: #DFDFDF; padding: 0.25em;'>
int32_t compare(
<div style='margin-left: 4mm;'>String a,<br>String b<br></div>)
</div>
</div><hr>
<div id='find_str_doc'> <h4>&sect;4.2.50: find</h4>
<div style='font-family: "Courier New", Courier, monospace; text-align: left; margin-top: 3mm; margin-bottom: 3mm; font-size: .95em; background: #DFDFDF; padding: 0.25em;'>
int32_t find(
<div style='margin-left: 4mm;'>char *str,<br>int32_t start,<br>char character<br></div>)
</div>
</div><hr>
<div> <h4>&sect;4.2.51: find</h4>
<div style='font-family: "Courier New", Courier, monospace; text-align: left; margin-top: 3mm; margin-bottom: 3mm; font-size: .95em; background: #DFDFDF; padding: 0.25em;'>
int32_t find(
<div style='margin-left: 4mm;'>String str,<br>int32_t start,<br>char character<br></div>)
</div>
</div><hr>
<div> <h4>&sect;4.2.52: find</h4>
<div style='font-family: "Courier New", Courier, monospace; text-align: left; margin-top: 3mm; margin-bottom: 3mm; font-size: .95em; background: #DFDFDF; padding: 0.25em;'>
int32_t find(
<div style='margin-left: 4mm;'>char *str,<br>int32_t start,<br>char *characters<br></div>)
</div>
</div><hr>
<div> <h4>&sect;4.2.53: find</h4>
<div style='font-family: "Courier New", Courier, monospace; text-align: left; margin-top: 3mm; margin-bottom: 3mm; font-size: .95em; background: #DFDFDF; padding: 0.25em;'>
int32_t find(
<div style='margin-left: 4mm;'>String str,<br>int32_t start,<br>char *characters<br></div>)
</div>
</div><hr>
<div id='find_substr_str_doc'> <h4>&sect;4.2.54: find_substr</h4>
<div style='font-family: "Courier New", Courier, monospace; text-align: left; margin-top: 3mm; margin-bottom: 3mm; font-size: .95em; background: #DFDFDF; padding: 0.25em;'>
int32_t find_substr(
<div style='margin-left: 4mm;'>char *str,<br>int32_t start,<br>String seek<br></div>)
</div>
</div><hr>
<div> <h4>&sect;4.2.55: find_substr</h4>
<div style='font-family: "Courier New", Courier, monospace; text-align: left; margin-top: 3mm; margin-bottom: 3mm; font-size: .95em; background: #DFDFDF; padding: 0.25em;'>
int32_t find_substr(
<div style='margin-left: 4mm;'>String str,<br>int32_t start,<br>String seek<br></div>)
</div>
</div><hr>
<div id='rfind_substr_str_doc'> <h4>&sect;4.2.56: rfind_substr</h4>
<div style='font-family: "Courier New", Courier, monospace; text-align: left; margin-top: 3mm; margin-bottom: 3mm; font-size: .95em; background: #DFDFDF; padding: 0.25em;'>
int32_t rfind_substr(
<div style='margin-left: 4mm;'>String str,<br>int32_t start,<br>String seek<br></div>)
</div>
</div><hr>
<div id='find_substr_insensitive_str_doc'> <h4>&sect;4.2.57: find_substr_insensitive</h4>
<div style='font-family: "Courier New", Courier, monospace; text-align: left; margin-top: 3mm; margin-bottom: 3mm; font-size: .95em; background: #DFDFDF; padding: 0.25em;'>
int32_t find_substr_insensitive(
<div style='margin-left: 4mm;'>char *str,<br>int32_t start,<br>String seek<br></div>)
</div>
</div><hr>
<div> <h4>&sect;4.2.58: find_substr_insensitive</h4>
<div style='font-family: "Courier New", Courier, monospace; text-align: left; margin-top: 3mm; margin-bottom: 3mm; font-size: .95em; background: #DFDFDF; padding: 0.25em;'>
int32_t find_substr_insensitive(
<div style='margin-left: 4mm;'>String str,<br>int32_t start,<br>String seek<br></div>)
</div>
</div><hr>
<div id='has_substr_str_doc'> <h4>&sect;4.2.59: has_substr</h4>
<div style='font-family: "Courier New", Courier, monospace; text-align: left; margin-top: 3mm; margin-bottom: 3mm; font-size: .95em; background: #DFDFDF; padding: 0.25em;'>
fstr_bool has_substr(
<div style='margin-left: 4mm;'>char *s,<br>String seek<br></div>)
</div>
</div><hr>
<div> <h4>&sect;4.2.60: has_substr</h4>
<div style='font-family: "Courier New", Courier, monospace; text-align: left; margin-top: 3mm; margin-bottom: 3mm; font-size: .95em; background: #DFDFDF; padding: 0.25em;'>
fstr_bool has_substr(
<div style='margin-left: 4mm;'>String s,<br>String seek<br></div>)
</div>
</div><hr>
<div id='has_substr_insensitive_str_doc'> <h4>&sect;4.2.61: has_substr_insensitive</h4>
<div style='font-family: "Courier New", Courier, monospace; text-align: left; margin-top: 3mm; margin-bottom: 3mm; font-size: .95em; background: #DFDFDF; padding: 0.25em;'>
fstr_bool has_substr_insensitive(
<div style='margin-left: 4mm;'>char *s,<br>String seek<br></div>)
</div>
</div><hr>
<div> <h4>&sect;4.2.62: has_substr_insensitive</h4>
<div style='font-family: "Courier New", Courier, monospace; text-align: left; margin-top: 3mm; margin-bottom: 3mm; font-size: .95em; background: #DFDFDF; padding: 0.25em;'>
fstr_bool has_substr_insensitive(
<div style='margin-left: 4mm;'>String s,<br>String seek<br></div>)
</div>
</div><hr>
<div id='copy_fast_unsafe_str_doc'> <h4>&sect;4.2.63: copy_fast_unsafe</h4>
<div style='font-family: "Courier New", Courier, monospace; text-align: left; margin-top: 3mm; margin-bottom: 3mm; font-size: .95em; background: #DFDFDF; padding: 0.25em;'>
int32_t copy_fast_unsafe(
<div style='margin-left: 4mm;'>char *dest,<br>char *src<br></div>)
</div>
</div><hr>
<div> <h4>&sect;4.2.64: copy_fast_unsafe</h4>
<div style='font-family: "Courier New", Courier, monospace; text-align: left; margin-top: 3mm; margin-bottom: 3mm; font-size: .95em; background: #DFDFDF; padding: 0.25em;'>
void copy_fast_unsafe(
<div style='margin-left: 4mm;'>char *dest,<br>String src<br></div>)
</div>
</div><hr>
<div id='copy_checked_str_doc'> <h4>&sect;4.2.65: copy_checked</h4>
<div style='font-family: "Courier New", Courier, monospace; text-align: left; margin-top: 3mm; margin-bottom: 3mm; font-size: .95em; background: #DFDFDF; padding: 0.25em;'>
fstr_bool copy_checked(
<div style='margin-left: 4mm;'>String *dest,<br>String src<br></div>)
</div>
</div><hr>
<div id='copy_partial_str_doc'> <h4>&sect;4.2.66: copy_partial</h4>
<div style='font-family: "Courier New", Courier, monospace; text-align: left; margin-top: 3mm; margin-bottom: 3mm; font-size: .95em; background: #DFDFDF; padding: 0.25em;'>
fstr_bool copy_partial(
<div style='margin-left: 4mm;'>String *dest,<br>char *src<br></div>)
</div>
</div><hr>
<div> <h4>&sect;4.2.67: copy_partial</h4>
<div style='font-family: "Courier New", Courier, monospace; text-align: left; margin-top: 3mm; margin-bottom: 3mm; font-size: .95em; background: #DFDFDF; padding: 0.25em;'>
fstr_bool copy_partial(
<div style='margin-left: 4mm;'>String *dest,<br>String src<br></div>)
</div>
</div><hr>
<div id='copy_str_doc'> <h4>&sect;4.2.68: copy</h4>
<div style='font-family: "Courier New", Courier, monospace; text-align: left; margin-top: 3mm; margin-bottom: 3mm; font-size: .95em; background: #DFDFDF; padding: 0.25em;'>
int32_t copy(
<div style='margin-left: 4mm;'>char *dest,<br>char *src<br></div>)
</div>
</div><hr>
<div> <h4>&sect;4.2.69: copy</h4>
<div style='font-family: "Courier New", Courier, monospace; text-align: left; margin-top: 3mm; margin-bottom: 3mm; font-size: .95em; background: #DFDFDF; padding: 0.25em;'>
void copy(
<div style='margin-left: 4mm;'>String *dest,<br>String src<br></div>)
</div>
</div><hr>
<div> <h4>&sect;4.2.70: copy</h4>
<div style='font-family: "Courier New", Courier, monospace; text-align: left; margin-top: 3mm; margin-bottom: 3mm; font-size: .95em; background: #DFDFDF; padding: 0.25em;'>
void copy(
<div style='margin-left: 4mm;'>String *dest,<br>char *src<br></div>)
</div>
</div><hr>
<div id='append_checked_str_doc'> <h4>&sect;4.2.71: append_checked</h4>
<div style='font-family: "Courier New", Courier, monospace; text-align: left; margin-top: 3mm; margin-bottom: 3mm; font-size: .95em; background: #DFDFDF; padding: 0.25em;'>
fstr_bool append_checked(
<div style='margin-left: 4mm;'>String *dest,<br>String src<br></div>)
</div>
</div><hr>
<div id='append_partial_str_doc'> <h4>&sect;4.2.72: append_partial</h4>
<div style='font-family: "Courier New", Courier, monospace; text-align: left; margin-top: 3mm; margin-bottom: 3mm; font-size: .95em; background: #DFDFDF; padding: 0.25em;'>
fstr_bool append_partial(
<div style='margin-left: 4mm;'>String *dest,<br>char *src<br></div>)
</div>
</div><hr>
<div> <h4>&sect;4.2.73: append_partial</h4>
<div style='font-family: "Courier New", Courier, monospace; text-align: left; margin-top: 3mm; margin-bottom: 3mm; font-size: .95em; background: #DFDFDF; padding: 0.25em;'>
fstr_bool append_partial(
<div style='margin-left: 4mm;'>String *dest,<br>String src<br></div>)
</div>
</div><hr>
<div id='append_str_doc'> <h4>&sect;4.2.74: append</h4>
<div style='font-family: "Courier New", Courier, monospace; text-align: left; margin-top: 3mm; margin-bottom: 3mm; font-size: .95em; background: #DFDFDF; padding: 0.25em;'>
fstr_bool append(
<div style='margin-left: 4mm;'>String *dest,<br>char c<br></div>)
</div>
</div><hr>
<div> <h4>&sect;4.2.75: append</h4>
<div style='font-family: "Courier New", Courier, monospace; text-align: left; margin-top: 3mm; margin-bottom: 3mm; font-size: .95em; background: #DFDFDF; padding: 0.25em;'>
fstr_bool append(
<div style='margin-left: 4mm;'>String *dest,<br>String src<br></div>)
</div>
</div><hr>
<div> <h4>&sect;4.2.76: append</h4>
<div style='font-family: "Courier New", Courier, monospace; text-align: left; margin-top: 3mm; margin-bottom: 3mm; font-size: .95em; background: #DFDFDF; padding: 0.25em;'>
fstr_bool append(
<div style='margin-left: 4mm;'>String *dest,<br>char *src<br></div>)
</div>
</div><hr>
<div id='terminate_with_null_str_doc'> <h4>&sect;4.2.77: terminate_with_null</h4>
<div style='font-family: "Courier New", Courier, monospace; text-align: left; margin-top: 3mm; margin-bottom: 3mm; font-size: .95em; background: #DFDFDF; padding: 0.25em;'>
fstr_bool terminate_with_null(
<div style='margin-left: 4mm;'>String *str<br></div>)
</div>
</div><hr>
<div id='append_padding_str_doc'> <h4>&sect;4.2.78: append_padding</h4>
<div style='font-family: "Courier New", Courier, monospace; text-align: left; margin-top: 3mm; margin-bottom: 3mm; font-size: .95em; background: #DFDFDF; padding: 0.25em;'>
fstr_bool append_padding(
<div style='margin-left: 4mm;'>String *dest,<br>char c,<br>int32_t target_size<br></div>)
</div>
</div><hr>
<div id='replace_char_str_doc'> <h4>&sect;4.2.79: replace_char</h4>
<div style='font-family: "Courier New", Courier, monospace; text-align: left; margin-top: 3mm; margin-bottom: 3mm; font-size: .95em; background: #DFDFDF; padding: 0.25em;'>
void replace_char(
<div style='margin-left: 4mm;'>String *str,<br>char replace,<br>char with<br></div>)
</div>
</div><hr>
<div id='int_to_str_size_str_doc'> <h4>&sect;4.2.80: int_to_str_size</h4>
<div style='font-family: "Courier New", Courier, monospace; text-align: left; margin-top: 3mm; margin-bottom: 3mm; font-size: .95em; background: #DFDFDF; padding: 0.25em;'>
int32_t int_to_str_size(
<div style='margin-left: 4mm;'>int32_t x<br></div>)
</div>
</div><hr>
<div id='int_to_str_str_doc'> <h4>&sect;4.2.81: int_to_str</h4>
<div style='font-family: "Courier New", Courier, monospace; text-align: left; margin-top: 3mm; margin-bottom: 3mm; font-size: .95em; background: #DFDFDF; padding: 0.25em;'>
fstr_bool int_to_str(
<div style='margin-left: 4mm;'>String *dest,<br>int32_t x<br></div>)
</div>
</div><hr>
<div id='append_int_to_str_str_doc'> <h4>&sect;4.2.82: append_int_to_str</h4>
<div style='font-family: "Courier New", Courier, monospace; text-align: left; margin-top: 3mm; margin-bottom: 3mm; font-size: .95em; background: #DFDFDF; padding: 0.25em;'>
fstr_bool append_int_to_str(
<div style='margin-left: 4mm;'>String *dest,<br>int32_t x<br></div>)
</div>
</div><hr>
<div id='u64_to_str_size_str_doc'> <h4>&sect;4.2.83: u64_to_str_size</h4>
<div style='font-family: "Courier New", Courier, monospace; text-align: left; margin-top: 3mm; margin-bottom: 3mm; font-size: .95em; background: #DFDFDF; padding: 0.25em;'>
int32_t u64_to_str_size(
<div style='margin-left: 4mm;'>uint64_t x<br></div>)
</div>
</div><hr>
<div id='u64_to_str_str_doc'> <h4>&sect;4.2.84: u64_to_str</h4>
<div style='font-family: "Courier New", Courier, monospace; text-align: left; margin-top: 3mm; margin-bottom: 3mm; font-size: .95em; background: #DFDFDF; padding: 0.25em;'>
fstr_bool u64_to_str(
<div style='margin-left: 4mm;'>String *dest,<br>uint64_t x<br></div>)
</div>
</div><hr>
<div id='append_u64_to_str_str_doc'> <h4>&sect;4.2.85: append_u64_to_str</h4>
<div style='font-family: "Courier New", Courier, monospace; text-align: left; margin-top: 3mm; margin-bottom: 3mm; font-size: .95em; background: #DFDFDF; padding: 0.25em;'>
fstr_bool append_u64_to_str(
<div style='margin-left: 4mm;'>String *dest,<br>uint64_t x<br></div>)
</div>
</div><hr>
<div id='float_to_str_size_str_doc'> <h4>&sect;4.2.86: float_to_str_size</h4>
<div style='font-family: "Courier New", Courier, monospace; text-align: left; margin-top: 3mm; margin-bottom: 3mm; font-size: .95em; background: #DFDFDF; padding: 0.25em;'>
int32_t float_to_str_size(
<div style='margin-left: 4mm;'>float x<br></div>)
</div>
</div><hr>
<div id='append_float_to_str_str_doc'> <h4>&sect;4.2.87: append_float_to_str</h4>
<div style='font-family: "Courier New", Courier, monospace; text-align: left; margin-top: 3mm; margin-bottom: 3mm; font-size: .95em; background: #DFDFDF; padding: 0.25em;'>
fstr_bool append_float_to_str(
<div style='margin-left: 4mm;'>String *dest,<br>float x<br></div>)
</div>
</div><hr>
<div id='float_to_str_str_doc'> <h4>&sect;4.2.88: float_to_str</h4>
<div style='font-family: "Courier New", Courier, monospace; text-align: left; margin-top: 3mm; margin-bottom: 3mm; font-size: .95em; background: #DFDFDF; padding: 0.25em;'>
fstr_bool float_to_str(
<div style='margin-left: 4mm;'>String *dest,<br>float x<br></div>)
</div>
</div><hr>
<div id='str_to_int_str_doc'> <h4>&sect;4.2.89: str_to_int</h4>
<div style='font-family: "Courier New", Courier, monospace; text-align: left; margin-top: 3mm; margin-bottom: 3mm; font-size: .95em; background: #DFDFDF; padding: 0.25em;'>
int32_t str_to_int(
<div style='margin-left: 4mm;'>char *str<br></div>)
</div>
</div><hr>
<div> <h4>&sect;4.2.90: str_to_int</h4>
<div style='font-family: "Courier New", Courier, monospace; text-align: left; margin-top: 3mm; margin-bottom: 3mm; font-size: .95em; background: #DFDFDF; padding: 0.25em;'>
int32_t str_to_int(
<div style='margin-left: 4mm;'>String str<br></div>)
</div>
</div><hr>
<div id='hexchar_to_int_str_doc'> <h4>&sect;4.2.91: hexchar_to_int</h4>
<div style='font-family: "Courier New", Courier, monospace; text-align: left; margin-top: 3mm; margin-bottom: 3mm; font-size: .95em; background: #DFDFDF; padding: 0.25em;'>
int32_t hexchar_to_int(
<div style='margin-left: 4mm;'>char c<br></div>)
</div>
</div><hr>
<div id='int_to_hexchar_str_doc'> <h4>&sect;4.2.92: int_to_hexchar</h4>
<div style='font-family: "Courier New", Courier, monospace; text-align: left; margin-top: 3mm; margin-bottom: 3mm; font-size: .95em; background: #DFDFDF; padding: 0.25em;'>
char int_to_hexchar(
<div style='margin-left: 4mm;'>int32_t x<br></div>)
</div>
</div><hr>
<div id='hexstr_to_int_str_doc'> <h4>&sect;4.2.93: hexstr_to_int</h4>
<div style='font-family: "Courier New", Courier, monospace; text-align: left; margin-top: 3mm; margin-bottom: 3mm; font-size: .95em; background: #DFDFDF; padding: 0.25em;'>
uint32_t hexstr_to_int(
<div style='margin-left: 4mm;'>String str<br></div>)
</div>
</div><hr>
<div id='color_to_hexstr_str_doc'> <h4>&sect;4.2.94: color_to_hexstr</h4>
<div style='font-family: "Courier New", Courier, monospace; text-align: left; margin-top: 3mm; margin-bottom: 3mm; font-size: .95em; background: #DFDFDF; padding: 0.25em;'>
fstr_bool color_to_hexstr(
<div style='margin-left: 4mm;'>String *s,<br>uint32_t color<br></div>)
</div>
</div><hr>
<div id='hexstr_to_color_str_doc'> <h4>&sect;4.2.95: hexstr_to_color</h4>
<div style='font-family: "Courier New", Courier, monospace; text-align: left; margin-top: 3mm; margin-bottom: 3mm; font-size: .95em; background: #DFDFDF; padding: 0.25em;'>
fstr_bool hexstr_to_color(
<div style='margin-left: 4mm;'>String s,<br>uint32_t *out<br></div>)
</div>
</div><hr>
<div id='reverse_seek_slash_str_doc'> <h4>&sect;4.2.96: reverse_seek_slash</h4>
<div style='font-family: "Courier New", Courier, monospace; text-align: left; margin-top: 3mm; margin-bottom: 3mm; font-size: .95em; background: #DFDFDF; padding: 0.25em;'>
int32_t reverse_seek_slash(
<div style='margin-left: 4mm;'>String str,<br>int32_t pos<br></div>)
</div>
</div><hr>
<div> <h4>&sect;4.2.97: reverse_seek_slash</h4>
<div style='font-family: "Courier New", Courier, monospace; text-align: left; margin-top: 3mm; margin-bottom: 3mm; font-size: .95em; background: #DFDFDF; padding: 0.25em;'>
int32_t reverse_seek_slash(
<div style='margin-left: 4mm;'>String str<br></div>)
</div>
</div><hr>
<div id='front_of_directory_str_doc'> <h4>&sect;4.2.98: front_of_directory</h4>
<div style='font-family: "Courier New", Courier, monospace; text-align: left; margin-top: 3mm; margin-bottom: 3mm; font-size: .95em; background: #DFDFDF; padding: 0.25em;'>
String front_of_directory(
<div style='margin-left: 4mm;'>String dir<br></div>)
</div>
</div><hr>
<div id='path_of_directory_str_doc'> <h4>&sect;4.2.99: path_of_directory</h4>
<div style='font-family: "Courier New", Courier, monospace; text-align: left; margin-top: 3mm; margin-bottom: 3mm; font-size: .95em; background: #DFDFDF; padding: 0.25em;'>
String path_of_directory(
<div style='margin-left: 4mm;'>String dir<br></div>)
</div>
</div><hr>
<div id='set_last_folder_str_doc'> <h4>&sect;4.2.100: set_last_folder</h4>
<div style='font-family: "Courier New", Courier, monospace; text-align: left; margin-top: 3mm; margin-bottom: 3mm; font-size: .95em; background: #DFDFDF; padding: 0.25em;'>
fstr_bool set_last_folder(
<div style='margin-left: 4mm;'>String *dir,<br>char *folder_name,<br>char slash<br></div>)
</div>
</div><hr>
<div> <h4>&sect;4.2.101: set_last_folder</h4>
<div style='font-family: "Courier New", Courier, monospace; text-align: left; margin-top: 3mm; margin-bottom: 3mm; font-size: .95em; background: #DFDFDF; padding: 0.25em;'>
fstr_bool set_last_folder(
<div style='margin-left: 4mm;'>String *dir,<br>String folder_name,<br>char slash<br></div>)
</div>
</div><hr>
<div id='file_extension_str_doc'> <h4>&sect;4.2.102: file_extension</h4>
<div style='font-family: "Courier New", Courier, monospace; text-align: left; margin-top: 3mm; margin-bottom: 3mm; font-size: .95em; background: #DFDFDF; padding: 0.25em;'>
String file_extension(
<div style='margin-left: 4mm;'>String str<br></div>)
</div>
</div><hr>
<div id='remove_last_folder_str_doc'> <h4>&sect;4.2.103: remove_last_folder</h4>
<div style='font-family: "Courier New", Courier, monospace; text-align: left; margin-top: 3mm; margin-bottom: 3mm; font-size: .95em; background: #DFDFDF; padding: 0.25em;'>
fstr_bool remove_last_folder(
<div style='margin-left: 4mm;'>String *str<br></div>)
</div>
</div><hr>
<div id='string_set_match_str_doc'> <h4>&sect;4.2.104: string_set_match</h4>
<div style='font-family: "Courier New", Courier, monospace; text-align: left; margin-top: 3mm; margin-bottom: 3mm; font-size: .95em; background: #DFDFDF; padding: 0.25em;'>
fstr_bool string_set_match(
<div style='margin-left: 4mm;'>String *str_set,<br>int32_t count,<br>String str,<br>int32_t *match_index<br></div>)
</div>
</div><hr>
</div>
</body>
</html>

View File

@ -10,8 +10,8 @@
#include "4coder_rect.h"
#include "4coder_mem.h"
#ifndef FRED_STRING_STRUCT
#define FRED_STRING_STRUCT
#ifndef FSTRING_STRUCT
#define FSTRING_STRUCT
typedef struct String{
char *str;
int size;

View File

@ -4,7 +4,7 @@
#include "4coder_custom.h"
#define FCPP_STRING_IMPLEMENTATION
#define FSTRING_IMPLEMENTATION
#include "4coder_string.h"
#include "4coder_helper.h"

File diff suppressed because it is too large Load Diff

View File

@ -1910,8 +1910,9 @@ App_Step_Sig(app_step){
for (dll_items(node, used_nodes)){
file = (Editing_File*)node;
terminate_with_null(&file->name.source_path);
time_stamp =
system->file_time_stamp(make_c_str(file->name.source_path));
system->file_time_stamp(file->name.source_path.str);
if (time_stamp > 0){
file->state.last_sys_write_time = time_stamp;

View File

@ -377,8 +377,8 @@ API_EXPORT int32_t
Clipboard_Index(Application_Links *app, int32_t clipboard_id, int32_t item_index, char *out, int32_t len)/*
DOC_PARAM(clipboard_id, This parameter is set up to prepare for future features, it should always be 0 for now.)
DOC_PARAM(item_index, This parameter specifies which item to read, 0 is the most recent copy, 1 is the second most recent copy, etc.)
DOC_PARAM(out, a buffer where the clipboard contents are written or NULL)
DOC_PARAM(len, the length of the out buffer)
DOC_PARAM(out, This parameter provides a buffer where the clipboard contents are written. This parameter may be NULL.)
DOC_PARAM(len, This parameter specifies the length of the out buffer.)
DOC_RETURN(This call returns the size of the item associated with item_index.)
DOC
(

View File

@ -16,7 +16,7 @@
#include "4ed_meta.h"
#include "4cpp_types.h"
#define FCPP_STRING_IMPLEMENTATION
#define FSTRING_IMPLEMENTATION
#include "4coder_string.h"
#include "4ed_mem.cpp"

View File

@ -713,8 +713,7 @@ file_set_name(Working_Set *working_set, Editing_File *file, String filename){
copy_checked(&file->name.source_path, filename);
file->name.live_name.size = 0;
get_front_of_directory(&file->name.live_name, filename);
copy(&file->name.live_name, front_of_directory(filename));
if (file->name.source_path.size == file->name.live_name.size){
file->name.extension.size = 0;
@ -3705,9 +3704,9 @@ begin_exhaustive_loop(Exhaustive_File_Loop *loop, Hot_Directory *hdir){
loop->infos = hdir->file_list.infos;
loop->count = hdir->file_list.count;
get_front_of_directory(&loop->front_name, hdir->string);
copy(&loop->front_name, front_of_directory(hdir->string));
get_absolutes(loop->front_name, &loop->absolutes, 1, 1);
get_path_of_directory(&loop->full_path, hdir->string);
copy(&loop->full_path, path_of_directory(hdir->string));
loop->r = loop->full_path.size;
}
@ -4286,7 +4285,7 @@ step_file_view(System_Functions *system, View *view, View *active_view, Input_Su
char text_space[7];
String text = make_fixed_width_string(text_space);
color_to_hexstr(*edit_color, &text);
color_to_hexstr(&text, *edit_color);
if (gui_do_text_with_cursor(target, view->color_cursor, text, &update)){
b32 r = 0;
i32 j = 0;

File diff suppressed because it is too large Load Diff

View File

@ -27,8 +27,8 @@ pushd ..\build
REM call "%CODE_DIR%\buildsuper.bat" ..\code\4coder_default_bindings.cpp
call "%CODE_DIR%\buildsuper.bat" ..\code\power\4coder_experiments.cpp
REM call "%CODE_DIR%\buildsuper.bat" ..\code\power\4coder_casey.cpp
REM call "%CODE_DIR%\buildsuper.bat" ..\4vim\4coder_chronal.cpp
call "%CODE_DIR%\buildsuper.bat" ..\code\power\4coder_casey.cpp
call "%CODE_DIR%\buildsuper.bat" ..\4vim\4coder_chronal.cpp
if %ERRORLEVEL% neq 0 (set FirstError=1)
set EXPORTS=/EXPORT:app_get_functions

1409
internal_4coder_string.cpp Normal file

File diff suppressed because it is too large Load Diff

View File

@ -4,7 +4,7 @@
#include "4coder_custom.h"
#define FCPP_STRING_IMPLEMENTATION
#define FSTRING_IMPLEMENTATION
#include "4coder_string.h"
#include "4coder_helper.h"
@ -19,6 +19,7 @@ struct Prev_Jump{
int line;
};
static Prev_Jump null_location = {0};
static Prev_Jump prev_location = {0};
CUSTOM_COMMAND_SIG(build_in_build_panel){
@ -44,8 +45,7 @@ CUSTOM_COMMAND_SIG(build_in_build_panel){
execute_standard_build(app, &build_view, &original_buffer);
prev_location = {0};
prev_location = null_location;
}
// TODO(allen): This is a bit nasty. I want a system for picking

View File

@ -253,12 +253,15 @@ HOOK_SIG(experimental_start_hook){
if (file){
fscanf(file, "%127s\n%127s", theme_name, font_name);
replace_char(theme_name, '#', ' ');
replace_char(font_name, '#', ' ');
String theme = make_string_slowly(theme_name);
String font = make_string_slowly(font_name);
replace_char(&theme, '#', ' ');
replace_char(&font, '#', ' ');
fclose(file);
app->change_theme(app, theme_name, (int)strlen(theme_name));
app->change_font(app, font_name, (int)strlen(font_name));
}

View File

@ -13,7 +13,7 @@
#include "4ed_meta.h"
#define FCPP_STRING_IMPLEMENTATION
#define FSTRING_IMPLEMENTATION
#include "4coder_string.h"
#include "4ed_mem.cpp"
@ -644,7 +644,7 @@ Sys_File_Load_Begin_Sig(system_file_load_begin){
copy(&fixed_str, fname_str);
terminate_with_null(&fixed_str);
replace_char(fixed_str, '/', '\\');
replace_char(&fixed_str, '/', '\\');
file = CreateFile(fixed_str.str, GENERIC_READ, 0, 0,
OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0);
@ -752,8 +752,9 @@ Sys_Set_File_List_Sig(system_set_file_list){
append(&dir, directory);
char trail_str[] = "\\*";
append(&dir, trail_str);
terminate_with_null(&dir);
char *c_str_dir = make_c_str(dir);
char *c_str_dir = dir.str;
WIN32_FIND_DATA find_data;
HANDLE search;
@ -774,7 +775,7 @@ Sys_Set_File_List_Sig(system_set_file_list){
more_files = FindNextFile(search, &find_data);
}while(more_files);
FindClose(search);
i32 required_size = count + file_count * sizeof(File_Info);
if (file_list->block_size < required_size){
Win32FreeMemory(file_list->block);
@ -800,7 +801,10 @@ Sys_Set_File_List_Sig(system_set_file_list){
for(;find_data.cFileName[i];++i) *name++ = find_data.cFileName[i];
info->filename_len = i;
*name++ = 0;
replace_char(info->filename, '\\', '/');
String fname = make_string(info->filename,
info->filename_len,
info->filename_len+1);
replace_char(&fname, '\\', '/');
++info;
}
more_files = FindNextFile(search, &find_data);
@ -1806,7 +1810,7 @@ WinMain(HINSTANCE hInstance,
String current_directory = make_string(current_directory_mem, written, required);
terminate_with_null(&current_directory);
replace_char(current_directory, '\\', '/');
replace_char(&current_directory, '\\', '/');
Command_Line_Parameters clparams;
clparams.argv = argv;