00001
00002
00003
00004
00005
00006
00007
00008
00009 #include "mit-copyright.h"
00010
00011 #include "new_string.h"
00012 #include "main.h"
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032 #define assert(x)
00033
00034 #define string_Length(s) strlen(s)
00035
00036
00037
00038
00039
00040
00041
00042
00043
00044
00045
00046
00047 string
00048 string__CreateFromData(data, length)
00049 char *data;
00050 int length;
00051 {
00052 string result;
00053
00054 assert(length >= 0);
00055
00056 result = (string) malloc(length + 1);
00057 assert(result);
00058
00059 (void) memcpy(result, data, length);
00060 result[length] = 0;
00061
00062 return (result);
00063 }
00064
00065
00066
00067
00068
00069
00070
00071 string
00072 string__Copy(s)
00073 string s;
00074 {
00075 int length;
00076 string result;
00077
00078 assert(s);
00079
00080 length = string_Length(s) + 1;
00081 result = (string) malloc(length);
00082 assert(result);
00083
00084 (void) memcpy(result, s, length);
00085 return (result);
00086 }
00087
00088
00089
00090
00091
00092
00093
00094
00095
00096 string
00097 string__Concat(a, b)
00098 string a, b;
00099 {
00100 string result;
00101 int a_length, b_size, result_size;
00102
00103 a_length = string_Length(a);
00104 b_size = string_Length(b) + 1;
00105 result_size = a_length + b_size;
00106 result = (string) malloc(result_size);
00107 assert(result);
00108
00109 (void) memcpy(result, a, a_length);
00110 (void) memcpy(result + a_length, b, b_size);
00111
00112 return (result);
00113 }
00114
00115
00116
00117
00118
00119
00120
00121
00122
00123
00124
00125
00126
00127 string
00128 string__Concat2(a, b)
00129 string a, b;
00130 {
00131 int a_length = string_Length(a);
00132 int b_size = string_Length(b) + 1;
00133
00134 a = (string) realloc(a, a_length + b_size);
00135 assert(a);
00136 (void) memcpy(a + a_length, b, b_size);
00137
00138 return (a);
00139 }
00140
00141
00142
00143
00144
00145
00146
00147
00148
00149
00150 string
00151 string_Downcase(s)
00152 string s;
00153 {
00154 char *ptr;
00155
00156 for (ptr = s; *ptr; ptr++) {
00157 if (isupper(*ptr))
00158 *ptr = tolower(*ptr);
00159 }
00160
00161 return (s);
00162 }
00163
00164
00165
00166
00167
00168
00169
00170
00171
00172
00173 string
00174 string_Upcase(s)
00175 string s;
00176 {
00177 char *ptr;
00178
00179 for (ptr = s; *ptr; ptr++) {
00180 if (islower(*ptr))
00181 *ptr = toupper(*ptr);
00182 }
00183
00184 return (s);
00185 }