13 #include "GDCore/CommonTools.h"
14 #include "GDCore/Extensions/Metadata/BehaviorMetadata.h"
15 #include "GDCore/Extensions/Metadata/DependencyMetadata.h"
16 #include "GDCore/Extensions/Metadata/SourceFileMetadata.h"
17 #include "GDCore/Extensions/Metadata/EffectMetadata.h"
18 #include "GDCore/Extensions/Metadata/EventMetadata.h"
19 #include "GDCore/Extensions/Metadata/InstructionOrExpressionGroupMetadata.h"
20 #include "GDCore/Extensions/Metadata/ObjectMetadata.h"
21 #include "GDCore/Project/PropertyDescriptor.h"
22 #include "GDCore/String.h"
23 #include "GDCore/Tools/VersionPriv.h"
27 class InstructionMetadata;
28 class MultipleInstructionMetadata;
29 class ExpressionMetadata;
31 class BehaviorMetadata;
33 class DependencyMetadata;
36 class EventCodeGenerator;
37 class ArbitraryResourceWorker;
38 class BehaviorsSharedData;
41 class ObjectConfiguration;
44 typedef std::function<std::unique_ptr<gd::ObjectConfiguration>()> CreateFunPtr;
57 bool informationCompleted =
false;
59 bool runtimeOnly =
false;
63 int gccMajorVersion = 0;
64 int gccMinorVersion = 0;
65 int gccPatchLevel = 0;
68 int sfmlMajorVersion = 0;
69 int sfmlMinorVersion = 0;
117 category = category_;
130 helpPath = helpPath_;
248 std::shared_ptr<gd::ObjectConfiguration> instance);
286 std::shared_ptr<gd::Behavior> instance,
287 std::shared_ptr<gd::BehaviorsSharedData> sharedDatasInstance);
303 std::shared_ptr<gd::BaseEvent> instance);
347 return extensionPropertiesMetadata[name];
356 return instructionOrExpressionGroupMetadata[name];
363 void StripUnimplementedInstructionsAndExpressions();
416 const std::vector<gd::String>&
GetTags()
const {
return tags; }
423 tags = csvTags.
Split(
',');
424 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 const std::vector<gd::DependencyMetadata>& GetAllDependencies()
const;
567 std::vector<gd::SourceFileMetadata>& GetAllSourceFiles();
573 const std::vector<gd::SourceFileMetadata>& GetAllSourceFiles()
const;
579 std::map<gd::String, gd::InstructionMetadata>& GetAllActionsForObject(
585 std::map<gd::String, gd::InstructionMetadata>& GetAllConditionsForObject(
591 std::map<gd::String, gd::ExpressionMetadata>& GetAllExpressionsForObject(
597 std::map<gd::String, gd::ExpressionMetadata>& GetAllStrExpressionsForObject(
603 std::map<gd::String, gd::InstructionMetadata>& GetAllActionsForBehavior(
609 std::map<gd::String, gd::InstructionMetadata>& GetAllConditionsForBehavior(
615 std::map<gd::String, gd::ExpressionMetadata>& GetAllExpressionsForBehavior(
621 std::map<gd::String, gd::ExpressionMetadata>& GetAllStrExpressionsForBehavior(
630 return extensionPropertiesMetadata;
637 const std::map<gd::String, InstructionOrExpressionGroupMetadata>&
639 return instructionOrExpressionGroupMetadata;
647 static std::vector<gd::String> GetBuiltinExtensionsNames();
658 static gd::String GetBehaviorEventsFunctionFullType(
666 static gd::String GetObjectEventsFunctionFullType(
700 std::vector<gd::String> tags;
702 std::map<gd::String, gd::ObjectMetadata> objectsInfos;
703 std::map<gd::String, gd::BehaviorMetadata> behaviorsInfo;
704 std::map<gd::String, gd::EffectMetadata> effectsMetadata;
705 std::map<gd::String, gd::InstructionMetadata> conditionsInfos;
706 std::map<gd::String, gd::InstructionMetadata> actionsInfos;
707 std::map<gd::String, gd::ExpressionMetadata> expressionsInfos;
708 std::map<gd::String, gd::ExpressionMetadata> strExpressionsInfos;
709 std::vector<gd::DependencyMetadata> extensionDependenciesMetadata;
710 std::vector<gd::SourceFileMetadata> extensionSourceFilesMetadata;
711 std::map<gd::String, gd::EventMetadata> eventsInfos;
712 std::map<gd::String, gd::PropertyDescriptor> extensionPropertiesMetadata;
713 std::map<gd::String, InstructionOrExpressionGroupMetadata>
714 instructionOrExpressionGroupMetadata;
719 static std::map<gd::String, gd::InstructionMetadata>
720 badConditionsMetadata;
722 static std::map<gd::String, gd::InstructionMetadata>
725 static std::map<gd::String, gd::ExpressionMetadata>
726 badExpressionsMetadata;
735 #define GD_COMPLETE_EXTENSION_COMPILATION_INFORMATION() \
736 compilationInfo.runtimeOnly = false; \
737 compilationInfo.sfmlMajorVersion = 2; \
738 compilationInfo.sfmlMinorVersion = 0; \
739 compilationInfo.gdCoreVersion = GD_VERSION_STRING; \
740 compilationInfo.sizeOfpInt = sizeof(int*); \
741 compilationInfo.gccMajorVersion = __GNUC__; \
742 compilationInfo.gccMinorVersion = __GNUC_MINOR__; \
743 compilationInfo.gccPatchLevel = __GNUC_PATCHLEVEL__; \
744 compilationInfo.informationCompleted = true;
746 #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
Used to describe a property shown in a property grid.
Definition: PropertyDescriptor.h:25
String represents an UTF8 encoded string.
Definition: String.h:33
std::vector< String > Split(value_type delimiter) const
Split the string with a delimiter.
Definition: String.cpp:358
Definition: CommonTools.h:24
Definition: PlatformExtension.h:75