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(
const gd::PlatformExtension &extension);
129 static const gd::String &
130 GetEntityIconUrl(
const gd::PlatformExtension &extension,
131 const gd::AbstractEventsBasedEntity &eventsBasedEntity);
136 static void DeclareExtensionDependencies(
137 gd::PlatformExtension &extension,
138 const gd::EventsFunctionsExtension &eventsFunctionsExtension);
144 static void DeclarePropertyInstructionAndExpression(
145 gd::PlatformExtension &extension,
146 gd::InstructionOrExpressionContainerMetadata &entityMetadata,
147 const gd::AbstractEventsBasedEntity &eventsBasedEntity,
148 const gd::NamedPropertyDescriptor &property,
149 const gd::String &propertyLabel,
const gd::String &expressionName,
150 const gd::String &conditionName,
const gd::String &actionName,
151 const gd::String &toggleActionName,
const gd::String &setterName,
152 const gd::String &getterName,
const gd::String &toggleFunctionName,
153 const int valueParameterIndex,
154 std::function<gd::AbstractFunctionMetadata &(
155 gd::AbstractFunctionMetadata &instructionOrExpression)>
156 addObjectAndBehaviorParameters,
157 bool isSharedProperty);
165 static void DeclareBehaviorPropertiesInstructionAndExpressions(
166 gd::PlatformExtension &extension, gd::BehaviorMetadata &behaviorMetadata,
167 const gd::EventsBasedBehavior &eventsBasedBehavior);
175 static void DeclareObjectPropertiesInstructionAndExpressions(
176 gd::PlatformExtension &extension, gd::ObjectMetadata &objectMetadata,
177 const gd::EventsBasedObject &eventsBasedObject);
185 static void DeclareObjectInternalInstructions(
186 gd::PlatformExtension &extension, gd::ObjectMetadata &objectMetadata,
187 const gd::EventsBasedObject &eventsBasedObject);
189 static const gd::String defaultExtensionIconPath;
195 static gd::BehaviorMetadata &
196 DeclareBehaviorMetadata(
const gd::Project &project,
197 gd::PlatformExtension &extension,
198 const gd::EventsBasedBehavior &eventsBasedBehavior);
204 static gd::ObjectMetadata &
205 DeclareObjectMetadata(gd::PlatformExtension &extension,
206 const gd::EventsBasedObject &eventsBasedObject);
209 AddParameter(gd::AbstractFunctionMetadata &instructionOrExpression,
210 const gd::ParameterMetadata ¶meter);
216 gd::AbstractFunctionMetadata &DeclareInstructionOrExpressionMetadata(
217 gd::PlatformExtension &extension,
218 const gd::EventsFunctionsExtension &eventsFunctionsExtension,
219 const gd::EventsFunction &eventsFunction);
225 gd::AbstractFunctionMetadata &DeclareExpressionMetadata(
226 gd::PlatformExtension &extension,
227 const gd::EventsFunctionsExtension &eventsFunctionsExtension,
228 const gd::EventsFunction &eventsFunction);
234 static gd::InstructionMetadata &DeclareInstructionMetadata(
235 gd::PlatformExtension &extension,
236 const gd::EventsFunctionsExtension &eventsFunctionsExtension,
237 const gd::EventsFunction &eventsFunction);
243 gd::AbstractFunctionMetadata &DeclareBehaviorInstructionOrExpressionMetadata(
244 gd::PlatformExtension &extension, gd::BehaviorMetadata &behaviorMetadata,
245 const gd::EventsBasedBehavior &eventsBasedBehavior,
246 const gd::EventsFunction &eventsFunction,
247 std::map<gd::String, gd::String> &objectMethodMangledNames);
253 gd::AbstractFunctionMetadata &DeclareBehaviorExpressionMetadata(
254 gd::PlatformExtension &extension, gd::BehaviorMetadata &behaviorMetadata,
255 const gd::EventsBasedBehavior &eventsBasedBehavior,
256 const gd::EventsFunction &eventsFunction);
262 static gd::InstructionMetadata &DeclareBehaviorInstructionMetadata(
263 gd::PlatformExtension &extension, gd::BehaviorMetadata &behaviorMetadata,
264 const gd::EventsBasedBehavior &eventsBasedBehavior,
265 const gd::EventsFunction &eventsFunction);
271 gd::AbstractFunctionMetadata &DeclareObjectInstructionOrExpressionMetadata(
272 gd::PlatformExtension &extension, gd::ObjectMetadata &objectMetadata,
273 const gd::EventsBasedObject &eventsBasedObject,
274 const gd::EventsFunction &eventsFunction,
275 std::map<gd::String, gd::String> &objectMethodMangledNames);
281 gd::AbstractFunctionMetadata &DeclareObjectExpressionMetadata(
282 gd::PlatformExtension &extension, gd::ObjectMetadata &objectMetadata,
283 const gd::EventsBasedObject &eventsBasedObject,
284 const gd::EventsFunction &eventsFunction);
290 static gd::InstructionMetadata &DeclareObjectInstructionMetadata(
291 gd::PlatformExtension &extension, gd::ObjectMetadata &objectMetadata,
292 const gd::EventsBasedObject &eventsBasedObject,
293 const gd::EventsFunction &eventsFunction);
299 static void DeclareEventsFunctionParameters(
300 const gd::EventsFunctionsContainer &eventsFunctionsContainer,
301 const gd::EventsFunction &eventsFunction,
302 gd::ExpressionMetadata &expression,
303 const int userDefinedFirstParameterIndex);
309 static void DeclareEventsFunctionParameters(
310 const gd::EventsFunctionsContainer &eventsFunctionsContainer,
311 const gd::EventsFunction &eventsFunction,
312 gd::InstructionMetadata &instruction,
313 const int userDefinedFirstParameterIndex);
319 static void DeclareEventsFunctionParameters(
320 const gd::EventsFunctionsContainer &eventsFunctionsContainer,
321 const gd::EventsFunction &eventsFunction,
322 gd::MultipleInstructionMetadata &multipleInstructionMetadata,
323 const int userDefinedFirstParameterIndex);
326 UpdateCustomObjectDefaultBehaviors(gd::Project &project,
327 const gd::ObjectMetadata &objectMetadata);
329 static gd::String RemoveTrailingDot(
const gd::String &description);
332 GetStringifiedExtraInfo(
const gd::PropertyDescriptor &property);
334 static gd::String UncapitalizeFirstLetter(
const gd::String &
string);
336 static gd::String GetFullName(
const gd::EventsFunction &eventsFunction);
337 static gd::String GetDefaultSentence(
const gd::EventsFunction &eventsFunction,
338 const int firstParameterIndex,
339 const int parameterIndexOffset);
341 GetFreeFunctionSentence(
const gd::EventsFunction &eventsFunction);
343 GetBehaviorFunctionSentence(
const gd::EventsFunction &eventsFunction,
344 const bool excludeObjectParameter =
false);
346 GetObjectFunctionSentence(
const gd::EventsFunction &eventsFunction,
347 const bool excludeObjectParameter =
false);
349 std::vector<gd::MultipleInstructionMetadata> expressionAndConditions;