mirror of
https://github.com/alliedmodders/hl2sdk.git
synced 2025-09-19 12:06:07 +08:00
Added original SDK code for Alien Swarm.
This commit is contained in:
113
public/string_t.h
Normal file
113
public/string_t.h
Normal file
@ -0,0 +1,113 @@
|
||||
//========= Copyright <20> 1996-2005, Valve Corporation, All rights reserved. ============//
|
||||
//
|
||||
// Purpose: Defines the more complete set of operations on the string_t defined
|
||||
// These should be used instead of direct manipulation to allow more
|
||||
// flexibility in future ports or optimization.
|
||||
//
|
||||
// $NoKeywords: $
|
||||
//=============================================================================//
|
||||
|
||||
#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;
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose: The correct way to specify the NULL string as a constant.
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
#define NULL_STRING 0
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose: Given a string_t, make a C string. By convention the result string
|
||||
// pointer should be considered transient and should not be stored.
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
#define STRING( offset ) ( ( offset ) ? reinterpret_cast<const char *>( offset ) : "" )
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose: Given a C string, obtain a string_t
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
#define MAKE_STRING( str ) ( ( *str != 0 ) ? reinterpret_cast<int>( str ) : 0 )
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
#define IDENT_STRINGS( s1, s2 ) ( *((void **)&(s1)) == *((void **)&(s2)) )
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
#else // Strong string_t
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
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 // string_t is used in unions, hence, no constructor allowed
|
||||
{
|
||||
castable_string_t() { pszValue = NULL; }
|
||||
castable_string_t( const char *pszFrom ) { pszValue = (pszFrom && *pszFrom) ? pszFrom : 0; }
|
||||
};
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose: The correct way to specify the NULL string as a constant.
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
#define NULL_STRING castable_string_t()
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose: Given a string_t, make a C string. By convention the result string
|
||||
// pointer should be considered transient and should not be stored.
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
#define STRING( string_t_obj ) (string_t_obj).ToCStr()
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose: Given a C string, obtain a string_t
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
#define MAKE_STRING( c_str ) castable_string_t( c_str )
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
#define IDENT_STRINGS( s1, s2 ) ( *((void **)&(s1)) == *((void **)&(s2)) )
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
#endif
|
||||
|
||||
#else // NO_STRING_T
|
||||
|
||||
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 // NO_STRING_T
|
||||
|
||||
//=============================================================================
|
||||
|
||||
#endif // STRING_T_H
|
Reference in New Issue
Block a user