BsMonoPrerequisites.h 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  1. //********************************** Banshee Engine (www.banshee3d.com) **************************************************//
  2. //**************** Copyright (c) 2016 Marko Pintera ([email protected]). All rights reserved. **********************//
  3. #pragma once
  4. #include "BsPrerequisites.h"
  5. // DLL export
  6. #if BS_PLATFORM == BS_PLATFORM_WIN32 // Windows
  7. # if BS_COMPILER == BS_COMPILER_MSVC
  8. # if defined(BS_STATIC_LIB)
  9. # define BS_MONO_EXPORT
  10. # else
  11. # if defined(BS_MONO_EXPORTS)
  12. # define BS_MONO_EXPORT __declspec(dllexport)
  13. # else
  14. # define BS_MONO_EXPORT __declspec(dllimport)
  15. # endif
  16. # endif
  17. # else
  18. # if defined(BS_STATIC_LIB)
  19. # define BS_MONO_EXPORT
  20. # else
  21. # if defined(BS_MONO_EXPORTS)
  22. # define BS_MONO_EXPORT __attribute__ ((dllexport))
  23. # else
  24. # define BS_MONO_EXPORT __attribute__ ((dllimport))
  25. # endif
  26. # endif
  27. # endif
  28. # define BS_MONO_HIDDEN
  29. #else // Linux/Mac settings
  30. # define BS_MONO_EXPORT __attribute__ ((visibility ("default")))
  31. # define BS_MONO_HIDDEN __attribute__ ((visibility ("hidden")))
  32. #endif
  33. /** @addtogroup Plugins
  34. * @{
  35. */
  36. /** @defgroup Mono BansheeMono
  37. * Scripting language backend using Mono's CLR.
  38. */
  39. /** @} */
  40. namespace bs
  41. {
  42. class MonoManager;
  43. class MonoAssembly;
  44. class MonoClass;
  45. class MonoMethod;
  46. class MonoField;
  47. class MonoProperty;
  48. /** A list of all valid Mono primitive types. */
  49. enum class MonoPrimitiveType
  50. {
  51. Boolean,
  52. Char,
  53. I8,
  54. U8,
  55. I16,
  56. U16,
  57. I32,
  58. U32,
  59. I64,
  60. U64,
  61. R32,
  62. R64,
  63. String,
  64. ValueType,
  65. Class,
  66. Array,
  67. Generic,
  68. Unknown
  69. };
  70. /** Returns the level of member visibility in the class. */
  71. enum class MonoMemberVisibility // Note: Elements must be ordered from most to least hidden
  72. {
  73. Private,
  74. Protected,
  75. Internal,
  76. ProtectedInternal,
  77. Public
  78. };
  79. }
  80. #if BS_PLATFORM == BS_PLATFORM_WIN32
  81. #define BS_THUNKCALL BS_STDCALL
  82. #else
  83. #define BS_THUNKCALL
  84. #endif
  85. typedef struct _MonoClass MonoClass;
  86. typedef struct _MonoDomain MonoDomain;
  87. typedef struct _MonoImage MonoImage;
  88. typedef struct _MonoAssembly MonoAssembly;
  89. typedef struct _MonoMethod MonoMethod;
  90. typedef struct _MonoProperty MonoProperty;
  91. typedef struct _MonoObject MonoObject;
  92. typedef struct _MonoString MonoString;
  93. typedef struct _MonoArray MonoArray;
  94. typedef struct _MonoReflectionType MonoReflectionType;
  95. typedef struct _MonoException MonoException;
  96. typedef struct _MonoClassField MonoClassField;