13 #include "GDCore/CommonTools.h"
14 #include "GDCore/Extensions/Metadata/BehaviorMetadata.h"
15 #include "GDCore/Extensions/Metadata/DependencyMetadata.h"
16 #include "GDCore/Extensions/Metadata/EffectMetadata.h"
17 #include "GDCore/Extensions/Metadata/EventMetadata.h"
18 #include "GDCore/Extensions/Metadata/InstructionOrExpressionGroupMetadata.h"
19 #include "GDCore/Extensions/Metadata/ObjectMetadata.h"
20 #include "GDCore/Project/PropertyDescriptor.h"
21 #include "GDCore/String.h"
22 #include "GDCore/Tools/VersionPriv.h"
26 class InstructionMetadata;
27 class MultipleInstructionMetadata;
28 class ExpressionMetadata;
30 class BehaviorMetadata;
32 class DependencyMetadata;
35 class EventCodeGenerator;
36 class ArbitraryResourceWorker;
37 class BehaviorsSharedData;
40 class ObjectConfiguration;
43 typedef std::function<std::unique_ptr<gd::ObjectConfiguration>()>
57 bool informationCompleted;
117 category = category_;
130 helpPath = helpPath_;
246 std::shared_ptr<gd::ObjectConfiguration> instance);
285 std::shared_ptr<gd::Behavior> instance,
286 std::shared_ptr<gd::BehaviorsSharedData> sharedDatasInstance);
302 std::shared_ptr<gd::BaseEvent> instance);
346 return extensionPropertiesMetadata[name];
355 return instructionOrExpressionGroupMetadata[name];
362 void StripUnimplementedInstructionsAndExpressions();
415 const std::vector<gd::String>&
GetTags()
const {
return tags; }
422 tags = csvTags.
Split(
',');
423 for (
size_t i = 0; i < tags.size(); i++)
425 tags[i] = tags[i].Trim().LowerCase();
447 bool IsBuiltin()
const;
460 std::vector<gd::String> GetExtensionObjectsTypes()
const;
466 std::vector<gd::String> GetBehaviorsTypes()
const;
472 CreateFunPtr GetObjectCreationFunctionPtr(
const gd::String& objectType)
const;
478 std::vector<gd::String> GetExtensionEffectTypes()
const;
485 std::shared_ptr<gd::BaseEvent> CreateEvent(
const gd::String& eventType)
const;
518 bool HasBehavior(
const gd::String& behaviorType)
const;
528 std::map<gd::String, gd::EventMetadata>& GetAllEvents();
534 std::map<gd::String, gd::InstructionMetadata>& GetAllActions();
539 std::map<gd::String, gd::InstructionMetadata>& GetAllConditions();
544 std::map<gd::String, gd::ExpressionMetadata>& GetAllExpressions();
549 std::map<gd::String, gd::ExpressionMetadata>& GetAllStrExpressions();
555 std::vector<gd::DependencyMetadata>& GetAllDependencies();
561 std::map<gd::String, gd::InstructionMetadata>& GetAllActionsForObject(
567 std::map<gd::String, gd::InstructionMetadata>& GetAllConditionsForObject(
573 std::map<gd::String, gd::ExpressionMetadata>& GetAllExpressionsForObject(
579 std::map<gd::String, gd::ExpressionMetadata>& GetAllStrExpressionsForObject(
585 std::map<gd::String, gd::InstructionMetadata>& GetAllActionsForBehavior(
591 std::map<gd::String, gd::InstructionMetadata>& GetAllConditionsForBehavior(
597 std::map<gd::String, gd::ExpressionMetadata>& GetAllExpressionsForBehavior(
603 std::map<gd::String, gd::ExpressionMetadata>& GetAllStrExpressionsForBehavior(
612 return extensionPropertiesMetadata;
619 const std::map<gd::String, InstructionOrExpressionGroupMetadata>&
621 return instructionOrExpressionGroupMetadata;
629 static std::vector<gd::String> GetBuiltinExtensionsNames();
641 GetBehaviorEventsFunctionFullType(
const gd::String &extensionName,
649 GetObjectEventsFunctionFullType(
const gd::String &extensionName,
678 std::vector<gd::String> tags;
680 std::map<gd::String, gd::ObjectMetadata> objectsInfos;
681 std::map<gd::String, gd::BehaviorMetadata> behaviorsInfo;
682 std::map<gd::String, gd::EffectMetadata> effectsMetadata;
683 std::map<gd::String, gd::InstructionMetadata> conditionsInfos;
684 std::map<gd::String, gd::InstructionMetadata> actionsInfos;
685 std::map<gd::String, gd::ExpressionMetadata> expressionsInfos;
686 std::map<gd::String, gd::ExpressionMetadata> strExpressionsInfos;
687 std::vector<gd::DependencyMetadata> extensionDependenciesMetadata;
688 std::map<gd::String, gd::EventMetadata> eventsInfos;
689 std::map<gd::String, gd::PropertyDescriptor> extensionPropertiesMetadata;
690 std::map<gd::String, InstructionOrExpressionGroupMetadata>
691 instructionOrExpressionGroupMetadata;
696 static std::map<gd::String, gd::InstructionMetadata>
697 badConditionsMetadata;
699 static std::map<gd::String, gd::InstructionMetadata>
702 static std::map<gd::String, gd::ExpressionMetadata>
703 badExpressionsMetadata;
712 #define GD_COMPLETE_EXTENSION_COMPILATION_INFORMATION() \
713 compilationInfo.runtimeOnly = false; \
714 compilationInfo.sfmlMajorVersion = 2; \
715 compilationInfo.sfmlMinorVersion = 0; \
716 compilationInfo.gdCoreVersion = GD_VERSION_STRING; \
717 compilationInfo.sizeOfpInt = sizeof(int*); \
718 compilationInfo.gccMajorVersion = __GNUC__; \
719 compilationInfo.gccMinorVersion = __GNUC_MINOR__; \
720 compilationInfo.gccPatchLevel = __GNUC_PATCHLEVEL__; \
721 compilationInfo.informationCompleted = true;
723 #include "GDCore/Extensions/PlatformExtension.inl"
Base class used to represents a behavior that can be applied to an object. It stores the content (i....
Definition: Behavior.h:23
Base class for defining data shared by behaviors having the same type and name.
Definition: BehaviorsSharedData.h:24
Class used by gd::PlatformExtension to ensure that an extension is compiled against the right version...
Definition: PlatformExtension.h:52
bool runtimeOnly
Definition: PlatformExtension.h:59
Used to describe a property shown in a property grid.
Definition: PropertyDescriptor.h:24
String represents an UTF8 encoded string.
Definition: String.h:31
std::vector< String > Split(value_type delimiter) const
Split the string with a delimiter.
Definition: String.cpp:356
Definition: CommonTools.h:24
Definition: PlatformExtension.h:75