BsMonoAssembly.h 1.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. #pragma once
  2. #include "BsMonoPrerequisites.h"
  3. #include <mono/jit/jit.h>
  4. #include <mono/metadata/assembly.h>
  5. namespace BansheeEngine
  6. {
  7. class BS_MONO_EXPORT MonoAssembly
  8. {
  9. struct ClassId
  10. {
  11. struct Hash
  12. {
  13. inline size_t operator()(const ClassId& v) const;
  14. };
  15. struct Equals
  16. {
  17. inline bool operator()(const ClassId &a, const ClassId &b) const;
  18. };
  19. ClassId(const CM::String& namespaceName, CM::String name);
  20. CM::String namespaceName;
  21. CM::String name;
  22. };
  23. public:
  24. ~MonoAssembly();
  25. MonoClass& getClass(const CM::String& namespaceName, const CM::String& name);
  26. private:
  27. friend class MonoManager;
  28. MonoAssembly();
  29. void load(const CM::String& path, const CM::String& name);
  30. void unload();
  31. void initialize(const CM::String& entryPoint);
  32. CM::String mName;
  33. MonoImage* mMonoImage;
  34. ::MonoAssembly* mMonoAssembly;
  35. bool mIsLoaded;
  36. CM::UnorderedMap<ClassId, MonoClass*, ClassId::Hash, ClassId::Equals>::type mClasses;
  37. };
  38. }