Skip to content

Commit 8078799

Browse files
committed
Remove variableOwner() and listOwner() from IEngine
1 parent cfcbb77 commit 8078799

File tree

7 files changed

+10
-106
lines changed

7 files changed

+10
-106
lines changed

include/scratchcpp/iengine.h

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -247,12 +247,6 @@ class LIBSCRATCHCPP_EXPORT IEngine
247247
/*! Returns the Stage. */
248248
virtual Stage *stage() const = 0;
249249

250-
/*! Returns the target which owns the given variable. If it is the stage, the variable is global. */
251-
virtual Target *variableOwner(Variable *variable) const = 0;
252-
253-
/*! Returns the target which owns the given list. If it is the stage, the list is global. */
254-
virtual Target *listOwner(List *list) const = 0;
255-
256250
/*! Returns the list of extension names. */
257251
virtual const std::vector<std::string> &extensions() const = 0;
258252

src/engine/internal/engine.cpp

Lines changed: 0 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -689,8 +689,6 @@ const std::vector<std::shared_ptr<Target>> &Engine::targets() const
689689
void Engine::setTargets(const std::vector<std::shared_ptr<Target>> &newTargets)
690690
{
691691
m_targets = newTargets;
692-
m_variableOwners.clear();
693-
m_listOwners.clear();
694692

695693
for (auto target : m_targets) {
696694
// Set engine in the target
@@ -702,18 +700,6 @@ void Engine::setTargets(const std::vector<std::shared_ptr<Target>> &newTargets)
702700
block->setEngine(this);
703701
block->setTarget(target.get());
704702
}
705-
706-
// Add variables to owner map
707-
const auto &variables = target->variables();
708-
709-
for (auto variable : variables)
710-
m_variableOwners[variable.get()] = target.get();
711-
712-
// Add lists to owner map
713-
const auto &lists = target->lists();
714-
715-
for (auto list : lists)
716-
m_listOwners[list.get()] = target.get();
717703
}
718704
}
719705

@@ -746,26 +732,6 @@ Stage *Engine::stage() const
746732
return dynamic_cast<Stage *>((*it).get());
747733
}
748734

