BsScriptAssembly.h 954 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. #pragma once
  2. #include "BsPrerequisites.h"
  3. #include <mono/jit/jit.h>
  4. #include <mono/metadata/assembly.h>
  5. namespace BansheeEngine
  6. {
  7. class BS_EXPORT ScriptAssembly
  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. ~ScriptAssembly();
  25. ScriptClass& getClass(const CM::String& namespaceName, const CM::String& name);
  26. private:
  27. friend class ScriptManager;
  28. ScriptAssembly(MonoAssembly* assembly);
  29. void load(MonoAssembly* assembly);
  30. void unload();
  31. MonoImage* mMonoImage;
  32. MonoAssembly* mMonoAssembly;
  33. bool mIsLoaded;
  34. CM::UnorderedMap<ClassId, ScriptClass*, ClassId::Hash, ClassId::Equals>::type mClasses;
  35. };
  36. }