46 lines
1.5 KiB
C++
46 lines
1.5 KiB
C++
#ifndef _XML_H
|
|
#define _XML_H
|
|
|
|
#include <bfc/wasabi_std.h>
|
|
#include <bfc/stack.h>
|
|
#include <bfc/string/StringW.h>
|
|
|
|
class XMLWrite
|
|
{
|
|
public:
|
|
XMLWrite(const wchar_t *filename, const wchar_t *doctype, const wchar_t *dtddoctype = NULL, int no_hi_chars_conversion = 0);
|
|
XMLWrite(FILE *file, const wchar_t *doctype, const wchar_t *dtddoctype = NULL, int no_hi_chars_conversion = 0);
|
|
~XMLWrite();
|
|
|
|
void Init(FILE *file, const wchar_t *doctype, const wchar_t *dtddoctype);
|
|
|
|
void comment(const wchar_t *comment);
|
|
|
|
void pushCategory(const wchar_t *title, int wantcr = 1, int wantindent = 1);
|
|
|
|
void pushCategoryAttrib(const wchar_t *title, int nodata = FALSE);
|
|
void writeCategoryAttrib(const wchar_t *title, const int val);
|
|
void writeCategoryAttrib(const wchar_t *title, const wchar_t *val);
|
|
void closeCategoryAttrib(int wantcr = 1);
|
|
|
|
void writeAttribEmpty(const wchar_t *title, int wantcr = 1, int wantindent = 1);
|
|
void writeAttrib(const wchar_t *title, const wchar_t *text, int wantcr = 1, int wantindent = 1);
|
|
void writeAttrib(const wchar_t *title, int val, int wantcr = 1, int wantindent = 1);
|
|
int popCategory(int wantcr = 1, int wantindent = 1); // returns nonzero if more categories are open
|
|
|
|
static int efprintf(FILE *fp, const wchar_t *format, ...);
|
|
static int utf8fprintf(FILE *fp, const wchar_t *format, ...);
|
|
static int eutf8fprintf(FILE *fp, const wchar_t *format, ...);
|
|
|
|
private:
|
|
FILE *fp;
|
|
StringW indenter;
|
|
// int indent;
|
|
Stack<wchar_t *>titles;
|
|
int nohicharconversion;
|
|
};
|
|
|
|
|
|
|
|
#endif
|