Skip to content

Commit 2d38b6f

Browse files
committed
even less code duplication
Signed-off-by: Viktor Kopp <vifactor@gmail.com>
1 parent c4f70f0 commit 2d38b6f

File tree

1 file changed

+20
-47
lines changed

1 file changed

+20
-47
lines changed

commander/dltfileexporter.cpp

+20-47
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,20 @@ class SplitWriter {
7070
std::size_t m_fileCounter{1};
7171
std::size_t m_maxOutputSize;
7272
};
73+
74+
template <typename Writer>
75+
void processMessages(const QDltFile& m_input, QDltFilterList& filterList, Writer& writer) {
76+
for (int i = 0; i < m_input.size(); ++i) {
77+
auto res = getMessage(m_input, i);
78+
if (!res) {
79+
continue;
80+
}
81+
auto [msg, buf] = *res;
82+
if (filterList.isEmpty() || filterList.checkFilter(msg)) {
83+
writer.write(buf);
84+
}
85+
}
86+
}
7387
}
7488

7589
DltFileExporter::DltFileExporter(const QDltFile& input) : m_input(input) {}
@@ -103,34 +117,14 @@ void DltFileExporter::exportMessages(const QString& outputName)
103117

104118
const QFileInfo filterInfo(filterFilepath);
105119
if (m_maxOutputSize) {
106-
auto writer =
107-
SplitWriter(outputDir + "/" + filterInfo.baseName() + "_", *m_maxOutputSize);
108-
for (int i = 0; i < m_input.size(); ++i) {
109-
auto res = getMessage(m_input, i);
110-
if (!res) {
111-
continue;
112-
}
113-
auto [msg, buf] = *res;
114-
if (filterList.isEmpty() || filterList.checkFilter(msg)) {
115-
writer.write(buf);
116-
}
117-
}
120+
SplitWriter writer(outputDir + "/" + filterInfo.baseName() + "_", *m_maxOutputSize);
121+
processMessages(m_input, filterList, writer);
118122
} else {
119-
auto writer = SimpleWriter(outputDir + "/" + filterInfo.baseName() + ".dlt");
120-
for (int i = 0; i < m_input.size(); ++i) {
121-
auto res = getMessage(m_input, i);
122-
if (!res) {
123-
continue;
124-
}
125-
auto [msg, buf] = *res;
126-
if (filterList.isEmpty() || filterList.checkFilter(msg)) {
127-
writer.write(buf);
128-
}
129-
}
123+
SimpleWriter writer(outputDir + "/" + filterInfo.baseName() + ".dlt");
124+
processMessages(m_input, filterList, writer);
130125
}
131126
}
132127
} else {
133-
134128
QDltFilterList filterList;
135129
for (const auto& filterFilepath : m_filters) {
136130
if(!filterList.LoadFilter(filterFilepath, false)) {
@@ -141,31 +135,10 @@ void DltFileExporter::exportMessages(const QString& outputName)
141135
const QFileInfo info(outputName);
142136
if (m_maxOutputSize) {
143137
SplitWriter writer(info.absolutePath() + "/" + info.baseName() + "_", *m_maxOutputSize);
144-
for (int i = 0; i < m_input.size(); ++i) {
145-
auto res = getMessage(m_input, i);
146-
if (!res) {
147-
continue;
148-
}
149-
auto [msg, buf] = *res;
150-
151-
if (filterList.isEmpty() || filterList.checkFilter(msg)) {
152-
writer.write(buf);
153-
}
154-
}
155-
138+
processMessages(m_input, filterList, writer);
156139
} else {
157140
SimpleWriter writer(outputName);
158-
for (int i = 0; i < m_input.size(); ++i) {
159-
auto res = getMessage(m_input, i);
160-
if (!res) {
161-
continue;
162-
}
163-
auto [msg, buf] = *res;
164-
165-
if (filterList.isEmpty() || filterList.checkFilter(msg)) {
166-
writer.write(buf);
167-
}
168-
}
141+
processMessages(m_input, filterList, writer);
169142
}
170143
}
171144
}

0 commit comments

Comments
 (0)