-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathelement.cpp
More file actions
39 lines (32 loc) · 951 Bytes
/
Copy pathelement.cpp
File metadata and controls
39 lines (32 loc) · 951 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
// SPDX-License-Identifier: MIT
// Copyright (c) 2026 Diego Lopes <diego95lopes@gmail.com>
#include "element.h"
#include <algorithm>
void IElement::SetParent(IElement* parent)
{
if (m_parent == parent) return;
if (m_parent) m_parent->RemoveChildDirect(this);
m_parent = parent;
if (m_parent) m_parent->AddChildDirect(this);
}
void IElement::AddChild(IElement* element)
{
if (element) element->SetParent(this);
}
void IElement::RemoveChild(IElement* element)
{
if (element && element->GetParent() == this)
element->SetParent(nullptr);
}
void IElement::AddChildDirect(IElement* child)
{
auto it = std::find(m_children.begin(), m_children.end(), child);
if (it == m_children.end())
m_children.push_back(child);
}
void IElement::RemoveChildDirect(IElement* child)
{
auto it = std::find(m_children.begin(), m_children.end(), child);
if (it != m_children.end())
m_children.erase(it);
}