struct chm;
struct chm *chm_new(void);
void chm_free(struct chm *chm);
void chm_add_file(struct chm *chm, const char *name,
const char *data, int len);
void chm_title(struct chm *chm, const char *title);
void chm_contents_filename(struct chm *chm, const char *name);
void chm_index_filename(struct chm *chm, const char *name);
void chm_default_topic(struct chm *chm, const char *name);
void chm_default_window(struct chm *chm, const char *name);
void chm_add_window(struct chm *chm, const char *winname, const char *title,
const char *contentsfile, const char *indexfile,
const char *rootfile, int navpaneflags, int toolbarflags);
struct chm_section;
struct chm_section *chm_add_section(struct chm *chm,
struct chm_section *parent,
const char *title, const char *url);
const char *chm_build(struct chm *chm, int *outlen);