Skip to content

Commit dfa2fed

Browse files
committed
Solving the diamond problem for protocol interfaces
Details: - The solving the diamond inheritance problem of the ProtocolInterface - Extending the DataExportingInterface - Updating the MeasurementDataProtocol
1 parent ff46df5 commit dfa2fed

File tree

4 files changed

+28
-7
lines changed

4 files changed

+28
-7
lines changed

application/sources/data_exporting_interface.hpp

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,10 +34,13 @@
3434

3535

3636

37-
class DataExportingInterface: public ProtocolInterface
37+
class DataExportingInterface : virtual ProtocolInterface
3838
{
3939
public:
4040
virtual std::stringstream ExportData(const std::vector<DiagramSpecialized>& diagrams_to_export) = 0;
41+
virtual bool CanThisFileBeExportedInto(const std::string path_to_file) = 0;
42+
virtual std::string GetSupportedFileType(void) = 0;
43+
4144
};
4245

4346
#endif // DATA_EXPORTING_INTERFACE_HPP

application/sources/data_processing_interface.hpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222

2323

2424
#include <string>
25+
#include <vector>
2526

2627
#include "global.hpp"
2728
#include "protocol_interface.hpp"
@@ -33,7 +34,7 @@
3334

3435

3536

36-
class DataProcessingInterface : public ProtocolInterface
37+
class DataProcessingInterface : virtual ProtocolInterface
3738
{
3839
public:
3940
virtual std::vector<DiagramSpecialized> ProcessData(std::istream& input_data) = 0;

application/sources/measurement_data_protocol.cpp

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -188,6 +188,7 @@ bool MeasurementDataProtocol::CanThisFileBeProcessed(const std::string path_to_f
188188
{
189189
bResult = true;
190190
}
191+
191192
return bResult;
192193
}
193194

@@ -228,3 +229,17 @@ std::stringstream MeasurementDataProtocol::ExportData(const std::vector<DiagramS
228229

229230
return exported_data;
230231
}
232+
233+
bool MeasurementDataProtocol::CanThisFileBeExportedInto(const std::string path_to_file)
234+
{
235+
bool bResult = false;
236+
237+
std::string file_extension = QFileInfo(QString::fromStdString(path_to_file)).completeSuffix().toStdString();
238+
239+
if(std::string(Constants::native_file_extension) == file_extension)
240+
{
241+
bResult = true;
242+
}
243+
244+
return bResult;
245+
}

application/sources/measurement_data_protocol.hpp

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@
3535
#include <QFileInfo>
3636

3737
#include "global.hpp"
38+
#include "protocol_interface.hpp"
3839
#include "data_processing_interface.hpp"
3940
#include "data_exporting_interface.hpp"
4041
#include "diagram.hpp"
@@ -58,11 +59,12 @@ class MeasurementDataProtocol : public DataProcessingInterface, public DataExpor
5859
MeasurementDataProtocol& operator=(const MeasurementDataProtocol&) = delete;
5960
MeasurementDataProtocol& operator=(MeasurementDataProtocol&&) = delete;
6061

61-
std::string GetProtocolName(void) override;
62-
std::vector<DiagramSpecialized> ProcessData(std::istream& input_data) override;
63-
bool CanThisFileBeProcessed(const std::string path_to_file) override;
64-
std::string GetSupportedFileType(void) override {return Constants::native_file_extension;}
65-
std::stringstream ExportData(const std::vector<DiagramSpecialized>& diagrams_to_export) override;
62+
virtual std::string GetProtocolName(void) override;
63+
virtual std::vector<DiagramSpecialized> ProcessData(std::istream& input_data) override;
64+
virtual bool CanThisFileBeProcessed(const std::string path_to_file) override;
65+
virtual std::string GetSupportedFileType(void) override {return Constants::native_file_extension;}
66+
virtual std::stringstream ExportData(const std::vector<DiagramSpecialized>& diagrams_to_export) override;
67+
virtual bool CanThisFileBeExportedInto(const std::string path_to_file) override;
6668

6769
private:
6870
struct Constants

0 commit comments

Comments
 (0)