Files
2026-02-02 04:50:13 +01:00

207 lines
7.0 KiB
C++

/* ScummVM - Graphic Adventure Engine
*
* ScummVM is the legal property of its developers, whose names
* are too numerous to list here. Please refer to the COPYRIGHT
* file distributed with this source distribution.
*
* This program 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, either version 3 of the License, or
* (at your option) any later version.
*
* 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.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
/*
* Copyright (C) 2006-2010 - Frictional Games
*
* This file is part of HPL1 Engine.
*/
#ifndef HPL_STRING_H
#define HPL_STRING_H
#include "hpl1/engine/system/SystemTypes.h"
#include "hpl1/engine/graphics/GraphicsTypes.h"
#include "hpl1/engine/math/MathTypes.h"
namespace hpl {
class cString {
public:
/**
* Converts ascii to unicode
*/
static tWString To16Char(const tString &asString);
/**
* Converts unicode to ascii
*/
static tString To8Char(const tWString &awsString);
/**
* Gets a 16 bit string from an string of numbers
*/
static tWString Get16BitFromArray(const tString &asArray);
/**
* Get the sub string
* \param asString The string to get the sub from. The method error check so the params are correct.
* \param alStart The character to start at.
* \param alCount The number of character to copy to the sub. -1 = all til end.
* \return
*/
static tString Sub(const tString &asString, int alStart, int alCount = -1);
static tWString SubW(const tWString &asString, int alStart, int alCount = -1);
/**
* Get the file extension of a string
* \param aString extension (for example ".exe"). If none "" is returned.
* \return
*/
static tString GetFileExt(const tString &aString);
static tWString GetFileExtW(const tWString &aString);
/**
* Sets the file extension. "" removes extension, for example "test.exe" -> "test"
* \param aString New string
* \param aExt Extension, both ".exe" and "exe" works
* \return
*/
static tString SetFileExt(tString aString, tString aExt);
static tWString SetFileExtW(tWString aString, tWString aExt);
/**
* Gets the file filename in for example: "/files/test/this.txt"
* \param aString The Filename
* \return
*/
static tString GetFileName(const tString &aString);
static tWString GetFileNameW(const tWString &aString);
/**
* Removes the filename from a path
* \param aString
* \return
*/
static tString GetFilePath(const tString &aString);
static tWString GetFilePathW(const tWString &aString);
/**
* Sets the path for a file.
* \param aString
* \param aPath New path
* \return
*/
static tString SetFilePath(const tString &aString, tString aPath);
static tWString SetFilePathW(tWString aString, tWString aPath);
/**
* Converts a string to lower case.
* \param aString
* \return
*/
static tString ToLowerCase(tString aString);
static tWString ToLowerCaseW(tWString aString);
/**
*
* \param aString The string to do the replacement on
* \param asOldChar The char to replace (one character only!)
* \param asNewChar The char to replace with (one character only!)
* \return
*/
static tString ReplaceCharTo(tString aString, const tString &asOldChar, const tString &asNewChar);
static tWString ReplaceCharToW(tWString aString, const tWString &asOldChar, const tWString &asNewChar);
/**
*
* \param aString The string to do the replacement on
* \param asOldString The char to replace
* \param asNewString The char to replace with
* \return
*/
static tString ReplaceStringTo(const tString &aString, const tString &asOldString, const tString &asNewString);
static tString ToString(const char *asString, const tString &asDefault);
static int ToInt(const char *asString, int alDefault);
static bool ToBool(const char *asString, bool abDefault);
static float ToFloat(const char *asString, float afDefault);
static cColor ToColor(const char *asString, const cColor &aDefault);
static cVector2f ToVector2f(const char *asString, const cVector2f &avDefault);
static cVector3f ToVector3f(const char *asString, const cVector3f &avDefault);
static cVector2l ToVector2l(const char *asString, const cVector2l &avDefault);
static cVector3l ToVector3l(const char *asString, const cVector3l &avDefault);
static cMatrixf ToMatrixf(const char *asString, const cMatrixf &a_mtxDefault);
static tString ToString(int alX);
static tString ToString(float afX);
static tWString ToStringW(int alX);
static tWString ToStringW(float afX);
/**
* Get a vector of ints from a string such as "1, 2, 3".
* Valid separators are ' ', '\n', '\t' and ','
* \param &asData The string
* \param avVec a vector the values will be appended to.
* \param apSeparators a pointer to a string with chars to override the default separators
*/
static tIntVec &GetIntVec(const tString &asData, tIntVec &avVec, tString *apSeparators = NULL);
/**
* Get a vector of ints from a string such as "1, 2, 3".
* Valid separators are ' ', '\n', '\t' and ','
* \param &asData The string
* \param avVec a vector the values will be appended to.
* \param apSeparators a pointer to a string with chars to override the default separators
*/
static tUIntVec &GetUIntVec(const tString &asData, tUIntVec &avVec, tString *apSeparators = NULL);
/**
* Get a vector of floats from a string such as "1, 2, 3".
* Valid separators are ' ', '\n', '\t' and ','
* \param &asData The string
* \param avVec a vector the values will be appended to.
* \param apSeparators a pointer to a string with chars to override the default separators
*/
static tFloatVec &GetFloatVec(const tString &asData, tFloatVec &avVec, tString *apSeparators = NULL);
/**
* Get a vector of strings from a string such as "one, two, three".
* Valid separators are ' ', '\n', '\t' and ','
* \param &asData
* \param avVec
* \param apSeparators a pointer to a string with chars to override the default separators
*/
static tStringVec &GetStringVec(const tString &asData, tStringVec &avVec, tString *apSeparators = NULL);
/**
* Gets the last character of the string.
* \param aString
* \return
*/
static tString GetLastChar(const tString &aString);
static tWString GetLastCharW(const tWString &aString);
/**
* Get the last pos where aChar is found.
* \param aString
* \param aChar
* \return >=0 if string is found else -1
*/
static int GetLastStringPos(const tString &aString, const tString &aChar);
static int GetLastStringPosW(const tWString &aString, const tWString &aChar);
static void UIntStringToArray(unsigned int *apArray, const char *apString, int alSize);
static void FloatStringToArray(float *apArray, const char *apString, int alSize);
private:
};
} // namespace hpl
#endif // HPL_STRING_H