From e559f9674d42156adcd6ab9d859886897ddb414d Mon Sep 17 00:00:00 2001 From: James Grogan Date: Mon, 23 Jan 2023 11:32:18 +0000 Subject: [PATCH] Add clang support. --- CMakeLists.txt | 3 +- apps/notes_tk/text_editor/TextEditorView.cpp | 6 ++-- infra/build_configs/README.md | 20 ++++++++++++ plugins/circuits/src/Terminal.h | 3 +- plugins/circuits/src/TruthTable.h | 32 +++++++++---------- src/base/compression/huffman/HuffmanEncoder.h | 1 - src/base/core/serializers/TomlReader.h | 1 - src/base/core/streams/BufferBitStream.h | 1 - src/base/geometry/grid/AbstractGrid.cpp | 7 +++- src/base/geometry/grid/AbstractGrid.h | 4 ++- src/base/geometry/grid/Grid.h | 2 +- .../network/sockets/UnixSocketInterface.cpp | 1 - .../network/sockets/UnixSocketInterface.h | 1 - src/media/image/IImageWriter.h | 28 ++++++++-------- src/publishing/pdf/PdfOutline.h | 2 +- src/publishing/pdf/PdfPage.h | 6 ++-- src/rendering/mesh/TriFace.h | 2 +- src/rendering/mesh/TriMesh.h | 2 +- .../visual_elements/basic_shapes/LineNode.h | 4 +-- .../visual_elements/nodes/TextNode.cpp | 1 + .../visual_elements/scene/SceneModel.h | 1 - .../visual_elements/svg/SvgPainter.cpp | 2 +- src/ui/client/TabbedPanelWidget.cpp | 2 +- src/ui/client/TopBar.cpp | 9 ++---- src/ui/ui_controls/TextBox.cpp | 3 +- src/ui/ui_controls/TextBox.h | 1 - src/ui/ui_elements/style/ITheme.h | 2 ++ 27 files changed, 84 insertions(+), 63 deletions(-) create mode 100644 infra/build_configs/README.md diff --git a/CMakeLists.txt b/CMakeLists.txt index d49a34e..3cab5b2 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -16,7 +16,8 @@ set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin) if(MSVC) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /W3") -elseif(CMAKE_COMPILER_IS_GNUCC) +#elseif(CMAKE_COMPILER_IS_GNUCC) +else() #set(GCC_COVERAGE_COMPILE_FLAGS "-fprofile-arcs -ftest-coverage") #set(GCC_COVERAGE_LINK_FLAGS "-lgcov") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Werror -Wall") diff --git a/apps/notes_tk/text_editor/TextEditorView.cpp b/apps/notes_tk/text_editor/TextEditorView.cpp index 8dffbc8..83ee3e1 100644 --- a/apps/notes_tk/text_editor/TextEditorView.cpp +++ b/apps/notes_tk/text_editor/TextEditorView.cpp @@ -36,7 +36,7 @@ void TextEditorView::initialize() saveButton->setBackground(Theme::Sys::Color::Primary); saveButton->setMargin(2); auto onSave = [this](Widget* self){ - if(this && mController && mTextBox) + if(mController && mTextBox) { mController->SetContent(mTextBox->getContent()); mController->OnSave(); @@ -48,7 +48,7 @@ void TextEditorView::initialize() clearButton->setLabel("Clear"); clearButton->setMargin(2); auto onClear = [this](Widget* self){ - if(this && mController && mTextBox) + if(mController && mTextBox) { mController->OnClear(); mTextBox->setContent(""); @@ -60,7 +60,7 @@ void TextEditorView::initialize() loadButton->setLabel("Load"); loadButton->setMargin(2); auto onLoad = [this](Widget* self){ - if(this && mController && mTextBox) + if(mController && mTextBox) { mController->OnLoad(); mTextBox->setContent(mController->GetContent()); diff --git a/infra/build_configs/README.md b/infra/build_configs/README.md new file mode 100644 index 0000000..1400a38 --- /dev/null +++ b/infra/build_configs/README.md @@ -0,0 +1,20 @@ +# Compiler Support + +## Linux + +### GCC +gcc 11.3.0 + +### clang + +``` +sudo apt-get install clang +mkdir build_clang +cd build_clang +export CC=/usr/bin/clang +export CXX=/usr/bin/clang++ +cmake $PATH_TO_SOURCE +make +``` + +Version 14.0 diff --git a/plugins/circuits/src/Terminal.h b/plugins/circuits/src/Terminal.h index edc6c87..85b67d4 100644 --- a/plugins/circuits/src/Terminal.h +++ b/plugins/circuits/src/Terminal.h @@ -28,8 +28,7 @@ public: private: std::string mLabel; - bool mValue{ false }; TerminalType mType; Wire* mConnection{ nullptr }; }; -using TerminalPtr = std::unique_ptr; \ No newline at end of file +using TerminalPtr = std::unique_ptr; diff --git a/plugins/circuits/src/TruthTable.h b/plugins/circuits/src/TruthTable.h index fb445b7..f2fc8f2 100644 --- a/plugins/circuits/src/TruthTable.h +++ b/plugins/circuits/src/TruthTable.h @@ -6,27 +6,27 @@ class TruthTable { public: - using TableData = std::map, std::vector >; + using TableData = std::map, std::vector >; - TruthTable(std::size_t numInputColumns, std::size_t numOutputColumns) - : mNumInputColumns(numInputColumns), - mNumOutputColumns(numOutputColumns) - { + TruthTable(std::size_t numInputColumns, std::size_t numOutputColumns) + //: mNumInputColumns(numInputColumns), + // mNumOutputColumns(numOutputColumns) + { - } + } - void setTable(const TableData& data) - { - mTable = data; - } + void setTable(const TableData& data) + { + mTable = data; + } - static TruthTable getAndTruthTable(); + static TruthTable getAndTruthTable(); - static const TruthTable::TableData AND_TRUTH_TABLE; + static const TruthTable::TableData AND_TRUTH_TABLE; private: - std::size_t mNumInputColumns{ 0 }; - std::size_t mNumOutputColumns{ 0 }; + //std::size_t mNumInputColumns{ 0 }; + //std::size_t mNumOutputColumns{ 0 }; - TableData mTable; -}; \ No newline at end of file + TableData mTable; +}; diff --git a/src/base/compression/huffman/HuffmanEncoder.h b/src/base/compression/huffman/HuffmanEncoder.h index 0b53364..a723f13 100644 --- a/src/base/compression/huffman/HuffmanEncoder.h +++ b/src/base/compression/huffman/HuffmanEncoder.h @@ -49,7 +49,6 @@ private: void dumpNode(RawNode* node, unsigned depth) const; bool mUseFixedCode{false}; - bool mTableIsInitialized{false}; std::vector mSymbolMapping; HuffmanCodeLengthTable mLiteralLengthTable; diff --git a/src/base/core/serializers/TomlReader.h b/src/base/core/serializers/TomlReader.h index 346fd98..7e4dfa5 100644 --- a/src/base/core/serializers/TomlReader.h +++ b/src/base/core/serializers/TomlReader.h @@ -30,7 +30,6 @@ public: KeyValuePairs getKeyValuePairs() const; private: - unsigned mLineOffset{ 0 }; std::string mHeader; std::unordered_map > mTables; KeyValuePairs mMap; diff --git a/src/base/core/streams/BufferBitStream.h b/src/base/core/streams/BufferBitStream.h index 627ba52..6acde9a 100644 --- a/src/base/core/streams/BufferBitStream.h +++ b/src/base/core/streams/BufferBitStream.h @@ -25,6 +25,5 @@ public: void writeBytes(const std::vector data) override; private: - unsigned mBufferSize{0}; std::vector mBuffer; }; diff --git a/src/base/geometry/grid/AbstractGrid.cpp b/src/base/geometry/grid/AbstractGrid.cpp index 6556593..411dd58 100644 --- a/src/base/geometry/grid/AbstractGrid.cpp +++ b/src/base/geometry/grid/AbstractGrid.cpp @@ -9,6 +9,11 @@ AbstractGrid::AbstractGrid(const Bounds& bounds, std::size_t numPointsX, std::si } +AbstractGrid::~AbstractGrid() +{ + +} + const Bounds& AbstractGrid::getBounds() const { return mBounds; @@ -29,4 +34,4 @@ double AbstractGrid::getYSpacing() const void AbstractGrid::resetBounds(const Bounds& bounds) { mBounds = bounds; -} \ No newline at end of file +} diff --git a/src/base/geometry/grid/AbstractGrid.h b/src/base/geometry/grid/AbstractGrid.h index b9902ed..c2ef52e 100644 --- a/src/base/geometry/grid/AbstractGrid.h +++ b/src/base/geometry/grid/AbstractGrid.h @@ -10,6 +10,8 @@ class AbstractGrid public: AbstractGrid(const Bounds& bounds, std::size_t numPointsX, std::size_t numPointsY, std::size_t numPointsZ = 1); + virtual ~AbstractGrid(); + const Bounds& getBounds() const; virtual std::size_t getDataSize() const = 0; @@ -25,4 +27,4 @@ protected: std::size_t mNumX{ 0 }; std::size_t mNumY{ 0 }; std::size_t mNumZ{ 0 }; -}; \ No newline at end of file +}; diff --git a/src/base/geometry/grid/Grid.h b/src/base/geometry/grid/Grid.h index 60e38d1..424fa8a 100644 --- a/src/base/geometry/grid/Grid.h +++ b/src/base/geometry/grid/Grid.h @@ -32,7 +32,7 @@ public: this->mData->setItem(getOffset(idx, jdx, kdx), value); } - std::size_t getDataSize() const + std::size_t getDataSize() const override { return this->mData->getLength(); } diff --git a/src/base/network/sockets/UnixSocketInterface.cpp b/src/base/network/sockets/UnixSocketInterface.cpp index 3ac6492..016a8c8 100644 --- a/src/base/network/sockets/UnixSocketInterface.cpp +++ b/src/base/network/sockets/UnixSocketInterface.cpp @@ -14,7 +14,6 @@ #include UnixSocketInterface::UnixSocketInterface() - : mBufferSize(1024) { mMessageHandler = std::make_unique(); } diff --git a/src/base/network/sockets/UnixSocketInterface.h b/src/base/network/sockets/UnixSocketInterface.h index d8f7c94..3204006 100644 --- a/src/base/network/sockets/UnixSocketInterface.h +++ b/src/base/network/sockets/UnixSocketInterface.h @@ -27,7 +27,6 @@ public: private: static constexpr unsigned BUFFER_SIZE{1024}; - std::size_t mBufferSize { 0 }; std::unique_ptr mMessageHandler; }; diff --git a/src/media/image/IImageWriter.h b/src/media/image/IImageWriter.h index 4fd092d..d17ab0a 100644 --- a/src/media/image/IImageWriter.h +++ b/src/media/image/IImageWriter.h @@ -9,20 +9,22 @@ class Image; class IImageWriter { public: - enum class ImgFormat - { - PNG, - UNKNOWN - }; + enum class ImgFormat + { + PNG, + UNKNOWN + }; - IImageWriter(ImgFormat format) - : mFormat(format) - { - - }; + IImageWriter(ImgFormat format) + : mFormat(format) + { - virtual void write(const Path& path, Image* image) = 0; + }; + + virtual ~IImageWriter() = default; + + virtual void write(const Path& path, Image* image) = 0; protected: - ImgFormat mFormat{ ImgFormat::UNKNOWN }; -}; \ No newline at end of file + ImgFormat mFormat{ ImgFormat::UNKNOWN }; +}; diff --git a/src/publishing/pdf/PdfOutline.h b/src/publishing/pdf/PdfOutline.h index b691492..aaf09af 100644 --- a/src/publishing/pdf/PdfOutline.h +++ b/src/publishing/pdf/PdfOutline.h @@ -19,7 +19,7 @@ public: std::string toString(PdfXRefTable* xRefTable) override; - void updateDictionary(); + void updateDictionary() override; private: std::vector mOutlines; diff --git a/src/publishing/pdf/PdfPage.h b/src/publishing/pdf/PdfPage.h index 888caff..00d7cf1 100644 --- a/src/publishing/pdf/PdfPage.h +++ b/src/publishing/pdf/PdfPage.h @@ -17,7 +17,7 @@ class PdfFont : public PdfObject public: std::string toString(PdfXRefTable* xRefTable) override; - void updateDictionary(); + void updateDictionary() override; }; class PdfPage : public PdfObject @@ -25,11 +25,11 @@ class PdfPage : public PdfObject public: PdfPage(PdfPageTree* parent); - unsigned indexObjects(unsigned count); + unsigned indexObjects(unsigned count) override; std::string toString(PdfXRefTable* xRefTable) override; - void updateDictionary(); + void updateDictionary() override; private: unsigned mWidth{612}; diff --git a/src/rendering/mesh/TriFace.h b/src/rendering/mesh/TriFace.h index 83bcb49..1ffc536 100644 --- a/src/rendering/mesh/TriFace.h +++ b/src/rendering/mesh/TriFace.h @@ -20,7 +20,7 @@ public: std::size_t getNumNodes() const override; - void replaceEdge(Edge* original, Edge* replacement); + void replaceEdge(Edge* original, Edge* replacement) override; std::size_t getEdge0Id () const; std::size_t getEdge1Id () const; diff --git a/src/rendering/mesh/TriMesh.h b/src/rendering/mesh/TriMesh.h index 63700ee..118d439 100644 --- a/src/rendering/mesh/TriMesh.h +++ b/src/rendering/mesh/TriMesh.h @@ -11,5 +11,5 @@ public: std::unique_ptr copy() const override; - MeshType getType() const; + MeshType getType() const override; }; diff --git a/src/rendering/visual_elements/basic_shapes/LineNode.h b/src/rendering/visual_elements/basic_shapes/LineNode.h index bb932ed..73e69b9 100644 --- a/src/rendering/visual_elements/basic_shapes/LineNode.h +++ b/src/rendering/visual_elements/basic_shapes/LineNode.h @@ -12,10 +12,10 @@ class LineNode : public GeometryNode public: LineNode(const Transform& transform, const std::vector& points); - Type getType(); + Type getType() override; private: void createOrUpdateGeometry(SceneInfo* sceneInfo) override; std::vector mPoints; -}; \ No newline at end of file +}; diff --git a/src/rendering/visual_elements/nodes/TextNode.cpp b/src/rendering/visual_elements/nodes/TextNode.cpp index fa7576e..320442f 100644 --- a/src/rendering/visual_elements/nodes/TextNode.cpp +++ b/src/rendering/visual_elements/nodes/TextNode.cpp @@ -135,6 +135,7 @@ void TextNode::updateLines(FontsManager* fontsManager) } output_lines.push_back(working_line); running_width = 0; + (void)running_width; } mTextData.mLines = output_lines; diff --git a/src/rendering/visual_elements/scene/SceneModel.h b/src/rendering/visual_elements/scene/SceneModel.h index 85f8641..ff0bf52 100644 --- a/src/rendering/visual_elements/scene/SceneModel.h +++ b/src/rendering/visual_elements/scene/SceneModel.h @@ -42,6 +42,5 @@ private: std::unique_ptr mGeometry; bool mGeometryIsDirty{true}; - bool mColorMapIsDirty{true}; bool mShowOutline{false}; }; diff --git a/src/rendering/visual_elements/svg/SvgPainter.cpp b/src/rendering/visual_elements/svg/SvgPainter.cpp index b63beea..900537a 100644 --- a/src/rendering/visual_elements/svg/SvgPainter.cpp +++ b/src/rendering/visual_elements/svg/SvgPainter.cpp @@ -120,7 +120,7 @@ void SvgPainter::setStyle(SceneModel* model, SvgShapeElement* element) const if (!transform.isDefaultTransform()) { - element->addAttribute(std::move(toTransform(transform))); + element->addAttribute(toTransform(transform)); } } diff --git a/src/ui/client/TabbedPanelWidget.cpp b/src/ui/client/TabbedPanelWidget.cpp index 95565ec..cf4e708 100644 --- a/src/ui/client/TabbedPanelWidget.cpp +++ b/src/ui/client/TabbedPanelWidget.cpp @@ -43,7 +43,7 @@ void TabbedPanelWidget::addPanel(WidgetUPtr panel, const std::string& label) auto rawPanel = panel.get(); auto onClick = [this, rawPanel](Widget*){ - if(this && rawPanel) + if(rawPanel) { this->getStack()->showChild(rawPanel); } diff --git a/src/ui/client/TopBar.cpp b/src/ui/client/TopBar.cpp index 9864150..07b328d 100644 --- a/src/ui/client/TopBar.cpp +++ b/src/ui/client/TopBar.cpp @@ -17,12 +17,9 @@ TopBar::TopBar() fileButton->setMaxWidth(60); auto onClick = [this](Widget* self){ - if(this) - { - auto menu = std::make_unique(); - auto window = getTopLevelWindow(); - window->addPopup(std::move(menu)); - }; + auto menu = std::make_unique(); + auto window = getTopLevelWindow(); + window->addPopup(std::move(menu)); }; fileButton->setOnClickFunction(onClick); addWidget(std::move(fileButton)); diff --git a/src/ui/ui_controls/TextBox.cpp b/src/ui/ui_controls/TextBox.cpp index b95bef9..3ae1353 100644 --- a/src/ui/ui_controls/TextBox.cpp +++ b/src/ui/ui_controls/TextBox.cpp @@ -12,8 +12,7 @@ TextBox::TextBox() : Widget(), - mContent(), - mCaps(false) + mContent() { mBackground = Theme::Sys::Color::Background; mPadding = {20, 0, 20, 0}; diff --git a/src/ui/ui_controls/TextBox.h b/src/ui/ui_controls/TextBox.h index 8a1dee1..aafe03f 100644 --- a/src/ui/ui_controls/TextBox.h +++ b/src/ui/ui_controls/TextBox.h @@ -32,7 +32,6 @@ private: std::string mContent; std::unique_ptr mTextNode; bool mContentDirty{true}; - bool mCaps; }; using TextBoxUPtr = std::unique_ptr; diff --git a/src/ui/ui_elements/style/ITheme.h b/src/ui/ui_elements/style/ITheme.h index 7cf3eb3..7bdd1bc 100644 --- a/src/ui/ui_elements/style/ITheme.h +++ b/src/ui/ui_elements/style/ITheme.h @@ -47,4 +47,6 @@ class ITheme { public: virtual Color getColor(Theme::Sys::Color token) const = 0; + + virtual ~ITheme() = default; };