diff --git a/include/scratchcpp/block.h b/include/scratchcpp/block.h index f632420a..641bd1fb 100644 --- a/include/scratchcpp/block.h +++ b/include/scratchcpp/block.h @@ -39,13 +39,13 @@ class LIBSCRATCHCPP_EXPORT Block : public Entity void setParent(std::shared_ptr block); void setParentId(const std::string &id); - std::vector> inputs() const; + const std::vector> &inputs() const; int addInput(std::shared_ptr input); std::shared_ptr inputAt(int index) const; int findInput(const std::string &inputName) const; Input *findInputById(int id) const; - std::vector> fields() const; + const std::vector> &fields() const; int addField(std::shared_ptr field); std::shared_ptr fieldAt(int index) const; int findField(const std::string &fieldName) const; diff --git a/src/engine/internal/engine.cpp b/src/engine/internal/engine.cpp index 1487a536..3683761d 100644 --- a/src/engine/internal/engine.cpp +++ b/src/engine/internal/engine.cpp @@ -56,7 +56,7 @@ void Engine::resolveIds() { for (auto target : m_targets) { std::cout << "Processing target " << target->name() << "..." << std::endl; - auto blocks = target->blocks(); + const auto &blocks = target->blocks(); for (auto block : blocks) { auto container = blockSectionContainer(block->opcode()); block->setNext(getBlock(block->nextId())); @@ -64,8 +64,8 @@ void Engine::resolveIds() if (container) block->setCompileFunction(container->resolveBlockCompileFunc(block->opcode())); - auto inputs = block->inputs(); - for (auto input : inputs) { + const auto &inputs = block->inputs(); + for (const auto &input : inputs) { input->setValueBlock(getBlock(input->valueBlockId())); if (container) input->setInputId(container->resolveInput(input->name())); @@ -73,7 +73,7 @@ void Engine::resolveIds() input->secondaryValue()->setValuePtr(getEntity(input->primaryValue()->valueId())); } - auto fields = block->fields(); + const auto &fields = block->fields(); for (auto field : fields) { field->setValuePtr(getEntity(field->valueId())); if (container) { @@ -107,7 +107,7 @@ void Engine::compile() std::cout << "Compiling scripts in target " << target->name() << "..." << std::endl; std::unordered_map procedureBytecodeMap; Compiler compiler(this, target.get()); - auto blocks = target->blocks(); + const auto &blocks = target->blocks(); for (auto block : blocks) { if (block->topLevel() && !block->shadow()) { auto section = blockSection(block->opcode()); diff --git a/src/internal/iprojectreader.h b/src/internal/iprojectreader.h index 2e85cfe2..9bda4ed4 100644 --- a/src/internal/iprojectreader.h +++ b/src/internal/iprojectreader.h @@ -23,16 +23,16 @@ class IProjectReader public: virtual ~IProjectReader() { } - virtual std::string fileName() const final { return m_fileName; } + virtual const std::string &fileName() const final { return m_fileName; } virtual void setFileName(const std::string &fileName) final { m_fileName = fileName; } virtual bool load() = 0; virtual bool loadData(const std::string &data) = 0; virtual bool isValid() = 0; virtual void clear() = 0; - virtual std::vector> targets() = 0; - virtual std::vector> broadcasts() = 0; - virtual std::vector extensions() = 0; + virtual const std::vector> &targets() = 0; + virtual const std::vector> &broadcasts() = 0; + virtual const std::vector &extensions() = 0; protected: virtual void printErr(const std::string &errStr) final { std::cerr << "Failed to read project: " << errStr << std::endl; } diff --git a/src/internal/scratch3reader.cpp b/src/internal/scratch3reader.cpp index 6a5e2736..14b4e454 100644 --- a/src/internal/scratch3reader.cpp +++ b/src/internal/scratch3reader.cpp @@ -388,17 +388,17 @@ void Scratch3Reader::clear() m_extensions.clear(); } -std::vector> Scratch3Reader::targets() +const std::vector> &Scratch3Reader::targets() { return m_targets; } -std::vector> Scratch3Reader::broadcasts() +const std::vector> &Scratch3Reader::broadcasts() { return m_broadcasts; } -std::vector Scratch3Reader::extensions() +const std::vector &Scratch3Reader::extensions() { return m_extensions; } diff --git a/src/internal/scratch3reader.h b/src/internal/scratch3reader.h index cd6d78dd..88fc6c20 100644 --- a/src/internal/scratch3reader.h +++ b/src/internal/scratch3reader.h @@ -17,9 +17,9 @@ class Scratch3Reader : public IProjectReader bool loadData(const std::string &data) override; bool isValid() override; void clear() override; - std::vector> targets() override; - std::vector> broadcasts() override; - std::vector extensions() override; + const std::vector> &targets() override; + const std::vector> &broadcasts() override; + const std::vector &extensions() override; private: void read(); diff --git a/src/scratch/block.cpp b/src/scratch/block.cpp index b36e5f48..0dea5897 100644 --- a/src/scratch/block.cpp +++ b/src/scratch/block.cpp @@ -155,7 +155,7 @@ void Block::setParentId(const std::string &id) } /*! Returns the list of inputs. */ -std::vector> Block::inputs() const +const std::vector> &Block::inputs() const { return impl->inputs; } @@ -217,7 +217,7 @@ void Block::updateInputMap() } /*! Returns the list of fields. */ -std::vector> Block::fields() const +const std::vector> &Block::fields() const { return impl->fields; }