8 #include "GDCore/String.h"
16 class PlatformExtension;
18 class EventsFunctionsExtension;
19 class EventsBasedBehavior;
20 class BehaviorMetadata;
21 class EventsBasedObject;
24 class PropertyDescriptor;
25 class EventsFunctionsContainer;
26 class AbstractFunctionMetadata;
27 class InstructionOrExpressionContainerMetadata;
28 class AbstractEventsBasedEntity;
29 class NamedPropertyDescriptor;
30 class ParameterMetadata;
31 class InstructionMetadata;
32 class ExpressionMetadata;
33 class MultipleInstructionMetadata;
52 gd::AbstractFunctionMetadata &GenerateFreeFunctionMetadata(
53 const gd::Project &project, gd::PlatformExtension &extension,
54 const gd::EventsFunctionsExtension &eventsFunctionsExtension,
55 const gd::EventsFunction &eventsFunction);
57 static gd::BehaviorMetadata &GenerateBehaviorMetadata(
58 const gd::Project &project, gd::PlatformExtension &extension,
59 const gd::EventsFunctionsExtension &eventsFunctionsExtension,
60 const gd::EventsBasedBehavior &eventsBasedBehavior,
61 std::map<gd::String, gd::String> &behaviorMethodMangledNames);
63 static gd::ObjectMetadata &GenerateObjectMetadata(
64 gd::Project &project, gd::PlatformExtension &extension,
65 const gd::EventsFunctionsExtension &eventsFunctionsExtension,
66 const gd::EventsBasedObject &eventsBasedObject,
67 std::map<gd::String, gd::String> &objectMethodMangledNames);
71 const gd::EventsFunctionsExtension &eventsFunctionsExtension);
75 const gd::EventsFunctionsExtension &eventsFunctionsExtension,
76 const gd::EventsFunction &eventsFunction);
81 const gd::String &codeNamespacePrefix);
85 const gd::EventsBasedBehavior &eventsBasedBehavior,
86 const gd::String &codeNamespacePrefix);
91 const gd::String &codeNamespacePrefix);
97 gd::PlatformExtension &extension,
98 const gd::EventsFunctionsExtension &eventsFunctionsExtension);
122 static gd::String ShiftSentenceParamIndexes(
const gd::String &sentence,
126 static const gd::String &
127 GetExtensionIconUrl(gd::PlatformExtension &extension);
132 static void DeclareExtensionDependencies(
133 gd::PlatformExtension &extension,
134 const gd::EventsFunctionsExtension &eventsFunctionsExtension);
140 static void DeclarePropertyInstructionAndExpression(
141 gd::PlatformExtension &extension,
142 gd::InstructionOrExpressionContainerMetadata &entityMetadata,
143 const gd::AbstractEventsBasedEntity &eventsBasedEntity,
144 const gd::NamedPropertyDescriptor &property,
145 const gd::String &propertyLabel,
const gd::String &expressionName,
146 const gd::String &conditionName,
const gd::String &actionName,
147 const gd::String &toggleActionName,
const gd::String &setterName,
148 const gd::String &getterName,
const gd::String &toggleFunctionName,
149 const int valueParameterIndex,
150 std::function<gd::AbstractFunctionMetadata &(
151 gd::AbstractFunctionMetadata &instructionOrExpression)>
152 addObjectAndBehaviorParameters,
153 bool isSharedProperty);
161 static void DeclareBehaviorPropertiesInstructionAndExpressions(
162 gd::PlatformExtension &extension, gd::BehaviorMetadata &behaviorMetadata,
163 const gd::EventsBasedBehavior &eventsBasedBehavior);
171 static void DeclareObjectPropertiesInstructionAndExpressions(
172 gd::PlatformExtension &extension, gd::ObjectMetadata &objectMetadata,
173 const gd::EventsBasedObject &eventsBasedObject);
181 static void DeclareObjectInternalInstructions(
182 gd::PlatformExtension &extension, gd::ObjectMetadata &objectMetadata,
183 const gd::EventsBasedObject &eventsBasedObject);
185 static const gd::String defaultExtensionIconPath;
191 static gd::BehaviorMetadata &
192 DeclareBehaviorMetadata(
const gd::Project &project,
193 gd::PlatformExtension &extension,
194 const gd::EventsBasedBehavior &eventsBasedBehavior);
200 static gd::ObjectMetadata &
201 DeclareObjectMetadata(gd::PlatformExtension &extension,
202 const gd::EventsBasedObject &eventsBasedObject);
205 AddParameter(gd::AbstractFunctionMetadata &instructionOrExpression,
206 const gd::ParameterMetadata ¶meter);
212 gd::AbstractFunctionMetadata &DeclareInstructionOrExpressionMetadata(
213 gd::PlatformExtension &extension,
214 const gd::EventsFunctionsExtension &eventsFunctionsExtension,
215 const gd::EventsFunction &eventsFunction);
221 gd::AbstractFunctionMetadata &DeclareExpressionMetadata(
222 gd::PlatformExtension &extension,
223 const gd::EventsFunctionsExtension &eventsFunctionsExtension,
224 const gd::EventsFunction &eventsFunction);
230 static gd::InstructionMetadata &DeclareInstructionMetadata(
231 gd::PlatformExtension &extension,
232 const gd::EventsFunctionsExtension &eventsFunctionsExtension,
233 const gd::EventsFunction &eventsFunction);
239 gd::AbstractFunctionMetadata &DeclareBehaviorInstructionOrExpressionMetadata(
240 gd::PlatformExtension &extension, gd::BehaviorMetadata &behaviorMetadata,
241 const gd::EventsBasedBehavior &eventsBasedBehavior,
242 const gd::EventsFunction &eventsFunction,
243 std::map<gd::String, gd::String> &objectMethodMangledNames);
249 gd::AbstractFunctionMetadata &DeclareBehaviorExpressionMetadata(
250 gd::PlatformExtension &extension, gd::BehaviorMetadata &behaviorMetadata,
251 const gd::EventsBasedBehavior &eventsBasedBehavior,
252 const gd::EventsFunction &eventsFunction);
258 static gd::InstructionMetadata &DeclareBehaviorInstructionMetadata(
259 gd::PlatformExtension &extension, gd::BehaviorMetadata &behaviorMetadata,
260 const gd::EventsBasedBehavior &eventsBasedBehavior,
261 const gd::EventsFunction &eventsFunction);
267 gd::AbstractFunctionMetadata &DeclareObjectInstructionOrExpressionMetadata(
268 gd::PlatformExtension &extension, gd::ObjectMetadata &objectMetadata,
269 const gd::EventsBasedObject &eventsBasedObject,
270 const gd::EventsFunction &eventsFunction,
271 std::map<gd::String, gd::String> &objectMethodMangledNames);
277 gd::AbstractFunctionMetadata &DeclareObjectExpressionMetadata(
278 gd::PlatformExtension &extension, gd::ObjectMetadata &objectMetadata,
279 const gd::EventsBasedObject &eventsBasedObject,
280 const gd::EventsFunction &eventsFunction);
286 static gd::InstructionMetadata &DeclareObjectInstructionMetadata(
287 gd::PlatformExtension &extension, gd::ObjectMetadata &objectMetadata,
288 const gd::EventsBasedObject &eventsBasedObject,
289 const gd::EventsFunction &eventsFunction);
295 static void DeclareEventsFunctionParameters(
296 const gd::EventsFunctionsContainer &eventsFunctionsContainer,
297 const gd::EventsFunction &eventsFunction,
298 gd::ExpressionMetadata &expression,
299 const int userDefinedFirstParameterIndex);
305 static void DeclareEventsFunctionParameters(
306 const gd::EventsFunctionsContainer &eventsFunctionsContainer,
307 const gd::EventsFunction &eventsFunction,
308 gd::InstructionMetadata &instruction,
309 const int userDefinedFirstParameterIndex);
315 static void DeclareEventsFunctionParameters(
316 const gd::EventsFunctionsContainer &eventsFunctionsContainer,
317 const gd::EventsFunction &eventsFunction,
318 gd::MultipleInstructionMetadata &multipleInstructionMetadata,
319 const int userDefinedFirstParameterIndex);
322 UpdateCustomObjectDefaultBehaviors(gd::Project &project,
323 const gd::ObjectMetadata &objectMetadata);
325 static gd::String RemoveTrailingDot(
const gd::String &description);
328 GetStringifiedExtraInfo(
const gd::PropertyDescriptor &property);
330 static gd::String UncapitalizeFirstLetter(
const gd::String &
string);
332 static gd::String GetFullName(
const gd::EventsFunction &eventsFunction);
333 static gd::String GetDefaultSentence(
const gd::EventsFunction &eventsFunction,
334 const int firstParameterIndex,
335 const int parameterIndexOffset);
337 GetFreeFunctionSentence(
const gd::EventsFunction &eventsFunction);
339 GetBehaviorFunctionSentence(
const gd::EventsFunction &eventsFunction,
340 const bool excludeObjectParameter =
false);
342 GetObjectFunctionSentence(
const gd::EventsFunction &eventsFunction,
343 const bool excludeObjectParameter =
false);
345 std::vector<gd::MultipleInstructionMetadata> expressionAndConditions;