7 int string_iterator = 0;
8 while (str[string_iterator] != 0) string_iterator++;
9 return string_iterator;
14int first_pos(
string str,
char ch) {
15 int string_iterator = 0;
16 while (str[string_iterator] != 0) {
17 if (str[string_iterator] == ch)
return string_iterator;
23int last_pos(
string str,
char ch) {
24 int string_iterator = len(str);
25 while (string_iterator != 0) {
26 if (str[string_iterator] == ch)
return string_iterator;
34boolean equals(
string str1,
string str2) {
35 int string_iterator = 0;
36 while ((str1[string_iterator] != 0) && (str2[string_iterator] != 0)) {
37 if (str1[string_iterator] == str2[string_iterator]) string_iterator++;
40 if ((str1[string_iterator] == 0) && (str2[string_iterator] == 0))
return true;
46mod_string substring_beg(
string str,
int begin) {
47 return substring_mid(str, begin, len(str));
50mod_string substring_mid(
string str,
int begin,
int end) {
51 mod_string result =
ralloc(end - begin + 1);
52 for (
int i = begin; i < end; ++i) result[i - begin] = str[i];
53 result[end - begin] = 0;
57mod_string substring_end(
string str,
int end) {
58 return substring_mid(str, 0, end);
63void move_string_by(mod_string str,
int step) {
67 str[i - step] = str[i];
68 }
while (str[i] != 0);
69 str[i - step + 1] = 0;
72mod_string concatenate(
string str1,
string str2) {
73 int str1_length = len(str1), str2_length = len(str2);
74 mod_string result =
ralloc(str1_length + str2_length + 1);
75 for (
int i = 0; i < str1_length; ++i) result[i] = str1[i];
76 for (
int i = 0; i < str2_length; ++i) result[i + str1_length] = str2[i];
77 result[str1_length + str2_length] = 0;
This is a standard MushLib heap header. See standard implementation in lib/base/heap....
void * ralloc(u_dword size)