#pragma once #include "BsMonoPrerequisites.h" #include #include namespace BansheeEngine { class BS_MONO_EXPORT MonoAssembly { struct ClassId { struct Hash { inline size_t operator()(const ClassId& v) const; }; struct Equals { inline bool operator()(const ClassId &a, const ClassId &b) const; }; ClassId(const CM::String& namespaceName, CM::String name); CM::String namespaceName; CM::String name; }; public: ~MonoAssembly(); MonoClass& getClass(const CM::String& namespaceName, const CM::String& name); private: friend class MonoManager; MonoAssembly(); void load(const CM::String& path, const CM::String& name); void unload(); void initialize(const CM::String& entryPoint); CM::String mName; MonoImage* mMonoImage; ::MonoAssembly* mMonoAssembly; bool mIsLoaded; CM::UnorderedMap::type mClasses; }; }