summaryrefslogtreecommitdiff
path: root/include/xmlsec/buffer.h
blob: 8495903a8ab2af941818bb4b293b6aeee620c78f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
/** 
 * XML Security Library (http://www.aleksey.com/xmlsec).
 *
 * Memory buffer.
 *
 * This is free software; see Copyright file in the source
 * distribution for preciese wording.
 * 
 * Copyright (C) 2002-2003 Aleksey Sanin <aleksey@aleksey.com>
 */
#ifndef __XMLSEC_BUFFER_H__
#define __XMLSEC_BUFFER_H__    

#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */ 

#include <libxml/tree.h>
#include <xmlsec/xmlsec.h>

typedef struct _xmlSecBuffer					xmlSecBuffer, 
								*xmlSecBufferPtr;


/** 
 * xmlSecAllocMode:
 * @xmlSecAllocModeExact: 	the memory allocation mode that minimizes total 
 *				allocated memory size.
 * @xmlSecAllocModeDouble:	the memory allocation mode that tries to minimize
 *				the number of malloc calls.
 *
 * The memory allocation mode (used by @xmlSecBuffer and @xmlSecList).
 */
typedef enum {
    xmlSecAllocModeExact = 0,
    xmlSecAllocModeDouble
} xmlSecAllocMode;

/*****************************************************************************
 *
 * xmlSecBuffer
 *
 ****************************************************************************/

/** 
 * xmlSecBuffer:
 * @data: the pointer to buffer data.
 * @size: the current data size.
 * @maxSize: the max data size (allocated buffer size).
 * @allocMode: the buffer memory allocation mode.
 *
 * Binary data buffer.
 */
struct _xmlSecBuffer {
    xmlSecByte* 	data;
    xmlSecSize 		size;
    xmlSecSize		maxSize;
    xmlSecAllocMode 	allocMode;
};

XMLSEC_EXPORT void		xmlSecBufferSetDefaultAllocMode	(xmlSecAllocMode defAllocMode,
								 xmlSecSize defInitialSize);

XMLSEC_EXPORT xmlSecBufferPtr	xmlSecBufferCreate		(xmlSecSize size);
XMLSEC_EXPORT void		xmlSecBufferDestroy		(xmlSecBufferPtr buf);
XMLSEC_EXPORT int		xmlSecBufferInitialize		(xmlSecBufferPtr buf,
								 xmlSecSize size);
XMLSEC_EXPORT void		xmlSecBufferFinalize		(xmlSecBufferPtr buf);
XMLSEC_EXPORT xmlSecByte*	xmlSecBufferGetData		(xmlSecBufferPtr buf);
XMLSEC_EXPORT int		xmlSecBufferSetData		(xmlSecBufferPtr buf,
								 const xmlSecByte* data,
								 xmlSecSize size);
XMLSEC_EXPORT xmlSecSize	xmlSecBufferGetSize		(xmlSecBufferPtr buf);
XMLSEC_EXPORT int		xmlSecBufferSetSize		(xmlSecBufferPtr buf,
								 xmlSecSize size);
XMLSEC_EXPORT xmlSecSize	xmlSecBufferGetMaxSize		(xmlSecBufferPtr buf);
XMLSEC_EXPORT int		xmlSecBufferSetMaxSize		(xmlSecBufferPtr buf,
								 xmlSecSize size);
XMLSEC_EXPORT void		xmlSecBufferEmpty		(xmlSecBufferPtr buf);
XMLSEC_EXPORT int		xmlSecBufferAppend		(xmlSecBufferPtr buf,
								 const xmlSecByte* data,
								 xmlSecSize size);
XMLSEC_EXPORT int		xmlSecBufferPrepend		(xmlSecBufferPtr buf,
								 const xmlSecByte* data,
								 xmlSecSize size);
XMLSEC_EXPORT int		xmlSecBufferRemoveHead		(xmlSecBufferPtr buf,
								 xmlSecSize size);
XMLSEC_EXPORT int		xmlSecBufferRemoveTail		(xmlSecBufferPtr buf,
								 xmlSecSize size);

XMLSEC_EXPORT int		xmlSecBufferReadFile		(xmlSecBufferPtr buf,
								 const char* filename);

XMLSEC_EXPORT int		xmlSecBufferBase64NodeContentRead(xmlSecBufferPtr buf,
								 xmlNodePtr node);
XMLSEC_EXPORT int		xmlSecBufferBase64NodeContentWrite(xmlSecBufferPtr buf,
								 xmlNodePtr node,
								 int columns);

XMLSEC_EXPORT xmlOutputBufferPtr xmlSecBufferCreateOutputBuffer	(xmlSecBufferPtr buf);


#ifdef __cplusplus
}
#endif /* __cplusplus */

#endif /* __XMLSEC_BUFFER_H__ */