mirror of
https://github.com/4ian/GDevelop.git
synced 2025-10-15 10:19:04 +00:00
77 lines
2.6 KiB
C++
77 lines
2.6 KiB
C++
/*
|
|
* GDevelop Core
|
|
* Copyright 2008-2016 Florian Rival (Florian.Rival@gmail.com). All rights
|
|
* reserved. This project is released under the MIT License.
|
|
*/
|
|
|
|
#ifndef EXTENSIONSLOADER_H
|
|
#define EXTENSIONSLOADER_H
|
|
#include <vector>
|
|
#include "GDCore/String.h"
|
|
namespace gd {
|
|
class Platform;
|
|
}
|
|
|
|
namespace gd {
|
|
|
|
/**
|
|
* \brief Internal class loading static extensions.
|
|
*
|
|
* Class that load extensions and store them in a Platform.
|
|
*
|
|
* \note This is for loading extensions declared in C++, usually in
|
|
* files called "Extension.cpp" or "JsExtension.cpp".
|
|
* GDevelop 5 extensions can also be declared directly in JavaScript.
|
|
* See newIDE/app/src/JsExtensionsLoader and "JsExtension.js" files
|
|
* for extensions declared in JavaScript.
|
|
*/
|
|
class GD_CORE_API ExtensionsLoader {
|
|
public:
|
|
/**
|
|
* \brief Load all extensions located in the extensions directory for a
|
|
* platform.
|
|
*
|
|
* \param directory The directory where extensions must be searched.
|
|
* \param platform The platform the extensions belongs to.
|
|
* \param forgiving If set to true, files will try to be opened, but a failure
|
|
* when searching for the platform creation function symbol won't be logged as
|
|
* an error. (All other errors are still reported as usual).
|
|
*
|
|
* \note Extensions files must have extensions *.xgd(w|l|m)(e),
|
|
* w for Windows, l for Linux, m for Mac, e for Edittime extensions.
|
|
*/
|
|
static void LoadAllExtensions(const gd::String& directory,
|
|
gd::Platform& platform,
|
|
bool forgiving = false);
|
|
|
|
/**
|
|
* \brief Load an extension from a file and add it to a platform.
|
|
*
|
|
* \param fullpath The fullpath to the extension file.
|
|
* \param platform The platform the extension belongs to.
|
|
* \param forgiving If set to true, files will try to be opened, but a failure
|
|
* when searching for the platform creation function symbol won't be logged as
|
|
* an error. (All other errors are still reported as usual).
|
|
*/
|
|
static void LoadExtension(const gd::String& fullpath,
|
|
gd::Platform& platform,
|
|
bool forgiving = false);
|
|
|
|
/**
|
|
* \brief To be called when extensions loading is done.
|
|
*
|
|
* This is necessary on Linux to make symbols exported by extensions
|
|
* available. \param directory The directory where extensions have been loaded
|
|
* from.
|
|
*/
|
|
static void ExtensionsLoadingDone(const gd::String& directory);
|
|
|
|
private:
|
|
ExtensionsLoader(){};
|
|
virtual ~ExtensionsLoader(){};
|
|
};
|
|
|
|
} // namespace gd
|
|
|
|
#endif // EXTENSIONSLOADER_H
|