9 #include "AbstractFunctionMetadata.h"
16 #include "GDCore/Events/Instruction.h"
17 #include "GDCore/String.h"
18 #include "ParameterMetadata.h"
19 #include "ParameterOptions.h"
24 class EventsCodeGenerator;
25 class EventsCodeGenerationContext;
26 class SerializerElement;
60 const gd::String &GetFullName()
const {
return fullname; }
61 const gd::String &GetDescription()
const {
return description; }
62 const gd::String &GetSentence()
const {
return sentence; }
63 const gd::String &GetGroup()
const {
return group; }
68 size_t GetParametersCount()
const {
return parameters.size(); }
69 const std::vector<ParameterMetadata> &GetParameters()
const {
72 const gd::String &GetIconFilename()
const {
return iconFilename; }
73 const gd::String &GetSmallIconFilename()
const {
return smallIconFilename; }
74 bool CanHaveSubInstructions()
const {
return canHaveSubInstructions; }
110 return relevantContext ==
"Any" || relevantContext ==
"Layout";
117 return relevantContext ==
"Any" || relevantContext ==
"Function";
124 return relevantContext ==
"Any" || relevantContext ==
"Function" ||
125 relevantContext ==
"AsynchronousFunction";
132 return relevantContext ==
"Any" || relevantContext ==
"Object";
139 relevantContext =
"Layout";
147 relevantContext =
"Function";
155 relevantContext =
"AsynchronousFunction";
163 relevantContext =
"Object";
173 return !codeExtraInformation.asyncFunctionCallName.empty();
181 return IsAsync() && !codeExtraInformation.functionCallName.empty();
188 canHaveSubInstructions =
true;
235 const gd::String &supplementaryInformation =
"",
236 bool parameterIsOptional =
false)
override;
259 if (!parameters.empty()) parameters.back().
SetDefaultValue(defaultValue_);
271 if (!parameters.empty())
272 parameters.back().SetLongDescription(longDescription);
284 if (!parameters.empty()) parameters.back().SetExtraInfo(extraInfo);
313 isObjectInstruction =
true;
322 isBehaviorInstruction =
true;
350 return requiredBaseObjectCapability;
389 enum AccessType { Reference, MutatorAndOrAccessor, Mutators };
390 ExtraInformation() : accessType(Reference), hasCustomCodeGenerator(
false){};
397 AccessType accessType;
399 std::map<gd::String, gd::String> optionalMutators;
400 bool hasCustomCodeGenerator;
405 std::vector<gd::String> includeFiles;
415 codeExtraInformation.functionCallName = functionName_;
428 codeExtraInformation.asyncFunctionCallName = functionName_;
436 return codeExtraInformation.functionCallName;
445 return codeExtraInformation.asyncFunctionCallName;
455 codeExtraInformation.type = type_;
483 codeExtraInformation.optionalAssociatedInstruction = getter;
484 codeExtraInformation.accessType = codeExtraInformation.MutatorAndOrAccessor;
489 const std::map<gd::String, gd::String> &mutators) {
490 codeExtraInformation.optionalMutators = mutators;
491 codeExtraInformation.accessType = codeExtraInformation.Mutators;
501 codeExtraInformation.includeFiles.clear();
502 codeExtraInformation.includeFiles.push_back(includeFile);
510 if (std::find(codeExtraInformation.includeFiles.begin(), codeExtraInformation.includeFiles.end(), includeFile) ==
511 codeExtraInformation.includeFiles.end())
512 codeExtraInformation.includeFiles.push_back(includeFile);
521 return codeExtraInformation.includeFiles;
529 codeExtraInformation.hasCustomCodeGenerator =
true;
530 codeExtraInformation.customCodeGenerator = codeGenerator;
534 InstructionMetadata &RemoveCustomCodeGenerator() {
535 codeExtraInformation.hasCustomCodeGenerator =
false;
536 std::function<
gd::String(Instruction & instruction,
540 codeExtraInformation.customCodeGenerator = emptyFunction;
544 bool HasCustomCodeGenerator()
const {
return codeExtraInformation.hasCustomCodeGenerator; }
554 std::vector<ParameterMetadata> parameters;
564 bool canHaveSubInstructions;
570 bool isObjectInstruction;
571 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:40
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:31
Definition: CommonTools.h:24
Definition: ParameterOptions.h:15