FieldLayout.h 875 B

1234567891011121314151617181920212223242526272829303132333435
  1. #pragma once
  2. #include <stdint.h>
  3. #include <vector>
  4. typedef bool (FieldInfoFilter)(FieldInfo*);
  5. namespace il2cpp
  6. {
  7. namespace metadata
  8. {
  9. struct SizeAndAlignment
  10. {
  11. size_t size;
  12. uint8_t alignment;
  13. uint8_t naturalAlignment;
  14. };
  15. class FieldLayout
  16. {
  17. public:
  18. struct FieldLayoutData
  19. {
  20. std::vector<size_t> FieldOffsets;
  21. size_t classSize;
  22. size_t actualClassSize;
  23. uint8_t minimumAlignment;
  24. uint8_t naturalAlignment;
  25. };
  26. static void LayoutFields(const Il2CppClass* klass, FieldInfoFilter filter, size_t parentSize, size_t actualParentSize, size_t parentAlignment, uint8_t packing, FieldLayoutData& data);
  27. static SizeAndAlignment GetTypeSizeAndAlignment(const Il2CppType* type);
  28. };
  29. } /* namespace metadata */
  30. } /* namespace il2cpp */