#include "strbuf.h"

This page has information from files strbuf.h and strbuf.c.

Contents


Public Routines in File strbuf.c

Index

fprint_sbp_sbsb_catsb_to_new_string
fprint_strbuf_memp_strbuf_memsb_cat_copyzap_string_buf
get_string_bufsb_appendsb_char
init_string_bufsb_append_charsb_size

Details


void fprint_sb(FILE *fp, String_buf sb);
This routine prints String_buf sb to FILE *fp.
void fprint_strbuf_mem(FILE *fp, BOOL heading);
This routine prints (to FILE *fp) memory usage statistics for String_bufs and associated structures. The argument heading tells whether to print a heading on the table.
String_buf get_string_buf(void);
This routine allocates and returns an empty String_buf. Don't forget to call zap_string_buf(sb) when finished with it. Also see init_string_buf().
String_buf init_string_buf(char *s);
This routine allocates and returns a String_buf, initialized to string s. Don't forget to call zap_string_buf(sb) when finished with it. Also see get_string_buf().
void p_sb(String_buf sb);
This routine prints String_buf sb, followed by '\n' and fflush, to stdout. If you don't want the newline, use fprint_sb() instead.
void p_strbuf_mem();
This routine prints (to stdout) memory usage statistics for String_bufs and associated structures.
void sb_append(String_buf sb, char *s);
This routine appends string s to String_buf sb. The NULL character that marks the end of s does not go into the String_buf.
void sb_append_char(String_buf sb, char c);
This routine appends character c to String_buf sb.
void sb_cat(String_buf sb1, String_buf sb2);
This routine appends a copy of sb2 to sb1, then deallocates sb2. Do not refer to sb2 after calling this rouine because it won't exist. You can use sb_cat_copy() instead if you need to save sb2.
void sb_cat_copy(String_buf sb1, String_buf sb2);
This routine appends a copy of sb2 to sb1. String_buf sb2 is not changed. You can use sb_cat() instead if you won't be needing sb2.
char sb_char(String_buf sb, int n);
This routine returns the n-th character (counting from 0) of String_buf sb. If index n is out of range, the NULL character '\0' is returned.
int sb_size(String_buf sb);

char *sb_to_new_string(String_buf sb);
This routine returns a new, ordinary C string corresponding to the String_buf argument sb. WARNING: the new string, say s, is dynamically allocated (malloced), so don't forget to call the system routine my_free(s) when you are finished with the string. (This routine is not intended for printing String_bufs; use fprint_sb() instead.)

String_bufs do not have a NULL character marking the end; instead, they keep a count of the number of characters.


void zap_string_buf(String_buf sb);
This routine deallocates a String_buf and frees all memory associated with it.

Public Definitions in File strbuf.h

typedef struct string_buf * String_buf;


Introduction

A String_buf is a kind of string that can grow as big as you need. This is implemented as a list of dynamically allocated character arrays of fixed size. The only problem with using String_bufs is that you have to remember to free a String_buf when you are finished with it.

This is similar to the StringBuffer class in Java, and the cstrings of our old theorem prover LMA/ITP. We didn't have anything like this in Otter, but there were times when I wish we had, so here it is.


These activities are projects of the Mathematics and Computer Science Division of Argonne National Laboratory.