2 Author: Marco Costalba (C) 2005-2007
3 Author: TortoiseGit (C) 2013
5 Copyright: See COPYING file that comes with this distribution
15 #define QVector vector
18 typedef vector
<CGitHash
> CGitHashList
;
46 BOUNDARY_C
, // corresponds to MERGE_FORK
47 BOUNDARY_R
, // corresponds to MERGE_FORK_R
48 BOUNDARY_L
, // corresponds to MERGE_FORK_L
55 static inline bool isHead(int x
) { return (x
== HEAD
|| x
== HEAD_R
|| x
== HEAD_L
); }
56 static inline bool isTail(int x
) { return (x
== TAIL
|| x
== TAIL_R
|| x
== TAIL_L
); }
57 static inline bool isJoin(int x
) { return (x
== JOIN
|| x
== JOIN_R
|| x
== JOIN_L
); }
58 static inline bool isFreeLane(int x
) { return (x
== NOT_ACTIVE
|| x
== CROSS
|| isJoin(x
)); }
59 static inline bool isBoundary(int x
) { return (x
== BOUNDARY
|| x
== BOUNDARY_C
||
60 x
== BOUNDARY_R
|| x
== BOUNDARY_L
); }
61 static inline bool isMerge(int x
) { return (x
== MERGE_FORK
|| x
== MERGE_FORK_R
||
62 x
== MERGE_FORK_L
|| isBoundary(x
)); }
63 static inline bool isActive(int x
) { return (x
== ACTIVE
|| x
== INITIAL
|| x
== BRANCH
||
66 Lanes() // init() will setup us later, when data is available
73 bool isEmpty() { return typeVec
.empty(); }
74 void init(const CGitHash
& expectedSha
);
76 bool isFork(const CGitHash
& sha
, bool& isDiscontinuity
);
77 void setBoundary(bool isBoundary
);
78 void setFork(const CGitHash
& sha
);
79 void setMerge(const CGitHashList
& parents
);
82 void changeActiveLane(const CGitHash
& sha
);
88 void nextParent(const CGitHash
& sha
);
89 void getLanes(QVector
<int> &ln
) { ln
= typeVec
; } // O(1) vector is implicitly shared
92 int findNextSha(const CGitHash
& next
, int pos
);
93 int findType(int type
, int pos
);
94 int add(int type
, const CGitHash
& next
, int pos
);
98 QVector
<CGitHash
> nextShaVec
;
100 int NODE
, NODE_L
, NODE_R
;