1
0
mirror of https://github.com/alliedmodders/hl2sdk.git synced 2025-09-20 12:36:05 +08:00

Update CCommand

This commit is contained in:
Nick Hastings
2023-04-03 22:53:14 -04:00
committed by Nicholas Hastings
parent 6cbc8453fc
commit 6e5d2ac6ac

View File

@ -513,11 +513,10 @@ private:
COMMAND_MAX_LENGTH = 512, COMMAND_MAX_LENGTH = 512,
}; };
int m_nArgc; int m_nArgv0Size;
int m_nArgv0Size; CUtlVectorFixedGrowable<char, COMMAND_MAX_LENGTH> m_ArgSBuffer;
char m_pArgSBuffer[ COMMAND_MAX_LENGTH ]; CUtlVectorFixedGrowable<char, COMMAND_MAX_LENGTH> m_ArgvBuffer;
char m_pArgvBuffer[ COMMAND_MAX_LENGTH ]; CUtlVectorFixedGrowable<char*, COMMAND_MAX_ARGC> m_Args;
const char* m_ppArgv[ COMMAND_MAX_ARGC ];
}; };
inline int CCommand::MaxCommandLength() inline int CCommand::MaxCommandLength()
@ -527,22 +526,22 @@ inline int CCommand::MaxCommandLength()
inline int CCommand::ArgC() const inline int CCommand::ArgC() const
{ {
return m_nArgc; return m_Args.Count();
} }
inline const char **CCommand::ArgV() const inline const char **CCommand::ArgV() const
{ {
return m_nArgc ? (const char**)m_ppArgv : NULL; return ArgC() ? (const char**)m_Args.Base() : NULL;
} }
inline const char *CCommand::ArgS() const inline const char *CCommand::ArgS() const
{ {
return m_nArgv0Size ? &m_pArgSBuffer[m_nArgv0Size] : ""; return m_nArgv0Size ? *(const char **)(m_ArgSBuffer.Base() + m_nArgv0Size) : "";
} }
inline const char *CCommand::GetCommandString() const inline const char *CCommand::GetCommandString() const
{ {
return m_nArgc ? m_pArgSBuffer : ""; return ArgC() ? m_ArgSBuffer.Base() : "";
} }
inline const char *CCommand::Arg( int nIndex ) const inline const char *CCommand::Arg( int nIndex ) const
@ -550,9 +549,9 @@ inline const char *CCommand::Arg( int nIndex ) const
// FIXME: Many command handlers appear to not be particularly careful // FIXME: Many command handlers appear to not be particularly careful
// about checking for valid argc range. For now, we're going to // about checking for valid argc range. For now, we're going to
// do the extra check and return an empty string if it's out of range // do the extra check and return an empty string if it's out of range
if ( nIndex < 0 || nIndex >= m_nArgc ) if ( nIndex < 0 || nIndex >= ArgC() )
return ""; return "";
return m_ppArgv[nIndex]; return m_Args[nIndex];
} }
inline const char *CCommand::operator[]( int nIndex ) const inline const char *CCommand::operator[]( int nIndex ) const