// // Copyright 1997 Nicholas J. Irias. All rights reserved. // // // P4FileStats.h #ifndef __P4FILESTATS__ #define __P4FILESTATS__ // File actions enum FileAction { F_NOACTION, F_UNKNOWNACTION, F_ADD, F_EDIT, F_DELETE, F_BRANCH, F_INTEGRATE, F_IMPORT, F_MAXACTION }; // File types enum FileType { F_UNKNOWNFILETYPE, F_TEXT, F_CTEXT, F_CXTEXT, F_LTEXT, F_KTEXT, F_TTEXT, F_XTEXT, F_XLTEXT, F_KXTEXT, F_BINARY, F_TBINARY, F_UBINARY, F_XBINARY, F_SYMLINK, F_RESOURCE, F_TEMPOBJ, F_TEMPXOBJ, F_UNICODE, F_XUNICODE, f_UFT16, F_MAXTYPE }; // Flags #define FILE_MY_LOCK 0x04 #define FILE_OTHER_LOCK 0x08 #define FILE_UNRESOLVED 0x04 // Class CP4FileStats - a simple class to store results of 'P4 fstat' class CP4FileStats : public CObject { public: CP4FileStats(); DECLARE_DYNCREATE(CP4FileStats) ~CP4FileStats(); protected: // Storage for all info returned by FSTAT. CString m_DepotPath; CString m_ClientPath; CString m_OtherUsers; BYTE m_MyOpenAction; BYTE m_OtherOpenAction; BYTE m_HeadAction; CString m_HeadType; CString m_Type; BYTE m_Unresolved; BYTE m_Resolved; BYTE m_OtherLock; BYTE m_MyLock; BYTE m_OtherUserMyClient; CString m_ActionOwner; CString m_Digest; long m_HeadRev; long m_HaveRev; int m_OtherOpens; unsigned long m_FileSize; long m_HeadChangeNum; long m_HeadTime; long m_OpenChangeNum; LPARAM m_UserParam; BOOL m_NotInDepot; public: // Creation and assignment members void Clear(); void Create( CP4FileStats *stats ); BOOL Create(StrDict *client); BOOL Create(LPCTSTR openRow); // temporary, till change # in fstat output BOOL Create(LPCTSTR depotName, long changeNumber); // Used for file add BOOL Create(LPCTSTR localsyntax, LPCTSTR depotsyntax); // Used for files not under Perforce control //TODO: Set functions are weak. If a file is set to not open, it should not be locked // etc void SetOpenAction(int action, BOOL otherUser); void SetLocked(BOOL locked, BOOL otherUser); inline void SetHeadRev(long rev) {ASSERT(rev >= m_HaveRev); m_HeadRev=rev; } void SetHaveRev(long rev); void SetHeadAction(int action); inline void SetUnresolved(BOOL unresolved) {m_Unresolved=(BYTE)unresolved;} inline void SetResolved(BOOL resolved) {m_Resolved=(BYTE)resolved;} void SetOtherOpens(int num); void SetHeadType(int type); void SetHeadType(LPCTSTR txttype); void SetType(int type); void SetType(LPCTSTR txttype); void SetDigest(CString *digest) { m_Digest = *digest; } inline void SetOpenChangeNum(long change) { ASSERT(change >= 0); m_OpenChangeNum=change; } inline void SetUserParam(LPARAM parm) {m_UserParam = parm; } inline void SetNotInDepot(BOOL b) {m_NotInDepot = b; } void SetClosed(); void SetDepotPath(LPCTSTR path); void SetClientPath(LPCTSTR path); void SetOtherUsers(LPCTSTR userlist); // Data access members inline int GetMyOpenAction() const {return (int) m_MyOpenAction;} inline int GetOtherOpenAction() const {return (int) m_OtherOpenAction;} inline BOOL IsOtherUserMyClient() const {return m_OtherUserMyClient; } inline BOOL IsMyLock() const {return m_MyLock;} inline BOOL IsOtherLock() const {return m_OtherLock;} inline BOOL IsMyOpen() const {return (m_MyOpenAction > 0) ;} inline BOOL IsOtherOpen() const {return (m_OtherOpenAction > 0) ;} inline BOOL IsOpen() const {return (m_MyOpenAction > 0 || m_OtherOpenAction > 0); } inline long GetHeadRev() const {return m_HeadRev;} inline long GetHaveRev() const {return m_HaveRev;} inline int GetHeadAction() const {return m_HeadAction;} inline CString GetHeadType() const {return m_HeadType;} inline CString GetType() const {return m_Type;} inline CString GetDigest() const {return m_Digest;} inline unsigned long GetFileSize() const {return m_FileSize;} inline long GetHeadChangeNum() const {return m_HeadChangeNum;} inline long GetHeadTime() const {return m_HeadTime;} inline long GetOpenChangeNum() const {return m_OpenChangeNum;} inline BOOL InClientView() const {return (m_ClientPath.GetLength() > 0); } inline BOOL IsUnresolved() const {return m_Unresolved;} inline BOOL IsResolved() const {return m_Resolved;} inline long GetOtherOpens() const {return m_OtherOpens;} LPCTSTR GetOtherUsers() const {return m_OtherUsers;} inline LPARAM GetUserParam() const {return m_UserParam; } inline BOOL IsNotInDepot() const {return m_NotInDepot; } BOOL IsTextFile() const; BOOL IsMyOpenExclusive() const; BOOL IsOtherOpenExclusive() const; CString GetActionStr(int action) const; LPCTSTR GetFullDepotPath() const {return m_DepotPath;} LPCTSTR GetFullClientPath() const {return m_ClientPath;} CString GetClientDir() const; CString GetDepotDir() const; CString GetDepotFilename() const; CString GetClientFilename() const; CString GetFormattedChangeFile(BOOL showFileType, BOOL showOpenAction) const; CString GetFormattedFilename(BOOL showFileType) const; CString GetFormattedHeadTime(); }; #endif //__P4FILESTATS__