#ifndef __DIGIDOC_MEM_H__ #define __DIGIDOC_MEM_H__ //================================================== // FILE: DigiDocMem.h // PROJECT: Digi Doc // DESCRIPTION: Digi Doc functions for memory buffer management // AUTHOR: Veiko Sinivee, S|E|B IT Partner Estonia //================================================== // Copyright (C) AS Sertifitseerimiskeskus // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public // License as published by the Free Software Foundation; either // version 2.1 of the License, or (at your option) any later version. // This library is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU // Lesser General Public License for more details. // GNU Lesser General Public Licence is available at // http://www.gnu.org/copyleft/lesser.html //==========< HISTORY >============================= // 09.09.2004 Veiko Sinivee // Creation //================================================== #include "DigiDocDefs.h" #ifdef __cplusplus extern "C" { #endif typedef struct DigiDocMemBuf_st { void* pMem; // functions will assign allocated memory address here long nLen; // length of data in number of bytes } DigiDocMemBuf; //-------------------------------------------------- // Helper function to append data to a memory buffer // and grow it as required. // pBuf - address of memory buffer pointer // data - new data to be appended // len - length of data or -1 for zero terminated strings //-------------------------------------------------- EXP_OPTION int ddocMemAppendData(DigiDocMemBuf* pBuf, const char* data, long len); //-------------------------------------------------- // Helper function to assign data to a memory buffer // and release old content if necessary // pBuf - address of memory buffer pointer // data - new data to be appended // len - length of data or -1 for zero terminated strings //-------------------------------------------------- EXP_OPTION int ddocMemAssignData(DigiDocMemBuf* pBuf, const char* data, long len); EXP_OPTION int ddocMemAssignData2(DigiDocMemBuf* pBuf, const char* data, long len); //-------------------------------------------------- // Helper function to set buffer length as required // It will fill acquired mem with zeros. // pBuf - address of memory buffer pointer // len - new length of buffer //-------------------------------------------------- EXP_OPTION int ddocMemSetLength(DigiDocMemBuf* pBuf, long len); //-------------------------------------------------- // Helper function to free/cleanup memory buffer // This does not attempt to release the buffer object // itself but only it's contents. // pBuf - memory buffer pointer //-------------------------------------------------- EXP_OPTION int ddocMemBuf_free(DigiDocMemBuf* pBuf); //-------------------------------------------------- // Helper function to assign zero terminated strings // and release old content if necessary // dest - destination address // src - new data to be assigned //-------------------------------------------------- EXP_OPTION int ddocMemAssignString(char** dest, const char* src); //-------------------------------------------------- // Replaces a substring with another substring // pBuf1 - memory buffer to search in // pBuf2 - memory buffer to write converted value to // search - search value // replacement - replacement value //-------------------------------------------------- EXP_OPTION int ddocMemReplaceSubstr(DigiDocMemBuf* pBuf1, DigiDocMemBuf* pBuf2, const char* search, const char* replacment); EXP_OPTION int ddocMemGetSubstr(DigiDocMemBuf* pBuf1, DigiDocMemBuf* pBuf2, const char* search, const char* replacment); EXP_OPTION char *replaceStr(char *str, char *orig, char *rep); //-------------------------------------------------- // Compares memory buffers // pBuf1 - memory buffer to value 1 // pBuf2 - memory buffer to value 2 // return 0 if both buffers are equal, 1 if not equal //-------------------------------------------------- EXP_OPTION int ddocMemCompareMemBufs(DigiDocMemBuf* pBuf1, DigiDocMemBuf* pBuf2); int ddocMemPush(DigiDocMemBuf* pBuf1, const char* tag); const char* ddocMemPop(DigiDocMemBuf* pBuf1); #ifdef __cplusplus } #endif #endif // __DIGIDOC_MEM_H__