124 lines
3.3 KiB
C++
124 lines
3.3 KiB
C++
|
/*
|
||
|
* Copyright (c) 2014, Oculus VR, Inc.
|
||
|
* All rights reserved.
|
||
|
*
|
||
|
* This source code is licensed under the BSD-style license found in the
|
||
|
* LICENSE file in the root directory of this source tree. An additional grant
|
||
|
* of patent rights can be found in the PATENTS file in the same directory.
|
||
|
*
|
||
|
*/
|
||
|
|
||
|
#ifndef __RAK_W_STRING_H
|
||
|
#define __RAK_W_STRING_H
|
||
|
|
||
|
#include "Export.hpp"
|
||
|
#include "RakNetTypes.hpp" // int64_t
|
||
|
#include "RakString.hpp"
|
||
|
|
||
|
#ifdef _WIN32
|
||
|
|
||
|
|
||
|
|
||
|
#include "WindowsIncludes.hpp"
|
||
|
#endif
|
||
|
|
||
|
namespace RakNet
|
||
|
{
|
||
|
/// \brief String class for Unicode
|
||
|
class RAK_DLL_EXPORT RakWString
|
||
|
{
|
||
|
public:
|
||
|
// Constructors
|
||
|
RakWString();
|
||
|
RakWString( const RakString &right );
|
||
|
RakWString( const wchar_t *input );
|
||
|
RakWString( const RakWString & right);
|
||
|
RakWString( const char *input );
|
||
|
~RakWString();
|
||
|
|
||
|
/// Implicit return of wchar_t*
|
||
|
operator wchar_t* () const {if (c_str) return c_str; return (wchar_t*) L"";}
|
||
|
|
||
|
/// Same as std::string::c_str
|
||
|
const wchar_t* C_String(void) const {if (c_str) return c_str; return (const wchar_t*) L"";}
|
||
|
|
||
|
/// Assignment operators
|
||
|
RakWString& operator = ( const RakWString& right );
|
||
|
RakWString& operator = ( const RakString& right );
|
||
|
RakWString& operator = ( const wchar_t * const str );
|
||
|
RakWString& operator = ( wchar_t *str );
|
||
|
RakWString& operator = ( const char * const str );
|
||
|
RakWString& operator = ( char *str );
|
||
|
|
||
|
/// Concatenation
|
||
|
RakWString& operator +=( const RakWString& right);
|
||
|
RakWString& operator += ( const wchar_t * const right );
|
||
|
RakWString& operator += ( wchar_t *right );
|
||
|
|
||
|
/// Equality
|
||
|
bool operator==(const RakWString &right) const;
|
||
|
|
||
|
// Comparison
|
||
|
bool operator < ( const RakWString& right ) const;
|
||
|
bool operator <= ( const RakWString& right ) const;
|
||
|
bool operator > ( const RakWString& right ) const;
|
||
|
bool operator >= ( const RakWString& right ) const;
|
||
|
|
||
|
/// Inequality
|
||
|
bool operator!=(const RakWString &right) const;
|
||
|
|
||
|
/// Set the value of the string
|
||
|
void Set( wchar_t *str );
|
||
|
|
||
|
/// Returns if the string is empty. Also, C_String() would return ""
|
||
|
bool IsEmpty(void) const;
|
||
|
|
||
|
/// Returns the length of the string
|
||
|
size_t GetLength(void) const;
|
||
|
|
||
|
/// Has the string into an unsigned int
|
||
|
static unsigned long ToInteger(const RakWString &rs);
|
||
|
|
||
|
/// Compare strings (case sensitive)
|
||
|
int StrCmp(const RakWString &right) const;
|
||
|
|
||
|
/// Compare strings (not case sensitive)
|
||
|
int StrICmp(const RakWString &right) const;
|
||
|
|
||
|
/// Clear the string
|
||
|
void Clear(void);
|
||
|
|
||
|
/// Print the string to the screen
|
||
|
void Printf(void);
|
||
|
|
||
|
/// Print the string to a file
|
||
|
void FPrintf(FILE *fp);
|
||
|
|
||
|
/// Serialize to a bitstream, uncompressed (slightly faster)
|
||
|
/// \param[out] bs Bitstream to serialize to
|
||
|
void Serialize(BitStream *bs) const;
|
||
|
|
||
|
/// Static version of the Serialize function
|
||
|
static void Serialize(const wchar_t * const str, BitStream *bs);
|
||
|
|
||
|
/// Deserialize what was written by Serialize
|
||
|
/// \param[in] bs Bitstream to serialize from
|
||
|
/// \return true if the deserialization was successful
|
||
|
bool Deserialize(BitStream *bs);
|
||
|
|
||
|
/// Static version of the Deserialize() function
|
||
|
static bool Deserialize(wchar_t *str, BitStream *bs);
|
||
|
|
||
|
|
||
|
protected:
|
||
|
wchar_t* c_str;
|
||
|
size_t c_strCharLength;
|
||
|
};
|
||
|
|
||
|
}
|
||
|
|
||
|
const RakNet::RakWString RAK_DLL_EXPORT operator+(const RakNet::RakWString &lhs, const RakNet::RakWString &rhs);
|
||
|
|
||
|
|
||
|
#endif
|