9 #include "AbstractFunctionMetadata.h"
16 #include "GDCore/Events/Instruction.h"
17 #include "GDCore/Project/ParameterMetadataContainer.h"
18 #include "GDCore/String.h"
19 #include "ParameterMetadata.h"
20 #include "ParameterOptions.h"
25 class EventsCodeGenerator;
26 class EventsCodeGenerationContext;
27 class SerializerElement;
61 const gd::String &GetFullName()
const {
return fullname; }
62 const gd::String &GetDescription()
const {
return description; }
63 const gd::String &GetSentence()
const {
return sentence; }
64 const gd::String &GetGroup()
const {
return group; }
67 return parameters.GetParameter(i);
69 size_t GetParametersCount()
const {
return parameters.GetParametersCount(); }
73 const gd::String &GetIconFilename()
const {
return iconFilename; }
74 const gd::String &GetSmallIconFilename()
const {
return smallIconFilename; }
75 bool CanHaveSubInstructions()
const {
return canHaveSubInstructions; }
111 return relevantContext ==
"Any" || relevantContext ==
"Layout";
118 return relevantContext ==
"Any" || relevantContext ==
"Function";
125 return relevantContext ==
"Any" || relevantContext ==
"Function" ||
126 relevantContext ==
"AsynchronousFunction";
133 return relevantContext ==
"Any" || relevantContext ==
"Object";
140 relevantContext =
"Layout";
148 relevantContext =
"Function";
156 relevantContext =
"AsynchronousFunction";
164 relevantContext =
"Object";
174 return !codeExtraInformation.asyncFunctionCallName.empty();
182 return IsAsync() && !codeExtraInformation.functionCallName.empty();
189 canHaveSubInstructions =
true;
208 deprecationMessage = message;
266 const gd::String &supplementaryInformation =
"",
267 bool parameterIsOptional =
false)
override;
290 if (parameters.GetParametersCount() > 0) {
304 if (parameters.GetParametersCount() > 0) {
305 parameters.GetInternalVector().back()->SetLongDescription(longDescription);
319 if (parameters.GetParametersCount() > 0) {
320 parameters.GetInternalVector().back()->
SetHint(hint);
333 if (parameters.GetParametersCount() > 0) {
334 parameters.GetInternalVector().back()->SetExtraInfo(extraInfo);
364 isObjectInstruction =
true;
373 isBehaviorInstruction =
true;
401 return requiredBaseObjectCapability;
440 enum AccessType { Reference, MutatorAndOrAccessor, Mutators };
441 ExtraInformation() : accessType(Reference), hasCustomCodeGenerator(
false){};
448 AccessType accessType;
450 std::map<gd::String, gd::String> optionalMutators;
451 bool hasCustomCodeGenerator;
456 std::vector<gd::String> includeFiles;
466 codeExtraInformation.functionCallName = functionName_;
479 codeExtraInformation.asyncFunctionCallName = functionName_;
487 return codeExtraInformation.functionCallName;
496 return codeExtraInformation.asyncFunctionCallName;
506 codeExtraInformation.type = type_;
516 return codeExtraInformation.type;
543 codeExtraInformation.optionalAssociatedInstruction = getter;
544 codeExtraInformation.accessType = codeExtraInformation.MutatorAndOrAccessor;
549 const std::map<gd::String, gd::String> &mutators) {
550 codeExtraInformation.optionalMutators = mutators;
551 codeExtraInformation.accessType = codeExtraInformation.Mutators;
561 codeExtraInformation.includeFiles.clear();
562 codeExtraInformation.includeFiles.push_back(includeFile);
570 if (std::find(codeExtraInformation.includeFiles.begin(), codeExtraInformation.includeFiles.end(), includeFile) ==
571 codeExtraInformation.includeFiles.end())
572 codeExtraInformation.includeFiles.push_back(includeFile);
581 return codeExtraInformation.includeFiles;
589 codeExtraInformation.hasCustomCodeGenerator =
true;
590 codeExtraInformation.customCodeGenerator = codeGenerator;
594 InstructionMetadata &RemoveCustomCodeGenerator() {
595 codeExtraInformation.hasCustomCodeGenerator =
false;
596 std::function<
gd::String(Instruction & instruction,
600 codeExtraInformation.customCodeGenerator = emptyFunction;
604 bool HasCustomCodeGenerator()
const {
return codeExtraInformation.hasCustomCodeGenerator; }
624 bool canHaveSubInstructions;
630 bool isObjectInstruction;
631 bool isBehaviorInstruction;
Used to manage the context when generating code for events.
Definition: EventsCodeGenerationContext.h:27
Internal class used to generate code from events.
Definition: EventsCodeGenerator.h:41
An instruction is a member of an event: It can be a condition or an action.
Definition: Instruction.h:30
String represents an UTF8 encoded string.
Definition: String.h:33
Definition: CommonTools.h:24
Definition: ParameterOptions.h:15