From d7fe11913ff778d73a68ce0cc017ef5200da5dbf Mon Sep 17 00:00:00 2001 From: James Grogan Date: Sun, 4 Dec 2022 18:13:32 +0000 Subject: [PATCH] Small cleaning. --- .../audio_interfaces/NullAudioInterface.h | 3 - .../audio_interfaces/WasapiInterface.cpp | 17 +- src/audio/audio_interfaces/WasapiInterface.h | 25 +- .../midi/reader/MidiChannelEventAdapter.cpp | 10 +- .../midi/reader/MidiChannelEventAdapter.h | 6 +- src/audio/midi/reader/MidiMetaEventAdapter.h | 2 - src/audio/midi/reader/MidiReader.cpp | 2 +- src/client/GuiApplication.cpp | 5 + src/client/GuiApplication.h | 5 +- src/client/StatusBar.h | 1 - src/client/TabbedPanelWidget.h | 1 - src/compiler/TemplateFile.cpp | 264 +++++++++--------- src/compiler/TemplateFile.h | 50 ++-- src/compiler/TemplateNodes.cpp | 169 +++++++++++ src/compiler/TemplateNodes.h | 235 +++++----------- src/compiler/TemplatingEngine.h | 22 +- src/core/file_utilities/File.cpp | 2 +- src/core/file_utilities/FileFormats.cpp | 24 ++ src/core/file_utilities/FileFormats.h | 32 +-- src/core/http/HttpHeader.cpp | 140 +++++----- src/core/http/HttpHeader.h | 24 +- src/core/http/HttpRequest.cpp | 104 +++---- src/core/http/HttpRequest.h | 14 +- src/core/http/HttpResponse.h | 2 - src/image/png/PngReader.cpp | 1 + src/image/png/PngWriter.cpp | 1 + 26 files changed, 613 insertions(+), 548 deletions(-) diff --git a/src/audio/audio_interfaces/NullAudioInterface.h b/src/audio/audio_interfaces/NullAudioInterface.h index bbe13c4..3e47915 100644 --- a/src/audio/audio_interfaces/NullAudioInterface.h +++ b/src/audio/audio_interfaces/NullAudioInterface.h @@ -18,9 +18,6 @@ public: void openDevice(AudioDevice* device) override; void play(AudioDevice* device, AudioSample* sample, unsigned duration) override; - -private: - void openDevice(const AudioDevicePtr& device) override; }; using NullAudioInterfacePtr = std::shared_ptr; diff --git a/src/audio/audio_interfaces/WasapiInterface.cpp b/src/audio/audio_interfaces/WasapiInterface.cpp index 3c911a5..6df7c30 100644 --- a/src/audio/audio_interfaces/WasapiInterface.cpp +++ b/src/audio/audio_interfaces/WasapiInterface.cpp @@ -2,6 +2,7 @@ #include "FileLogger.h" #include "AudioSynth.h" +#include "AudioDevice.h" #include #include @@ -26,37 +27,37 @@ std::unique_ptr WasapiInterface::Create() return std::make_unique(); } -void WasapiInterface::OpenDevice(const AudioDevicePtr& device) +void WasapiInterface::openDevice(AudioDevice* device) { } -void WasapiInterface::SetAccessType(const AudioDevicePtr& device) +void WasapiInterface::setAccessType(AudioDevice* device) { } -void WasapiInterface::SetSampleFormat(const AudioDevicePtr& device) +void WasapiInterface::setSampleFormat(AudioDevice* device) { } -void WasapiInterface::SetSampleRate(const AudioDevicePtr& device) +void WasapiInterface::setSampleRate(AudioDevice* device) { } -void WasapiInterface::SetPeriod(const AudioDevicePtr& device) +void WasapiInterface::setPeriod(AudioDevice* device) { } -void WasapiInterface::SetBufferSize(const AudioDevicePtr& device) +void WasapiInterface::setBufferSize(AudioDevice* device) { } -void WasapiInterface::SetChannelNumber(const AudioDevicePtr& device) +void WasapiInterface::setChannelNumber(AudioDevice* device) { } @@ -76,7 +77,7 @@ const IID IID_IMMDeviceEnumerator = __uuidof(IMMDeviceEnumerator); const IID IID_IAudioClient = __uuidof(IAudioClient); const IID IID_IAudioRenderClient = __uuidof(IAudioRenderClient); -void WasapiInterface::Play(const AudioDevicePtr& device) +void WasapiInterface::play(AudioDevice* device, AudioSample* sample, unsigned duration) { std::cout << "Into wasapi play" << std::endl; IMMDeviceEnumerator* pEnumerator = nullptr; diff --git a/src/audio/audio_interfaces/WasapiInterface.h b/src/audio/audio_interfaces/WasapiInterface.h index 168e175..b93133a 100644 --- a/src/audio/audio_interfaces/WasapiInterface.h +++ b/src/audio/audio_interfaces/WasapiInterface.h @@ -1,36 +1,35 @@ #pragma once #include "IAudioInterface.h" -#include "AudioDevice.h" #include +class AudioDevice; + class WasapiInterface : public IAudioInterface { - public: - WasapiInterface(); ~WasapiInterface(); static std::unique_ptr Create(); - void OpenDevice(const AudioDevicePtr& device) override; + void play(AudioDevice* device, AudioSample* sample, unsigned duration) override; +private: + void openDevice(AudioDevice* device) override; - void SetAccessType(const AudioDevicePtr& device); + void setAccessType(AudioDevice* device); - void SetSampleFormat(const AudioDevicePtr& device); + void setSampleFormat(AudioDevice* device); - void SetSampleRate(const AudioDevicePtr& device); + void setSampleRate(AudioDevice* device); - void SetPeriod(const AudioDevicePtr& device); + void setPeriod(AudioDevice* device); - void SetBufferSize(const AudioDevicePtr& device); + void setBufferSize(AudioDevice* device); - void SetChannelNumber(const AudioDevicePtr& device); - - void Play(const AudioDevicePtr& device) override; + void setChannelNumber(AudioDevice* device); }; -using AlsaInterfacePtr = std::shared_ptr; +using WasapiInterfacePtr = std::unique_ptr; diff --git a/src/audio/midi/reader/MidiChannelEventAdapter.cpp b/src/audio/midi/reader/MidiChannelEventAdapter.cpp index fc37dd7..e70ac22 100644 --- a/src/audio/midi/reader/MidiChannelEventAdapter.cpp +++ b/src/audio/midi/reader/MidiChannelEventAdapter.cpp @@ -6,7 +6,7 @@ #include #include -int MidiChannelEventAdapter::ReadEvent(std::ifstream* file, char firstByte, MidiChannelEvent* event, MidiChannelEvent::Type& lastEventType) +int MidiChannelEventAdapter::readEvent(std::ifstream* file, char firstByte, MidiChannelEvent* event, MidiChannelEvent::Type& lastEventType) { int first_four_bits = 0xF0; int second_four_bits = 0xF; @@ -34,11 +34,11 @@ int MidiChannelEventAdapter::ReadEvent(std::ifstream* file, char firstByte, Midi { if (isStatusByte) { - byteCount += ReadEventData(file, event); + byteCount += readEventData(file, event); } else { - byteCount += ReadEventData(file, event, firstByte); + byteCount += readEventData(file, event, firstByte); } break; } @@ -55,7 +55,7 @@ int MidiChannelEventAdapter::ReadEvent(std::ifstream* file, char firstByte, Midi return byteCount; } -int MidiChannelEventAdapter::ReadEventData(std::ifstream* file, MidiChannelEvent* event, char c) +int MidiChannelEventAdapter::readEventData(std::ifstream* file, MidiChannelEvent* event, char c) { int value0 = int(c); int value1 = *BinaryStream::getNextByteAsInt(file); @@ -63,7 +63,7 @@ int MidiChannelEventAdapter::ReadEventData(std::ifstream* file, MidiChannelEvent return 1; } -int MidiChannelEventAdapter::ReadEventData(std::ifstream* file, MidiChannelEvent* event) +int MidiChannelEventAdapter::readEventData(std::ifstream* file, MidiChannelEvent* event) { int value0 = *BinaryStream::getNextByteAsInt(file); int value1 = *BinaryStream::getNextByteAsInt(file); diff --git a/src/audio/midi/reader/MidiChannelEventAdapter.h b/src/audio/midi/reader/MidiChannelEventAdapter.h index 39d7c9a..6ccf743 100644 --- a/src/audio/midi/reader/MidiChannelEventAdapter.h +++ b/src/audio/midi/reader/MidiChannelEventAdapter.h @@ -7,8 +7,8 @@ class MidiChannelEventAdapter { public: - static int ReadEvent(std::ifstream* file, char firstByte, MidiChannelEvent* event, MidiChannelEvent::Type& lastEventType); + static int readEvent(std::ifstream* file, char firstByte, MidiChannelEvent* event, MidiChannelEvent::Type& lastEventType); - static int ReadEventData(std::ifstream* file, MidiChannelEvent* event, char c); - static int ReadEventData(std::ifstream* file, MidiChannelEvent* event); + static int readEventData(std::ifstream* file, MidiChannelEvent* event, char c); + static int readEventData(std::ifstream* file, MidiChannelEvent* event); }; diff --git a/src/audio/midi/reader/MidiMetaEventAdapter.h b/src/audio/midi/reader/MidiMetaEventAdapter.h index 75ef289..70658a8 100644 --- a/src/audio/midi/reader/MidiMetaEventAdapter.h +++ b/src/audio/midi/reader/MidiMetaEventAdapter.h @@ -3,11 +3,9 @@ #include "MetaMidiEvent.h" #include - class MidiMetaEventAdapter { public: - static int ReadEvent(std::ifstream* file, MetaMidiEvent* event, int& lastMidiChannel); static int ReadIntEvent(std::ifstream* file, MetaMidiEvent* event, int length=-1); diff --git a/src/audio/midi/reader/MidiReader.cpp b/src/audio/midi/reader/MidiReader.cpp index 142bdca..f31a614 100644 --- a/src/audio/midi/reader/MidiReader.cpp +++ b/src/audio/midi/reader/MidiReader.cpp @@ -87,7 +87,7 @@ int MidiReader::processEvent(MidiTrack* track) auto event = std::make_unique(); event->SetTimeDelta(timeDelta); //std::cout << "Midi event" << std::endl; - byteCount += MidiChannelEventAdapter::ReadEvent(mFile->getInHandle(), c, event.get(), mLastChannelEventType); + byteCount += MidiChannelEventAdapter::readEvent(mFile->getInHandle(), c, event.get(), mLastChannelEventType); track->AddEvent(std::move(event)); } return byteCount; diff --git a/src/client/GuiApplication.cpp b/src/client/GuiApplication.cpp index 672d0a9..7d8ce05 100644 --- a/src/client/GuiApplication.cpp +++ b/src/client/GuiApplication.cpp @@ -29,6 +29,11 @@ AbstractApp* GuiApplication::getMainApplication() const return mMainApplication.get(); } +AbstractUIInterface* GuiApplication::getUiInterface() const +{ + return mUiInterface.get(); +} + void GuiApplication::initializeViews() { mDesktopManager->getWindowManager()->getMainWindow()->setSize(800, 600); diff --git a/src/client/GuiApplication.h b/src/client/GuiApplication.h index 3b5e1cc..a32b62f 100644 --- a/src/client/GuiApplication.h +++ b/src/client/GuiApplication.h @@ -21,10 +21,7 @@ public: void run(); - AbstractUIInterface* getUiInterface() const override - { - return mUiInterface.get(); - } + AbstractUIInterface* getUiInterface() const override; void setUiInterfaceBackend(UiInterfaceFactory::Backend backend); diff --git a/src/client/StatusBar.h b/src/client/StatusBar.h index a7747d2..bd1b903 100644 --- a/src/client/StatusBar.h +++ b/src/client/StatusBar.h @@ -5,7 +5,6 @@ class StatusBar : public Widget { public: - StatusBar(); static std::unique_ptr Create(); diff --git a/src/client/TabbedPanelWidget.h b/src/client/TabbedPanelWidget.h index d024722..660273c 100644 --- a/src/client/TabbedPanelWidget.h +++ b/src/client/TabbedPanelWidget.h @@ -6,7 +6,6 @@ class TabbedPanelWidget : public Widget { - public: TabbedPanelWidget(); diff --git a/src/compiler/TemplateFile.cpp b/src/compiler/TemplateFile.cpp index 113f6a6..3a8f3ed 100644 --- a/src/compiler/TemplateFile.cpp +++ b/src/compiler/TemplateFile.cpp @@ -1,187 +1,189 @@ #include "TemplateFile.h" +#include "StringUtils.h" + #include TemplateFile::TemplateFile(const Path& path) - : mPath(path), - mRootNode(std::make_unique(nullptr)) + : mPath(path), + mRootNode(std::make_unique(nullptr)) { } std::vector TemplateFile::getProcessedContent() const { - return mProcessedContent; + return mProcessedContent; } std::string TemplateFile::getName() const { - return mPath.stem().string(); + return mPath.stem().string(); } void TemplateFile::loadContent() { - //std::cout << "Trying to load file at: " << mPath << std::endl; - mRawContent = File(mPath).readLines(); - mWorkingLine = 0; - mWorkingNode = mRootNode.get(); - mWorkingTextBody = std::make_unique(mWorkingNode); - for (const auto& line : mRawContent) - { - processLine(line); - mWorkingLine++; - } - onTextBodyFinished(); + //std::cout << "Trying to load file at: " << mPath << std::endl; + mRawContent = File(mPath).readLines(); + mWorkingLine = 0; + mWorkingNode = mRootNode.get(); + mWorkingTextBody = std::make_unique(mWorkingNode); + for (const auto& line : mRawContent) + { + processLine(line); + mWorkingLine++; + } + onTextBodyFinished(); } void TemplateFile::onTextBodyFinished(std::string working_string) { - if (!working_string.empty()) - { - mWorkingTextBody->addLine(working_string); - } + if (!working_string.empty()) + { + mWorkingTextBody->addLine(working_string); + } - if (mWorkingTextBody->hasContent()) - { - mWorkingNode->addChild(std::move(mWorkingTextBody)); - mWorkingTextBody = std::make_unique(mWorkingNode); - } + if (mWorkingTextBody->hasContent()) + { + mWorkingNode->addChild(std::move(mWorkingTextBody)); + mWorkingTextBody = std::make_unique(mWorkingNode); + } } void TemplateFile::processLine(const std::string& line) { - bool last_was_ldelimiter{ false }; - bool last_was_statement_rdelimiter{ false }; - bool last_was_expression_rdelimiter{ false }; - bool in_statement{ false }; - bool in_expression{ false }; - std::string working_string; - std::string last_working_string; - for (auto c : line) - { - if (c == '{') - { - if (last_was_ldelimiter) - { - in_expression = true; - last_was_ldelimiter = false; - working_string = ""; - } - else - { - last_was_ldelimiter = true; - } - } - else if (c == '%' && last_was_ldelimiter) - { - last_was_ldelimiter = false; - in_statement = true; - last_working_string = working_string; - working_string = ""; - } - else if (c == '%' && in_statement) - { - last_was_statement_rdelimiter = true; - } - else if (c == '}' && (last_was_statement_rdelimiter || in_expression || last_was_expression_rdelimiter)) - { - if (last_was_statement_rdelimiter) - { - onTextBodyFinished(last_working_string); - onFoundStatement(working_string); - last_was_statement_rdelimiter = false; - working_string = ""; - } - else if (in_expression) - { - last_was_expression_rdelimiter = true; - in_expression = false; - } - else - { - onTextBodyFinished(); - onFoundExpression(working_string); - last_was_expression_rdelimiter = false; - working_string = ""; - } - } - else if (last_was_ldelimiter && (!in_statement && !in_expression)) - { - last_was_ldelimiter = false; - working_string += '{'; - working_string += c; - } - else - { - working_string += c; - } - } + bool last_was_ldelimiter{ false }; + bool last_was_statement_rdelimiter{ false }; + bool last_was_expression_rdelimiter{ false }; + bool in_statement{ false }; + bool in_expression{ false }; + std::string working_string; + std::string last_working_string; + for (auto c : line) + { + if (c == '{') + { + if (last_was_ldelimiter) + { + in_expression = true; + last_was_ldelimiter = false; + working_string = ""; + } + else + { + last_was_ldelimiter = true; + } + } + else if (c == '%' && last_was_ldelimiter) + { + last_was_ldelimiter = false; + in_statement = true; + last_working_string = working_string; + working_string = ""; + } + else if (c == '%' && in_statement) + { + last_was_statement_rdelimiter = true; + } + else if (c == '}' && (last_was_statement_rdelimiter || in_expression || last_was_expression_rdelimiter)) + { + if (last_was_statement_rdelimiter) + { + onTextBodyFinished(last_working_string); + onFoundStatement(working_string); + last_was_statement_rdelimiter = false; + working_string = ""; + } + else if (in_expression) + { + last_was_expression_rdelimiter = true; + in_expression = false; + } + else + { + onTextBodyFinished(); + onFoundExpression(working_string); + last_was_expression_rdelimiter = false; + working_string = ""; + } + } + else if (last_was_ldelimiter && (!in_statement && !in_expression)) + { + last_was_ldelimiter = false; + working_string += '{'; + working_string += c; + } + else + { + working_string += c; + } + } - if (!working_string.empty()) - { - mWorkingTextBody->addLine(working_string); - } + if (!working_string.empty()) + { + mWorkingTextBody->addLine(working_string); + } } void TemplateFile::onFoundStatement(const std::string& statement_string) { - const auto statement_elements = StringUtils::split(statement_string); + const auto statement_elements = StringUtils::split(statement_string); - if (statement_elements.size() == 0) - { - return; - } - const auto statement_type = statement_elements[0]; - if (statement_type == "block" && statement_elements.size() == 2) - { - onFoundBlock(statement_elements); - } - else if (statement_type == "endblock") - { - onFoundEndBlock(statement_elements); - } - else if (statement_type == "extends") - { - onFoundExtends(statement_elements); - } + if (statement_elements.size() == 0) + { + return; + } + const auto statement_type = statement_elements[0]; + if (statement_type == "block" && statement_elements.size() == 2) + { + onFoundBlock(statement_elements); + } + else if (statement_type == "endblock") + { + onFoundEndBlock(statement_elements); + } + else if (statement_type == "extends") + { + onFoundExtends(statement_elements); + } } void TemplateFile::onFoundBlock(const std::vector args) { - if (args.size() != 2) - { - return; - } - auto block = std::make_unique(mWorkingNode, args[1]); - auto temp = block.get(); - mWorkingNode->addChild(std::move(block)); - mWorkingNode = temp; + if (args.size() != 2) + { + return; + } + auto block = std::make_unique(mWorkingNode, args[1]); + auto temp = block.get(); + mWorkingNode->addChild(std::move(block)); + mWorkingNode = temp; } void TemplateFile::onFoundEndBlock(const std::vector args) { - mWorkingNode = mWorkingNode->getParent(); + mWorkingNode = mWorkingNode->getParent(); } void TemplateFile::onFoundExtends(const std::vector args) { - if (args.size() != 2) - { - return; - } - auto extends = std::make_unique(mWorkingNode, args[1]); - mWorkingNode->addChild(std::move(extends)); + if (args.size() != 2) + { + return; + } + auto extends = std::make_unique(mWorkingNode, args[1]); + mWorkingNode->addChild(std::move(extends)); } void TemplateFile::onFoundExpression(const std::string& expression_string) { - auto expression = std::make_unique(mWorkingNode, expression_string); - mWorkingNode->addChild(std::move(expression)); + auto expression = std::make_unique(mWorkingNode, expression_string); + mWorkingNode->addChild(std::move(expression)); } void TemplateFile::dumpContent() { - auto content = mRootNode->getRawContent(); - //std::cout << content << std::endl; + auto content = mRootNode->getRawContent(); + //std::cout << content << std::endl; } diff --git a/src/compiler/TemplateFile.h b/src/compiler/TemplateFile.h index cd55ebc..c80e656 100644 --- a/src/compiler/TemplateFile.h +++ b/src/compiler/TemplateFile.h @@ -9,42 +9,42 @@ class TemplateFile { public: - TemplateFile(const Path& path); + TemplateFile(const Path& path); - std::vector getProcessedContent() const; + std::vector getProcessedContent() const; - std::string getName() const; + std::string getName() const; - void loadContent(); + void loadContent(); - void onTextBodyFinished(std::string working_string = {}); + void onTextBodyFinished(std::string working_string = {}); - void processLine(const std::string& line); + void processLine(const std::string& line); - void onFoundStatement(const std::string& statement_string); + void onFoundStatement(const std::string& statement_string); - void onFoundBlock(const std::vector args); + void onFoundBlock(const std::vector args); - void onFoundEndBlock(const std::vector args); + void onFoundEndBlock(const std::vector args); - void onFoundExtends(const std::vector args); + void onFoundExtends(const std::vector args); - void onFoundExpression(const std::string& expression_string); + void onFoundExpression(const std::string& expression_string); - void dumpContent(); + void dumpContent(); - TemplateNode* getContent() const - { - return mRootNode.get(); - } + TemplateNode* getContent() const + { + return mRootNode.get(); + } private: - Path mPath; - unsigned mWorkingLine{ 0 }; - std::string mParentName; - std::vector mRawContent; - std::vector mProcessedContent; - std::unique_ptr mRootNode; - TemplateNode* mWorkingNode{ nullptr }; - std::unique_ptr mWorkingTextBody; -}; \ No newline at end of file + Path mPath; + unsigned mWorkingLine{ 0 }; + std::string mParentName; + std::vector mRawContent; + std::vector mProcessedContent; + std::unique_ptr mRootNode; + TemplateNode* mWorkingNode{ nullptr }; + std::unique_ptr mWorkingTextBody; +}; diff --git a/src/compiler/TemplateNodes.cpp b/src/compiler/TemplateNodes.cpp index e69de29..78881f3 100644 --- a/src/compiler/TemplateNodes.cpp +++ b/src/compiler/TemplateNodes.cpp @@ -0,0 +1,169 @@ +#include "TemplateNodes.h" + +#include "StringUtils.h" + +TemplateNode::TemplateNode(TemplateNode* parent) + : mParent(parent) +{ + +} + +TemplateNode* TemplateNode::getParent() const +{ + return mParent; +} + +void TemplateNode::addChild(std::unique_ptr child) +{ + mChildren.push_back(std::move(child)); +} + +std::size_t TemplateNode::getNumChildren() const +{ + return mChildren.size(); +} + +std::string TemplateNode::getIdentifier() const +{ + return {}; +} + +TemplateNode* TemplateNode::getChild(std::size_t index) const +{ + return mChildren[index].get(); +} + +std::string TemplateNode::getRawContent() const +{ + std::string content; + for (const auto& child : mChildren) + { + content += child->getRawContent() + "\n"; + } + return content; +} + +void TemplateNode::setExtensionParent(TemplateNode* parent) +{ + mExtensionParent = parent; +} + +std::string TemplateNode::render(TemplateNode* parentContext) +{ + if (!parentContext && mExtensionParent) + { + parentContext = mExtensionParent; + } + + std::string content; + for (size_t idx = 0; idx < mChildren.size(); idx++) + { + content += mChildren[idx]->render(parentContext); + } + return content; +} + +TemplateExtends::TemplateExtends(TemplateNode* parent, const std::string& path) + : TemplateNode(parent) +{ + mPath = StringUtils::stripQuotes(path); +}; + +std::string TemplateExtends::getRawContent() const +{ + return "TemplateExtends: " + mPath; +} + +std::string TemplateExtends::getPath() const +{ + return mPath; +} + +TemplateBlock::TemplateBlock(TemplateNode* parent, const std::string& name) + : TemplateNode(parent), + mName(name) +{ + +} + +void TemplateBlock::addLine(const std::string& line) +{ + mBody.push_back(line); +} + +std::string TemplateBlock::getRawContent() const +{ + std::string content = "TemplateBlock: " + mName + "\n"; + content += TemplateNode::getRawContent(); + return content; +} + +std::string TemplateBlock::renderAsParent(TemplateNode* base) +{ + return {}; +} + +std::string TemplateBlock::render(TemplateNode* parentContext) +{ + std::string content; + if (parentContext) + { + if (auto parent_node = parentContext->getFirstChildShallow(getIdentifier())) + { + content = dynamic_cast(parent_node)->renderAsParent(this); + } + } + else + { + + } + return content; +} + +TemplateExpression::TemplateExpression(TemplateNode* parent, const std::string& content) + : TemplateNode(parent), + mContent(content) +{ + +} + +std::string TemplateExpression::getRawContent() const +{ + return "TemplateExpression: " + mContent; +} + +TemplateTextBody::TemplateTextBody(TemplateNode* parent) + : TemplateNode(parent) +{ + +} + +void TemplateTextBody::addLine(const std::string& content) +{ + mContent.push_back(content); +} + +bool TemplateTextBody::hasContent() const +{ + return !mContent.empty(); +} + +std::string TemplateTextBody::render(TemplateNode* parentContext) +{ + std::string content; + for (const auto& line : mContent) + { + content += line + '\n'; + } + return content; +} + +std::string TemplateTextBody::getRawContent() const +{ + std::string content; + for (const auto& line : mContent) + { + content += "TemplateBody: " + line + "\n"; + } + return content; +} diff --git a/src/compiler/TemplateNodes.h b/src/compiler/TemplateNodes.h index e75a901..dae7e80 100644 --- a/src/compiler/TemplateNodes.h +++ b/src/compiler/TemplateNodes.h @@ -1,97 +1,59 @@ #pragma once +#include +#include +#include + class TemplateNode { public: + TemplateNode(TemplateNode* parent); - TemplateNode(TemplateNode* parent) - : mParent(parent) - { + virtual ~TemplateNode() = default; - } + TemplateNode* getParent() const; - TemplateNode* getParent() const - { - return mParent; - } + virtual void addChild(std::unique_ptr child); - virtual void addChild(std::unique_ptr child) - { - mChildren.push_back(std::move(child)); - } + std::size_t getNumChildren() const; - std::size_t getNumChildren() const - { - return mChildren.size(); - } + virtual std::string getIdentifier() const; - virtual std::string getIdentifier() const - { - return {}; - } + TemplateNode* getChild(std::size_t index) const; - TemplateNode* getChild(std::size_t index) const - { - return mChildren[index].get(); - } + virtual std::string getRawContent() const; - virtual std::string getRawContent() const - { - std::string content; - for (const auto& child : mChildren) - { - content += child->getRawContent() + "\n"; - } - return content; - } + template + T* getFirstChildShallow(const std::string& identifier = {}) const + { + for (const auto& child : mChildren) + { + if (auto ret = dynamic_cast(child.get())) + { + if (!identifier.empty()) + { + if (child->getIdentifier() == identifier) + { + return ret; + } + } + else + { + return ret; + } + } + } + return nullptr; + } - template - T* getFirstChildShallow(const std::string& identifier = {}) const - { - for (const auto& child : mChildren) - { - if (auto ret = dynamic_cast(child.get())) - { - if (!identifier.empty()) - { - if (child->getIdentifier() == identifier) - { - return ret; - } - } - else - { - return ret; - } - } - } - return nullptr; - } + void setExtensionParent(TemplateNode* parent); - void setExtensionParent(TemplateNode* parent) - { - mExtensionParent = parent; - } - - virtual std::string render(TemplateNode* parentContext = nullptr) - { - if (!parentContext && mExtensionParent) - { - parentContext = mExtensionParent; - } - - std::string content; - for (size_t idx = 0; idx < mChildren.size(); idx++) - { - content += mChildren[idx]->render(parentContext); - } - return content; - } + virtual std::string render(TemplateNode* parentContext = nullptr); protected: - std::vector > mChildren; - TemplateNode* mParent{ nullptr }; - TemplateNode* mExtensionParent{ nullptr }; + std::vector > mChildren; + TemplateNode* mParent{ nullptr }; + TemplateNode* mExtensionParent{ nullptr }; }; using TemplateNodePtr = std::unique_ptr; @@ -99,133 +61,64 @@ using TemplateNodePtr = std::unique_ptr; class TemplateExtends : public TemplateNode { public: - TemplateExtends(TemplateNode* parent, const std::string& path) - : TemplateNode(parent) - { - mPath = StringUtils::stripQuotes(path); - }; + TemplateExtends(TemplateNode* parent, const std::string& path); - std::string getRawContent() const override - { - return "TemplateExtends: " + mPath; - } + virtual ~TemplateExtends() = default; - std::string getPath() const - { - return mPath; - } + std::string getRawContent() const override; + std::string getPath() const; private: - std::string mPath; + std::string mPath; }; class TemplateBlock : public TemplateNode { public: - TemplateBlock(TemplateNode* parent, const std::string& name) - : TemplateNode(parent), - mName(name) - { + TemplateBlock(TemplateNode* parent, const std::string& name); - } + virtual ~TemplateBlock() = default; - void addLine(const std::string& line) - { - mBody.push_back(line); - } + void addLine(const std::string& line); - std::string getRawContent() const override - { - std::string content = "TemplateBlock: " + mName + "\n"; - content += TemplateNode::getRawContent(); - return content; - } + std::string getRawContent() const override; - std::string renderAsParent(TemplateNode* base) - { - return {}; - } + std::string renderAsParent(TemplateNode* base); - std::string render(TemplateNode* parentContext) override - { - std::string content; - if (parentContext) - { - if (auto parent_node = parentContext->getFirstChildShallow(getIdentifier())) - { - content = dynamic_cast(parent_node)->renderAsParent(this); - } - } - else - { - - } - return content; - } + std::string render(TemplateNode* parentContext) override; private: - std::string mName; - std::vector mBody; + std::string mName; + std::vector mBody; }; class TemplateExpression : public TemplateNode { public: - TemplateExpression(TemplateNode* parent, const std::string& content) - : TemplateNode(parent), - mContent(content) - { + TemplateExpression(TemplateNode* parent, const std::string& content); - } + virtual ~TemplateExpression() = default; - std::string getRawContent() const override - { - return "TemplateExpression: " + mContent; - } + std::string getRawContent() const override; private: - std::string mContent; + std::string mContent; }; class TemplateTextBody : public TemplateNode { public: - TemplateTextBody(TemplateNode* parent) - : TemplateNode(parent) - { + TemplateTextBody(TemplateNode* parent); - } + virtual ~TemplateTextBody() = default; - void addLine(const std::string& content) - { - mContent.push_back(content); - } + void addLine(const std::string& content); - bool hasContent() const - { - return !mContent.empty(); - } + std::string getRawContent() const override; - std::string render(TemplateNode* parentContext) override - { - std::string content; - for (const auto& line : mContent) - { - content += line + '\n'; - } - return content; - } - - std::string getRawContent() const override - { - std::string content; - for (const auto& line : mContent) - { - content += "TemplateBody: " + line + "\n"; - } - return content; - } + bool hasContent() const; + std::string render(TemplateNode* parentContext) override; private: - std::vector mContent; -}; \ No newline at end of file + std::vector mContent; +}; diff --git a/src/compiler/TemplatingEngine.h b/src/compiler/TemplatingEngine.h index b9e31ab..d9a33aa 100644 --- a/src/compiler/TemplatingEngine.h +++ b/src/compiler/TemplatingEngine.h @@ -9,20 +9,20 @@ class TemplatingEngine { public: - TemplatingEngine(const Path& workingDirectory); + TemplatingEngine(const Path& workingDirectory); - void loadTemplateFiles(); + void loadTemplateFiles(); - std::string processTemplate(const std::string& name); + std::string processTemplate(const std::string& name); private: - TemplateFile* getTemplateFile(const std::string& name); - TemplateFile* getTemplateFile(const Path& path); - std::string render(TemplateNode* content); + TemplateFile* getTemplateFile(const std::string& name); + TemplateFile* getTemplateFile(const Path& path); + std::string render(TemplateNode* content); - std::string processTemplate(TemplateFile* file, TemplateNode* parent = nullptr); + std::string processTemplate(TemplateFile* file, TemplateNode* parent = nullptr); - std::vector > mTemplateFiles; - Path mWorkingDirectory; - std::string mTemplateExtension{ ".html" }; -}; \ No newline at end of file + std::vector > mTemplateFiles; + Path mWorkingDirectory; + std::string mTemplateExtension{ ".html" }; +}; diff --git a/src/core/file_utilities/File.cpp b/src/core/file_utilities/File.cpp index e570fb4..484e8c0 100644 --- a/src/core/file_utilities/File.cpp +++ b/src/core/file_utilities/File.cpp @@ -131,7 +131,7 @@ void File::close() FileFormat::Format File::inferFormat() const { const auto extension = getExtension(); - return FileFormat::InferFormat(extension); + return FileFormat::inferFormat(extension); } void File::writeText(const std::string& text) diff --git a/src/core/file_utilities/FileFormats.cpp b/src/core/file_utilities/FileFormats.cpp index 3bb927b..da885ef 100644 --- a/src/core/file_utilities/FileFormats.cpp +++ b/src/core/file_utilities/FileFormats.cpp @@ -1,5 +1,7 @@ #include "FileFormats.h" +#include "StringUtils.h" + FileFormat::ExtensionMap FileFormat::mExtensions = [] { ExtensionMap ret; @@ -8,3 +10,25 @@ FileFormat::ExtensionMap FileFormat::mExtensions = [] ret[Format::Wav] = ".wav"; return ret; }(); + +bool FileFormat::isFormat(const std::string& extension, Format format) +{ + return StringUtils::ToLower(extension) == mExtensions[format]; +} + +FileFormat::Format FileFormat::inferFormat(const std::string& query) +{ + for(const auto& extension : mExtensions) + { + if(extension.second == query) + { + return extension.first; + } + } + return Format::Unknown; +} + +std::string FileFormat::getExtension(Format format) +{ + return mExtensions[format]; +} diff --git a/src/core/file_utilities/FileFormats.h b/src/core/file_utilities/FileFormats.h index a1941b2..2c2f032 100644 --- a/src/core/file_utilities/FileFormats.h +++ b/src/core/file_utilities/FileFormats.h @@ -2,7 +2,6 @@ #include #include -#include "StringUtils.h" class FileFormat{ @@ -27,31 +26,14 @@ public: using ExtensionMap = std::map; +public: + static bool isFormat(const std::string& extension, Format format); + + static Format inferFormat(const std::string& query); + + static std::string getExtension(Format format); + private: static ExtensionMap mExtensions; - -public: - - bool IsFormat(const std::string& extension, Format format) - { - return StringUtils::ToLower(extension) == mExtensions[format]; - } - - static Format InferFormat(const std::string& query) - { - for(const auto& extension : mExtensions) - { - if(extension.second == query) - { - return extension.first; - } - } - return Format::Unknown; - } - - std::string GetExtension(Format format) - { - return mExtensions[format]; - } }; diff --git a/src/core/http/HttpHeader.cpp b/src/core/http/HttpHeader.cpp index c841cca..a3475c6 100644 --- a/src/core/http/HttpHeader.cpp +++ b/src/core/http/HttpHeader.cpp @@ -4,77 +4,77 @@ void HttpHeader::parse(const std::vector& message) { - std::string tag; - std::string value; - bool foundDelimiter{false}; - for (const auto& line : message) - { - for(std::size_t idx = 0; idx< line.size(); idx++) - { - const auto c = line[idx]; - if (c == StringUtils::COLON) - { - foundDelimiter = true; - } - else if(foundDelimiter) - { - value.push_back(c); - } - else - { - tag.push_back(c); - } - } - } + std::string tag; + std::string value; + bool foundDelimiter{false}; + for (const auto& line : message) + { + for(std::size_t idx = 0; idx< line.size(); idx++) + { + const auto c = line[idx]; + if (c == StringUtils::COLON) + { + foundDelimiter = true; + } + else if(foundDelimiter) + { + value.push_back(c); + } + else + { + tag.push_back(c); + } + } + } - if (tag.empty() || value.empty()) - { - return; - } + if (tag.empty() || value.empty()) + { + return; + } - if (tag == "Host") - { - mHost = value; - } - else if (tag == "User-Agent") - { - mUserAgent = value; - } - else if (tag == "Accept") - { - mAccept = value; - } - else if (tag == "Accept-Language") - { - mAcceptLanguage = value; - } - else if (tag == "Accept-Encoding") - { - mAcceptEncoding = value; - } - else if (tag == "Connection") - { - mConnection = value; - } - else if (tag == "Referer") - { - mReferer = value; - } - else if (tag == "Sec-Fetch-Dest") - { - mSecFetchDest = value; - } - else if (tag == "Sec-Fetch-Mode") - { - mSecFetchMode = value; - } - else if (tag == "Sec-Fetch-Site") - { - mSecFetchSite = value; - } - else - { - mOtherFields[tag] = value; - } + if (tag == "Host") + { + mHost = value; + } + else if (tag == "User-Agent") + { + mUserAgent = value; + } + else if (tag == "Accept") + { + mAccept = value; + } + else if (tag == "Accept-Language") + { + mAcceptLanguage = value; + } + else if (tag == "Accept-Encoding") + { + mAcceptEncoding = value; + } + else if (tag == "Connection") + { + mConnection = value; + } + else if (tag == "Referer") + { + mReferer = value; + } + else if (tag == "Sec-Fetch-Dest") + { + mSecFetchDest = value; + } + else if (tag == "Sec-Fetch-Mode") + { + mSecFetchMode = value; + } + else if (tag == "Sec-Fetch-Site") + { + mSecFetchSite = value; + } + else + { + mOtherFields[tag] = value; + } } diff --git a/src/core/http/HttpHeader.h b/src/core/http/HttpHeader.h index 2ce412c..e2b6610 100644 --- a/src/core/http/HttpHeader.h +++ b/src/core/http/HttpHeader.h @@ -7,20 +7,20 @@ class HttpHeader { public: - void parse(const std::vector& message); + void parse(const std::vector& message); private: - std::string mHost; - std::string mUserAgent; - std::string mAccept; - std::string mAcceptLanguage; - std::string mAcceptEncoding; - std::string mConnection; - std::string mReferer; - std::string mSecFetchDest; - std::string mSecFetchMode; - std::string mSecFetchSite; + std::string mHost; + std::string mUserAgent; + std::string mAccept; + std::string mAcceptLanguage; + std::string mAcceptEncoding; + std::string mConnection; + std::string mReferer; + std::string mSecFetchDest; + std::string mSecFetchMode; + std::string mSecFetchSite; - std::map mOtherFields; + std::map mOtherFields; }; diff --git a/src/core/http/HttpRequest.cpp b/src/core/http/HttpRequest.cpp index d2d5e42..82d5b41 100644 --- a/src/core/http/HttpRequest.cpp +++ b/src/core/http/HttpRequest.cpp @@ -6,63 +6,63 @@ void HttpRequest::parseMessage(const std::string& message) { - std::stringstream ss(message); + std::stringstream ss(message); - std::string buffer; - bool firstLine {true}; + std::string buffer; + bool firstLine {true}; - std::vector headers; - while(std::getline(ss, buffer, '\n')) - { - if (firstLine) - { - parseFirstLine(buffer); - firstLine = false; - } - else - { - headers.push_back(buffer); - } - } - mHeader.parse(headers); + std::vector headers; + while(std::getline(ss, buffer, '\n')) + { + if (firstLine) + { + parseFirstLine(buffer); + firstLine = false; + } + else + { + headers.push_back(buffer); + } + } + mHeader.parse(headers); } void HttpRequest::parseFirstLine(const std::string& line) { - bool inPath{false}; - bool inMethod{true}; - bool inProtocol{false}; + bool inPath{false}; + bool inMethod{true}; + bool inProtocol{false}; - for (std::size_t idx=0; idx #include diff --git a/src/image/png/PngWriter.cpp b/src/image/png/PngWriter.cpp index b95cbe2..fd9b416 100644 --- a/src/image/png/PngWriter.cpp +++ b/src/image/png/PngWriter.cpp @@ -5,6 +5,7 @@ #include "BufferBitStream.h" #include "OutputBitStream.h" #include "ImageBitStream.h" +#include "StringUtils.h" #include "PngFilter.h" #include "Lz77Encoder.h"