GDevelop Core
Core library for developing platforms and tools compatible with GDevelop.
VariablesContainersList.h
1 #pragma once
2 #include <vector>
3 #include <functional>
4 
5 namespace gd {
6 class String;
7 class Project;
8 class Layout;
9 class VariablesContainer;
10 class Variable;
11 } // namespace gd
12 
13 namespace gd {
14 
25 class GD_CORE_API VariablesContainersList {
26  public:
27  virtual ~VariablesContainersList(){};
28 
30  MakeNewVariablesContainersListForProjectAndLayout(const gd::Project& project,
31  const gd::Layout& layout);
32 
33  static VariablesContainersList MakeNewEmptyVariablesContainersList();
34 
38  bool Has(const gd::String& name) const;
39 
43  const Variable& Get(const gd::String& name) const;
44 
48  bool HasVariablesContainer(const gd::VariablesContainer& variablesContainer) const;
49 
55  if (variablesContainers.empty()) return nullptr;
56  return variablesContainers.front();
57  };
58 
64  if (variablesContainers.empty()) return nullptr;
65  return variablesContainers.back();
66  }
67 
71  void ForEachVariableMatchingSearch(const gd::String& search, std::function<void(const gd::String& name, const gd::Variable& variable)> fn) const;
72 
75  private:
76 
77  void Add(const gd::VariablesContainer& variablesContainer) {
78  variablesContainers.push_back(&variablesContainer);
79  };
80 
81  std::vector<const gd::VariablesContainer*> variablesContainers;
82  static Variable badVariable;
83 };
84 
85 } // namespace gd
Represent a layout ( also called a scene ) of a project.
Definition: Layout.h:39
Base class representing a project (game), including all resources, scenes, objects,...
Definition: Project.h:50
String represents an UTF8 encoded string.
Definition: String.h:31
Defines a variable which can be used by an object, a layout or a project.
Definition: Variable.h:29
Class defining a container for gd::Variable.
Definition: VariablesContainer.h:30
A list of variables containers, useful for accessing variables in a scoped way.
Definition: VariablesContainersList.h:25
const VariablesContainer * GetTopMostVariablesContainer() const
Avoid using apart when a scope must be forced.
Definition: VariablesContainersList.h:54
VariablesContainersList()
Definition: VariablesContainersList.h:74
const VariablesContainer * GetBottomMostVariablesContainer() const
Avoid using apart when a scope must be forced.
Definition: VariablesContainersList.h:63
Definition: CommonTools.h:24