xmlsecurityengine/xmlsec/inc/xmlsec_buffer.h
changeset 0 e35f40988205
child 24 74f0b3eb154c
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/xmlsecurityengine/xmlsec/inc/xmlsec_buffer.h	Thu Dec 17 09:29:21 2009 +0200
@@ -0,0 +1,110 @@
+/** 
+ * 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>
+ * Portion Copyright © 2009 Nokia Corporation and/or its subsidiary(-ies). All rights reserved. 
+ */
+#ifndef __XMLSEC_BUFFER_H__
+#define __XMLSEC_BUFFER_H__    
+
+#ifdef __cplusplus
+extern "C" {
+#endif /* __cplusplus */ 
+
+#include <libxml2_tree.h>
+#include "xmlsec_config.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__ */
+