Team Fortress 2 Source Code as on 22/4/2020
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
//========= Copyright Valve Corporation, All rights reserved. ============//
//
// Purpose:
//
// $NoKeywords: $
//
//=============================================================================//
#ifndef P4HELPERS_H
#define P4HELPERS_H
#ifdef _WIN32
#pragma once
#endif
#include "tier1/utlstring.h"
#include "tier1/smartptr.h"
//
// Class representing file operations
//
class CP4File { public: explicit CP4File( char const *szFilename ); virtual ~CP4File();
public: // Opens the file for edit
virtual bool Edit( void ); // Opens the file for add
virtual bool Add( void );
// Reverts the file
virtual bool Revert( void );
// Is the file in perforce?
virtual bool IsFileInPerforce();
// Changes the file to the specified filetype.
virtual bool SetFileType( const CUtlString& desiredFileType );
protected: // The filename that this class instance represents
CUtlString m_sFilename; };
//
// An override of CP4File performing no Perforce interaction
//
class CP4File_Dummy : public CP4File { public: explicit CP4File_Dummy( char const *szFilename ) : CP4File( szFilename ) {}
public: virtual bool Edit( void ) { return true; } virtual bool Add( void ) { return true; } virtual bool IsFileInPerforce() { return false; } virtual bool SetFileType(const CUtlString& desiredFileType) { return true; } };
//
// Class representing a factory for creating other helper objects
//
class CP4Factory { public: CP4Factory(); ~CP4Factory();
public: // Sets whether dummy objects are created by the factory.
// Returns the old state of the dummy mode.
bool SetDummyMode( bool bDummyMode );
public: // Sets the name of the changelist to open files under,
// NULL for "Default" changelist.
void SetOpenFileChangeList( const char *szChangeListName );
public: // Creates a file access object for the given filename.
CP4File *AccessFile( char const *szFilename ) const;
protected: // Whether the factory is in the "dummy mode" and is creating dummy objects
bool m_bDummyMode; };
// Default p4 factory
extern CP4Factory *g_p4factory;
//
// CP4AutoEditFile - edits the file upon construction
//
class CP4AutoEditFile { public: explicit CP4AutoEditFile( char const *szFilename ) : m_spImpl( g_p4factory->AccessFile( szFilename ) ) { m_spImpl->Edit(); }
CP4File * File() const { return m_spImpl.Get(); }
protected: CPlainAutoPtr< CP4File > m_spImpl; };
//
// CP4AutoAddFile - adds the file upon construction
//
class CP4AutoAddFile { public: explicit CP4AutoAddFile( char const *szFilename ) : m_spImpl( g_p4factory->AccessFile( szFilename ) ) { m_spImpl->Add(); }
CP4File * File() const { return m_spImpl.Get(); }
protected: CPlainAutoPtr< CP4File > m_spImpl; };
//
// CP4AutoEditAddFile - edits the file upon construction / adds upon destruction
//
class CP4AutoEditAddFile { public: explicit CP4AutoEditAddFile( char const *szFilename ) : m_spImpl( g_p4factory->AccessFile( szFilename ) ) , m_bHasDesiredFileType( false ) { m_spImpl->Edit(); }
explicit CP4AutoEditAddFile( char const *szFilename, const char *szFiletype ) : m_spImpl( g_p4factory->AccessFile( szFilename ) ) , m_sFileType(szFiletype) , m_bHasDesiredFileType( true ) { m_spImpl->Edit(); m_spImpl->SetFileType( m_sFileType ); }
~CP4AutoEditAddFile( void ) { m_spImpl->Add(); if ( m_bHasDesiredFileType ) m_spImpl->SetFileType( m_sFileType ); }
CP4File * File() const { return m_spImpl.Get(); }
protected: CPlainAutoPtr< CP4File > m_spImpl; CUtlString m_sFileType; bool m_bHasDesiredFileType; };
//
// CP4AutoRevert - reverts the file upon construction
//
class CP4AutoRevertFile { public: explicit CP4AutoRevertFile( char const *szFilename ) : m_spImpl( g_p4factory->AccessFile( szFilename ) ) { m_spImpl->Revert(); }
CP4File * File() const { return m_spImpl.Get(); }
protected: CPlainAutoPtr< CP4File > m_spImpl; };
#endif // #ifndef P4HELPERS_H
|