749-
Target *Engine::variableOwner(Variable *variable) const
750-
{
751-
auto it = m_variableOwners.find(variable);
752-
753-
if (it == m_variableOwners.cend())
754-
return nullptr;
755-
756-
return it->second;
757-
}
758-
759-
Target *Engine::listOwner(List *list) const
760-
{
761-
auto it = m_listOwners.find(list);
762-
763-
if (it == m_listOwners.cend())
764-
return nullptr;
765-
766-
return it->second;
767-
}
768-
769735
const std::vector<std::string> &Engine::extensions() const
770736
{
771737
return m_extensions;

src/engine/internal/engine.h

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -100,9 +100,6 @@ class Engine : public IEngine
100100

101101
Stage *stage() const override;
102102

103-
Target *variableOwner(Variable *variable) const override;
104-
Target *listOwner(List *list) const override;
105-
106103
const std::vector<std::string> &extensions() const override;
107104
void setExtensions(const std::vector<std::string> &newExtensions) override;
108105

@@ -133,8 +130,6 @@ class Engine : public IEngine
133130
std::vector<VirtualMachine *> m_scriptsToRemove;
134131
std::unordered_map<std::shared_ptr<Block>, std::shared_ptr<Script>> m_scripts;
135132
std::vector<BlockFunc> m_functions;
136-
std::unordered_map<Variable *, Target *> m_variableOwners;
137-
std::unordered_map<List *, Target *> m_listOwners;
138133

139134
std::unique_ptr<ITimer> m_defaultTimer;
140135
ITimer *m_timer = nullptr;

src/engine/script.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@ std::shared_ptr<VirtualMachine> Script::start(Target *target)
7777
std::vector<List *> lists;
7878

7979
for (const auto &var : impl->variables) {
80-
Target *owner = impl->engine->variableOwner(var);
80+
Target *owner = var->target();
8181

8282
if (owner && (owner == root)) {
8383
auto cloneVar = sprite->variableAt(sprite->findVariableById(var->id()));
@@ -90,7 +90,7 @@ std::shared_ptr<VirtualMachine> Script::start(Target *target)
9090
}
9191

9292
for (const auto &list : impl->lists) {
93-
Target *owner = impl->engine->listOwner(list);
93+
Target *owner = list->target();
9494

9595
if (owner && (owner == root)) {
9696
auto cloneList = sprite->listAt(sprite->findListById(list->id()));

test/engine/engine_test.cpp

Lines changed: 0 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -502,52 +502,6 @@ TEST(EngineTest, Stage)
502502
ASSERT_EQ(engine.stage(), nullptr);
503503
}
504504

505-
TEST(EngineTest, VariableOwner)
506-
{
507-
Engine engine;
508-
auto t1 = std::make_shared<Target>();
509-
auto t2 = std::make_shared<Target>();
510-
auto t3 = std::make_shared<Target>();
511-
512-
auto var1 = std::make_shared<Variable>("", "", Value());
513-
auto var2 = std::make_shared<Variable>("", "", Value());
514-
auto var3 = std::make_shared<Variable>("", "", Value());
515-
auto var4 = std::make_shared<Variable>("", "", Value());
516-
t1->addVariable(var1);
517-
t1->addVariable(var4);
518-
t3->addVariable(var3);
519-
520-
engine.setTargets({ t1, t2, t3 });
521-
522-
ASSERT_EQ(engine.variableOwner(var1.get()), t1.get());
523-
ASSERT_EQ(engine.variableOwner(var2.get()), nullptr);
524-
ASSERT_EQ(engine.variableOwner(var3.get()), t3.get());
525-
ASSERT_EQ(engine.variableOwner(var4.get()), t1.get());
526-
}
527-
528-
TEST(EngineTest, ListOwner)
529-
{
530-
Engine engine;
531-
auto t1 = std::make_shared<Target>();
532-
auto t2 = std::make_shared<Target>();
533-
auto t3 = std::make_shared<Target>();
534-
535-
auto list1 = std::make_shared<List>("", "");
536-
auto list2 = std::make_shared<List>("", "");
537-
auto list3 = std::make_shared<List>("", "");
538-
auto list4 = std::make_shared<List>("", "");
539-
t1->addList(list1);
540-
t1->addList(list4);
541-
t3->addList(list3);
542-
543-
engine.setTargets({ t1, t2, t3 });
544-
545-
ASSERT_EQ(engine.listOwner(list1.get()), t1.get());
546-
ASSERT_EQ(engine.listOwner(list2.get()), nullptr);
547-
ASSERT_EQ(engine.listOwner(list3.get()), t3.get());
548-
ASSERT_EQ(engine.listOwner(list4.get()), t1.get());
549-
}
550-
551505
TEST(EngineTest, Clones)
552506
{
553507
Project p("clones.sb3");

test/mocks/enginemock.h

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -86,9 +86,6 @@ class EngineMock : public IEngine
8686

8787
MOCK_METHOD(Stage *, stage, (), (const, override));
8888

89-
MOCK_METHOD(Target *, variableOwner, (Variable *), (const, override));
90-
MOCK_METHOD(Target *, listOwner, (List *), (const, override));
91-
9289
MOCK_METHOD(std::vector<std::string> &, extensions, (), (const, override));
9390
MOCK_METHOD(void, setExtensions, (const std::vector<std::string> &), (override));
9491

test/script/script_test.cpp

Lines changed: 8 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -49,12 +49,12 @@ TEST_F(ScriptTest, Start)
4949
static std::vector<BlockFunc> functions = { &testFunction };
5050
static std::vector<Value> constValues = { "test" };
5151

52-
std::unique_ptr<Variable> var1 = std::make_unique<Variable>("a", "", Value());
53-
std::unique_ptr<Variable> var2 = std::make_unique<Variable>("b", "", Value());
52+
std::shared_ptr<Variable> var1 = std::make_unique<Variable>("a", "", Value());
53+
std::shared_ptr<Variable> var2 = std::make_unique<Variable>("b", "", Value());
5454
static std::vector<Variable *> variables = { var1.get(), var2.get() };
5555

56-
std::unique_ptr<List> list1 = std::make_unique<List>("c", "");
57-
std::unique_ptr<List> list2 = std::make_unique<List>("d", "");
56+
std::shared_ptr<List> list1 = std::make_unique<List>("c", "");
57+
std::shared_ptr<List> list2 = std::make_unique<List>("d", "");
5858
static std::vector<List *> lists = { list1.get(), list2.get() };
5959

6060
Script script1(nullptr, nullptr);
@@ -95,6 +95,8 @@ TEST_F(ScriptTest, Start)
9595
ASSERT_EQ(vm->lists()[0], lists[0]);
9696

9797
Target target;
98+
target.addVariable(var1);
99+
target.addList(list1);
98100
vm = script3.start(&target);
99101
ASSERT_TRUE(vm);
100102
ASSERT_EQ(vm->target(), &target);
@@ -107,8 +109,8 @@ TEST_F(ScriptTest, Start)
107109

108110
Sprite root;
109111
root.setEngine(&m_engine);
110-
root.addVariable(std::make_shared<Variable>("b", "", Value()));
111-
root.addList(std::make_shared<List>("d", ""));
112+
root.addVariable(var2);
113+
root.addList(list2);
112114

113115
EXPECT_CALL(m_engine, initClone).Times(1);
114116
auto clone = root.clone();
@@ -121,10 +123,6 @@ TEST_F(ScriptTest, Start)
121123
script4.setVariables(variables);
122124
script4.setLists(lists);
123125

124-
EXPECT_CALL(m_engine, variableOwner(var1.get())).WillOnce(Return(&target));
125-
EXPECT_CALL(m_engine, variableOwner(var2.get())).WillOnce(Return(&root));
126-
EXPECT_CALL(m_engine, listOwner(list1.get())).WillOnce(Return(&target));
127-
EXPECT_CALL(m_engine, listOwner(list2.get())).WillOnce(Return(&root));
128126
vm = script4.start(clone.get());
129127

130128
ASSERT_TRUE(vm);

0 commit comments

Comments
 (0)