Skip to content

Commit 9ef50a2

Browse files
committed
cssort: code deduplication
1 parent c240f53 commit 9ef50a2

File tree

2 files changed

+28
-39
lines changed

2 files changed

+28
-39
lines changed

cssort.cc

Lines changed: 0 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -75,38 +75,6 @@ class GenericSort: public AbstractWriter {
7575
}
7676
};
7777

78-
// FIXME: move this to a separate header file?
79-
#define RETURN_BY_REF_IF_COMPARED(a, b, member) do { \
80-
if (a.member < b.member) \
81-
*pResult = true; \
82-
else if (b.member < a.member) \
83-
*pResult = false; \
84-
else \
85-
break; \
86-
return true; \
87-
} while (0)
88-
89-
inline bool cmpEvents(bool *pResult, const DefEvent &ea, const DefEvent &eb)
90-
{
91-
// compare path
92-
RETURN_BY_REF_IF_COMPARED(ea, eb, fileName);
93-
94-
// compare line numbers
95-
RETURN_BY_REF_IF_COMPARED(ea, eb, line);
96-
97-
// compare column numbers
98-
RETURN_BY_REF_IF_COMPARED(ea, eb, column);
99-
100-
// compare events
101-
RETURN_BY_REF_IF_COMPARED(ea, eb, event);
102-
103-
// compare messages
104-
RETURN_BY_REF_IF_COMPARED(ea, eb, msg);
105-
106-
// incomparable events
107-
return false;
108-
}
109-
11078
inline bool cmpFileNames(const Defect &a, const Defect &b) {
11179
const TEvtList &ea = a.events;
11280
const TEvtList &eb = b.events;

defect.hh

Lines changed: 28 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,17 @@
3232
return false; \
3333
} while (0)
3434

35+
// FIXME: move this to a separate header file?
36+
#define RETURN_BY_REF_IF_COMPARED(a, b, member) do { \
37+
if (a.member < b.member) \
38+
*pResult = true; \
39+
else if (b.member < a.member) \
40+
*pResult = false; \
41+
else \
42+
break; \
43+
return true; \
44+
} while (0)
45+
3546

3647
struct DefEvent {
3748
std::string fileName;
@@ -51,16 +62,26 @@ struct DefEvent {
5162
}
5263
};
5364

54-
inline bool operator<(const DefEvent &a, const DefEvent &b) {
55-
RETURN_IF_COMPARED(a, b, fileName);
56-
RETURN_IF_COMPARED(a, b, line);
57-
RETURN_IF_COMPARED(a, b, column);
58-
RETURN_IF_COMPARED(a, b, event);
59-
RETURN_IF_COMPARED(a, b, msg);
60-
RETURN_IF_COMPARED(a, b, verbosityLevel);
65+
inline bool cmpEvents(bool *pResult, const DefEvent &a, const DefEvent &b)
66+
{
67+
RETURN_BY_REF_IF_COMPARED(a, b, fileName);
68+
RETURN_BY_REF_IF_COMPARED(a, b, line);
69+
RETURN_BY_REF_IF_COMPARED(a, b, column);
70+
RETURN_BY_REF_IF_COMPARED(a, b, event);
71+
RETURN_BY_REF_IF_COMPARED(a, b, msg);
72+
RETURN_BY_REF_IF_COMPARED(a, b, verbosityLevel);
73+
74+
// incomparable events
6175
return false;
6276
}
6377

78+
inline bool operator<(const DefEvent &a, const DefEvent &b)
79+
{
80+
bool result;
81+
return cmpEvents(&result, a, b)
82+
&& result;
83+
}
84+
6485
typedef std::vector<DefEvent> TEvtList;
6586

6687
struct Defect {

0 commit comments

Comments
 (0)