types.h 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130
  1. /**
  2. * Copyright (c) 2006-2015 LOVE Development Team
  3. *
  4. * This software is provided 'as-is', without any express or implied
  5. * warranty. In no event will the authors be held liable for any damages
  6. * arising from the use of this software.
  7. *
  8. * Permission is granted to anyone to use this software for any purpose,
  9. * including commercial applications, and to alter it and redistribute it
  10. * freely, subject to the following restrictions:
  11. *
  12. * 1. The origin of this software must not be misrepresented; you must not
  13. * claim that you wrote the original software. If you use this software
  14. * in a product, an acknowledgment in the product documentation would be
  15. * appreciated but is not required.
  16. * 2. Altered source versions must be plainly marked as such, and must not be
  17. * misrepresented as being the original software.
  18. * 3. This notice may not be removed or altered from any source distribution.
  19. **/
  20. #ifndef LOVE_TYPES_H
  21. #define LOVE_TYPES_H
  22. // STD
  23. #include <bitset>
  24. namespace love
  25. {
  26. enum Type
  27. {
  28. INVALID_ID = 0,
  29. // Cross-module types.
  30. OBJECT_ID,
  31. DATA_ID,
  32. MODULE_ID,
  33. // Filesystem.
  34. FILESYSTEM_FILE_ID,
  35. FILESYSTEM_DROPPED_FILE_ID,
  36. FILESYSTEM_FILE_DATA_ID,
  37. // Font
  38. FONT_GLYPH_DATA_ID,
  39. FONT_RASTERIZER_ID,
  40. // Graphics
  41. GRAPHICS_DRAWABLE_ID,
  42. GRAPHICS_TEXTURE_ID,
  43. GRAPHICS_IMAGE_ID,
  44. GRAPHICS_QUAD_ID,
  45. GRAPHICS_FONT_ID,
  46. GRAPHICS_PARTICLE_SYSTEM_ID,
  47. GRAPHICS_SPRITE_BATCH_ID,
  48. GRAPHICS_CANVAS_ID,
  49. GRAPHICS_SHADER_ID,
  50. GRAPHICS_MESH_ID,
  51. GRAPHICS_TEXT_ID,
  52. // Image
  53. IMAGE_IMAGE_DATA_ID,
  54. IMAGE_COMPRESSED_DATA_ID,
  55. // Joystick
  56. JOYSTICK_JOYSTICK_ID,
  57. // Math
  58. MATH_RANDOM_GENERATOR_ID,
  59. MATH_BEZIER_CURVE_ID,
  60. // Audio
  61. AUDIO_SOURCE_ID,
  62. // Sound
  63. SOUND_SOUND_DATA_ID,
  64. SOUND_DECODER_ID,
  65. // Mouse
  66. MOUSE_CURSOR_ID,
  67. // Physics
  68. PHYSICS_WORLD_ID,
  69. PHYSICS_CONTACT_ID,
  70. PHYSICS_BODY_ID,
  71. PHYSICS_FIXTURE_ID,
  72. PHYSICS_SHAPE_ID,
  73. PHYSICS_CIRCLE_SHAPE_ID,
  74. PHYSICS_POLYGON_SHAPE_ID,
  75. PHYSICS_EDGE_SHAPE_ID,
  76. PHYSICS_CHAIN_SHAPE_ID,
  77. PHYSICS_JOINT_ID,
  78. PHYSICS_MOUSE_JOINT_ID,
  79. PHYSICS_DISTANCE_JOINT_ID,
  80. PHYSICS_PRISMATIC_JOINT_ID,
  81. PHYSICS_REVOLUTE_JOINT_ID,
  82. PHYSICS_PULLEY_JOINT_ID,
  83. PHYSICS_GEAR_JOINT_ID,
  84. PHYSICS_FRICTION_JOINT_ID,
  85. PHYSICS_WELD_JOINT_ID,
  86. PHYSICS_ROPE_JOINT_ID,
  87. PHYSICS_WHEEL_JOINT_ID,
  88. PHYSICS_MOTOR_JOINT_ID,
  89. // Thread
  90. THREAD_THREAD_ID,
  91. THREAD_CHANNEL_ID,
  92. // The modules themselves. Only add abstracted modules here.
  93. MODULE_FILESYSTEM_ID,
  94. MODULE_GRAPHICS_ID,
  95. MODULE_IMAGE_ID,
  96. MODULE_SOUND_ID,
  97. // Count the number of bits needed.
  98. TYPE_MAX_ENUM
  99. };
  100. typedef std::bitset<TYPE_MAX_ENUM> TypeBits;
  101. /**
  102. * Array of length TYPE_MAX_ENUM containing the flags for each love Type.
  103. **/
  104. extern const TypeBits *typeFlags;
  105. bool getType(const char *in, Type &out);
  106. bool getType(Type in, const char *&out);
  107. } // love
  108. #endif // LOVE_TYPES_H