GDevelop Core
Core library for developing platforms and tools compatible with GDevelop.
ParameterMetadataContainer.h
1 /*
2  * GDevelop Core
3  * Copyright 2008-present Florian Rival ([email protected]). All rights
4  * reserved. This project is released under the MIT License.
5  */
6 #pragma once
7 
8 #include "GDCore/Extensions/Metadata/ParameterMetadata.h"
9 #include "GDCore/String.h"
10 #include "GDCore/Tools/SerializableWithNameList.h"
11 #include <vector>
12 namespace gd {
13 class SerializerElement;
14 }
15 
16 namespace gd {
17 
25 class GD_CORE_API ParameterMetadataContainer
26  : private SerializableWithNameList<gd::ParameterMetadata> {
27 public:
29 
33 
36  bool HasParameterNamed(const gd::String &name) const { return Has(name); }
37 
45  return Get(name);
46  }
47 
54  const gd::ParameterMetadata &GetParameter(const gd::String &name) const {
55  return Get(name);
56  }
57 
64  gd::ParameterMetadata &GetParameter(std::size_t index) { return Get(index); }
65 
72  const gd::ParameterMetadata &GetParameter(std::size_t index) const {
73  return Get(index);
74  }
75 
79  std::size_t GetParametersCount() const { return GetCount(); }
80 
81  gd::ParameterMetadata &InsertNewParameter(const gd::String &name,
82  std::size_t position) {
83  return InsertNew(name, position);
84  }
85  gd::ParameterMetadata &InsertParameter(const gd::ParameterMetadata &object,
86  std::size_t position) {
87  return Insert(object, position);
88  }
89  gd::ParameterMetadata &AddNewParameter(const gd::String &name) {
90  return InsertNew(name, GetCount());
91  }
92  gd::ParameterMetadata &AddParameter(const gd::ParameterMetadata &object) {
93  return Insert(object, GetCount());
94  }
95  void RemoveParameter(const gd::String &name) { return Remove(name); }
96  void ClearParameters() { return Clear(); }
97  void MoveParameter(std::size_t oldIndex, std::size_t newIndex) {
98  return Move(oldIndex, newIndex);
99  };
100  std::size_t
101  GetParameterPosition(const gd::ParameterMetadata &parameterMetadata) {
102  return GetPosition(parameterMetadata);
103  };
104 
108  const std::vector<std::unique_ptr<gd::ParameterMetadata>> &
110  return elements;
111  };
112 
116  std::vector<std::unique_ptr<gd::ParameterMetadata>> &GetInternalVector() {
117  return elements;
118  };
120 
124 
128  return SerializeElementsTo("parameters", element);
129  };
130 
135  return UnserializeElementsFrom("parameters", element);
136  };
138 protected:
145  };
146 };
147 
148 } // namespace gd
Used as a base class for classes that will own events-backed functions.
Definition: ParameterMetadataContainer.h:26
void UnserializeParametersFrom(const SerializerElement &element)
Unserialize the events functions.
Definition: ParameterMetadataContainer.h:134
const std::vector< std::unique_ptr< gd::ParameterMetadata > > & GetInternalVector() const
Provide a raw access to the vector containing the functions.
Definition: ParameterMetadataContainer.h:109
bool HasParameterNamed(const gd::String &name) const
Check if the function with the specified name exists.
Definition: ParameterMetadataContainer.h:36
gd::ParameterMetadata & GetParameter(const gd::String &name)
Get the function with the specified name.
Definition: ParameterMetadataContainer.h:44
void SerializeParametersTo(SerializerElement &element) const
Serialize events functions.
Definition: ParameterMetadataContainer.h:127
std::vector< std::unique_ptr< gd::ParameterMetadata > > & GetInternalVector()
Provide a raw access to the vector containing the functions.
Definition: ParameterMetadataContainer.h:116
std::size_t GetParametersCount() const
Return the number of functions.
Definition: ParameterMetadataContainer.h:79
const gd::ParameterMetadata & GetParameter(std::size_t index) const
Get the function at the specified index in the list.
Definition: ParameterMetadataContainer.h:72
gd::ParameterMetadata & GetParameter(std::size_t index)
Get the function at the specified index in the list.
Definition: ParameterMetadataContainer.h:64
const gd::ParameterMetadata & GetParameter(const gd::String &name) const
Get the function with the specified name.
Definition: ParameterMetadataContainer.h:54
void Init(const gd::ParameterMetadataContainer &other)
Definition: ParameterMetadataContainer.h:143
Describe a parameter of an instruction (action, condition) or of an expression: type,...
Definition: ParameterMetadata.h:27
A class template that store a list of elements that can be accessed by their names and serialized.
Definition: SerializableWithNameList.h:33
void Init(const SerializableWithNameList< T > &other)
Definition: SerializableWithNameList.inl:190
A generic container that can represent a value ( containing a string, double, bool or int),...
Definition: SerializerElement.h:37
String represents an UTF8 encoded string.
Definition: String.h:33
Definition: CommonTools.h:24