1 /*
2  * Summary: Internal Interfaces for memory buffers in libxml2
3  * Description: this module describes most of the new xmlBuf buffer
4  *              entry points, those are private routines, with a
5  *              few exceptions exported in tree.h. This was added
6  *              in 2.9.0.
7  *
8  * Copy: See Copyright for the status of this software.
9  *
10  * Author: Daniel Veillard
11  */
12 
13 #ifndef __XML_BUF_H__
14 #define __XML_BUF_H__
15 
16 #include <libxml/tree.h>
17 
18 #ifdef __cplusplus
19 extern "C" {
20 #endif
21 
22 xmlBufPtr xmlBufCreate(void);
23 xmlBufPtr xmlBufCreateSize(size_t size);
24 xmlBufPtr xmlBufCreateStatic(void *mem, size_t size);
25 
26 int xmlBufSetAllocationScheme(xmlBufPtr buf,
27                               xmlBufferAllocationScheme scheme);
28 int xmlBufGetAllocationScheme(xmlBufPtr buf);
29 
30 void xmlBufFree(xmlBufPtr buf);
31 void xmlBufEmpty(xmlBufPtr buf);
32 
33 /* size_t xmlBufShrink(xmlBufPtr buf, size_t len); */
34 int xmlBufGrow(xmlBufPtr buf, int len);
35 int xmlBufInflate(xmlBufPtr buf, size_t len);
36 int xmlBufResize(xmlBufPtr buf, size_t len);
37 
38 int xmlBufAdd(xmlBufPtr buf, const xmlChar *str, int len);
39 int xmlBufAddHead(xmlBufPtr buf, const xmlChar *str, int len);
40 int xmlBufCat(xmlBufPtr buf, const xmlChar *str);
41 int xmlBufCCat(xmlBufPtr buf, const char *str);
42 int xmlBufWriteCHAR(xmlBufPtr buf, const xmlChar *string);
43 int xmlBufWriteChar(xmlBufPtr buf, const char *string);
44 int xmlBufWriteQuotedString(xmlBufPtr buf, const xmlChar *string);
45 
46 size_t xmlBufAvail(const xmlBufPtr buf);
47 size_t xmlBufLength(const xmlBufPtr buf);
48 /* size_t xmlBufUse(const xmlBufPtr buf); */
49 int xmlBufIsEmpty(const xmlBufPtr buf);
50 int xmlBufAddLen(xmlBufPtr buf, size_t len);
51 int xmlBufErase(xmlBufPtr buf, size_t len);
52 
53 /* const xmlChar * xmlBufContent(const xmlBuf *buf); */
54 /* const xmlChar * xmlBufEnd(xmlBufPtr buf); */
55 
56 xmlChar * xmlBufDetach(xmlBufPtr buf);
57 
58 size_t xmlBufDump(FILE *file, xmlBufPtr buf);
59 
60 xmlBufPtr xmlBufFromBuffer(xmlBufferPtr buffer);
61 xmlBufferPtr xmlBufBackToBuffer(xmlBufPtr buf);
62 int xmlBufMergeBuffer(xmlBufPtr buf, xmlBufferPtr buffer);
63 
64 int xmlBufResetInput(xmlBufPtr buf, xmlParserInputPtr input);
65 size_t xmlBufGetInputBase(xmlBufPtr buf, xmlParserInputPtr input);
66 int xmlBufSetInputBaseCur(xmlBufPtr buf, xmlParserInputPtr input,
67                           size_t base, size_t cur);
68 #ifdef __cplusplus
69 }
70 #endif
71 #endif /* __XML_BUF_H__ */
72 
73