Skip to content

Commit 670b1d6

Browse files
authored
Merge pull request #390 from scratchcpp/return_by_reference
Read vectors by reference
2 parents 99d5632 + bea6d54 commit 670b1d6

File tree

6 files changed

+19
-19
lines changed

6 files changed

+19
-19
lines changed

include/scratchcpp/block.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -39,13 +39,13 @@ class LIBSCRATCHCPP_EXPORT Block : public Entity
3939
void setParent(std::shared_ptr<Block> block);
4040
void setParentId(const std::string &id);
4141

42-
std::vector<std::shared_ptr<Input>> inputs() const;
42+
const std::vector<std::shared_ptr<Input>> &inputs() const;
4343
int addInput(std::shared_ptr<Input> input);
4444
std::shared_ptr<Input> inputAt(int index) const;
4545
int findInput(const std::string &inputName) const;
4646
Input *findInputById(int id) const;
4747

48-
std::vector<std::shared_ptr<Field>> fields() const;
48+
const std::vector<std::shared_ptr<Field>> &fields() const;
4949
int addField(std::shared_ptr<Field> field);
5050
std::shared_ptr<Field> fieldAt(int index) const;
5151
int findField(const std::string &fieldName) const;

src/engine/internal/engine.cpp

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -56,24 +56,24 @@ void Engine::resolveIds()
5656
{
5757
for (auto target : m_targets) {
5858
std::cout << "Processing target " << target->name() << "..." << std::endl;
59-
auto blocks = target->blocks();
59+
const auto &blocks = target->blocks();
6060
for (auto block : blocks) {
6161
auto container = blockSectionContainer(block->opcode());
6262
block->setNext(getBlock(block->nextId()));
6363
block->setParent(getBlock(block->parentId()));
6464
if (container)
6565
block->setCompileFunction(container->resolveBlockCompileFunc(block->opcode()));
6666

67-
auto inputs = block->inputs();
68-
for (auto input : inputs) {
67+
const auto &inputs = block->inputs();
68+
for (const auto &input : inputs) {
6969
input->setValueBlock(getBlock(input->valueBlockId()));
7070
if (container)
7171
input->setInputId(container->resolveInput(input->name()));
7272
input->primaryValue()->setValuePtr(getEntity(input->primaryValue()->valueId()));
7373
input->secondaryValue()->setValuePtr(getEntity(input->primaryValue()->valueId()));
7474
}
7575

76-
auto fields = block->fields();
76+
const auto &fields = block->fields();
7777
for (auto field : fields) {
7878
field->setValuePtr(getEntity(field->valueId()));
7979
if (container) {
@@ -107,7 +107,7 @@ void Engine::compile()
107107
std::cout << "Compiling scripts in target " << target->name() << "..." << std::endl;
108108
std::unordered_map<std::string, unsigned int *> procedureBytecodeMap;
109109
Compiler compiler(this, target.get());
110-
auto blocks = target->blocks();
110+
const auto &blocks = target->blocks();
111111
for (auto block : blocks) {
112112
if (block->topLevel() && !block->shadow()) {
113113
auto section = blockSection(block->opcode());

src/internal/iprojectreader.h

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -23,16 +23,16 @@ class IProjectReader
2323
public:
2424
virtual ~IProjectReader() { }
2525

26-
virtual std::string fileName() const final { return m_fileName; }
26+
virtual const std::string &fileName() const final { return m_fileName; }
2727
virtual void setFileName(const std::string &fileName) final { m_fileName = fileName; }
2828

2929
virtual bool load() = 0;
3030
virtual bool loadData(const std::string &data) = 0;
3131
virtual bool isValid() = 0;
3232
virtual void clear() = 0;
33-
virtual std::vector<std::shared_ptr<Target>> targets() = 0;
34-
virtual std::vector<std::shared_ptr<Broadcast>> broadcasts() = 0;
35-
virtual std::vector<std::string> extensions() = 0;
33+
virtual const std::vector<std::shared_ptr<Target>> &targets() = 0;
34+
virtual const std::vector<std::shared_ptr<Broadcast>> &broadcasts() = 0;
35+
virtual const std::vector<std::string> &extensions() = 0;
3636

3737
protected:
3838
virtual void printErr(const std::string &errStr) final { std::cerr << "Failed to read project: " << errStr << std::endl; }

src/internal/scratch3reader.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -388,17 +388,17 @@ void Scratch3Reader::clear()
388388
m_extensions.clear();
389389
}
390390

391-
std::vector<std::shared_ptr<Target>> Scratch3Reader::targets()
391+
const std::vector<std::shared_ptr<Target>> &Scratch3Reader::targets()
392392
{
393393
return m_targets;
394394
}
395395

396-
std::vector<std::shared_ptr<Broadcast>> Scratch3Reader::broadcasts()
396+
const std::vector<std::shared_ptr<Broadcast>> &Scratch3Reader::broadcasts()
397397
{
398398
return m_broadcasts;
399399
}
400400

401-
std::vector<std::string> Scratch3Reader::extensions()
401+
const std::vector<std::string> &Scratch3Reader::extensions()
402402
{
403403
return m_extensions;
404404
}

src/internal/scratch3reader.h

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,9 @@ class Scratch3Reader : public IProjectReader
1717
bool loadData(const std::string &data) override;
1818
bool isValid() override;
1919
void clear() override;
20-
std::vector<std::shared_ptr<Target>> targets() override;
21-
std::vector<std::shared_ptr<Broadcast>> broadcasts() override;
22-
std::vector<std::string> extensions() override;
20+
const std::vector<std::shared_ptr<Target>> &targets() override;
21+
const std::vector<std::shared_ptr<Broadcast>> &broadcasts() override;
22+
const std::vector<std::string> &extensions() override;
2323

2424
private:
2525
void read();

src/scratch/block.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -155,7 +155,7 @@ void Block::setParentId(const std::string &id)
155155
}
156156

157157
/*! Returns the list of inputs. */
158-
std::vector<std::shared_ptr<Input>> Block::inputs() const
158+
const std::vector<std::shared_ptr<Input>> &Block::inputs() const
159159
{
160160
return impl->inputs;
161161
}
@@ -217,7 +217,7 @@ void Block::updateInputMap()
217217
}
218218

219219
/*! Returns the list of fields. */
220-
std::vector<std::shared_ptr<Field>> Block::fields() const
220+
const std::vector<std::shared_ptr<Field>> &Block::fields() const
221221
{
222222
return impl->fields;
223223
}

0 commit comments

Comments
 (0)