void ds_init(struct ds *);
void ds_clear(struct ds *);
+void ds_truncate(struct ds *, size_t new_length);
void ds_reserve(struct ds *, size_t min_length);
void ds_put_char(struct ds *, char);
void ds_put_cstr(struct ds *, const char *);
char *ds_cstr(struct ds *);
void ds_destroy(struct ds *);
+int ds_last(const struct ds *);
+
#endif /* dynamic-string.h */
ds->length = 0;
}
+void
+ds_truncate(struct ds *ds, size_t new_length)
+{
+ if (ds->length > new_length) {
+ ds->length = new_length;
+ ds->string[new_length] = '\0';
+ }
+}
+
void
ds_reserve(struct ds *ds, size_t min_length)
{
size -= n;
}
}
+
+int
+ds_last(const struct ds *ds)
+{
+ return ds->length > 0 ? (unsigned char) ds->string[ds->length - 1] : EOF;
+}