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 struct FunctionCallNode;
19 struct ExpressionNode;
20 } // namespace gd
21 
22 namespace gd {
23 class GD_CORE_API ParameterMetadataTools {
24  public:
25  static void ParametersToObjectsContainer(
26  const gd::Project& project,
27  const std::vector<gd::ParameterMetadata>& parameters,
28  gd::ObjectsContainer& outputObjectsContainer);
29 
30  static void ForEachParameterMatchingSearch(
31  const std::vector<const std::vector<gd::ParameterMetadata>*>& parametersVectorsList,
32  const gd::String& search,
33  std::function<void(const gd::ParameterMetadata&)> cb);
34 
35  static bool Has(
36  const std::vector<const std::vector<gd::ParameterMetadata>*>& parametersVectorsList,
37  const gd::String& parameterName);
38 
39  static const gd::ParameterMetadata& Get(
40  const std::vector<const std::vector<gd::ParameterMetadata>*>& parametersVectorsList,
41  const gd::String& parameterName);
42 
48  static void IterateOverParameters(
49  const std::vector<gd::Expression>& parameters,
50  const std::vector<gd::ParameterMetadata>& parametersMetadata,
51  std::function<void(const gd::ParameterMetadata& parameterMetadata,
52  const gd::Expression& parameterValue,
53  const gd::String& lastObjectName)> fn);
54 
60  static void IterateOverParametersWithIndex(
61  const std::vector<gd::Expression>& parameters,
62  const std::vector<gd::ParameterMetadata>& parametersMetadata,
63  std::function<void(const gd::ParameterMetadata& parameterMetadata,
64  const gd::Expression& parameterValue,
65  size_t parameterIndex,
66  const gd::String& lastObjectName)> fn);
67 
73  static void IterateOverParametersWithIndex(
74  const gd::Platform &platform,
75  const gd::ObjectsContainersList &objectsContainersList, FunctionCallNode &node,
76  std::function<void(const gd::ParameterMetadata &parameterMetadata,
77  std::unique_ptr<gd::ExpressionNode> &parameterNode,
78  size_t parameterIndex,
79  const gd::String &lastObjectName)>
80  fn);
81 
86  static size_t GetObjectParameterIndexFor(
87  const std::vector<gd::ParameterMetadata>& parametersMetadata,
88  size_t parameterIndex);
89 
90 private:
91  static const gd::ParameterMetadata badParameterMetadata;
92 };
93 } // 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:36
A list of objects containers, useful for accessing objects in a scoped way, along with methods to acc...
Definition: ObjectsContainersList.h:29
Describe a parameter of an instruction (action, condition) or of an expression: type,...
Definition: ParameterMetadata.h:27
Definition: ParameterMetadataTools.h:23
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:31
Definition: CommonTools.h:24
A function call node (either free function, object function or object behavior function)....
Definition: ExpressionParser2Node.h:364