GDevelop Core
Core library for developing platforms and tools compatible with GDevelop.
ParameterMetadataTools.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 #include <functional>
8 #include <vector>
9 #include <memory>
10 #include "GDCore/String.h"
11 namespace gd {
12 class Platform;
13 class Project;
14 class ObjectsContainer;
15 class ObjectsContainersList;
16 class ParameterMetadata;
17 class Expression;
18 class ParameterMetadataContainer;
19 struct FunctionCallNode;
20 struct ExpressionNode;
21 } // namespace gd
22 
23 namespace gd {
24 class GD_CORE_API ParameterMetadataTools {
25  public:
26  static void ParametersToObjectsContainer(
27  const gd::Project& project,
28  const ParameterMetadataContainer& parameters,
29  gd::ObjectsContainer& outputObjectsContainer);
30 
31  static void ForEachParameterMatchingSearch(
32  const std::vector<const ParameterMetadataContainer*>& parametersVectorsList,
33  const gd::String& search,
34  std::function<void(const gd::ParameterMetadata&)> cb);
35 
36  static bool Has(
37  const std::vector<const ParameterMetadataContainer*>& parametersVectorsList,
38  const gd::String& parameterName);
39 
40  static const gd::ParameterMetadata& Get(
41  const std::vector<const ParameterMetadataContainer*>& parametersVectorsList,
42  const gd::String& parameterName);
43 
49  static void IterateOverParameters(
50  const std::vector<gd::Expression>& parameters,
51  const ParameterMetadataContainer& parametersMetadata,
52  std::function<void(const gd::ParameterMetadata& parameterMetadata,
53  const gd::Expression& parameterValue,
54  const gd::String& lastObjectName)> fn);
55 
61  static void IterateOverParametersWithIndex(
62  const std::vector<gd::Expression>& parameters,
63  const ParameterMetadataContainer& parametersMetadata,
64  std::function<void(const gd::ParameterMetadata& parameterMetadata,
65  const gd::Expression& parameterValue,
66  size_t parameterIndex,
67  const gd::String& lastObjectName)> fn);
68 
74  static void IterateOverParametersWithIndex(
75  const gd::Platform &platform,
76  const gd::ObjectsContainersList &objectsContainersList, FunctionCallNode &node,
77  std::function<void(const gd::ParameterMetadata &parameterMetadata,
78  std::unique_ptr<gd::ExpressionNode> &parameterNode,
79  size_t parameterIndex,
80  const gd::String &lastObjectName)>
81  fn);
82 
87  static size_t GetObjectParameterIndexFor(
88  const ParameterMetadataContainer& parametersMetadata,
89  size_t parameterIndex);
90 
91 private:
92  static const gd::ParameterMetadata badParameterMetadata;
93 };
94 } // namespace gd
Class representing an expression used as a parameter of a gd::Instruction. This class is nothing more...
Definition: Expression.h:30
Used as a base class for classes that will own objects (see gd::Object).
Definition: ObjectsContainer.h:37
A list of objects containers, useful for accessing objects in a scoped way, along with methods to acc...
Definition: ObjectsContainersList.h:29
Used as a base class for classes that will own events-backed functions.
Definition: ParameterMetadataContainer.h:26
Describe a parameter of an instruction (action, condition) or of an expression: type,...
Definition: ParameterMetadata.h:27
Definition: ParameterMetadataTools.h:24
Base class for implementing a platform.
Definition: Platform.h:42
Base class representing a project (game), including all resources, scenes, objects,...
Definition: Project.h:50
String represents an UTF8 encoded string.
Definition: String.h:33
Definition: CommonTools.h:24
A function call node (either free function, object function or object behavior function)....
Definition: ExpressionParser2Node.h:371