#ifndef DLLDateien_H
#define DLLDateien_H

#include <Text.h>
#include <Array.h>
#include <Critical.h>

using namespace Framework;

struct DLLDatei
{
    Text *name;
    HINSTANCE handle;
    int ref;
};

class DLLDateien
{
private:
    Array< DLLDatei* > *dlls;
    Critical cs;
    int ref;

public:
    // Konstruktor
    DLLDateien() noexcept;
    // Destruktor
    ~DLLDateien();
    // nicht constant
    HINSTANCE ladeDLL( char *name, char *pfad );
    void releaseDLL( char *name );
    // Reference Counting
    DLLDateien *getThis();
    DLLDateien *release();
};

#endif