home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
OS/2 Shareware BBS: 10 Tools
/
10-Tools.zip
/
xwphescr.zip
/
XWPH0208.ZIP
/
include
/
helpers
/
xstring.h
< prev
Wrap
C/C++ Source or Header
|
2002-06-08
|
11KB
|
255 lines
/*
*@@sourcefile xstring.h:
* header file for xstring.c. See notes there.
*
* Note: Version numbering in this file relates to XWorkplace version
* numbering.
*
*@@include #define INCL_DOSDATETIME
*@@include #include <os2.h>
*@@include #include "helpers\xstring.h"
*/
/*
* Copyright (C) 1999-2000 Ulrich Möller.
* This file is part of the "XWorkplace helpers" source package.
* This is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published
* by the Free Software Foundation, in version 2 as it comes in the
* "COPYING" file of the XWorkplace main distribution.
* This program 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 General Public License for more details.
*/
#if __cplusplus
extern "C" {
#endif
#ifndef XSTRING_HEADER_INCLUDED
#define XSTRING_HEADER_INCLUDED
#ifndef XWPENTRY
#error You must define XWPENTRY to contain the standard linkage for the XWPHelpers.
#endif
/*
*@@ XSTRING:
*
*@@added V0.9.6 (2000-11-01) [umoeller]
*/
typedef struct _XSTRING
{
PSZ psz; // ptr to string or NULL
ULONG ulLength; // length of *psz
ULONG cbAllocated; // memory allocated in *psz
// (>= ulLength + 1)
ULONG ulDelta; // allocation delta (0 = none)
// V0.9.9 (2001-03-07) [umoeller]
// if memory debugging is enabled, enable the following
// extra fields globally... even if the caller doesn't
// want the replacement calls, the xstr* implementations
// are compiled with these fields, so they must always be
// present V0.9.14 (2001-08-01) [umoeller]
#if defined(__XWPMEMDEBUG__) // setup.h only
const char *file;
unsigned long line;
const char *function;
#endif
} XSTRING, *PXSTRING;
#if defined(__DEBUG_MALLOC_ENABLED__) && !defined(DONT_REPLACE_XSTR_MALLOC) // setup.h, helpers\memdebug.c
#define xstrInit(a, b) xstrInitDebug((a), (b), __FILE__, __LINE__, __FUNCTION__)
void XWPENTRY xstrInitDebug(PXSTRING pxstr,
ULONG ulPreAllocate,
const char *file,
unsigned long line,
const char *function);
typedef void XWPENTRY XSTRINITDEBUG(PXSTRING pxstr,
ULONG ulPreAllocate,
const char *file,
unsigned long line,
const char *function);
typedef XSTRINITDEBUG *PXSTRINITDEBUG;
#else
void XWPENTRY xstrInit(PXSTRING pxstr, ULONG ulPreAllocate);
typedef void XWPENTRY XSTRINIT(PXSTRING pxstr, ULONG ulPreAllocate);
typedef XSTRINIT *PXSTRINIT;
#endif
/* void XWPENTRY xstrInit(PXSTRING pxstr, ULONG ulPreAllocate);
typedef void XWPENTRY XSTRINIT(PXSTRING pxstr, ULONG ulPreAllocate);
typedef XSTRINIT *PXSTRINIT; */
void xstrInitSet2(PXSTRING pxstr, PSZ pszNew, ULONG ulNewLength);
void XWPENTRY xstrInitSet(PXSTRING pxstr, PSZ pszNew);
typedef void XWPENTRY XSTRINITSET(PXSTRING pxstr, PSZ pszNew);
typedef XSTRINITSET *PXSTRINITSET;
#if defined(__DEBUG_MALLOC_ENABLED__) && !defined(DONT_REPLACE_XSTR_MALLOC) // setup.h, helpers\memdebug.c
#define xstrInitCopy(a, b, c) xstrInitCopyDebug((a), (b), (c), __FILE__, __LINE__, __FUNCTION__)
void XWPENTRY xstrInitCopyDebug(PXSTRING pxstr,
const char *pcszSource,
ULONG ulExtraAllocate,
const char *file,
unsigned long line,
const char *function);
typedef void XWPENTRY XSTRINITCOPYDEBUG(PXSTRING pxstr,
const char *pcszSource,
ULONG ulExtraAllocate,
const char *file,
unsigned long line,
const char *function);
typedef XSTRINITCOPYDEBUG *PXSTRINITCOPYDEBUG;
#else
void XWPENTRY xstrInitCopy(PXSTRING pxstr, const char *pcszSource, ULONG ulExtraAllocate);
typedef void XWPENTRY XSTRINITCOPY(PXSTRING pxstr, const char *pcszSource, ULONG ulExtraAllocate);
typedef XSTRINITCOPY *PXSTRINITCOPY;
#endif
void XWPENTRY xstrClear(PXSTRING pxstr);
typedef void XWPENTRY XSTRCLEAR(PXSTRING pxstr);
typedef XSTRCLEAR *PXSTRCLEAR;
ULONG XWPENTRY xstrReserve(PXSTRING pxstr, ULONG ulBytes);
typedef ULONG XWPENTRY XSTRRESERVE(PXSTRING pxstr, ULONG ulBytes);
typedef XSTRRESERVE *PXSTRRESERVE;
void XWPENTRY xstrShrink(PXSTRING pxstr);
typedef void XWPENTRY XSTRSHRINK(PXSTRING pxstr);
typedef XSTRSHRINK *PXSTRSHRINK;
PXSTRING XWPENTRY xstrCreate(ULONG ulPreAllocate);
typedef PXSTRING XWPENTRY XSTRCREATE(ULONG ulPreAllocate);
typedef XSTRCREATE *PXSTRCREATE;
VOID XWPENTRY xstrFree(PXSTRING *ppxstr);
typedef VOID XWPENTRY XSTRFREE(PXSTRING *ppxstr);
typedef XSTRFREE *PXSTRFREE;
ULONG XWPENTRY xstrset2(PXSTRING pxstr, PSZ pszNew, ULONG ulNewLength);
ULONG XWPENTRY xstrset(PXSTRING pxstr, PSZ pszNew);
typedef ULONG XWPENTRY XSTRSET(PXSTRING pxstr, PSZ pszNew);
typedef XSTRSET *PXSTRSET;
ULONG XWPENTRY xstrcpy(PXSTRING pxstr, const char *pcszSource, ULONG ulSourceLength);
typedef ULONG XWPENTRY XSTRCPY(PXSTRING pxstr, const char *pcszSource, ULONG ulSourceLength);
typedef XSTRCPY *PXSTRCPY;
ULONG XWPENTRY xstrcpys(PXSTRING pxstr, const XSTRING *pcstrSource);
typedef ULONG XWPENTRY XSTRCPYS(PXSTRING pxstr, const XSTRING *pcstrSource);
typedef XSTRCPYS *PXSTRCPYS;
ULONG XWPENTRY xstrcat(PXSTRING pxstr, const char *pcszSource, ULONG ulSourceLength);
typedef ULONG XWPENTRY XSTRCAT(PXSTRING pxstr, const char *pcszSource, ULONG ulSourceLength);
typedef XSTRCAT *PXSTRCAT;
ULONG XWPENTRY xstrcatc(PXSTRING pxstr, CHAR c);
typedef ULONG XWPENTRY XSTRCATC(PXSTRING pxstr, CHAR c);
typedef XSTRCATC *PXSTRCATC;
ULONG XWPENTRY xstrcats(PXSTRING pxstr, const XSTRING *pcstrSource);
typedef ULONG XWPENTRY XSTRCATS(PXSTRING pxstr, const XSTRING *pcstrSource);
typedef XSTRCATS *PXSTRCATS;
/*
*@@ xstrIsString:
* returns TRUE if psz contains something.
*
*@@added V0.9.6 (2000-10-16) [umoeller]
*/
#define xstrIsString(psz) ( (psz != 0) && (*(psz) != 0) )
ULONG XWPENTRY xstrrpl(PXSTRING pxstr,
ULONG ulFirstReplOfs,
ULONG cReplLen,
const char *pcszReplaceWith,
ULONG cReplaceWithLen);
typedef ULONG XWPENTRY XSTRRPL(PXSTRING pxstr,
ULONG ulFirstReplOfs,
ULONG cReplLen,
const char *pcszReplaceWith,
ULONG cReplaceWithLen);
typedef XSTRRPL *PXSTRRPL;
PSZ XWPENTRY xstrFindWord(const XSTRING *pxstr,
ULONG ulOfs,
const XSTRING *pstrFind,
size_t *pShiftTable,
PBOOL pfRepeatFind,
const char *pcszBeginChars,
const char *pcszEndChars);
typedef PSZ XWPENTRY XSTRFINDWORD(const XSTRING *pxstr,
ULONG ulOfs,
const XSTRING *pstrFind,
size_t *pShiftTable,
PBOOL pfRepeatFind,
const char *pcszBeginChars,
const char *pcszEndChars);
typedef XSTRFINDWORD *PXSTRFINDWORD;
ULONG XWPENTRY xstrFindReplace(PXSTRING pxstr,
PULONG pulOfs,
const XSTRING *pstrSearch,
const XSTRING *pstrReplace,
size_t *pShiftTable,
PBOOL pfRepeatFind);
typedef ULONG XWPENTRY XSTRFINDREPLACE(PXSTRING pxstr,
PULONG pulOfs,
const XSTRING *pstrSearch,
const XSTRING *pstrReplace,
size_t *pShiftTable,
PBOOL pfRepeatFind);
typedef XSTRFINDREPLACE *PXSTRFINDREPLACE;
ULONG XWPENTRY xstrFindReplaceC(PXSTRING pxstr,
PULONG pulOfs,
const char *pcszSearch,
const char *pcszReplace);
typedef ULONG XWPENTRY XSTRFINDREPLACEC(PXSTRING pxstr,
PULONG pulOfs,
const char *pcszSearch,
const char *pcszReplace);
typedef XSTRFINDREPLACEC *PXSTRFINDREPLACEC;
ULONG XWPENTRY xstrEncode(PXSTRING pxstr, const char *pcszEncode);
typedef ULONG XWPENTRY XSTRENCODE(PXSTRING pxstr, const char *pcszEncode);
typedef XSTRENCODE *PXSTRENCODE;
ULONG XWPENTRY xstrDecode2(PXSTRING pxstr,
CHAR cKey);
ULONG XWPENTRY xstrDecode(PXSTRING pxstr);
typedef ULONG XWPENTRY XSTRDECODE(PXSTRING pxstr);
typedef XSTRDECODE *PXSTRDECODE;
// V0.9.9 (2001-01-29) [lafaix]: constants added
#define CRLF2LF TRUE
#define LF2CRLF FALSE
VOID XWPENTRY xstrConvertLineFormat(PXSTRING pxstr, BOOL fToCFormat);
typedef VOID XWPENTRY XSTRCONVERTLINEFORMAT(PXSTRING pxstr, BOOL fToCFormat);
typedef XSTRCONVERTLINEFORMAT *PXSTRCONVERTLINEFORMAT;
VOID XWPENTRY xstrPrintf(XSTRING *pstr, PCSZ pcszFormat, ...);
typedef VOID XWPENTRY XSTRPRINTF(XSTRING *pstr, PCSZ pcszFormat, ...);
typedef XSTRPRINTF *PXSTRPRINTF;
VOID xstrCatf(XSTRING *pstr,
PCSZ pcszFormat,
...);
#endif
#if __cplusplus
}
#endif