CmScriptAssembly.h 852 B

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. #pragma once
  2. #include "CmPrerequisites.h"
  3. #include <mono/jit/jit.h>
  4. #include <mono/metadata/assembly.h>
  5. namespace CamelotFramework
  6. {
  7. class CM_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 String& namespaceName, String name);
  20. String namespaceName;
  21. String name;
  22. };
  23. public:
  24. ~ScriptAssembly();
  25. ScriptClass& getClass(const String& namespaceName, const String& name);
  26. private:
  27. friend class ScriptManager;
  28. ScriptAssembly(MonoAssembly* assembly);
  29. MonoImage* mMonoImage;
  30. MonoAssembly* mMonoAssembly;
  31. UnorderedMap<ClassId, ScriptClass*, ClassId::Hash, ClassId::Equals>::type mClasses;
  32. };
  33. }