GDevelop Core
Core library for developing platforms and tools compatible with GDevelop.
EventsFunctionsExtensionChangelog.h
1 /*
2  * GDevelop Core
3  * Copyright 2008-2016 Florian Rival ([email protected]). All rights
4  * reserved. This project is released under the MIT License.
5  */
6 #pragma once
7 
8 #include <vector>
9 
10 #include "GDCore/Serialization/SerializerElement.h"
11 #include "GDCore/String.h"
12 
13 namespace gd {
14 
20 public:
23 
24  const gd::String &GetVersion() const { return version; };
26  SetVersion(const gd::String &version_) {
27  version = version_;
28  return *this;
29  }
30 
31  const gd::String &GetBreakingChangesDescription() const { return version; };
33  GetBreakingChangesDescription(const gd::String &breakingChangesDescription_) {
34  breakingChangesDescription = breakingChangesDescription_;
35  return *this;
36  }
37 
42  void SerializeTo(gd::SerializerElement &element) const {
43  element.SetAttribute("version", version);
44  element.AddChild("breaking")
45  .SetMultilineStringValue(breakingChangesDescription);
46  }
47 
52  void UnserializeFrom(const gd::SerializerElement &element) {
53  version = element.GetStringAttribute("version");
54  breakingChangesDescription =
55  element.GetChild("breaking").GetMultilineStringValue();
56  }
57 
58 private:
59  gd::String version;
60  gd::String breakingChangesDescription;
61 };
62 
67 public:
70 
74  std::size_t GetChangesCount() const { return versionChanges.size(); }
75 
80  void SerializeTo(gd::SerializerElement &element) const {
81  element.ConsiderAsArray();
82  for (const auto &versionChange : versionChanges) {
83  versionChange.SerializeTo(element.AddChild(""));
84  }
85  }
86 
91  void UnserializeFrom(const gd::SerializerElement &element) {
92  versionChanges.clear();
93  element.ConsiderAsArray();
94  for (std::size_t i = 0; i < element.GetChildrenCount(); ++i) {
96  versionChange.UnserializeFrom(element.GetChild(i));
97  versionChanges.push_back(versionChange);
98  }
99  }
100 
101 private:
102  std::vector<gd::EventsFunctionsExtensionVersionChange> versionChanges;
103 };
104 
105 } // namespace gd
The changelog of an extension (only the breaking changes).
Definition: EventsFunctionsExtensionChangelog.h:66
void UnserializeFrom(const gd::SerializerElement &element)
Load the EventsFunctionsExtensionChangelog from the specified element.
Definition: EventsFunctionsExtensionChangelog.h:91
std::size_t GetChangesCount() const
Return the number of variants.
Definition: EventsFunctionsExtensionChangelog.h:74
void SerializeTo(gd::SerializerElement &element) const
Serialize the EventsFunctionsExtensionChangelog to the specified element.
Definition: EventsFunctionsExtensionChangelog.h:80
The change of a specific extension version (only the breaking changes).
Definition: EventsFunctionsExtensionChangelog.h:19
void UnserializeFrom(const gd::SerializerElement &element)
Load the EventsFunctionsExtensionVersionChange from the specified element.
Definition: EventsFunctionsExtensionChangelog.h:52
void SerializeTo(gd::SerializerElement &element) const
Serialize the EventsFunctionsExtensionVersionChange to the specified element.
Definition: EventsFunctionsExtensionChangelog.h:42
A generic container that can represent a value ( containing a string, double, bool or int),...
Definition: SerializerElement.h:37
SerializerElement & GetChild(gd::String name, std::size_t index=0, gd::String deprecatedName="") const
Get a child of the element using its name.
Definition: SerializerElement.cpp:195
void ConsiderAsArray() const
Consider that the element is an array of elements, without specific name for the children element.
Definition: SerializerElement.h:351
std::size_t GetChildrenCount(gd::String name="", gd::String deprecatedName="") const
Get the number of children having a specific name.
Definition: SerializerElement.cpp:225
gd::String GetMultilineStringValue()
Read the value, either represented as a string or as an array of strings, into a string.
Definition: SerializerElement.cpp:306
SerializerElement & AddChild(gd::String name)
Add a child at the end of the children list with the given name and return a reference to it.
Definition: SerializerElement.cpp:142
SerializerElement & SetAttribute(const gd::String &name, bool value)
Set the boolean value of an attribute of the element.
Definition: SerializerElement.cpp:23
gd::String GetStringAttribute(const gd::String &name, gd::String defaultValue="", gd::String deprecatedName="") const
Definition: SerializerElement.cpp:83
void SetMultilineStringValue(const gd::String &value)
Save the value either as a string or as an array of strings if it has line breaks.
Definition: SerializerElement.cpp:292
String represents an UTF8 encoded string.
Definition: String.h:33
Definition: CommonTools.h:24