1
0
mirror of https://github.com/alliedmodders/hl2sdk.git synced 2025-09-19 20:16:10 +08:00
Files
hl2sdk/public/tier1/utlstringtoken.h
2024-10-04 00:39:08 +03:00

63 lines
1.9 KiB
C++

//===== Copyright © 1996-2005, Valve Corporation, All rights reserved. ======//
//
// Purpose:
//
// $NoKeywords: $
//
//===========================================================================//
#ifndef UTLSTRINGTOKEN_H
#define UTLSTRINGTOKEN_H
#ifdef _WIN32
#pragma once
#endif
#include <limits.h>
#include "tier1/generichash.h"
#define STRINGTOKEN_MURMURHASH_SEED 0x31415926
class CUtlString;
class IFormatOutputStream;
class CFormatStringElement;
// AMNOTE: See VStringTokenSystem001
// Interact with stringtokendatabase.txt
PLATFORM_INTERFACE bool g_bUpdateStringTokenDatabase;
PLATFORM_INTERFACE void RegisterStringToken( uint32 nHashCode, const char *pStart, const char *pEnd = NULL, bool bExtraAddToDatabase = true );
class CUtlStringToken
{
public:
FORCEINLINE CUtlStringToken( uint32 nHashCode = 0 ) : m_nHashCode( nHashCode ) {}
FORCEINLINE CUtlStringToken( const char *str ) : m_nHashCode( MurmurHash2LowerCase( str, STRINGTOKEN_MURMURHASH_SEED ) )
{
if(g_bUpdateStringTokenDatabase)
{
RegisterStringToken( m_nHashCode, str, 0, true );
}
}
FORCEINLINE bool operator==( CUtlStringToken const &other ) const { return ( other.m_nHashCode == m_nHashCode ); }
FORCEINLINE bool operator!=( CUtlStringToken const &other ) const { return !operator==( other ); }
FORCEINLINE bool operator<( CUtlStringToken const &other ) const { return ( m_nHashCode < other.m_nHashCode ); }
FORCEINLINE bool IsValid() const { return m_nHashCode != 0; }
FORCEINLINE uint32 GetHashCode() const { return m_nHashCode; }
FORCEINLINE void SetHashCode( uint32 hash ) { m_nHashCode = hash; }
DLL_CLASS_IMPORT void FormatTo( IFormatOutputStream* pOutputStream, CFormatStringElement pElement ) const;
DLL_CLASS_IMPORT static bool TrackTokenCreation( const char *s1, const char *s2 );
private:
uint32 m_nHashCode;
};
FORCEINLINE CUtlStringToken MakeStringToken( const char *str )
{
return CUtlStringToken( str );
}
#endif // UTLSTRINGTOKEN_H