diff -r 000000000000 -r e35f40988205 xmlsecurityengine/xmlsec/inc/xmlsec_buffer.h --- /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 + * 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 +#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__ */ +