Removed old plugin system and implemented some version list stuff.

This commit is contained in:
Andrew
2013-05-03 14:41:37 -05:00
parent 1626fa013c
commit 055198303c
20 changed files with 1064 additions and 279 deletions

View File

@ -22,15 +22,10 @@
#include "libmmc_config.h"
class InstanceTypeInterface;
class Instance;
typedef QList<const InstanceTypeInterface *> InstTypeList;
/*!
* \brief The InstanceLoader is a singleton that manages all of the instance types and handles loading and creating instances.
* Instance types are registered with the instance loader through its registerInstType() function.
* Creating instances is done through the InstanceLoader's createInstance() function. This function takes
* The InstanceLoader is a singleton that manages loading and creating instances.
*/
class LIBMULTIMC_EXPORT InstanceLoader : public QObject
{
@ -46,94 +41,45 @@ public:
*
* - NoError indicates that no error occurred.
* - OtherError indicates that an unspecified error occurred.
* - TypeIDExists is returned by registerInstanceType() if the ID of the type being registered already exists.
* - TypeNotRegistered is returned by createInstance() and loadInstance() when the given type is not registered.
* - InstExists is returned by createInstance() if the given instance directory is already an instance.
* - NotAnInstance is returned by loadInstance() if the given instance directory is not a valid instance.
* - WrongInstType is returned by loadInstance() if the given instance directory's type doesn't match the given type.
* - CantCreateDir is returned by createInstance( if the given instance directory can't be created.)
*/
enum InstTypeError
enum InstLoaderError
{
NoError = 0,
OtherError,
TypeIDExists,
TypeNotRegistered,
InstExists,
NotAnInstance,
WrongInstType,
CantCreateDir
};
/*!
* \brief Registers the given InstanceType with the instance loader.
*
* \param type The InstanceType to register.
* \return An InstTypeError error code.
* - TypeIDExists if the given type's is already registered to another instance type.
*/
InstTypeError registerInstanceType(InstanceTypeInterface *type);
/*!
* \brief Creates an instance with the given type and stores it in inst.
*
* \param inst Pointer to store the created instance in.
* \param type The type of instance to create.
* \param instDir The instance's directory.
* \return An InstTypeError error code.
* - TypeNotRegistered if the given type is not registered with the InstanceLoader.
* \return An InstLoaderError error code.
* - InstExists if the given instance directory is already an instance.
* - CantCreateDir if the given instance directory cannot be created.
*/
InstTypeError createInstance(Instance *&inst, const InstanceTypeInterface *type, const QString &instDir);
/*!
* \brief Loads an instance from the given directory.
*
* \param inst Pointer to store the loaded instance in.
* \param type The type of instance to load.
* \param instDir The instance's directory.
* \return An InstTypeError error code.
* - TypeNotRegistered if the given type is not registered with the InstanceLoader.
* - NotAnInstance if the given instance directory isn't a valid instance.
* - WrongInstType if the given instance directory's type isn't the same as the given type.
*/
InstTypeError loadInstance(Instance *&inst, const InstanceTypeInterface *type, const QString &instDir);
InstLoaderError createInstance(Instance *&inst, const QString &instDir);
/*!
* \brief Loads an instance from the given directory.
* Checks the instance's INI file to figure out what the instance's type is first.
* \param inst Pointer to store the loaded instance in.
* \param instDir The instance's directory.
* \return An InstTypeError error code.
* - TypeNotRegistered if the instance's type is not registered with the InstanceLoader.
* \return An InstLoaderError error code.
* - NotAnInstance if the given instance directory isn't a valid instance.
*/
InstTypeError loadInstance(Instance *&inst, const QString &instDir);
/*!
* \brief Finds an instance type with the given ID.
* If one cannot be found, returns NULL.
*
* \param id The ID of the type to find.
* \return The type with the given ID. NULL if none were found.
*/
const InstanceTypeInterface *findType(const QString &id);
/*!
* \brief Gets a list of the registered instance types.
*
* \return A list of instance types.
*/
InstTypeList typeList();
InstLoaderError loadInstance(Instance *&inst, const QString &instDir);
private:
InstanceLoader();
QMap<QString, InstanceTypeInterface *> m_typeMap;
static InstanceLoader loader;
};