//========= Copyright 1996-2005, Valve Corporation, All rights reserved. ============// // // File Utilities. // //=====================================================================================// #ifdef _WIN32 #pragma once #endif #define _CRT_SECURE_NO_DEPRECATE 1 #include #include #include #include #include #include #include #include #ifdef POSIX #include #endif #if defined( LINUX ) || defined( _LINUX ) #include #endif #include "tier0/platform.h" #include "../vpccrccheck/crccheck_shared.h" template< class T, class NullType, int nMax > class CSimplePointerStack { public: inline CSimplePointerStack() { m_nCount = 0; } inline void Purge() { for ( int i=0; i < m_nCount; i++ ) m_Values[i] = (NullType)NULL; m_nCount = 0; } inline int Count() { return m_nCount; } inline T& Top() { Assert( m_nCount > 0 ); return m_Values[m_nCount-1]; } inline void Pop( T &val ) { Assert( m_nCount > 0 ); --m_nCount; val = m_Values[m_nCount]; m_Values[m_nCount] = (NullType)NULL; } inline void Pop() { Assert( m_nCount > 0 ); --m_nCount; m_Values[m_nCount] = (NullType)NULL; } inline void Push( T &val ) { Assert( m_nCount+1 < nMax ); m_Values[m_nCount] = val; ++m_nCount; } public: T m_Values[nMax]; int m_nCount; }; class CXMLWriter { public: CXMLWriter(); bool Open( const char *pFilename, bool bIs2010Format = false ); void Close(); void PushNode( const char *pName ); void PopNode( bool bEmitLabel ); void WriteLineNode( const char *pName, const char *pExtra, const char *pString ); void PushNode( const char *pName, const char *pString ); void Write( const char *p ); CUtlString FixupXMLString( const char *pInput ); private: void Indent(); bool m_b2010Format; FILE *m_fp; CSimplePointerStack< char *, char *, 128 > m_Nodes; }; long Sys_FileLength( const char* filename, bool bText = false ); int Sys_LoadFile( const char *filename, void **bufferptr, bool bText = false ); void Sys_StripPath( const char *path, char *outpath ); bool Sys_Exists( const char *filename ); bool Sys_FileInfo( const char *pFilename, int64 &nFileSize, int64 &nModifyTime ); bool Sys_StringToBool( const char *pString ); bool Sys_ReplaceString( const char *pStream, const char *pSearch, const char *pReplace, char *pOutBuff, int outBuffSize ); bool Sys_StringPatternMatch( char const *pSrcPattern, char const *pString ); bool Sys_EvaluateEnvironmentExpression( const char *pExpression, const char *pDefault, char *pOutBuff, int nOutBuffSize ); bool Sys_GetActualFilenameCase( const char *pFilename, char *pOutputBuffer, int nOutputBufferSize ); bool Sys_IsFilenameCaseConsistent( const char *pFilename, char *pOutputBuffer, int nOutputBufferSize );