mirror of
https://github.com/ptitSeb/Serious-Engine
synced 2024-11-25 11:45:53 +01:00
132 lines
4.6 KiB
C
132 lines
4.6 KiB
C
|
/* Copyright (c) 2002-2012 Croteam Ltd. All rights reserved. */
|
||
|
|
||
|
#ifndef SE_INCL_CTSTRING_H
|
||
|
#define SE_INCL_CTSTRING_H
|
||
|
#ifdef PRAGMA_ONCE
|
||
|
#pragma once
|
||
|
#endif
|
||
|
|
||
|
#include <Engine/Base/Types.h>
|
||
|
|
||
|
/*
|
||
|
* Main string class
|
||
|
*/
|
||
|
class ENGINE_API CTString {
|
||
|
public:
|
||
|
char *str_String; // pointer to memory holding the character string
|
||
|
public:
|
||
|
/* Default constructor. */
|
||
|
inline CTString(void);
|
||
|
/* Copy constructor. */
|
||
|
inline CTString(const CTString &strOriginal);
|
||
|
/* Constructor from character string. */
|
||
|
inline CTString(const char *pString);
|
||
|
/* Constructor with formatting. */
|
||
|
inline CTString(INDEX iDummy, const char *strFormat, ...);
|
||
|
/* Destructor. */
|
||
|
inline ~CTString();
|
||
|
/* Clear the object. */
|
||
|
inline void Clear(void);
|
||
|
|
||
|
/* Conversion into character string. */
|
||
|
inline operator const char*() const;
|
||
|
|
||
|
/* Assignment. */
|
||
|
inline CTString &operator=(const char *strCharString);
|
||
|
inline CTString &operator=(const CTString &strOther);
|
||
|
|
||
|
/* Check if string data is valid. */
|
||
|
BOOL IsValid(void) const;
|
||
|
|
||
|
// return length of the string
|
||
|
inline INDEX Length(void) const { return strlen(str_String); };
|
||
|
INDEX LengthNaked(void) const;
|
||
|
|
||
|
// strip decorations from the string
|
||
|
CTString Undecorated(void) const;
|
||
|
|
||
|
/* Find index of a substring in a string (returns -1 if not found). */
|
||
|
INDEX FindSubstr(const CTString &strSub);
|
||
|
/* Replace a substring in a string. */
|
||
|
BOOL ReplaceSubstr(const CTString &strSub, const CTString &strNewSub);
|
||
|
/* Check if has given prefix */
|
||
|
BOOL HasPrefix( const CTString &strPrefix) const;
|
||
|
/* Remove given prefix string from this string */
|
||
|
BOOL RemovePrefix( const CTString &strPrefix);
|
||
|
/* Trim the string to contain at most given number of characters. */
|
||
|
INDEX TrimLeft( INDEX ctCharacters);
|
||
|
INDEX TrimRight( INDEX ctCharacters);
|
||
|
/* Trim the string from spaces. */
|
||
|
INDEX TrimSpacesLeft(void);
|
||
|
INDEX TrimSpacesRight(void);
|
||
|
/* Calcuate hashing value for the string. */
|
||
|
ULONG GetHash(void) const;
|
||
|
// retain only first line of the string
|
||
|
void OnlyFirstLine(void);
|
||
|
|
||
|
/* Equality comparison. */
|
||
|
BOOL operator==(const CTString &strOther) const;
|
||
|
BOOL operator==(const char *strOther) const;
|
||
|
ENGINE_API friend BOOL operator==(const char *strThis, const CTString &strOther);
|
||
|
/* Inequality comparison. */
|
||
|
BOOL operator!=(const CTString &strOther) const;
|
||
|
BOOL operator!=(const char *strOther) const;
|
||
|
ENGINE_API friend BOOL operator!=(const char *strThis, const CTString &strOther);
|
||
|
// wild card comparison (other string may contain wildcards)
|
||
|
BOOL Matches(const CTString &strOther) const;
|
||
|
BOOL Matches(const char *strOther) const;
|
||
|
|
||
|
/* String concatenation. */
|
||
|
CTString operator+(const CTString &strSecond) const;
|
||
|
CTString &operator+=(const CTString &strSecond);
|
||
|
ENGINE_API friend CTString operator+(const char *strFirst, const CTString &strSecond);
|
||
|
|
||
|
// split string in two strings at specified position (char AT splitting position goes to str2)
|
||
|
void Split( INDEX iPos, CTString &str1, CTString &str2);
|
||
|
void InsertChar( INDEX iPos, char cChr); // insert char at position
|
||
|
void DeleteChar( INDEX iPos); // delete char at position
|
||
|
|
||
|
/* Throw exception */
|
||
|
void Throw_t(void);
|
||
|
|
||
|
/* Read from stream. */
|
||
|
ENGINE_API friend CTStream &operator>>(CTStream &strmStream, CTString &strString);
|
||
|
void ReadFromText_t(CTStream &strmStream, const CTString &strKeyword); // throw char *
|
||
|
/* Write to stream. */
|
||
|
ENGINE_API friend CTStream &operator<<(CTStream &strmStream, const CTString &strString);
|
||
|
|
||
|
/* Load an entire text file into a string. */
|
||
|
void Load_t(const class CTFileName &fnmFile); // throw char *
|
||
|
void LoadKeepCRLF_t(const class CTFileName &fnmFile); // throw char *
|
||
|
void ReadUntilEOF_t(CTStream &strmStream); // throw char *
|
||
|
/* Save an entire string into a text file. */
|
||
|
void Save_t(const class CTFileName &fnmFile); // throw char *
|
||
|
void SaveKeepCRLF_t(const class CTFileName &fnmFile); // throw char *
|
||
|
|
||
|
// Print formatted to a string
|
||
|
INDEX PrintF(const char *strFormat, ...);
|
||
|
INDEX VPrintF(const char *strFormat, va_list arg);
|
||
|
// Scan formatted from a string
|
||
|
INDEX ScanF(const char *strFormat, ...);
|
||
|
|
||
|
// variable management functions
|
||
|
void LoadVar(const CTFileName &fnmFile);
|
||
|
void SaveVar(const CTFileName &fnmFile);
|
||
|
};
|
||
|
|
||
|
|
||
|
// general variable functions
|
||
|
ENGINE_API void LoadStringVar( const CTFileName &fnmVar, CTString &strVar);
|
||
|
ENGINE_API void SaveStringVar( const CTFileName &fnmVar, CTString &strVar);
|
||
|
ENGINE_API void LoadIntVar( const CTFileName &fnmVar, INDEX &iVar);
|
||
|
ENGINE_API void SaveIntVar( const CTFileName &fnmVar, INDEX &iVar);
|
||
|
|
||
|
ENGINE_API CTString RemoveSpecialCodes( const CTString &str);
|
||
|
|
||
|
|
||
|
#include <Engine/Base/CTString.inl>
|
||
|
|
||
|
|
||
|
#endif /* include-once check. */
|
||
|
|