mirror of
https://github.com/0TheSpy/Seaside.git
synced 2025-01-07 10:03:29 +08:00
67 lines
1.6 KiB
C
67 lines
1.6 KiB
C
#ifndef STRING_T_H
|
|
#define STRING_T_H
|
|
|
|
#if defined( _WIN32 )
|
|
#pragma once
|
|
#endif
|
|
|
|
#ifndef NO_STRING_T
|
|
|
|
#ifdef WEAK_STRING_T
|
|
|
|
typedef int string_t;
|
|
|
|
#define NULL_STRING 0
|
|
|
|
#define STRING( offset ) ( ( offset ) ? reinterpret_cast<const char *>( offset ) : "" )
|
|
|
|
#define MAKE_STRING( str ) ( ( *str != 0 ) ? reinterpret_cast<int>( str ) : 0 )
|
|
|
|
#define IDENT_STRINGS( s1, s2 ) ( *((void **)&(s1)) == *((void **)&(s2)) )
|
|
|
|
#else
|
|
|
|
struct string_t
|
|
{
|
|
public:
|
|
bool operator!() const { return (pszValue == NULL); }
|
|
bool operator==(const string_t& rhs) const { return (pszValue == rhs.pszValue); }
|
|
bool operator!=(const string_t& rhs) const { return (pszValue != rhs.pszValue); }
|
|
bool operator<(const string_t& rhs) const { return ((void*)pszValue < (void*)rhs.pszValue); }
|
|
|
|
const char* ToCStr() const { return (pszValue) ? pszValue : ""; }
|
|
|
|
protected:
|
|
const char* pszValue;
|
|
};
|
|
|
|
struct castable_string_t : public string_t
|
|
{
|
|
castable_string_t() { pszValue = NULL; }
|
|
castable_string_t(const char* pszFrom) { pszValue = (pszFrom && *pszFrom) ? pszFrom : 0; }
|
|
};
|
|
|
|
#define NULL_STRING castable_string_t()
|
|
|
|
#define STRING( string_t_obj ) (string_t_obj).ToCStr()
|
|
|
|
#define MAKE_STRING( c_str ) castable_string_t( c_str )
|
|
|
|
#define IDENT_STRINGS( s1, s2 ) ( *((void **)&(s1)) == *((void **)&(s2)) )
|
|
|
|
#endif
|
|
|
|
#else
|
|
|
|
typedef const char* string_t;
|
|
#define NULL_STRING 0
|
|
#define STRING( c_str ) ( c_str )
|
|
#define MAKE_STRING( c_str ) ( c_str )
|
|
#define IDENT_STRINGS( s1, s2 ) ( *((void **)&(s1)) == *((void **)&(s2)) )
|
|
|
|
#endif
|
|
|
|
inline void EnsureValidValue(string_t& x) { x = NULL_STRING; }
|
|
|
|
#endif
|