Lines Matching defs:s

59 grow(s)
60 String *s;
63 int sz = s->sg.max * 2;
68 (void) memcpy(ns, s, s->sg.max + sizeof (StringGuts) + 1);
69 free(s);
71 if ((ns = (String *)realloc(s, sz + sizeof (StringGuts) + 1)) == NULL)
84 ror(s, n)
85 String *s;
88 assert(s != 0);
89 while (s->sg.end + n > s->sg.max)
90 s = grow(s);
93 assert(s->sg.end >= s->sg.start);
94 (void) memmove(s->data + n, s->data, s->sg.end - s->sg.start);
98 for (i = s->sg.end - 1; i >= s->sg.start; i--)
99 s->data[i+n] = s->data[i];
102 s->sg.end += n;
103 s->sg.start += n;
104 s->data[s->sg.end] = 0;
105 return (s);
110 * to s
113 prep_String(c, s)
115 String *s;
117 return (nprep_String(c, s, ID_NAME_MAX));
122 * first n characters of c to s
125 nprep_String(c, s, n)
127 String *s;
131 assert(s != 0);
134 if (len > s->sg.start)
135 s = ror(s, len - s->sg.start);
136 s->sg.start -= len;
137 (void) memcpy(s->data + s->sg.start, c, len);
138 return (s);
143 * c to s.
146 app_String(s, c)
147 String *s;
150 return (napp_String(s, c, ID_NAME_MAX));
155 * first n characters of c to s
158 napp_String(String *s, const char *c, int n)
162 assert(s != 0);
165 catlen = s->sg.end + len;
166 while (catlen > s->sg.max)
167 s = grow(s);
168 (void) memcpy(s->data + s->sg.end, c, len);
169 s->sg.end += len;
170 s->data[s->sg.end] = '\0';
171 return (s);
182 mk_String(s)
183 String *s;
185 if (s)
186 return (s);
187 s = (String *)malloc(STRING_START + sizeof (StringGuts) + 1);
188 if (s == NULL)
190 s->sg.start = s->sg.end = STRING_START/2;
191 s->sg.max = STRING_START;
192 s->data[s->sg.end] = '\0';
193 return (s);
197 free_String(s)
198 String *s;
200 if (s)
201 free(s);
206 * c into s.
210 set_String(s, c)
211 String *s;
215 while (len > s->sg.max)
216 s = grow(s);
217 s->sg.start = s->sg.end = s->sg.max / 2;
218 s = app_String(s, c);
219 return (s);
227 trunc_String(String *s, int n)
229 assert(n <= s->sg.end - s->sg.start);
230 s->sg.end -= n;
231 s->data[s->sg.end] = '\0';
232 return (s);