Loading...
Searching...
No Matches
Entity.hpp
1#pragma once
2#include <score/model/ComponentSerialization.hpp>
3#include <score/model/EntityBase.hpp>
4
5#include <ossia-qt/name_utils.hpp>
6
7namespace score
8{
9template <typename T, bool Ordered>
10class EntityMapInserter<score::Entity<T>, Ordered>
11{
12 inline void notify_added(EntityMap<T, Ordered>& map, T* obj)
13 {
14 map.mutable_added(*obj);
15 map.added(*obj);
16 }
17
18 void add(EntityMap<T, Ordered>& map, T* obj)
19 {
20 SCORE_ASSERT(obj);
21
22 std::vector<QString> bros_names;
23 bros_names.reserve(map.size());
24 std::transform(
25 map.begin(), map.end(), std::back_inserter(bros_names),
26 [&](const auto& res) { bros_names.push_back(res.metadata().getName()); });
27
28 auto new_name = ossia::net::sanitize_name(obj->metadata().getName(), bros_names);
29 obj->metadata().setName(new_name);
30
31 map.unsafe_map().insert(obj);
32
33 notify_added(map, *obj);
34
35 // If there are serialized components, we try to deserialize them
36 score::Components& comps = obj->components();
37 deserializeRemainingComponents(comps, obj);
38 }
39
40 void add_quiet(EntityMap<T, Ordered>& map, T* obj)
41 {
42 SCORE_ASSERT(obj);
43
44 std::vector<QString> bros_names;
45 bros_names.reserve(map.size());
46 std::transform(
47 map.begin(), map.end(), std::back_inserter(bros_names),
48 [&](const auto& res) { bros_names.push_back(res.metadata().getName()); });
49
50 auto new_name = ossia::net::sanitize_name(obj->metadata().getName(), bros_names);
51 obj->metadata().setName(new_name);
52
53 map.unsafe_map().insert(obj);
54
55 // If there are serialized components, we try to deserialize them
56 score::Components& comps = obj->components();
57 deserializeRemainingComponents(comps, obj);
58 }
59};
60}
Base for complex model objects.
Definition EntityBase.hpp:24
The EntityMap class.
Definition EntityMap.hpp:37
Definition EntityMap.hpp:16
Base toolkit upon which the software is built.
Definition Application.cpp:97
Definition lib/score/model/Component.hpp:41