dstr             1156 src/gauche.h   SCM_EXTERN void        Scm_DStringInit(ScmDString *dstr);
dstr             1157 src/gauche.h   SCM_EXTERN int         Scm_DStringSize(ScmDString *dstr);
dstr             1158 src/gauche.h   SCM_EXTERN ScmObj      Scm_DStringGet(ScmDString *dstr, int flags);
dstr             1159 src/gauche.h   SCM_EXTERN const char *Scm_DStringGetz(ScmDString *dstr);
dstr             1160 src/gauche.h   SCM_EXTERN void        Scm_DStringPutz(ScmDString *dstr, const char *str,
dstr             1162 src/gauche.h   SCM_EXTERN void        Scm_DStringAdd(ScmDString *dstr, ScmString *str);
dstr             1163 src/gauche.h   SCM_EXTERN void        Scm_DStringPutb(ScmDString *dstr, char byte);
dstr             1164 src/gauche.h   SCM_EXTERN void        Scm_DStringPutc(ScmDString *dstr, ScmChar ch);
dstr             1166 src/gauche.h   #define SCM_DSTRING_SIZE(dstr)    Scm_DStringSize(dstr);
dstr             1168 src/gauche.h   #define SCM_DSTRING_PUTB(dstr, byte)                                     \
dstr             1170 src/gauche.h           if ((dstr)->current >= (dstr)->end) Scm__DStringRealloc(dstr, 1);\
dstr             1171 src/gauche.h           *(dstr)->current++ = (char)(byte);                               \
dstr             1172 src/gauche.h           (dstr)->length = -1;    /* may be incomplete */                  \
dstr             1175 src/gauche.h   #define SCM_DSTRING_PUTC(dstr, ch)                      \
dstr             1178 src/gauche.h           ScmDString *d_DSTR = (dstr);                    \
dstr             1187 src/gauche.h   SCM_EXTERN void Scm__DStringRealloc(ScmDString *dstr, int min_incr);
dstr               43 src/string.c   void Scm_DStringDump(FILE *out, ScmDString *dstr);
dstr             1401 src/string.c   void Scm_DStringInit(ScmDString *dstr)
dstr             1403 src/string.c       dstr->init.bytes = 0;
dstr             1404 src/string.c       dstr->anchor = dstr->tail = NULL;
dstr             1405 src/string.c       dstr->current = dstr->init.data;
dstr             1406 src/string.c       dstr->end = dstr->current + SCM_DSTRING_INIT_CHUNK_SIZE;
dstr             1407 src/string.c       dstr->lastChunkSize = SCM_DSTRING_INIT_CHUNK_SIZE;
dstr             1408 src/string.c       dstr->length = 0;
dstr             1411 src/string.c   inline int Scm_DStringSize(ScmDString *dstr)
dstr             1415 src/string.c       if (dstr->tail) {
dstr             1416 src/string.c           size = dstr->init.bytes;
dstr             1417 src/string.c           dstr->tail->chunk->bytes = (int)(dstr->current - dstr->tail->chunk->data);
dstr             1418 src/string.c           for (chain = dstr->anchor; chain; chain = chain->next) {
dstr             1422 src/string.c           size = (int)(dstr->current - dstr->init.data);
dstr             1427 src/string.c   void Scm__DStringRealloc(ScmDString *dstr, int minincr)
dstr             1434 src/string.c       if (dstr->tail) {
dstr             1435 src/string.c           dstr->tail->chunk->bytes = (int)(dstr->current - dstr->tail->chunk->data);
dstr             1437 src/string.c           dstr->init.bytes = (int)(dstr->current - dstr->init.data);
dstr             1442 src/string.c       newsize = dstr->lastChunkSize * 3;
dstr             1458 src/string.c       if (dstr->tail) {
dstr             1459 src/string.c           dstr->tail->next = newchain;
dstr             1460 src/string.c           dstr->tail = newchain;
dstr             1462 src/string.c           dstr->anchor = dstr->tail = newchain;
dstr             1464 src/string.c       dstr->current = newchunk->data;
dstr             1465 src/string.c       dstr->end = newchunk->data + newsize;
dstr             1466 src/string.c       dstr->lastChunkSize = newsize;
dstr             1470 src/string.c   static const char *dstring_getz(ScmDString *dstr, int *plen, int *psiz)
dstr             1474 src/string.c       if (dstr->anchor == NULL) {
dstr             1476 src/string.c           size = (int)(dstr->current - dstr->init.data);
dstr             1477 src/string.c           len = dstr->length;
dstr             1479 src/string.c           memcpy(buf, dstr->init.data, size);
dstr             1482 src/string.c           ScmDStringChain *chain = dstr->anchor;
dstr             1485 src/string.c           size = Scm_DStringSize(dstr);
dstr             1486 src/string.c           len = dstr->length;
dstr             1489 src/string.c           memcpy(bptr, dstr->init.data, dstr->init.bytes);
dstr             1490 src/string.c           bptr += dstr->init.bytes;
dstr             1503 src/string.c   ScmObj Scm_DStringGet(ScmDString *dstr, int flags)
dstr             1506 src/string.c       const char *str = dstring_getz(dstr, &len, &size);
dstr             1512 src/string.c   const char *Scm_DStringGetz(ScmDString *dstr)
dstr             1515 src/string.c       return dstring_getz(dstr, &len, &size);
dstr             1518 src/string.c   void Scm_DStringPutz(ScmDString *dstr, const char *str, int size)
dstr             1521 src/string.c       if (dstr->current + size > dstr->end) {
dstr             1522 src/string.c           Scm__DStringRealloc(dstr, size);
dstr             1524 src/string.c       memcpy(dstr->current, str, size);
dstr             1525 src/string.c       dstr->current += size;
dstr             1526 src/string.c       if (dstr->length >= 0) {
dstr             1528 src/string.c           if (len >= 0) dstr->length += len;
dstr             1529 src/string.c           else dstr->length = -1;
dstr             1533 src/string.c   void Scm_DStringAdd(ScmDString *dstr, ScmString *str)
dstr             1538 src/string.c       if (dstr->current + size > dstr->end) {
dstr             1539 src/string.c           Scm__DStringRealloc(dstr, size);
dstr             1541 src/string.c       memcpy(dstr->current, SCM_STRING_BODY_START(b), size);
dstr             1542 src/string.c       dstr->current += size;
dstr             1543 src/string.c       if (dstr->length >= 0 && !SCM_STRING_BODY_INCOMPLETE_P(b)) {
dstr             1544 src/string.c           dstr->length += SCM_STRING_BODY_LENGTH(b);
dstr             1546 src/string.c           dstr->length = -1;
dstr             1563 src/string.c   void Scm_DStringDump(FILE *out, ScmDString *dstr)
dstr             1565 src/string.c       fprintf(out, "DString %p\n", dstr);
dstr             1566 src/string.c       if (dstr->anchor) {
dstr             1568 src/string.c           fprintf(out, "  chunk0[%3d] = \"", dstr->init.bytes);
dstr             1569 src/string.c           fwrite(dstr->init.data, 1, dstr->init.bytes, out);
dstr             1571 src/string.c           for (i=1, chain = dstr->anchor; chain; chain = chain->next, i++) {
dstr             1572 src/string.c               int size = (chain->next? chain->chunk->bytes : (int)(dstr->current - dstr->tail->chunk->data));
dstr             1578 src/string.c           int size = (int)(dstr->current - dstr->init.data);
dstr             1580 src/string.c           fwrite(dstr->init.data, 1, size, out);