Lines Matching refs:s
59 grow(s) in grow() argument
60 String *s; in grow()
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) in ror() argument
85 String *s; in ror()
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);
113 prep_String(c, s) in prep_String() argument
115 String *s;
117 return (nprep_String(c, s, ID_NAME_MAX));
125 nprep_String(c, s, n) in nprep_String() argument
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);
146 app_String(s, c) in app_String() argument
147 String *s; in app_String()
150 return (napp_String(s, c, ID_NAME_MAX));
158 napp_String(String *s, const char *c, int n) in napp_String() argument
162 assert(s != 0); in napp_String()
165 catlen = s->sg.end + len; in napp_String()
166 while (catlen > s->sg.max) in napp_String()
167 s = grow(s); in napp_String()
168 (void) memcpy(s->data + s->sg.end, c, len); in napp_String()
169 s->sg.end += len; in napp_String()
170 s->data[s->sg.end] = '\0'; in napp_String()
171 return (s); in napp_String()
182 mk_String(s) in mk_String() argument
183 String *s; in mk_String()
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) in free_String() argument
198 String *s; in free_String()
200 if (s)
201 free(s);
210 set_String(s, c) in set_String() argument
211 String *s; in set_String()
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) in trunc_String() argument
229 assert(n <= s->sg.end - s->sg.start); in trunc_String()
230 s->sg.end -= n; in trunc_String()
231 s->data[s->sg.end] = '\0'; in trunc_String()
232 return (s); in trunc_String()