/* ====================================================================
* Copyright (c) 2003-2006, Martin Hauner
* http://subcommander.tigris.org
*
* Subcommander is licensed as described in the file doc/COPYING, which
* you should have received as part of this distribution.
* ====================================================================
*/
#ifndef _SVN_WC_STATUS_H
#define _SVN_WC_STATUS_H
// sc
#include "WcStatusTypes.h"
#include "util/String.h"
// svn
#include <svn_wc.h>
namespace svn
{
class WcEntry;
class Lock;
// wc/svn_wc_status_kind
enum WcStatusKind
{
WcStatus_None = svn_wc_status_none,
WcStatus_Unversioned = svn_wc_status_unversioned,
WcStatus_Normal = svn_wc_status_normal,
WcStatus_Added = svn_wc_status_added,
WcStatus_Missing = svn_wc_status_missing,
WcStatus_Deleted = svn_wc_status_deleted,
WcStatus_Replaced = svn_wc_status_replaced,
WcStatus_Modified = svn_wc_status_modified,
WcStatus_Merged = svn_wc_status_merged,
WcStatus_Conflicted = svn_wc_status_conflicted,
WcStatus_Ignored = svn_wc_status_ignored,
WcStatus_Obstructed = svn_wc_status_obstructed,
WcStatus_External = svn_wc_status_external,
WcStatus_Incomplete = svn_wc_status_incomplete
};
/**
* The Status of the Lock if any.
*/
enum WcStatusLockKind
{
WcStatusLock_None,
WcStatusLock_Locked,
WcStatusLock_Stolen,
WcStatusLock_Other,
WcStatusLock_Broken
};
// wc/svn_wc_status2_t
class WcStatus
{
public:
WcStatus( const sc::String&, svn_wc_status2_t* );
WcStatus( const WcStatus& src );
~WcStatus();
void calcLockStatus( bool repos );
const sc::String& getName() const;
const WcEntry* getWcEntry() const;
WcStatusKind getTextStatus() const;
WcStatusKind getPropStatus() const;
bool isLocked() const;
bool isCopied() const;
bool isSwitched() const;
WcStatusKind getReposTextStatus() const;
WcStatusKind getReposPropStatus() const;
WcStatusLockKind getLockStatus() const;
const Lock* getReposLock() const;
bool isChanged() const;
bool isReposChanged() const;
bool isChangedOrFlaged() const; ///< a better name?
bool isAddable() const;
bool isRevertable() const;
bool isRemoveable() const;
bool isConflicted() const;
bool isPropConflicted() const;
bool isVersioned() const;
// WcEntry
bool isDir() const;
private:
sc::String _name;
WcEntry* _entry;
WcStatusKind _textStatus;
WcStatusKind _propStatus;
bool _locked;
bool _copied;
bool _switched;
WcStatusKind _reposTextStatus;
WcStatusKind _reposPropStatus;
WcStatusLockKind _lockStatus;
Lock* _reposLock;
};
} // namespace
#endif // _SVN_WC_STATUS_H
syntax highlighted by Code2HTML, v. 0.9.1